@openmrs/esm-app-shell 3.1.10-pre.579 → 3.1.10-pre.590

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 (54) hide show
  1. package/dist/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
  2. package/dist/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +1 -1
  3. package/dist/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
  4. package/dist/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +1 -1
  5. package/dist/esm-login-app/openmrs-esm-login-app.js +1 -1
  6. package/dist/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +1 -1
  7. package/dist/esm-offline-tools-app/218.openmrs-esm-offline-tools-app.js +1 -0
  8. package/dist/esm-offline-tools-app/218.openmrs-esm-offline-tools-app.js.map +1 -0
  9. package/dist/esm-offline-tools-app/535.openmrs-esm-offline-tools-app.js +1 -0
  10. package/dist/esm-offline-tools-app/535.openmrs-esm-offline-tools-app.js.map +1 -0
  11. package/dist/esm-offline-tools-app/713.openmrs-esm-offline-tools-app.js +1 -0
  12. package/dist/esm-offline-tools-app/713.openmrs-esm-offline-tools-app.js.map +1 -0
  13. package/dist/esm-offline-tools-app/814.openmrs-esm-offline-tools-app.js +1 -0
  14. package/dist/esm-offline-tools-app/814.openmrs-esm-offline-tools-app.js.map +1 -0
  15. package/dist/esm-offline-tools-app/cbc9366c0e23bc6694d6e83197d6af9b.svg +8 -0
  16. package/dist/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -1
  17. package/dist/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +84 -34
  18. package/dist/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.map +1 -1
  19. package/dist/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
  20. package/dist/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +1 -1
  21. package/dist/openmrs.js +1 -1
  22. package/dist/service-worker.js +1 -1
  23. package/dist/service-worker.js.map +1 -1
  24. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
  25. package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +1 -1
  26. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
  27. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +1 -1
  28. package/lib/esm-login-app/openmrs-esm-login-app.js +1 -1
  29. package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +1 -1
  30. package/lib/esm-offline-tools-app/218.openmrs-esm-offline-tools-app.js +2 -0
  31. package/lib/esm-offline-tools-app/218.openmrs-esm-offline-tools-app.js.map +1 -0
  32. package/lib/esm-offline-tools-app/535.openmrs-esm-offline-tools-app.js +2 -0
  33. package/lib/esm-offline-tools-app/535.openmrs-esm-offline-tools-app.js.map +1 -0
  34. package/lib/esm-offline-tools-app/713.openmrs-esm-offline-tools-app.js +2 -0
  35. package/lib/esm-offline-tools-app/713.openmrs-esm-offline-tools-app.js.map +1 -0
  36. package/lib/esm-offline-tools-app/814.openmrs-esm-offline-tools-app.js +2 -0
  37. package/lib/esm-offline-tools-app/814.openmrs-esm-offline-tools-app.js.map +1 -0
  38. package/lib/esm-offline-tools-app/cbc9366c0e23bc6694d6e83197d6af9b.svg +8 -0
  39. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -1
  40. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +84 -34
  41. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.map +1 -1
  42. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
  43. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +1 -1
  44. package/lib/openmrs.js +2 -2
  45. package/lib/service-worker.js +1 -1
  46. package/package.json +7 -7
  47. package/dist/esm-offline-tools-app/226.openmrs-esm-offline-tools-app.js +0 -1
  48. package/dist/esm-offline-tools-app/226.openmrs-esm-offline-tools-app.js.map +0 -1
  49. package/dist/esm-offline-tools-app/54.openmrs-esm-offline-tools-app.js +0 -1
  50. package/dist/esm-offline-tools-app/54.openmrs-esm-offline-tools-app.js.map +0 -1
  51. package/lib/esm-offline-tools-app/226.openmrs-esm-offline-tools-app.js +0 -2
  52. package/lib/esm-offline-tools-app/226.openmrs-esm-offline-tools-app.js.map +0 -1
  53. package/lib/esm-offline-tools-app/54.openmrs-esm-offline-tools-app.js +0 -2
  54. package/lib/esm-offline-tools-app/54.openmrs-esm-offline-tools-app.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_version.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/_version.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/_version.js","webpack://@openmrs/esm-app-shell/webpack/bootstrap","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/WorkboxError.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/models/messages/messageGenerator.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/assert.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/models/quotaErrorCallbacks.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/cacheNames.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/Deferred.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/timeout.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_freeGlobal.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_root.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_Symbol.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isArray.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_getRawTag.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_objectToString.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseGetTag.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isObjectLike.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseToString.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_arrayMap.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isSymbol.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/escapeRegExp.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/toString.js","webpack://@openmrs/esm-app-shell/../../framework/esm-utils/src/retry.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isObject.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_coreJsData.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_isMasked.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_toSource.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseIsNative.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isFunction.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_getNative.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_getValue.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_nativeCreate.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashGet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_Hash.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashClear.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashDelete.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashSet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_assocIndexOf.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/eq.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheDelete.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_ListCache.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheClear.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheGet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheSet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_Map.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_getMapData.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_isKeyable.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_MapCache.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheClear.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheDelete.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheGet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheSet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_SetCache.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_setCacheAdd.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_setCacheHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseIsNaN.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_arrayIncludes.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseIndexOf.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_strictIndexOf.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseFindIndex.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_arrayIncludesWith.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_cacheHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_Set.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_setToArray.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_createSet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/noop.js","webpack://@openmrs/esm-app-shell/./src/service-worker/constants.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/uniq.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseUniq.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_arrayPush.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseIsArguments.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isArguments.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_isFlattenable.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseFlatten.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/flatten.js","webpack://@openmrs/esm-app-shell/./src/service-worker/import-map-utils.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/dexie/dist/dexie.mjs","webpack://@openmrs/esm-app-shell/./src/service-worker/storage.ts","webpack://@openmrs/esm-app-shell/./src/service-worker/caching.ts","webpack://@openmrs/esm-app-shell/./src/service-worker/message.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/utils/constants.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/utils/normalizeHandler.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/Route.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/RegExpRoute.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/Router.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/StrategyHandler.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/getFriendlyURL.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/Strategy.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js","webpack://@openmrs/esm-app-shell/./src/service-worker/event.ts","webpack://@openmrs/esm-app-shell/./src/service-worker/http-header-utils.ts","webpack://@openmrs/esm-app-shell/../../framework/esm-offline/src/service-worker-http-headers.ts","webpack://@openmrs/esm-app-shell/./src/service-worker/routing.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/NetworkOnly.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/NetworkFirst.js","webpack://@openmrs/esm-app-shell/./src/service-worker/index.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/registerRoute.js"],"names":["self","_","e","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","WorkboxError","Error","constructor","errorCode","details","super","code","args","msg","length","JSON","stringify","messageGenerator","this","name","quotaErrorCallbacks","Set","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","cacheNames","userCacheName","cacheName","filter","value","join","stripParams","fullURL","ignoreParams","strippedURL","URL","param","searchParams","delete","href","Deferred","promise","Promise","resolve","reject","timeout","ms","setTimeout","global","Object","freeSelf","freeGlobal","Function","root","Array","isArray","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","Symbol","isOwn","call","tag","unmasked","result","getRawTag","objectToString","symbolProto","symbolToString","baseToString","array","iteratee","index","arrayMap","isObjectLike","baseGetTag","isSymbol","reRegExpChar","reHasRegExpChar","RegExp","source","string","test","replace","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","next","rejected","done","then","apply","__generator","body","f","y","t","g","label","sent","trys","ops","verb","iterator","n","v","op","TypeError","pop","push","retry","fn","options","shouldRetry","getDelay","onError","attempt","lastError","e_1","_a","maxAttempts","limitAttempts","startingDelay","initialDelay","exponent","Math","pow","getExponentialDelay","delay","res","type","uid","maskSrcKey","exec","coreJsData","funcToString","reIsHostCtor","funcProto","reIsNative","isObject","func","isFunction","toSource","object","key","getValue","baseIsNative","getNative","Hash","entries","clear","entry","set","__data__","nativeCreate","size","has","get","data","other","splice","ListCache","assocIndexOf","map","MapCache","Map","getMapData","SetCache","values","add","fromIndex","strictIndexOf","predicate","fromRight","baseFindIndex","baseIsNaN","baseIndexOf","comparator","cache","forEach","setToArray","omrsCacheName","omrsCachePrefix","wbManifest","__WB_MANIFEST","indexUrl","prefixWithServiceWorkerLocationIfRelative","absoluteWbManifestUrls","url","includes","arrayIncludes","isCommon","seen","arrayIncludesWith","createSet","cacheHas","outer","computed","seenIndex","baseUniq","path","location","offset","propertyIsEnumerable","baseIsArguments","arguments","spreadableSymbol","isArguments","baseFlatten","depth","isStrict","isFlattenable","arrayPush","fetchUrlsToCacheFromImportMap","_b","imports","importMapUrlAddresses","urlsToCache","_this","_c","all","importMapAddress","buildManifest","buildManifestUrl","getBuildManifestUrl","fetch","json","getUrlsFromBuildManifests","parts","results","baseUrlForFiles","origin","pathname","split","_i","chunks","chunk","_d","_e","files","file","__assign","assign","s","i","p","__spreadArrays","il","r","k","a","j","jl","keys","_global","window","extend","obj","extension","getProto","getPrototypeOf","_hasOwn","hasOwn","prop","props","proto","setProp","defineProperty","functionOrGetSet","configurable","writable","derive","Child","from","Parent","create","bind","getOwnPropertyDescriptor","getPropertyDescriptor","_slice","slice","start","end","override","origFunc","overridedFactory","assert","b","asap","setImmediate","arrayToObject","extractor","reduce","item","nameAndValue","getByKeyPath","keyPath","rv","l","val","period","indexOf","innerObj","substr","setByKeyPath","isFrozen","currentKeyPath","remainingKeyPath","isNaN","parseInt","delByKeyPath","kp","shallowClone","m","concat","intrinsicTypeNames","num","intrinsicTypes","intrinsicTypeNameSet","x","deepClone","any","toStringTag","o","getValueOf","Uint8Array","getTime","ArrayBuffer","isView","buffer","getObjectDiff","prfx","ap","bp","apTypeName","bpTypeName","iteratorSymbol","getIteratorOf","NO_CHAR_ARRAY","getArrayOf","arrayLike","it","isAsyncFunction","debug","setDebug","libraryFilter","NEEDS_THROW_FOR_STACK","stack","getErrorWithStack","prettyStack","exception","numIgnoredFrames","message","frame","idbDomErrorNames","errorList","defaultTexts","VersionChanged","DatabaseClosed","Abort","TransactionInactive","DexieError","getMultiErrorMessage","failures","ModifyError","successCount","failedKeys","BulkError","_stack","errnames","BaseException","exceptions","fullName","msgOrInner","inner","Syntax","SyntaxError","Type","Range","RangeError","exceptionMap","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","onsuccess","onerror","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","thiz","INTERNAL","globalP","crypto","subtle","__proto__","nativeP","digest","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","patchGlobalPromise","stack_being_generated","schedulePhysicalTick","physicalTick","MutationObserver","hiddenDiv","document","createElement","observe","attributes","setAttribute","asap$1","callback","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","currentFulfiller","rejectionMapper","globalPSD","id","ref","unhandleds","onunhandled","globalError","pgp","env","finalize","uh","PSD","numScheduledCalls","tickFinalizers","DexiePromise","_listeners","onuncatched","_lib","psd","_PSD","_stackHolder","_prev","_numPrev","_state","_value","handleRejection","executePromiseTask","thenProp","microTaskId","totalEchoes","onFulfilled","onRejected","possibleAwait","cleanup","decrementExpectedAwaits","propagateToListener","Listener","nativeAwaitCompatibleWrap","linkToPreviousPromise","zone","shouldExecuteTick","beginMicroTickScope","_then","propagateAllListeners","endMicroTickScope","ex","reason","_promise","origProp","tryCatch","some","addPossiblyUnhandledError","listeners","len","finalizePhysicalTick","listener","cb","callListener","ret","markErrorAsHandled","getStack","stacks","limit","errorName","failure","prev","numPrev","wasRootExec","callbacks","unhandledErrs","finalizers","PromiseReject","wrap","errorCatcher","outerScope","switchToZone","catch","handler","err","finally","onFinally","Infinity","handle","Timeout","clearTimeout","snapShot","onPossibleParallellAsync","remaining","race","newPSD","newScope","usePSD","scheduler","follow","zoneProps","finalizer","allSettled","possiblePromises","status","AggregateError","task","awaits","echoes","taskCounter","zoneStack","zoneEchoes","zone_id_counter","props$$1","a1","a2","parent","globalEnv","PromiseProp","nthen","getPatchedPromiseThen","gthen","incrementExpectedAwaits","possiblePromise","rejection","zoneEnterEcho","targetZone","zoneLeaveEcho","bEnteringZone","currentZone","enqueueNativeMicroTask","GlobalPromise_1","targetEnv","GlobalPromise","a3","job","outerZone","origThen","onResolved","UNHANDLEDREJECTION","event","eventData","createEvent","initEvent","CustomEvent","detail","dispatchEvent","PromiseRejectionEvent","onunhandledrejection","defaultPrevented","console","warn","tempTransaction","db","mode","storeNames","openComplete","letThrough","trans","_createTransaction","_dbSchema","_completion","isBeingOpened","_options","autoOpen","open","dbReadyPromise","DEXIE_VERSION","maxString","String","fromCharCode","minKey","INVALID_KEY_ARGUMENT","STRING_EXPECTED","connections","isIEOrEdge","navigator","userAgent","hasIEDeleteObjectStoreBug","hangsOnDeleteLargeKeyRange","dexieStackFrameFilter","DBNAMES_DB","READONLY","READWRITE","combine","filter1","filter2","AnyRange","lower","lowerOpen","upper","upperOpen","workaroundForUndefinedPrimKey","Table","_trans","writeLocked","_tx","tableName","checkTableInTransaction","schema","NotFound","idbtrans","transless","keyOrCrit","where","first","core","hook","reading","fire","indexOrCrit","WhereClause","keyPaths","equals","compoundIndex","indexes","primKey","ix","compound","every","_maxKey","idxByName","idb","_deps","indexedDB","cmp","prevIndex","prevFilterFn","multi","idx","filterFunction","toCollection","and","count","thenShortcut","numRows","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","readHook","unsubscribe","defineClass","content","auto","objToAdd","mutate","numFailures","lastResult","update","keyOrObject","InvalidArgument","modify","put","range","bulkGet","keys$$1","getMany","bulkAdd","objects","keysOrOptions","wantResults","allKeys","numObjects","objectsToAdd","pos","bulkPut","objectsToPut","bulkDelete","numKeys","Events","ctx","evs","eventName","subscriber","subscribe","addEventType","chainFunction","defaultFunction","addConfiguredEvents","context","subscribers","cfg","makeClassConstructor","isPlainKeyRange","ignoreLimitFilter","algorithm","or","justLimit","replayFilter","addFilter","addReplayFilter","factory","isLimitFilter","curr","getIndexOrStore","coreSchema","isPrimKey","primaryKey","getIndexByKeyPath","Schema","openCursor","coreTable","keysOnly","dir","unique","query","iter","coreTrans","set_1","union","cursor","advance","stop","fail","_iterate","iterate","valueMapper","cursorPromise","wrappedFn","c","continue","advancer","_read","_ctx","error","table","_write","_addAlgorithm","clone","raw","min","sortBy","lastPart","lastIndex","getval","order","sorter","aVal","bVal","sort","valueMapper_1","a_1","offsetLeft","rowsLeft","until","bIncludeStopEntry","last","isMatch","indexName","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","strKey","found","changes","modifyer","anythingModified","outbound","extractKey","Dexie","totalFailures","applyMutateResult","expectedCount","nextChunk","addValues","putValues","putKeys","deleteKeys","origValue","ctx_1","coreRange","simpleCompare","simpleCompareReverse","collectionOrWhereClause","T","collection","emptyCollection","whereClause","rangeEqual","nextCasing","lowerKey","upperNeedle","lowerNeedle","llp","lwrKeyChar","addIgnoreCaseAlgorithm","match","needles","compare","upperNeedles","lowerNeedles","direction","nextKeySuffix","needlesLen","initDirection","toUpperCase","toLowerCase","upperFactory","lowerFactory","needleBounds","needle","nb","createRange","firstPossibleNeedle","lowestPossibleCasing","casing","enumerable","between","includeLower","includeUpper","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWith","str","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","ranges","ascending","descending","_min","max","_max","sortDirection","rangeSorter","newRange","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","checkKey","keyWithinCurrentRange","startsWithAnyOf","safariMultiStoreFix","getMaxKey","IdbKeyRange","only","eventRejectHandler","preventDefault","target","stopPropagation","Transaction","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","fnAndPSD","shift","idbdb","dbOpenError","MissingAPI","OpenFailed","active","transaction","ev","_reject","onabort","on","oncomplete","_resolve","bWriteLock","ReadOnly","_root","waitFor","promiseLike","_waitingFor","_waitingQueue","store","objectStore","spin","_spinCount","currentWaitPromise","abort","memoizedTables","_memoizedTables","tableSchema","transactionBoundTable","createIndexSpec","src","nameFromKeyPath","createTableSchema","getKeyExtractor","getSinglePathKeyExtractor","getEffectiveKeys","req","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","makeIDBKeyRange","upperBound","lowerBound","bound","tables","objectStoreNames","autoIncrement","indexByKeyPath","isPrimaryKey","indexNames","multiEntry","hasGetAll","extractSchema","isAddOrPut","errorHandler","_reqno","setResult","args1","args2","keyCount","callbackCount","successHandler","_pos","request","nonInfinitLimit","idbKeyRange","getAll","getAllKeys","count_1","req_1","openKeyCursor","result_1","___id","_cursorContinue","_cursorContinuePrimaryKey","continuePrimaryKey","_cursorAdvance","doThrowCursorIsStopped","gotOne","iterationPromise","resolveIteration","rejectIteration","guardedCallback","createDbCoreTable","tableMap","MIN_KEY","MAX_KEY","generateMiddlewareStacks","middlewares","IDBKeyRange","dbcore","stackImpl","down","createMiddlewareStack","createMiddlewareStacks","_middlewares","tbl","setApiOnPlace","objs","tableNames","dbschema","propDesc","removeTablesApi","lowerVersionFirst","_cfg","version","getSchemaDiff","oldSchema","newSchema","diff","del","change","oldDef","newDef","def","recreate","oldIndexes","newIndexes","idxName","oldIdx","newIdx","createTable","createObjectStore","addIndex","createIndex","buildGlobalSchema","globalSchema","storeName","idbindex","adjustToExistingIndexNames","_hasGetAll","dexieName","indexSpec","WorkerGlobalScope","databaseEnumerator","Version","_parseStoresSpec","stores","outSchema","indexNum","trim","storesSource","versions","_versions","storesSpec","_allTables","_storeNames","upgrade","upgradeFunction","contentUpgrade","vip","dexieOpen","state","openCanceller","resolveDbReady","dbReadyResolve","upgradeTransaction","dbName","autoSchema","round","verno","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","close","delreq","deleteDatabase","NoSuchDatabase","oldVer","oldVersion","idbUpgradeTrans","rejectTransaction","populate","queue","anyContentUpgraderHasRun","tuple","Upgrade","store_1","deleteIndex","upgradeSchema_1","returnValue_1","contentUpgradeIsAsync_1","promiseFollowed","decrementor","deleteObjectStore","deleteRemovedTables","runQueue","contains","updateTablesAndIndexes","runUpgraders","readGlobalSchema","ch","verifyInstalledSchema","onversionchange","vcFired","onReadyBeingFired","ready","fireRemainders","remainders","awaitIterator","callNext","onSuccess","throw","getNext","extractTransactionArgs","_tableArgs_","scopeFunc","enterTransactionScope","parentTransaction","returnValue","scopeFuncIsAsync","PrematureCommit","pad","virtualIndexMiddleware","level","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","keyLength","isVirtual","virtualIndex","translateRequest","createVirtualCursor","hooksMiddleware","downCore","downTable","dxTrans","deleting","creating","updating","addPutOrDelete","deleteNextChunk","deleteRange","effectiveKeys","getExistingValues","existingValues","contexts","existingValue","generatedPrimaryKey","objectDiff","additionalChanges_1","requestedValue_1","deps","dependencies","addons","cancelOpen","bSticky","db_1","keyRangeGenerator","keyRange","whereCtx","readingHook","createTableConstructor","complete","wasActive","createTransactionConstructor","versionNumber","createVersionConstructor","orCollection","_IDBKeyRange","createWhereClauseConstructor","newVersion","use","addon","versionInstance","_whenReady","unuse","mw","hasArguments","doDelete","remove","backendDB","isOpen","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","idbMode","onlyIfCompatible","SubTransaction","enterTransaction","InvalidTable","Dexie$1","databaseName","exists","getDatabaseNames","ignoreTransaction","async","generatorFn","spawn","currentTransaction","promiseOrFunction","optionalTimeout","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","semVer","default","maxKey","dbNamesTable","hasDatabasesNative","databases","dbnames","infos","info","DatabaseEnumerator","initDatabaseEnumerator","domError","extendStatics","__extends","d","setPrototypeOf","__","ServiceWorkerDb","_super","dynamicRouteRegistrations","cacheImportMapReferences","importMap","invalidateObsoleteCacheEntries","addToOmrsCache","urls","cached","failedToCache","caches","success","newImportMapUrls","cachedUrls","dynamicRoutes","urlsToInvalidate","cachedUrl","route","pattern","messageHandlers","onImportMapChanged","clearDynamicRoutes","registerDynamicRoute","finalPattern","validMethods","normalizeHandler","Route","method","setCatchHandler","catchHandler","RegExpRoute","regExp","Router","_routes","_defaultHandlerMap","addFetchListener","addEventListener","responsePromise","handleRequest","respondWith","addCacheListener","payload","requestPromises","Request","waitUntil","ports","postMessage","protocol","sameOrigin","params","findMatchingRoute","_catchHandler","catchErr","routes","matchResult","setDefaultHandler","registerRoute","unregisterRoute","routeIndex","defaultRouter","getOrCreateDefaultRouter","toRequest","input","StrategyHandler","strategy","_cacheKeys","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","plugins","_pluginStateMap","plugin","FetchEvent","preloadResponse","possiblePreloadResponse","originalRequest","hasCallback","iterateCallbacks","thrownErrorMessage","pluginFilteredRequest","fetchResponse","fetchOptions","response","runCallbacks","responseClone","cachePut","cachedResponse","matchOptions","effectiveRequest","getCacheKey","multiMatchOptions","responseToCache","_ensureResponseSafeToCache","hasCacheUpdateCallback","oldResponse","strippedRequestURL","keysOptions","ignoreSearch","cacheKeys","cacheKey","cacheMatchIgnoreParams","executeQuotaErrorCallbacks","newResponse","statefulCallback","statefulParam","destroy","pluginsUsed","Strategy","responseDone","handleAll","_getResponse","_awaitComplete","_handle","doneWaiting","waitUntilError","cacheOkAndOpaquePlugin","cacheWillUpdate","publishEvent","clients","clients_1","matchAll","parseOmrsOfflineResponseBodyHeader","headers","getOmrsHeader","parseOmrsOfflineResponseStatusHeader","networkOnly","_networkTimeoutSeconds","networkTimeoutSeconds","promises","timeoutPromise","networkFirst","unshift","logs","timeoutId","_getTimeoutPromise","networkPromise","_getNetworkPromise","cacheMatch","fetchAndCachePut","fetchError","navigationHandler","Response","defaultHandler","shouldUseNetworkFirst","handleWithNetworkOnlyAndCacheFallback","requestClone","text","__WB_DISABLE_DEV_LOGS","eachCacheNameDetail","capture","router","validMethods_1","registerAllOmrsRoutes","_f","_g","skipWaiting"],"mappings":"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","file":"service-worker.js","sourceRoot":"","sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:6.2.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:6.2.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:6.2.4'] && _();\n}\ncatch (e) { }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = (process.env.NODE_ENV === 'production') ?\n fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from '../_private/WorkboxError.js';\nimport '../_version.js';\n/*\n * This method throws if the supplied value is not an array.\n * The destructed values are required to produce a meaningful error for users.\n * The destructed and restructured object is so it's clear what is\n * needed.\n */\nconst isArray = (value, details) => {\n if (!Array.isArray(value)) {\n throw new WorkboxError('not-an-array', details);\n }\n};\nconst hasMethod = (object, expectedMethod, details) => {\n const type = typeof object[expectedMethod];\n if (type !== 'function') {\n details['expectedMethod'] = expectedMethod;\n throw new WorkboxError('missing-a-method', details);\n }\n};\nconst isType = (object, expectedType, details) => {\n if (typeof object !== expectedType) {\n details['expectedType'] = expectedType;\n throw new WorkboxError('incorrect-type', details);\n }\n};\nconst isInstance = (object, \n// Need the general type to do the check later.\n// eslint-disable-next-line @typescript-eslint/ban-types\nexpectedClass, details) => {\n if (!(object instanceof expectedClass)) {\n details['expectedClassName'] = expectedClass.name;\n throw new WorkboxError('incorrect-class', details);\n }\n};\nconst isOneOf = (value, validValues, details) => {\n if (!validValues.includes(value)) {\n details['validValueDescription'] =\n `Valid values are ${JSON.stringify(validValues)}.`;\n throw new WorkboxError('invalid-value', details);\n }\n};\nconst isArrayOfClass = (value, \n// Need general type to do check later.\nexpectedClass, // eslint-disable-line\ndetails) => {\n const error = new WorkboxError('not-array-of-class', details);\n if (!Array.isArray(value)) {\n throw error;\n }\n for (const item of value) {\n if (!(item instanceof expectedClass)) {\n throw error;\n }\n }\n};\nconst finalAssertExports = process.env.NODE_ENV === 'production' ? null : {\n hasMethod,\n isArray,\n isInstance,\n isOneOf,\n isType,\n isArrayOfClass,\n};\nexport { finalAssertExports as assert };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\n// Can't change Function type right now.\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n const strippedURL = new URL(fullURL);\n for (const param of ignoreParams) {\n strippedURL.searchParams.delete(param);\n }\n return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array<string>} ignoreParams\n * @return {Promise<Response|undefined>}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n const strippedRequestURL = stripParams(request.url, ignoreParams);\n // If the request doesn't include any ignored params, match as normal.\n if (request.url === strippedRequestURL) {\n return cache.match(request, matchOptions);\n }\n // Otherwise, match by comparing keys\n const keysOptions = Object.assign(Object.assign({}, matchOptions), { ignoreSearch: true });\n const cacheKeys = await cache.keys(request, keysOptions);\n for (const cacheKey of cacheKeys) {\n const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n if (strippedRequestURL === strippedCacheKeyURL) {\n return cache.match(cacheKey, matchOptions);\n }\n }\n return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nexport { Deferred };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import toString from './toString.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nexport default escapeRegExp;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/**\n * Executes the specified function and retries executing on failure with a custom backoff strategy\n * defined by the options.\n *\n * If not configured otherwise, this function uses the following default options:\n * * Retries 5 times beyond the initial attempt.\n * * Uses an exponential backoff starting with an initial delay of 1000ms.\n * @param fn The function to be executed and retried on failure.\n * @param options Additional options which configure the retry behavior.\n * @returns The result of successfully executing `fn`.\n * @throws Rethrows the final error of running `fn` when the function stops retrying.\n */\nexport function retry(fn, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var shouldRetry, getDelay, onError, attempt, lastError, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n shouldRetry = options.shouldRetry, getDelay = options.getDelay, onError = options.onError;\n shouldRetry = shouldRetry !== null && shouldRetry !== void 0 ? shouldRetry : (function (attempt) { return limitAttempts(attempt, 5); });\n getDelay = getDelay !== null && getDelay !== void 0 ? getDelay : (function (attempt) { return getExponentialDelay(attempt, 1000); });\n attempt = 0;\n lastError = undefined;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, , 5]);\n return [4 /*yield*/, delay(getDelay(attempt))];\n case 2:\n _a.sent();\n return [4 /*yield*/, fn()];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n e_1 = _a.sent();\n onError === null || onError === void 0 ? void 0 : onError(e_1, attempt);\n lastError = e_1;\n return [3 /*break*/, 5];\n case 5:\n if (shouldRetry(attempt++)) return [3 /*break*/, 1];\n _a.label = 6;\n case 6: \n // If we reach this fn errored and shouldn't retry anymore. Simply rethrow the final error as\n // a means of ending the retry process without a result.\n throw lastError;\n }\n });\n });\n}\nfunction limitAttempts(attempt, maxAttempts) {\n return attempt <= maxAttempts;\n}\nfunction getExponentialDelay(attempt, startingDelay, initialDelay) {\n if (initialDelay === void 0) { initialDelay = false; }\n var exponent = initialDelay ? attempt + 1 : attempt;\n return startingDelay * Math.pow(2, exponent);\n}\nfunction delay(ms) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (ms <= 0) {\n return [2 /*return*/];\n }\n return [2 /*return*/, new Promise(function (res) { return setTimeout(res, ms); })];\n });\n });\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","import uniq from \"lodash-es/uniq\";\nexport var omrsCachePrefix = \"omrs\";\nexport var omrsCacheName = omrsCachePrefix + \"-spa-cache-v1\";\nexport var wbManifest = self.__WB_MANIFEST;\nexport var indexUrl = prefixWithServiceWorkerLocationIfRelative(\"index.html\");\nexport var absoluteWbManifestUrls = uniq(wbManifest.map(function (_a) {\n var url = _a.url;\n return prefixWithServiceWorkerLocationIfRelative(url);\n}));\nexport var buildManifestSuffix = \".buildmanifest.json\";\nfunction prefixWithServiceWorkerLocationIfRelative(path) {\n return new URL(path, self.location.href).href;\n}\n","import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { buildManifestSuffix } from \"./constants\";\nimport flatten from \"lodash-es/flatten\";\n/**\n * Given an import map object, resolves the URLs of all cacheable files defined in the import map.\n * Resolving relies on a build manifest file existing in the same location as the file referenced\n * in the import map.\n */\nexport function fetchUrlsToCacheFromImportMap(_a) {\n var _b = _a.imports, imports = _b === void 0 ? {} : _b;\n return __awaiter(this, void 0, void 0, function () {\n var importMapUrlAddresses, urlsToCache;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n importMapUrlAddresses = Object.values(imports);\n return [4 /*yield*/, Promise.all(importMapUrlAddresses.map(function (importMapAddress) { return __awaiter(_this, void 0, void 0, function () {\n var buildManifestUrl, buildManifest;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n buildManifestUrl = getBuildManifestUrl(importMapAddress);\n return [4 /*yield*/, tryFetchBuildManifest(buildManifestUrl)];\n case 1:\n buildManifest = _a.sent();\n return [2 /*return*/, buildManifest\n ? getUrlsFromBuildManifests(importMapAddress, buildManifest)\n : []];\n }\n });\n }); }))];\n case 1:\n urlsToCache = _c.sent();\n return [2 /*return*/, flatten(urlsToCache)];\n }\n });\n });\n}\nfunction getBuildManifestUrl(importMapAddress) {\n return importMapAddress + buildManifestSuffix;\n}\nfunction tryFetchBuildManifest(buildManifestUrl) {\n return fetch(buildManifestUrl)\n .then(function (res) { return res.json(); })[\"catch\"](function () { return null; });\n}\nfunction getUrlsFromBuildManifests(importMapAddress, buildManifest) {\n var _a, _b;\n // The try here guards against malformed JSON responses.\n // While we do expect the build manifest to have the correct format, we cannot *rely* on it.\n // Using a try/catch here seems better to me than doing defensive checks on every field/type in the response.\n try {\n var results = [];\n var baseUrlForFiles = getUrlOfFileParentDir(new URL(importMapAddress));\n for (var _i = 0, _c = (_a = buildManifest.chunks) !== null && _a !== void 0 ? _a : []; _i < _c.length; _i++) {\n var chunk = _c[_i];\n for (var _d = 0, _e = (_b = chunk.files) !== null && _b !== void 0 ? _b : []; _d < _e.length; _d++) {\n var file = _e[_d];\n results.push(new URL(file, baseUrlForFiles).toString());\n }\n }\n return results;\n }\n catch (e) {\n return [];\n }\n}\nfunction getUrlOfFileParentDir(url) {\n var fullPath = url.origin + url.pathname; // Removes params + hash.\n var parts = fullPath.split(\"/\");\n parts[parts.length - 1] = \"\";\n return parts.join(\"/\");\n}\n","/*\n * Dexie.js - a minimalistic wrapper for IndexedDB\n * ===============================================\n *\n * By David Fahlander, david.fahlander@gmail.com\n *\n * Version 3.0.3, Wed Nov 18 2020\n *\n * http://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n */\n \nvar __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\n\n\n\n\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nvar keys = Object.keys;\nvar isArray = Array.isArray;\nvar _global = typeof self !== 'undefined' ? self :\n typeof window !== 'undefined' ? window :\n global;\nif (typeof Promise !== 'undefined' && !_global.Promise) {\n _global.Promise = Promise;\n}\nfunction extend(obj, extension) {\n if (typeof extension !== 'object')\n return obj;\n keys(extension).forEach(function (key) {\n obj[key] = extension[key];\n });\n return obj;\n}\nvar getProto = Object.getPrototypeOf;\nvar _hasOwn = {}.hasOwnProperty;\nfunction hasOwn(obj, prop) {\n return _hasOwn.call(obj, prop);\n}\nfunction props(proto, extension) {\n if (typeof extension === 'function')\n extension = extension(getProto(proto));\n keys(extension).forEach(function (key) {\n setProp(proto, key, extension[key]);\n });\n}\nvar defineProperty = Object.defineProperty;\nfunction setProp(obj, prop, functionOrGetSet, options) {\n defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ?\n { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } :\n { value: functionOrGetSet, configurable: true, writable: true }, options));\n}\nfunction derive(Child) {\n return {\n from: function (Parent) {\n Child.prototype = Object.create(Parent.prototype);\n setProp(Child.prototype, \"constructor\", Child);\n return {\n extend: props.bind(null, Child.prototype)\n };\n }\n };\n}\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nfunction getPropertyDescriptor(obj, prop) {\n var pd = getOwnPropertyDescriptor(obj, prop);\n var proto;\n return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop);\n}\nvar _slice = [].slice;\nfunction slice(args, start, end) {\n return _slice.call(args, start, end);\n}\nfunction override(origFunc, overridedFactory) {\n return overridedFactory(origFunc);\n}\nfunction assert(b) {\n if (!b)\n throw new Error(\"Assertion Failed\");\n}\nfunction asap(fn) {\n if (_global.setImmediate)\n setImmediate(fn);\n else\n setTimeout(fn, 0);\n}\n\nfunction arrayToObject(array, extractor) {\n return array.reduce(function (result, item, i) {\n var nameAndValue = extractor(item, i);\n if (nameAndValue)\n result[nameAndValue[0]] = nameAndValue[1];\n return result;\n }, {});\n}\n\nfunction tryCatch(fn, onerror, args) {\n try {\n fn.apply(null, args);\n }\n catch (ex) {\n onerror && onerror(ex);\n }\n}\nfunction getByKeyPath(obj, keyPath) {\n if (hasOwn(obj, keyPath))\n return obj[keyPath];\n if (!keyPath)\n return obj;\n if (typeof keyPath !== 'string') {\n var rv = [];\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n var val = getByKeyPath(obj, keyPath[i]);\n rv.push(val);\n }\n return rv;\n }\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var innerObj = obj[keyPath.substr(0, period)];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n }\n return undefined;\n}\nfunction setByKeyPath(obj, keyPath, value) {\n if (!obj || keyPath === undefined)\n return;\n if ('isFrozen' in Object && Object.isFrozen(obj))\n return;\n if (typeof keyPath !== 'string' && 'length' in keyPath) {\n assert(typeof value !== 'string' && 'length' in value);\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n setByKeyPath(obj, keyPath[i], value[i]);\n }\n }\n else {\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var currentKeyPath = keyPath.substr(0, period);\n var remainingKeyPath = keyPath.substr(period + 1);\n if (remainingKeyPath === \"\")\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(currentKeyPath)))\n obj.splice(currentKeyPath, 1);\n else\n delete obj[currentKeyPath];\n }\n else\n obj[currentKeyPath] = value;\n else {\n var innerObj = obj[currentKeyPath];\n if (!innerObj)\n innerObj = (obj[currentKeyPath] = {});\n setByKeyPath(innerObj, remainingKeyPath, value);\n }\n }\n else {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(keyPath)))\n obj.splice(keyPath, 1);\n else\n delete obj[keyPath];\n }\n else\n obj[keyPath] = value;\n }\n }\n}\nfunction delByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string')\n setByKeyPath(obj, keyPath, undefined);\n else if ('length' in keyPath)\n [].map.call(keyPath, function (kp) {\n setByKeyPath(obj, kp, undefined);\n });\n}\nfunction shallowClone(obj) {\n var rv = {};\n for (var m in obj) {\n if (hasOwn(obj, m))\n rv[m] = obj[m];\n }\n return rv;\n}\nvar concat = [].concat;\nfunction flatten(a) {\n return concat.apply([], a);\n}\nvar intrinsicTypeNames = \"Boolean,String,Date,RegExp,Blob,File,FileList,ArrayBuffer,DataView,Uint8ClampedArray,ImageData,Map,Set\"\n .split(',').concat(flatten([8, 16, 32, 64].map(function (num) { return [\"Int\", \"Uint\", \"Float\"].map(function (t) { return t + num + \"Array\"; }); }))).filter(function (t) { return _global[t]; });\nvar intrinsicTypes = intrinsicTypeNames.map(function (t) { return _global[t]; });\nvar intrinsicTypeNameSet = arrayToObject(intrinsicTypeNames, function (x) { return [x, true]; });\nfunction deepClone(any) {\n if (!any || typeof any !== 'object')\n return any;\n var rv;\n if (isArray(any)) {\n rv = [];\n for (var i = 0, l = any.length; i < l; ++i) {\n rv.push(deepClone(any[i]));\n }\n }\n else if (intrinsicTypes.indexOf(any.constructor) >= 0) {\n rv = any;\n }\n else {\n rv = any.constructor ? Object.create(any.constructor.prototype) : {};\n for (var prop in any) {\n if (hasOwn(any, prop)) {\n rv[prop] = deepClone(any[prop]);\n }\n }\n }\n return rv;\n}\nvar toString = {}.toString;\nfunction toStringTag(o) {\n return toString.call(o).slice(8, -1);\n}\nvar getValueOf = function (val, type) {\n return type === \"Array\" ? '' + val.map(function (v) { return getValueOf(v, toStringTag(v)); }) :\n type === \"ArrayBuffer\" ? '' + new Uint8Array(val) :\n type === \"Date\" ? val.getTime() :\n ArrayBuffer.isView(val) ? '' + new Uint8Array(val.buffer) :\n val;\n};\nfunction getObjectDiff(a, b, rv, prfx) {\n rv = rv || {};\n prfx = prfx || '';\n keys(a).forEach(function (prop) {\n if (!hasOwn(b, prop))\n rv[prfx + prop] = undefined;\n else {\n var ap = a[prop], bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n var apTypeName = toStringTag(ap);\n var bpTypeName = toStringTag(bp);\n if (apTypeName === bpTypeName) {\n if (intrinsicTypeNameSet[apTypeName]) {\n if (getValueOf(ap, apTypeName) !== getValueOf(bp, bpTypeName)) {\n rv[prfx + prop] = b[prop];\n }\n }\n else {\n getObjectDiff(ap, bp, rv, prfx + prop + \".\");\n }\n }\n else {\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}\nvar iteratorSymbol = typeof Symbol !== 'undefined' && Symbol.iterator;\nvar getIteratorOf = iteratorSymbol ? function (x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n} : function () { return null; };\nvar NO_CHAR_ARRAY = {};\nfunction getArrayOf(arrayLike) {\n var i, a, x, it;\n if (arguments.length === 1) {\n if (isArray(arrayLike))\n return arrayLike.slice();\n if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string')\n return [arrayLike];\n if ((it = getIteratorOf(arrayLike))) {\n a = [];\n while (x = it.next(), !x.done)\n a.push(x.value);\n return a;\n }\n if (arrayLike == null)\n return [arrayLike];\n i = arrayLike.length;\n if (typeof i === 'number') {\n a = new Array(i);\n while (i--)\n a[i] = arrayLike[i];\n return a;\n }\n return [arrayLike];\n }\n i = arguments.length;\n a = new Array(i);\n while (i--)\n a[i] = arguments[i];\n return a;\n}\nvar isAsyncFunction = typeof Symbol !== 'undefined'\n ? function (fn) { return fn[Symbol.toStringTag] === 'AsyncFunction'; }\n : function () { return false; };\n\nvar debug = typeof location !== 'undefined' &&\n /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\nfunction setDebug(value, filter) {\n debug = value;\n libraryFilter = filter;\n}\nvar libraryFilter = function () { return true; };\nvar NEEDS_THROW_FOR_STACK = !new Error(\"\").stack;\nfunction getErrorWithStack() {\n if (NEEDS_THROW_FOR_STACK)\n try {\n throw new Error();\n }\n catch (e) {\n return e;\n }\n return new Error();\n}\nfunction prettyStack(exception, numIgnoredFrames) {\n var stack = exception.stack;\n if (!stack)\n return \"\";\n numIgnoredFrames = (numIgnoredFrames || 0);\n if (stack.indexOf(exception.name) === 0)\n numIgnoredFrames += (exception.name + exception.message).split('\\n').length;\n return stack.split('\\n')\n .slice(numIgnoredFrames)\n .filter(libraryFilter)\n .map(function (frame) { return \"\\n\" + frame; })\n .join('');\n}\n\nvar dexieErrorNames = [\n 'Modify',\n 'Bulk',\n 'OpenFailed',\n 'VersionChange',\n 'Schema',\n 'Upgrade',\n 'InvalidTable',\n 'MissingAPI',\n 'NoSuchDatabase',\n 'InvalidArgument',\n 'SubTransaction',\n 'Unsupported',\n 'Internal',\n 'DatabaseClosed',\n 'PrematureCommit',\n 'ForeignAwait'\n];\nvar idbDomErrorNames = [\n 'Unknown',\n 'Constraint',\n 'Data',\n 'TransactionInactive',\n 'ReadOnly',\n 'Version',\n 'NotFound',\n 'InvalidState',\n 'InvalidAccess',\n 'Abort',\n 'Timeout',\n 'QuotaExceeded',\n 'Syntax',\n 'DataClone'\n];\nvar errorList = dexieErrorNames.concat(idbDomErrorNames);\nvar defaultTexts = {\n VersionChanged: \"Database version changed by other database connection\",\n DatabaseClosed: \"Database has been closed\",\n Abort: \"Transaction aborted\",\n TransactionInactive: \"Transaction has already completed or failed\"\n};\nfunction DexieError(name, msg) {\n this._e = getErrorWithStack();\n this.name = name;\n this.message = msg;\n}\nderive(DexieError).from(Error).extend({\n stack: {\n get: function () {\n return this._stack ||\n (this._stack = this.name + \": \" + this.message + prettyStack(this._e, 2));\n }\n },\n toString: function () { return this.name + \": \" + this.message; }\n});\nfunction getMultiErrorMessage(msg, failures) {\n return msg + \". Errors: \" + Object.keys(failures)\n .map(function (key) { return failures[key].toString(); })\n .filter(function (v, i, s) { return s.indexOf(v) === i; })\n .join('\\n');\n}\nfunction ModifyError(msg, failures, successCount, failedKeys) {\n this._e = getErrorWithStack();\n this.failures = failures;\n this.failedKeys = failedKeys;\n this.successCount = successCount;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(ModifyError).from(DexieError);\nfunction BulkError(msg, failures) {\n this._e = getErrorWithStack();\n this.name = \"BulkError\";\n this.failures = failures;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(BulkError).from(DexieError);\nvar errnames = errorList.reduce(function (obj, name) { return (obj[name] = name + \"Error\", obj); }, {});\nvar BaseException = DexieError;\nvar exceptions = errorList.reduce(function (obj, name) {\n var fullName = name + \"Error\";\n function DexieError(msgOrInner, inner) {\n this._e = getErrorWithStack();\n this.name = fullName;\n if (!msgOrInner) {\n this.message = defaultTexts[name] || fullName;\n this.inner = null;\n }\n else if (typeof msgOrInner === 'string') {\n this.message = \"\" + msgOrInner + (!inner ? '' : '\\n ' + inner);\n this.inner = inner || null;\n }\n else if (typeof msgOrInner === 'object') {\n this.message = msgOrInner.name + \" \" + msgOrInner.message;\n this.inner = msgOrInner;\n }\n }\n derive(DexieError).from(BaseException);\n obj[name] = DexieError;\n return obj;\n}, {});\nexceptions.Syntax = SyntaxError;\nexceptions.Type = TypeError;\nexceptions.Range = RangeError;\nvar exceptionMap = idbDomErrorNames.reduce(function (obj, name) {\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfunction mapError(domError, message) {\n if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])\n return domError;\n var rv = new exceptionMap[domError.name](message || domError.message, domError);\n if (\"stack\" in domError) {\n setProp(rv, \"stack\", { get: function () {\n return this.inner.stack;\n } });\n }\n return rv;\n}\nvar fullNameExceptions = errorList.reduce(function (obj, name) {\n if ([\"Syntax\", \"Type\", \"Range\"].indexOf(name) === -1)\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfullNameExceptions.ModifyError = ModifyError;\nfullNameExceptions.DexieError = DexieError;\nfullNameExceptions.BulkError = BulkError;\n\nfunction nop() { }\nfunction mirror(val) { return val; }\nfunction pureFunctionChain(f1, f2) {\n if (f1 == null || f1 === mirror)\n return f2;\n return function (val) {\n return f2(f1(val));\n };\n}\nfunction callBoth(on1, on2) {\n return function () {\n on1.apply(this, arguments);\n on2.apply(this, arguments);\n };\n}\nfunction hookCreatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res !== undefined)\n arguments[0] = res;\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res2 !== undefined ? res2 : res;\n };\n}\nfunction hookDeletingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n f1.apply(this, arguments);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = this.onerror = null;\n f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n };\n}\nfunction hookUpdatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function (modifications) {\n var res = f1.apply(this, arguments);\n extend(modifications, res);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res === undefined ?\n (res2 === undefined ? undefined : res2) :\n (extend(res, res2));\n };\n}\nfunction reverseStoppableEventChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n if (f2.apply(this, arguments) === false)\n return false;\n return f1.apply(this, arguments);\n };\n}\n\nfunction promisableChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res && typeof res.then === 'function') {\n var thiz = this, i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n return res.then(function () {\n return f2.apply(thiz, args);\n });\n }\n return f2.apply(this, arguments);\n };\n}\n\nvar INTERNAL = {};\nvar LONG_STACKS_CLIP_LIMIT = 100;\nvar MAX_LONG_STACKS = 20;\nvar ZONE_ECHO_LIMIT = 100;\nvar _a = typeof Promise === 'undefined' ?\n [] :\n (function () {\n var globalP = Promise.resolve();\n if (typeof crypto === 'undefined' || !crypto.subtle)\n return [globalP, globalP.__proto__, globalP];\n var nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [\n nativeP,\n nativeP.__proto__,\n globalP\n ];\n })();\nvar resolvedNativePromise = _a[0];\nvar nativePromiseProto = _a[1];\nvar resolvedGlobalPromise = _a[2];\nvar nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\nvar NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\nvar patchGlobalPromise = !!resolvedGlobalPromise;\nvar stack_being_generated = false;\nvar schedulePhysicalTick = resolvedGlobalPromise ?\n function () { resolvedGlobalPromise.then(physicalTick); }\n :\n _global.setImmediate ?\n setImmediate.bind(null, physicalTick) :\n _global.MutationObserver ?\n function () {\n var hiddenDiv = document.createElement(\"div\");\n (new MutationObserver(function () {\n physicalTick();\n hiddenDiv = null;\n })).observe(hiddenDiv, { attributes: true });\n hiddenDiv.setAttribute('i', '1');\n } :\n function () { setTimeout(physicalTick, 0); };\nvar asap$1 = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n};\nvar isOutsideMicroTick = true;\nvar needsNewPhysicalTick = true;\nvar unhandledErrors = [];\nvar rejectingErrors = [];\nvar currentFulfiller = null;\nvar rejectionMapper = mirror;\nvar globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: globalError,\n pgp: false,\n env: {},\n finalize: function () {\n this.unhandleds.forEach(function (uh) {\n try {\n globalError(uh[0], uh[1]);\n }\n catch (e) { }\n });\n }\n};\nvar PSD = globalPSD;\nvar microtickQueue = [];\nvar numScheduledCalls = 0;\nvar tickFinalizers = [];\nfunction DexiePromise(fn) {\n if (typeof this !== 'object')\n throw new TypeError('Promises must be constructed via new');\n this._listeners = [];\n this.onuncatched = nop;\n this._lib = false;\n var psd = (this._PSD = PSD);\n if (debug) {\n this._stackHolder = getErrorWithStack();\n this._prev = null;\n this._numPrev = 0;\n }\n if (typeof fn !== 'function') {\n if (fn !== INTERNAL)\n throw new TypeError('Not a function');\n this._state = arguments[1];\n this._value = arguments[2];\n if (this._state === false)\n handleRejection(this, this._value);\n return;\n }\n this._state = null;\n this._value = null;\n ++psd.ref;\n executePromiseTask(this, fn);\n}\nvar thenProp = {\n get: function () {\n var psd = PSD, microTaskId = totalEchoes;\n function then(onFulfilled, onRejected) {\n var _this = this;\n var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n 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 debug && linkToPreviousPromise(rv, this);\n return rv;\n }\n then.prototype = INTERNAL;\n return then;\n },\n set: function (value) {\n setProp(this, 'then', value && value.prototype === INTERNAL ?\n thenProp :\n {\n get: function () {\n return value;\n },\n set: thenProp.set\n });\n }\n};\nprops(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 onFinally();\n return value;\n }, function (err) {\n onFinally();\n return PromiseReject(err);\n });\n },\n stack: {\n get: function () {\n if (this._stack)\n return this._stack;\n try {\n stack_being_generated = true;\n var stacks = getStack(this, [], MAX_LONG_STACKS);\n var stack = stacks.join(\"\\nFrom previous: \");\n if (this._state !== null)\n this._stack = stack;\n return stack;\n }\n finally {\n stack_being_generated = false;\n }\n }\n },\n timeout: function (ms, msg) {\n var _this = this;\n return ms < Infinity ?\n new 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 linkToPreviousPromise(rv, currentFulfiller);\n return rv;\n },\n reject: PromiseReject,\n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new 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$1; },\n set: function (value) { asap$1 = value; }\n },\n rejectionMapper: {\n get: function () { return rejectionMapper; },\n set: function (value) { rejectionMapper = value; }\n },\n follow: function (fn, zoneProps) {\n return new 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}\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 debug && reason !== null && typeof reason === 'object' && !reason._promise && tryCatch(function () {\n var origProp = getPropertyDescriptor(reason, \"stack\");\n reason._promise = promise;\n setProp(reason, \"stack\", {\n get: function () {\n return stack_being_generated ?\n origProp && (origProp.get ?\n origProp.get.apply(reason) :\n origProp.value) :\n promise.stack;\n }\n });\n });\n addPossiblyUnhandledError(promise);\n propagateAllListeners(promise);\n if (shouldExecuteTick)\n endMicroTickScope();\n}\nfunction propagateAllListeners(promise) {\n var listeners = promise._listeners;\n promise._listeners = [];\n for (var i = 0, len = listeners.length; i < len; ++i) {\n propagateToListener(promise, listeners[i]);\n }\n var psd = promise._PSD;\n --psd.ref || psd.finalize();\n if (numScheduledCalls === 0) {\n ++numScheduledCalls;\n asap$1(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n }\n}\nfunction propagateToListener(promise, listener) {\n if (promise._state === null) {\n promise._listeners.push(listener);\n return;\n }\n var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n if (cb === null) {\n return (promise._state ? listener.resolve : listener.reject)(promise._value);\n }\n ++listener.psd.ref;\n ++numScheduledCalls;\n asap$1(callListener, [cb, promise, listener]);\n}\nfunction callListener(cb, promise, listener) {\n try {\n currentFulfiller = promise;\n var ret, value = promise._value;\n if (promise._state) {\n ret = cb(value);\n }\n else {\n if (rejectingErrors.length)\n rejectingErrors = [];\n ret = cb(value);\n if (rejectingErrors.indexOf(value) === -1)\n markErrorAsHandled(promise);\n }\n listener.resolve(ret);\n }\n catch (e) {\n listener.reject(e);\n }\n finally {\n currentFulfiller = null;\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n}\nfunction getStack(promise, stacks, limit) {\n if (stacks.length === limit)\n return stacks;\n var stack = \"\";\n if (promise._state === false) {\n var failure = promise._value, errorName, message;\n if (failure != null) {\n errorName = failure.name || \"Error\";\n message = failure.message || failure;\n stack = prettyStack(failure, 0);\n }\n else {\n errorName = failure;\n message = \"\";\n }\n stacks.push(errorName + (message ? \": \" + message : \"\") + stack);\n }\n if (debug) {\n stack = prettyStack(promise._stackHolder, 2);\n if (stack && stacks.indexOf(stack) === -1)\n stacks.push(stack);\n if (promise._prev)\n getStack(promise._prev, stacks, limit);\n }\n return stacks;\n}\nfunction linkToPreviousPromise(promise, prev) {\n var numPrev = prev ? prev._numPrev + 1 : 0;\n if (numPrev < LONG_STACKS_CLIP_LIMIT) {\n promise._prev = prev;\n promise._numPrev = numPrev;\n }\n}\nfunction physicalTick() {\n beginMicroTickScope() && endMicroTickScope();\n}\nfunction beginMicroTickScope() {\n var wasRootExec = isOutsideMicroTick;\n isOutsideMicroTick = false;\n needsNewPhysicalTick = false;\n return wasRootExec;\n}\nfunction endMicroTickScope() {\n var callbacks, i, l;\n do {\n while (microtickQueue.length > 0) {\n callbacks = microtickQueue;\n microtickQueue = [];\n l = callbacks.length;\n for (i = 0; i < l; ++i) {\n var item = callbacks[i];\n item[0].apply(null, item[1]);\n }\n }\n } while (microtickQueue.length > 0);\n isOutsideMicroTick = true;\n needsNewPhysicalTick = true;\n}\nfunction finalizePhysicalTick() {\n var unhandledErrs = unhandledErrors;\n unhandledErrors = [];\n unhandledErrs.forEach(function (p) {\n p._PSD.onunhandled.call(null, p._value, p);\n });\n var finalizers = tickFinalizers.slice(0);\n var i = finalizers.length;\n while (i)\n finalizers[--i]();\n}\nfunction run_at_end_of_this_or_next_physical_tick(fn) {\n function finalizer() {\n fn();\n tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n }\n tickFinalizers.push(finalizer);\n ++numScheduledCalls;\n asap$1(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n}\nfunction addPossiblyUnhandledError(promise) {\n if (!unhandledErrors.some(function (p) { return p._value === promise._value; }))\n unhandledErrors.push(promise);\n}\nfunction markErrorAsHandled(promise) {\n var i = unhandledErrors.length;\n while (i)\n if (unhandledErrors[--i]._value === promise._value) {\n unhandledErrors.splice(i, 1);\n return;\n }\n}\nfunction PromiseReject(reason) {\n return new 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$$1, a1, a2) {\n var parent = PSD, psd = Object.create(parent);\n psd.parent = parent;\n psd.ref = 0;\n psd.global = false;\n psd.id = ++zone_id_counter;\n var globalEnv = globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: 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 nthen: getPatchedPromiseThen(globalEnv.nthen, psd),\n gthen: getPatchedPromiseThen(globalEnv.gthen, psd)\n } : {};\n if (props$$1)\n extend(psd, props$$1);\n ++parent.ref;\n psd.finalize = function () {\n --this.parent.ref || this.parent.finalize();\n };\n var rv = usePSD(psd, fn, a1, a2);\n if (psd.ref === 0)\n psd.finalize();\n return rv;\n}\nfunction incrementExpectedAwaits() {\n if (!task.id)\n task.id = ++taskCounter;\n ++task.awaits;\n task.echoes += ZONE_ECHO_LIMIT;\n return task.id;\n}\nfunction decrementExpectedAwaits() {\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.id = 0;\n }\n zoneStack.push(PSD);\n switchToZone(targetZone, true);\n}\nfunction zoneLeaveEcho() {\n var zone = zoneStack[zoneStack.length - 1];\n zoneStack.pop();\n switchToZone(zone, false);\n}\nfunction switchToZone(targetZone, bEnteringZone) {\n var currentZone = PSD;\n if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {\n enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n }\n if (targetZone === PSD)\n return;\n PSD = targetZone;\n if (currentZone === globalPSD)\n globalPSD.env = snapShot();\n if (patchGlobalPromise) {\n var GlobalPromise_1 = globalPSD.env.Promise;\n var targetEnv = targetZone.env;\n nativePromiseProto.then = targetEnv.nthen;\n GlobalPromise_1.prototype.then = targetEnv.gthen;\n if (currentZone.global || targetZone.global) {\n Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n GlobalPromise_1.all = targetEnv.all;\n GlobalPromise_1.race = targetEnv.race;\n GlobalPromise_1.resolve = targetEnv.resolve;\n GlobalPromise_1.reject = targetEnv.reject;\n if (targetEnv.allSettled)\n GlobalPromise_1.allSettled = targetEnv.allSettled;\n if (targetEnv.any)\n GlobalPromise_1.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 nthen: nativePromiseProto.then,\n gthen: GlobalPromise.prototype.then\n } : {};\n}\nfunction usePSD(psd, fn, a1, a2, a3) {\n var outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn(a1, a2, a3);\n }\n finally {\n switchToZone(outerScope, false);\n }\n}\nfunction enqueueNativeMicroTask(job) {\n nativePromiseThen.call(resolvedNativePromise, job);\n}\nfunction nativeAwaitCompatibleWrap(fn, zone, possibleAwait, 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 enqueueNativeMicroTask(decrementExpectedAwaits);\n }\n };\n}\nfunction getPatchedPromiseThen(origThen, zone) {\n return function (onResolved, onRejected) {\n return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone), nativeAwaitCompatibleWrap(onRejected, zone));\n };\n}\nvar UNHANDLEDREJECTION = \"unhandledrejection\";\nfunction globalError(err, promise) {\n var rv;\n try {\n rv = promise.onuncatched(err);\n }\n catch (e) { }\n if (rv !== false)\n try {\n var event, eventData = { promise: promise, reason: err };\n if (_global.document && document.createEvent) {\n event = document.createEvent('Event');\n event.initEvent(UNHANDLEDREJECTION, true, true);\n extend(event, eventData);\n }\n else if (_global.CustomEvent) {\n event = new CustomEvent(UNHANDLEDREJECTION, { detail: eventData });\n extend(event, eventData);\n }\n if (event && _global.dispatchEvent) {\n dispatchEvent(event);\n if (!_global.PromiseRejectionEvent && _global.onunhandledrejection)\n try {\n _global.onunhandledrejection(event);\n }\n catch (_) { }\n }\n if (debug && event && !event.defaultPrevented) {\n console.warn(\"Unhandled rejection: \" + (err.stack || err));\n }\n }\n catch (e) { }\n}\nvar rejection = DexiePromise.reject;\n\nfunction tempTransaction(db, mode, storeNames, fn) {\n if (!db._state.openComplete && (!PSD.letThrough)) {\n if (!db._state.isBeingOpened) {\n if (!db._options.autoOpen)\n return rejection(new exceptions.DatabaseClosed());\n db.open().catch(nop);\n }\n return db._state.dbReadyPromise.then(function () { return tempTransaction(db, mode, storeNames, fn); });\n }\n else {\n var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n try {\n trans.create();\n }\n catch (ex) {\n return rejection(ex);\n }\n return trans._promise(mode, function (resolve, reject) {\n return newScope(function () {\n PSD.trans = trans;\n return fn(resolve, reject, trans);\n });\n }).then(function (result) {\n return trans._completion.then(function () { return result; });\n });\n }\n}\n\nvar DEXIE_VERSION = '3.0.3';\nvar maxString = String.fromCharCode(65535);\nvar minKey = -Infinity;\nvar INVALID_KEY_ARGUMENT = \"Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.\";\nvar STRING_EXPECTED = \"String expected.\";\nvar connections = [];\nvar isIEOrEdge = typeof navigator !== 'undefined' && /(MSIE|Trident|Edge)/.test(navigator.userAgent);\nvar hasIEDeleteObjectStoreBug = isIEOrEdge;\nvar hangsOnDeleteLargeKeyRange = isIEOrEdge;\nvar dexieStackFrameFilter = function (frame) { return !/(dexie\\.js|dexie\\.min\\.js)/.test(frame); };\nvar DBNAMES_DB = '__dbnames';\nvar READONLY = 'readonly';\nvar READWRITE = 'readwrite';\n\nfunction combine(filter1, filter2) {\n return filter1 ?\n filter2 ?\n function () { return filter1.apply(this, arguments) && filter2.apply(this, arguments); } :\n filter1 :\n filter2;\n}\n\nvar AnyRange = {\n type: 3 ,\n lower: -Infinity,\n lowerOpen: false,\n upper: [[]],\n upperOpen: false\n};\n\nfunction workaroundForUndefinedPrimKey(keyPath) {\n return function (obj) {\n if (getByKeyPath(obj, keyPath) === undefined) {\n obj = deepClone(obj);\n delByKeyPath(obj, keyPath);\n }\n return obj;\n };\n}\n\nvar Table = (function () {\n function Table() {\n }\n Table.prototype._trans = function (mode, fn, writeLocked) {\n var trans = this._tx || PSD.trans;\n var tableName = this.name;\n function checkTableInTransaction(resolve, reject, trans) {\n if (!trans.schema[tableName])\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n return fn(trans.idbtrans, trans);\n }\n var wasRootExec = beginMicroTickScope();\n try {\n return trans && trans.db === this.db ?\n trans === PSD.trans ?\n trans._promise(mode, checkTableInTransaction, writeLocked) :\n newScope(function () { return trans._promise(mode, checkTableInTransaction, writeLocked); }, { trans: trans, transless: PSD.transless || PSD }) :\n tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n }\n finally {\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n Table.prototype.get = function (keyOrCrit, cb) {\n var _this = this;\n if (keyOrCrit && keyOrCrit.constructor === Object)\n return this.where(keyOrCrit).first(cb);\n return this._trans('readonly', function (trans) {\n return _this.core.get({ trans: trans, key: keyOrCrit })\n .then(function (res) { return _this.hook.reading.fire(res); });\n }).then(cb);\n };\n Table.prototype.where = function (indexOrCrit) {\n if (typeof indexOrCrit === 'string')\n return new this.db.WhereClause(this, indexOrCrit);\n if (isArray(indexOrCrit))\n return new this.db.WhereClause(this, \"[\" + indexOrCrit.join('+') + \"]\");\n var keyPaths = keys(indexOrCrit);\n if (keyPaths.length === 1)\n return this\n .where(keyPaths[0])\n .equals(indexOrCrit[keyPaths[0]]);\n var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function (ix) {\n return ix.compound &&\n keyPaths.every(function (keyPath) { return ix.keyPath.indexOf(keyPath) >= 0; }) &&\n ix.keyPath.every(function (keyPath) { return keyPaths.indexOf(keyPath) >= 0; });\n })[0];\n if (compoundIndex && this.db._maxKey !== maxString)\n return this\n .where(compoundIndex.name)\n .equals(compoundIndex.keyPath.map(function (kp) { return indexOrCrit[kp]; }));\n if (!compoundIndex && debug)\n console.warn(\"The query \" + JSON.stringify(indexOrCrit) + \" on \" + this.name + \" would benefit of a \" +\n (\"compound index [\" + keyPaths.join('+') + \"]\"));\n var idxByName = this.schema.idxByName;\n var idb = this.db._deps.indexedDB;\n function equals(a, b) {\n try {\n return idb.cmp(a, b) === 0;\n }\n catch (e) {\n return false;\n }\n }\n var _a = keyPaths.reduce(function (_a, keyPath) {\n var prevIndex = _a[0], prevFilterFn = _a[1];\n var index = idxByName[keyPath];\n var value = indexOrCrit[keyPath];\n return [\n prevIndex || index,\n prevIndex || !index ?\n combine(prevFilterFn, index && index.multi ?\n function (x) {\n var prop = getByKeyPath(x, keyPath);\n return isArray(prop) && prop.some(function (item) { return equals(value, item); });\n } : function (x) { return equals(value, getByKeyPath(x, keyPath)); })\n : prevFilterFn\n ];\n }, [null, null]), idx = _a[0], filterFunction = _a[1];\n return idx ?\n this.where(idx.name).equals(indexOrCrit[idx.keyPath])\n .filter(filterFunction) :\n compoundIndex ?\n this.filter(filterFunction) :\n this.where(keyPaths).equals('');\n };\n Table.prototype.filter = function (filterFunction) {\n return this.toCollection().and(filterFunction);\n };\n Table.prototype.count = function (thenShortcut) {\n return this.toCollection().count(thenShortcut);\n };\n Table.prototype.offset = function (offset) {\n return this.toCollection().offset(offset);\n };\n Table.prototype.limit = function (numRows) {\n return this.toCollection().limit(numRows);\n };\n Table.prototype.each = function (callback) {\n return this.toCollection().each(callback);\n };\n Table.prototype.toArray = function (thenShortcut) {\n return this.toCollection().toArray(thenShortcut);\n };\n Table.prototype.toCollection = function () {\n return new this.db.Collection(new this.db.WhereClause(this));\n };\n Table.prototype.orderBy = function (index) {\n return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ?\n \"[\" + index.join('+') + \"]\" :\n index));\n };\n Table.prototype.reverse = function () {\n return this.toCollection().reverse();\n };\n Table.prototype.mapToClass = function (constructor) {\n this.schema.mappedClass = constructor;\n var readHook = function (obj) {\n if (!obj)\n return obj;\n var res = Object.create(constructor.prototype);\n for (var m in obj)\n if (hasOwn(obj, m))\n try {\n res[m] = obj[m];\n }\n catch (_) { }\n return res;\n };\n if (this.schema.readHook) {\n this.hook.reading.unsubscribe(this.schema.readHook);\n }\n this.schema.readHook = readHook;\n this.hook(\"reading\", readHook);\n return constructor;\n };\n Table.prototype.defineClass = function () {\n function Class(content) {\n extend(this, content);\n }\n \n return this.mapToClass(Class);\n };\n Table.prototype.add = function (obj, key) {\n var _this = this;\n 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 }\n return lastResult;\n });\n };\n Table.prototype.update = function (keyOrObject, modifications) {\n if (typeof modifications !== 'object' || isArray(modifications))\n throw new exceptions.InvalidArgument(\"Modifications must be an object.\");\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n keys(modifications).forEach(function (keyPath) {\n setByKeyPath(keyOrObject, keyPath, modifications[keyPath]);\n });\n var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n if (key === undefined)\n return rejection(new exceptions.InvalidArgument(\"Given object does not contain its primary key\"));\n return this.where(\":id\").equals(key).modify(modifications);\n }\n else {\n return this.where(\":id\").equals(keyOrObject).modify(modifications);\n }\n };\n Table.prototype.put = function (obj, key) {\n var _this = this;\n 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 }\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$$1) {\n var _this = this;\n return this._trans('readonly', function (trans) {\n return _this.core.getMany({\n keys: keys$$1,\n trans: trans\n }).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$$1 = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys$$1 ? 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$$1)\n throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys$$1 && keys$$1.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n 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$$1, 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(_this.name + \".bulkAdd(): \" + numFailures + \" of \" + numObjects + \" operations failed\", Object.keys(failures).map(function (pos) { return failures[pos]; }));\n });\n });\n };\n Table.prototype.bulkPut = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys$$1 = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys$$1 ? 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$$1)\n throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys$$1 && keys$$1.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n 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$$1, 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(_this.name + \".bulkPut(): \" + numFailures + \" of \" + numObjects + \" operations failed\", Object.keys(failures).map(function (pos) { return failures[pos]; }));\n });\n });\n };\n Table.prototype.bulkDelete = function (keys$$1) {\n var _this = this;\n var numKeys = keys$$1.length;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'delete', keys: keys$$1 });\n }).then(function (_a) {\n var numFailures = _a.numFailures, lastResult = _a.lastResult, failures = _a.failures;\n if (numFailures === 0)\n return lastResult;\n throw new BulkError(_this.name + \".bulkDelete(): \" + numFailures + \" of \" + 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(function fireEvent() {\n fn.apply(null, args);\n });\n });\n });\n }\n else\n throw new exceptions.InvalidArgument(\"Invalid event config\");\n });\n }\n}\n\nfunction makeClassConstructor(prototype, constructor) {\n derive(constructor).from({ prototype: prototype });\n return constructor;\n}\n\nfunction createTableConstructor(db) {\n return makeClassConstructor(Table.prototype, function Table$$1(name, tableSchema, trans) {\n this.db = db;\n this._tx = trans;\n this.name = name;\n this.schema = tableSchema;\n this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n \"creating\": [hookCreatingChain, nop],\n \"reading\": [pureFunctionChain, mirror],\n \"updating\": [hookUpdatingChain, nop],\n \"deleting\": [hookDeletingChain, nop]\n });\n });\n}\n\nfunction isPlainKeyRange(ctx, ignoreLimitFilter) {\n return !(ctx.filter || ctx.algorithm || ctx.or) &&\n (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n}\nfunction addFilter(ctx, fn) {\n ctx.filter = combine(ctx.filter, fn);\n}\nfunction addReplayFilter(ctx, factory, isLimitFilter) {\n var curr = ctx.replayFilter;\n ctx.replayFilter = curr ? function () { return combine(curr(), factory()); } : factory;\n ctx.justLimit = isLimitFilter && !curr;\n}\nfunction addMatchFilter(ctx, fn) {\n ctx.isMatch = combine(ctx.isMatch, fn);\n}\nfunction getIndexOrStore(ctx, coreSchema) {\n if (ctx.isPrimKey)\n return coreSchema.primaryKey;\n var index = coreSchema.getIndexByKeyPath(ctx.index);\n if (!index)\n throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n return index;\n}\nfunction openCursor(ctx, coreTable, trans) {\n var index = getIndexOrStore(ctx, coreTable.schema);\n return coreTable.openCursor({\n trans: trans,\n values: !ctx.keysOnly,\n reverse: ctx.dir === 'prev',\n unique: !!ctx.unique,\n query: {\n index: index,\n range: ctx.range\n }\n });\n}\nfunction iter(ctx, fn, coreTrans, coreTable) {\n var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n if (!ctx.or) {\n return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n }\n else {\n var set_1 = {};\n var union = function (item, cursor, advance) {\n if (!filter || filter(cursor, advance, function (result) { return cursor.stop(result); }, function (err) { return cursor.fail(err); })) {\n var primaryKey = cursor.primaryKey;\n var key = '' + primaryKey;\n if (key === '[object ArrayBuffer]')\n key = '' + new Uint8Array(primaryKey);\n if (!hasOwn(set_1, key)) {\n set_1[key] = true;\n fn(item, cursor, advance);\n }\n }\n };\n return Promise.all([\n ctx.or._iterate(union, coreTrans),\n iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)\n ]);\n }\n}\nfunction iterate(cursorPromise, filter, fn, valueMapper) {\n var mappedFn = valueMapper ? function (x, c, a) { return fn(valueMapper(x), c, a); } : fn;\n var wrappedFn = wrap(mappedFn);\n return cursorPromise.then(function (cursor) {\n if (cursor) {\n return cursor.start(function () {\n var c = function () { return cursor.continue(); };\n if (!filter || filter(cursor, function (advancer) { return c = advancer; }, function (val) { cursor.stop(val); c = nop; }, function (e) { cursor.fail(e); c = nop; }))\n wrappedFn(cursor.value, cursor, function (advancer) { return c = advancer; });\n c();\n });\n }\n });\n}\n\nvar Collection = (function () {\n function Collection() {\n }\n Collection.prototype._read = function (fn, cb) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readonly', fn).then(cb);\n };\n Collection.prototype._write = function (fn) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readwrite', fn, \"locked\");\n };\n Collection.prototype._addAlgorithm = function (fn) {\n var ctx = this._ctx;\n ctx.algorithm = combine(ctx.algorithm, fn);\n };\n Collection.prototype._iterate = function (fn, coreTrans) {\n return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n };\n Collection.prototype.clone = function (props$$1) {\n var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx);\n if (props$$1)\n extend(ctx, props$$1);\n rv._ctx = ctx;\n return rv;\n };\n Collection.prototype.raw = function () {\n this._ctx.valueMapper = null;\n return this;\n };\n Collection.prototype.each = function (fn) {\n var ctx = this._ctx;\n return this._read(function (trans) { return iter(ctx, fn, trans, ctx.table.core); });\n };\n Collection.prototype.count = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n var coreTable = ctx.table.core;\n if (isPlainKeyRange(ctx, true)) {\n return coreTable.count({\n trans: trans,\n query: {\n index: getIndexOrStore(ctx, coreTable.schema),\n range: ctx.range\n }\n }).then(function (count) { return Math.min(count, ctx.limit); });\n }\n else {\n var count = 0;\n return iter(ctx, function () { ++count; return false; }, trans, coreTable)\n .then(function () { return count; });\n }\n }).then(cb);\n };\n Collection.prototype.sortBy = function (keyPath, cb) {\n var parts = keyPath.split('.').reverse(), lastPart = parts[0], lastIndex = parts.length - 1;\n function getval(obj, i) {\n if (i)\n return getval(obj[parts[i]], i - 1);\n return obj[lastPart];\n }\n var order = this._ctx.dir === \"next\" ? 1 : -1;\n function sorter(a, b) {\n var aVal = getval(a, lastIndex), bVal = getval(b, lastIndex);\n return aVal < bVal ? -order : aVal > bVal ? order : 0;\n }\n return this.toArray(function (a) {\n return a.sort(sorter);\n }).then(cb);\n };\n Collection.prototype.toArray = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n var valueMapper_1 = ctx.valueMapper;\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n limit: ctx.limit,\n values: true,\n query: {\n index: index,\n range: ctx.range\n }\n }).then(function (_a) {\n var result = _a.result;\n return valueMapper_1 ? result.map(valueMapper_1) : result;\n });\n }\n else {\n var a_1 = [];\n return iter(ctx, function (item) { return a_1.push(item); }, trans, ctx.table.core).then(function () { return a_1; });\n }\n }, cb);\n };\n Collection.prototype.offset = function (offset) {\n var ctx = this._ctx;\n if (offset <= 0)\n return this;\n ctx.offset += offset;\n if (isPlainKeyRange(ctx)) {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function (cursor, advance) {\n if (offsetLeft === 0)\n return true;\n if (offsetLeft === 1) {\n --offsetLeft;\n return false;\n }\n advance(function () {\n cursor.advance(offsetLeft);\n offsetLeft = 0;\n });\n return false;\n };\n });\n }\n else {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function () { return (--offsetLeft < 0); };\n });\n }\n return this;\n };\n Collection.prototype.limit = function (numRows) {\n this._ctx.limit = Math.min(this._ctx.limit, numRows);\n addReplayFilter(this._ctx, function () {\n var rowsLeft = numRows;\n return function (cursor, advance, resolve) {\n if (--rowsLeft <= 0)\n advance(resolve);\n return rowsLeft >= 0;\n };\n }, true);\n return this;\n };\n Collection.prototype.until = function (filterFunction, bIncludeStopEntry) {\n addFilter(this._ctx, function (cursor, advance, resolve) {\n if (filterFunction(cursor.value)) {\n advance(resolve);\n return bIncludeStopEntry;\n }\n else {\n return true;\n }\n });\n return this;\n };\n Collection.prototype.first = function (cb) {\n return this.limit(1).toArray(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.last = function (cb) {\n return this.reverse().first(cb);\n };\n Collection.prototype.filter = function (filterFunction) {\n addFilter(this._ctx, function (cursor) {\n return filterFunction(cursor.value);\n });\n addMatchFilter(this._ctx, filterFunction);\n return this;\n };\n Collection.prototype.and = function (filter) {\n return this.filter(filter);\n };\n Collection.prototype.or = function (indexName) {\n return new this.db.WhereClause(this._ctx.table, indexName, this);\n };\n Collection.prototype.reverse = function () {\n this._ctx.dir = (this._ctx.dir === \"prev\" ? \"next\" : \"prev\");\n if (this._ondirectionchange)\n this._ondirectionchange(this._ctx.dir);\n return this;\n };\n Collection.prototype.desc = function () {\n return this.reverse();\n };\n Collection.prototype.eachKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.key, cursor); });\n };\n Collection.prototype.eachUniqueKey = function (cb) {\n this._ctx.unique = \"unique\";\n return this.eachKey(cb);\n };\n Collection.prototype.eachPrimaryKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.primaryKey, cursor); });\n };\n Collection.prototype.keys = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.key);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.primaryKeys = function (cb) {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n return this._read(function (trans) {\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n values: false,\n limit: ctx.limit,\n query: {\n index: index,\n range: ctx.range\n }\n });\n }).then(function (_a) {\n var result = _a.result;\n return result;\n }).then(cb);\n }\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.primaryKey);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.uniqueKeys = function (cb) {\n this._ctx.unique = \"unique\";\n return this.keys(cb);\n };\n Collection.prototype.firstKey = function (cb) {\n return this.limit(1).keys(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.lastKey = function (cb) {\n return this.reverse().firstKey(cb);\n };\n Collection.prototype.distinct = function () {\n var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n if (!idx || !idx.multi)\n return this;\n var set = {};\n addFilter(this._ctx, function (cursor) {\n var strKey = cursor.primaryKey.toString();\n var found = hasOwn(set, strKey);\n set[strKey] = true;\n return !found;\n });\n return this;\n };\n Collection.prototype.modify = function (changes) {\n var _this = this;\n var ctx = this._ctx;\n return this._write(function (trans) {\n var modifyer;\n if (typeof changes === 'function') {\n modifyer = changes;\n }\n else {\n var keyPaths = keys(changes);\n var numKeys = keyPaths.length;\n modifyer = function (item) {\n var anythingModified = false;\n for (var i = 0; i < numKeys; ++i) {\n var keyPath = keyPaths[i], val = changes[keyPath];\n if (getByKeyPath(item, keyPath) !== val) {\n setByKeyPath(item, keyPath, val);\n anythingModified = true;\n }\n }\n return anythingModified;\n };\n }\n var coreTable = ctx.table.core;\n var _a = coreTable.schema.primaryKey, outbound = _a.outbound, extractKey = _a.extractKey;\n var limit = 'testmode' in Dexie ? 1 : 2000;\n var cmp = _this.db.core.cmp;\n var totalFailures = [];\n var successCount = 0;\n var failedKeys = [];\n var applyMutateResult = function (expectedCount, res) {\n var failures = res.failures, numFailures = res.numFailures;\n successCount += expectedCount - numFailures;\n for (var _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$$1) {\n var nextChunk = function (offset) {\n var count = Math.min(limit, keys$$1.length - offset);\n return coreTable.getMany({ trans: trans, keys: keys$$1.slice(offset, offset + count) }).then(function (values) {\n var addValues = [];\n var putValues = [];\n var putKeys = outbound ? [] : null;\n var deleteKeys = [];\n for (var i = 0; i < count; ++i) {\n var origValue = values[i];\n var ctx_1 = {\n value: deepClone(origValue),\n primKey: keys$$1[offset + i]\n };\n if (modifyer.call(ctx_1, ctx_1.value, ctx_1) !== false) {\n if (ctx_1.value == null) {\n deleteKeys.push(keys$$1[offset + i]);\n }\n else if (!outbound && cmp(extractKey(origValue), extractKey(ctx_1.value)) !== 0) {\n deleteKeys.push(keys$$1[offset + i]);\n addValues.push(ctx_1.value);\n }\n else {\n putValues.push(ctx_1.value);\n if (outbound)\n putKeys.push(keys$$1[offset + i]);\n }\n }\n }\n return Promise.resolve(addValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'add', values: addValues })\n .then(function (res) {\n for (var pos in res.failures) {\n deleteKeys.splice(parseInt(pos), 1);\n }\n applyMutateResult(addValues.length, res);\n })).then(function (res) { return putValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'put', keys: putKeys, values: putValues })\n .then(function (res) { return applyMutateResult(putValues.length, res); }); }).then(function () { return deleteKeys.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'delete', keys: deleteKeys })\n .then(function (res) { return applyMutateResult(deleteKeys.length, res); }); }).then(function () {\n return keys$$1.length > offset + count && nextChunk(offset + limit);\n });\n });\n };\n return nextChunk(0).then(function () {\n if (totalFailures.length > 0)\n throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys);\n return keys$$1.length;\n });\n });\n });\n };\n Collection.prototype.delete = function () {\n var ctx = this._ctx, range = ctx.range;\n if (isPlainKeyRange(ctx) &&\n ((ctx.isPrimKey && !hangsOnDeleteLargeKeyRange) || range.type === 3 ))\n {\n return this._write(function (trans) {\n var primaryKey = ctx.table.core.schema.primaryKey;\n var coreRange = range;\n return ctx.table.core.count({ trans: trans, query: { index: primaryKey, range: coreRange } }).then(function (count) {\n return ctx.table.core.mutate({ trans: trans, type: 'deleteRange', range: coreRange })\n .then(function (_a) {\n var failures = _a.failures, lastResult = _a.lastResult, results = _a.results, numFailures = _a.numFailures;\n if (numFailures)\n throw new ModifyError(\"Could not delete some values\", Object.keys(failures).map(function (pos) { return failures[pos]; }), count - numFailures);\n return count - numFailures;\n });\n });\n });\n }\n return this.modify(function (value, ctx) { return ctx.value = null; });\n };\n return Collection;\n}());\n\nfunction createCollectionConstructor(db) {\n return makeClassConstructor(Collection.prototype, function Collection$$1(whereClause, keyRangeGenerator) {\n this.db = db;\n var keyRange = AnyRange, error = null;\n if (keyRangeGenerator)\n try {\n keyRange = keyRangeGenerator();\n }\n catch (ex) {\n error = ex;\n }\n var whereCtx = whereClause._ctx;\n var table = whereCtx.table;\n var readingHook = table.hook.reading.fire;\n this._ctx = {\n table: table,\n index: whereCtx.index,\n isPrimKey: (!whereCtx.index || (table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name)),\n range: keyRange,\n keysOnly: false,\n dir: \"next\",\n unique: \"\",\n algorithm: null,\n filter: null,\n replayFilter: null,\n justLimit: true,\n isMatch: null,\n offset: 0,\n limit: Infinity,\n error: error,\n or: whereCtx.or,\n valueMapper: readingHook !== mirror ? readingHook : null\n };\n });\n}\n\nfunction simpleCompare(a, b) {\n return a < b ? -1 : a === b ? 0 : 1;\n}\nfunction simpleCompareReverse(a, b) {\n return a > b ? -1 : a === b ? 0 : 1;\n}\n\nfunction fail(collectionOrWhereClause, err, T) {\n var collection = collectionOrWhereClause instanceof WhereClause ?\n new collectionOrWhereClause.Collection(collectionOrWhereClause) :\n collectionOrWhereClause;\n collection._ctx.error = T ? new T(err) : new TypeError(err);\n return collection;\n}\nfunction emptyCollection(whereClause) {\n return new whereClause.Collection(whereClause, function () { return rangeEqual(\"\"); }).limit(0);\n}\nfunction upperFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toUpperCase(); } :\n function (s) { return s.toLowerCase(); };\n}\nfunction lowerFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toLowerCase(); } :\n function (s) { return s.toUpperCase(); };\n}\nfunction nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n var length = Math.min(key.length, lowerNeedle.length);\n var llp = -1;\n for (var i = 0; i < length; ++i) {\n var lwrKeyChar = lowerKey[i];\n if (lwrKeyChar !== lowerNeedle[i]) {\n if (cmp(key[i], upperNeedle[i]) < 0)\n return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n if (cmp(key[i], lowerNeedle[i]) < 0)\n return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n if (llp >= 0)\n return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n return null;\n }\n if (cmp(key[i], lwrKeyChar) < 0)\n llp = i;\n }\n if (length < lowerNeedle.length && dir === \"next\")\n return key + upperNeedle.substr(key.length);\n if (length < key.length && dir === \"prev\")\n return key.substr(0, upperNeedle.length);\n return (llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1));\n}\nfunction addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) {\n var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length;\n if (!needles.every(function (s) { return typeof s === 'string'; })) {\n return fail(whereClause, STRING_EXPECTED);\n }\n function initDirection(dir) {\n upper = upperFactory(dir);\n lower = lowerFactory(dir);\n compare = (dir === \"next\" ? simpleCompare : simpleCompareReverse);\n var needleBounds = needles.map(function (needle) {\n return { lower: lower(needle), upper: upper(needle) };\n }).sort(function (a, b) {\n return compare(a.lower, b.lower);\n });\n upperNeedles = needleBounds.map(function (nb) { return nb.upper; });\n lowerNeedles = needleBounds.map(function (nb) { return nb.lower; });\n direction = dir;\n nextKeySuffix = (dir === \"next\" ? \"\" : suffix);\n }\n initDirection(\"next\");\n var c = new whereClause.Collection(whereClause, function () { return createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix); });\n c._ondirectionchange = function (direction) {\n initDirection(direction);\n };\n var firstPossibleNeedle = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n if (typeof key !== 'string')\n return false;\n var lowerKey = lower(key);\n if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n return true;\n }\n else {\n var lowestPossibleCasing = null;\n for (var i = firstPossibleNeedle; i < needlesLen; ++i) {\n var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction);\n if (casing === null && lowestPossibleCasing === null)\n firstPossibleNeedle = i + 1;\n else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) {\n lowestPossibleCasing = casing;\n }\n }\n if (lowestPossibleCasing !== null) {\n advance(function () { cursor.continue(lowestPossibleCasing + nextKeySuffix); });\n }\n else {\n advance(resolve);\n }\n return false;\n }\n });\n return c;\n}\nfunction createRange(lower, upper, lowerOpen, upperOpen) {\n return {\n type: 2 ,\n lower: lower,\n upper: upper,\n lowerOpen: lowerOpen,\n upperOpen: upperOpen\n };\n}\nfunction rangeEqual(value) {\n return {\n type: 1 ,\n lower: value,\n upper: value\n };\n}\n\nvar WhereClause = (function () {\n function WhereClause() {\n }\n Object.defineProperty(WhereClause.prototype, \"Collection\", {\n get: function () {\n return this._ctx.table.db.Collection;\n },\n enumerable: true,\n configurable: true\n });\n WhereClause.prototype.between = function (lower, upper, includeLower, includeUpper) {\n includeLower = includeLower !== false;\n includeUpper = includeUpper === true;\n try {\n if ((this._cmp(lower, upper) > 0) ||\n (this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)))\n return emptyCollection(this);\n return new this.Collection(this, function () { return createRange(lower, upper, !includeLower, !includeUpper); });\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n };\n WhereClause.prototype.equals = function (value) {\n 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$$1(table, index, orCollection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n var indexedDB = db._deps.indexedDB;\n if (!indexedDB)\n throw new exceptions.MissingAPI(\"indexedDB API missing\");\n this._cmp = this._ascending = indexedDB.cmp.bind(indexedDB);\n this._descending = function (a, b) { return indexedDB.cmp(b, a); };\n this._max = function (a, b) { return indexedDB.cmp(a, b) > 0 ? a : b; };\n this._min = function (a, b) { return indexedDB.cmp(a, b) < 0 ? a : b; };\n this._IDBKeyRange = db._deps.IDBKeyRange;\n });\n}\n\nfunction safariMultiStoreFix(storeNames) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n}\n\nfunction getMaxKey(IdbKeyRange) {\n try {\n IdbKeyRange.only([[]]);\n return [[]];\n }\n catch (e) {\n return maxString;\n }\n}\n\nfunction eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject(event.target.error);\n return false;\n });\n}\n\n\n\nfunction preventDefault(event) {\n if (event.stopPropagation)\n event.stopPropagation();\n if (event.preventDefault)\n event.preventDefault();\n}\n\nvar Transaction = (function () {\n function Transaction() {\n }\n Transaction.prototype._lock = function () {\n assert(!PSD.global);\n ++this._reculock;\n if (this._reculock === 1 && !PSD.global)\n PSD.lockOwnerFor = this;\n return this;\n };\n Transaction.prototype._unlock = function () {\n assert(!PSD.global);\n if (--this._reculock === 0) {\n if (!PSD.global)\n PSD.lockOwnerFor = null;\n while (this._blockedFuncs.length > 0 && !this._locked()) {\n var fnAndPSD = this._blockedFuncs.shift();\n try {\n usePSD(fnAndPSD[1], fnAndPSD[0]);\n }\n catch (e) { }\n }\n }\n return this;\n };\n Transaction.prototype._locked = function () {\n return this._reculock && PSD.lockOwnerFor !== this;\n };\n Transaction.prototype.create = function (idbtrans) {\n var _this = this;\n if (!this.mode)\n return this;\n var idbdb = this.db.idbdb;\n var dbOpenError = this.db._state.dbOpenError;\n assert(!this.idbtrans);\n if (!idbtrans && !idbdb) {\n switch (dbOpenError && dbOpenError.name) {\n case \"DatabaseClosedError\":\n throw new exceptions.DatabaseClosed(dbOpenError);\n case \"MissingAPIError\":\n throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n default:\n throw new exceptions.OpenFailed(dbOpenError);\n }\n }\n if (!this.active)\n throw new exceptions.TransactionInactive();\n assert(this._completion._state === null);\n idbtrans = this.idbtrans = idbtrans || idbdb.transaction(safariMultiStoreFix(this.storeNames), this.mode);\n idbtrans.onerror = wrap(function (ev) {\n preventDefault(ev);\n _this._reject(idbtrans.error);\n });\n idbtrans.onabort = wrap(function (ev) {\n preventDefault(ev);\n _this.active && _this._reject(new exceptions.Abort(idbtrans.error));\n _this.active = false;\n _this.on(\"abort\").fire(ev);\n });\n idbtrans.oncomplete = wrap(function () {\n _this.active = false;\n _this._resolve();\n });\n return this;\n };\n Transaction.prototype._promise = function (mode, fn, bWriteLock) {\n var _this = this;\n if (mode === 'readwrite' && this.mode !== 'readwrite')\n return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n if (!this.active)\n return rejection(new exceptions.TransactionInactive());\n if (this._locked()) {\n return new 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 this.active && this._reject(new exceptions.Abort());\n this.active = false;\n };\n Transaction.prototype.table = function (tableName) {\n var memoizedTables = (this._memoizedTables || (this._memoizedTables = {}));\n if (hasOwn(memoizedTables, tableName))\n return memoizedTables[tableName];\n var tableSchema = this.schema[tableName];\n if (!tableSchema) {\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n }\n var transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n transactionBoundTable.core = this.db.core.table(tableName);\n memoizedTables[tableName] = transactionBoundTable;\n return transactionBoundTable;\n };\n return Transaction;\n}());\n\nfunction createTransactionConstructor(db) {\n return makeClassConstructor(Transaction.prototype, function Transaction$$1(mode, storeNames, dbschema, parent) {\n var _this = this;\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.idbtrans = null;\n this.on = Events(this, \"complete\", \"error\", \"abort\");\n this.parent = parent || null;\n this.active = true;\n this._reculock = 0;\n this._blockedFuncs = [];\n this._resolve = null;\n this._reject = null;\n this._waitingFor = null;\n this._waitingQueue = null;\n this._spinCount = 0;\n this._completion = new 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 getKeyExtractor(keyPath) {\n if (keyPath == null) {\n return function () { return undefined; };\n }\n else if (typeof keyPath === 'string') {\n return getSinglePathKeyExtractor(keyPath);\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\nfunction getSinglePathKeyExtractor(keyPath) {\n var split = keyPath.split('.');\n if (split.length === 1) {\n return function (obj) { return obj[keyPath]; };\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\n\nfunction getEffectiveKeys(primaryKey, req) {\n if (req.type === 'delete')\n return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey);\n}\nfunction getExistingValues(table, req, effectiveKeys) {\n return req.type === 'add' ? Promise.resolve(new Array(req.values.length)) :\n table.getMany({ trans: req.trans, keys: effectiveKeys });\n}\n\nfunction arrayify(arrayLike) {\n return [].slice.call(arrayLike);\n}\n\nvar _id_counter = 0;\nfunction getKeyPathAlias(keyPath) {\n return keyPath == null ?\n \":id\" :\n typeof keyPath === 'string' ?\n keyPath :\n \"[\" + keyPath.join('+') + \"]\";\n}\nfunction createDBCore(db, indexedDB, IdbKeyRange, tmpTrans) {\n var cmp = indexedDB.cmp.bind(indexedDB);\n function extractSchema(db, trans) {\n var tables = arrayify(db.objectStoreNames);\n return {\n schema: {\n name: db.name,\n tables: tables.map(function (table) { return trans.objectStore(table); }).map(function (store) {\n var keyPath = store.keyPath, autoIncrement = store.autoIncrement;\n var compound = isArray(keyPath);\n var outbound = keyPath == null;\n var indexByKeyPath = {};\n var result = {\n name: store.name,\n primaryKey: {\n name: null,\n isPrimaryKey: true,\n outbound: outbound,\n compound: compound,\n keyPath: keyPath,\n autoIncrement: autoIncrement,\n unique: true,\n extractKey: getKeyExtractor(keyPath)\n },\n indexes: arrayify(store.indexNames).map(function (indexName) { return store.index(indexName); })\n .map(function (index) {\n var name = index.name, unique = index.unique, multiEntry = index.multiEntry, keyPath = index.keyPath;\n var compound = isArray(keyPath);\n var result = {\n name: name,\n compound: compound,\n keyPath: keyPath,\n unique: unique,\n multiEntry: multiEntry,\n extractKey: getKeyExtractor(keyPath)\n };\n indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n return result;\n }),\n getIndexByKeyPath: function (keyPath) { return indexByKeyPath[getKeyPathAlias(keyPath)]; }\n };\n indexByKeyPath[\":id\"] = result.primaryKey;\n if (keyPath != null) {\n indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n }\n return result;\n })\n },\n hasGetAll: tables.length > 0 && ('getAll' in trans.objectStore(tables[0])) &&\n !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n };\n }\n function makeIDBKeyRange(range) {\n if (range.type === 3 )\n return null;\n if (range.type === 4 )\n throw new Error(\"Cannot convert never type to IDBKeyRange\");\n var lower = range.lower, upper = range.upper, lowerOpen = range.lowerOpen, upperOpen = range.upperOpen;\n var idbRange = lower === undefined ?\n upper === undefined ?\n null :\n IdbKeyRange.upperBound(upper, !!upperOpen) :\n upper === undefined ?\n IdbKeyRange.lowerBound(lower, !!lowerOpen) :\n IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n return idbRange;\n }\n function createDbCoreTable(tableSchema) {\n var tableName = tableSchema.name;\n function mutate(_a) {\n var trans = _a.trans, type = _a.type, keys$$1 = _a.keys, values = _a.values, range = _a.range, wantResults = _a.wantResults;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var outbound = store.keyPath == null;\n var isAddOrPut = type === \"put\" || type === \"add\";\n if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange')\n throw new Error(\"Invalid operation type: \" + type);\n var length = (keys$$1 || values || { length: 1 }).length;\n if (keys$$1 && values && keys$$1.length !== values.length) {\n throw new Error(\"Given keys array must have same length as given values array.\");\n }\n if (length === 0)\n return resolve({ numFailures: 0, failures: {}, results: [], lastResult: undefined });\n var results = wantResults && __spreadArrays((keys$$1 ?\n keys$$1 :\n getEffectiveKeys(tableSchema.primaryKey, { type: type, keys: keys$$1, values: values })));\n var req;\n var failures = [];\n var numFailures = 0;\n var errorHandler = function (event) {\n ++numFailures;\n preventDefault(event);\n if (results)\n results[event.target._reqno] = undefined;\n failures[event.target._reqno] = event.target.error;\n };\n var setResult = function (_a) {\n var target = _a.target;\n results[target._reqno] = target.result;\n };\n if (type === 'deleteRange') {\n if (range.type === 4 )\n return resolve({ numFailures: numFailures, failures: failures, results: results, lastResult: undefined });\n if (range.type === 3 )\n req = store.clear();\n else\n req = store.delete(makeIDBKeyRange(range));\n }\n else {\n var _a = isAddOrPut ?\n outbound ?\n [values, keys$$1] :\n [values, null] :\n [keys$$1, null], args1 = _a[0], args2 = _a[1];\n if (isAddOrPut) {\n for (var i = 0; i < length; ++i) {\n req = (args2 && args2[i] !== undefined ?\n store[type](args1[i], args2[i]) :\n store[type](args1[i]));\n req._reqno = i;\n if (results && results[i] === undefined) {\n req.onsuccess = setResult;\n }\n req.onerror = errorHandler;\n }\n }\n else {\n for (var i = 0; i < length; ++i) {\n req = store[type](args1[i]);\n req._reqno = i;\n req.onerror = errorHandler;\n }\n }\n }\n var done = function (event) {\n var lastResult = event.target.result;\n if (results)\n results[length - 1] = lastResult;\n resolve({\n numFailures: numFailures,\n failures: failures,\n results: results,\n lastResult: lastResult\n });\n };\n req.onerror = function (event) {\n errorHandler(event);\n done(event);\n };\n req.onsuccess = done;\n });\n }\n function openCursor(_a) {\n var trans = _a.trans, values = _a.values, query = _a.query, reverse = _a.reverse, unique = _a.unique;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ?\n store :\n store.index(index.name);\n var direction = reverse ?\n unique ?\n \"prevunique\" :\n \"prev\" :\n unique ?\n \"nextunique\" :\n \"next\";\n var req = values || !('openKeyCursor' in source) ?\n source.openCursor(makeIDBKeyRange(range), direction) :\n source.openKeyCursor(makeIDBKeyRange(range), direction);\n req.onerror = eventRejectHandler(reject);\n req.onsuccess = wrap(function (ev) {\n var cursor = req.result;\n if (!cursor) {\n resolve(null);\n return;\n }\n cursor.___id = ++_id_counter;\n cursor.done = false;\n var _cursorContinue = cursor.continue.bind(cursor);\n var _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n if (_cursorContinuePrimaryKey)\n _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n var _cursorAdvance = cursor.advance.bind(cursor);\n var doThrowCursorIsNotStarted = function () { throw new Error(\"Cursor not started\"); };\n var doThrowCursorIsStopped = function () { throw new Error(\"Cursor not stopped\"); };\n cursor.trans = trans;\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n cursor.fail = wrap(reject);\n cursor.next = function () {\n var _this = this;\n var gotOne = 1;\n return this.start(function () { return gotOne-- ? _this.continue() : _this.stop(); }).then(function () { return _this; });\n };\n cursor.start = function (callback) {\n var iterationPromise = new Promise(function (resolveIteration, rejectIteration) {\n resolveIteration = wrap(resolveIteration);\n req.onerror = eventRejectHandler(rejectIteration);\n cursor.fail = rejectIteration;\n cursor.stop = function (value) {\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n resolveIteration(value);\n };\n });\n var guardedCallback = function () {\n if (req.result) {\n try {\n callback();\n }\n catch (err) {\n cursor.fail(err);\n }\n }\n else {\n cursor.done = true;\n cursor.start = function () { throw new Error(\"Cursor behind last entry\"); };\n cursor.stop();\n }\n };\n req.onsuccess = wrap(function (ev) {\n req.onsuccess = guardedCallback;\n guardedCallback();\n });\n cursor.continue = _cursorContinue;\n cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n cursor.advance = _cursorAdvance;\n guardedCallback();\n return iterationPromise;\n };\n resolve(cursor);\n }, reject);\n });\n }\n function query(hasGetAll) {\n return function (request) {\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var trans = request.trans, values = request.values, limit = request.limit, query = request.query;\n var nonInfinitLimit = limit === Infinity ? undefined : limit;\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n if (limit === 0)\n return resolve({ result: [] });\n if (hasGetAll) {\n var req = values ?\n source.getAll(idbKeyRange, nonInfinitLimit) :\n source.getAllKeys(idbKeyRange, nonInfinitLimit);\n req.onsuccess = function (event) { return resolve({ result: event.target.result }); };\n req.onerror = eventRejectHandler(reject);\n }\n else {\n var count_1 = 0;\n var req_1 = values || !('openKeyCursor' in source) ?\n source.openCursor(idbKeyRange) :\n source.openKeyCursor(idbKeyRange);\n var result_1 = [];\n req_1.onsuccess = function (event) {\n var cursor = req_1.result;\n if (!cursor)\n return resolve({ result: result_1 });\n result_1.push(values ? cursor.value : cursor.primaryKey);\n if (++count_1 === limit)\n return resolve({ result: result_1 });\n cursor.continue();\n };\n req_1.onerror = eventRejectHandler(reject);\n }\n });\n };\n }\n return {\n name: tableName,\n schema: tableSchema,\n mutate: mutate,\n getMany: function (_a) {\n var trans = _a.trans, keys$$1 = _a.keys;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var length = keys$$1.length;\n var result = new Array(length);\n var keyCount = 0;\n var callbackCount = 0;\n var valueCount = 0;\n var req;\n var successHandler = function (event) {\n var req = event.target;\n if ((result[req._pos] = req.result) != null)\n ++valueCount;\n if (++callbackCount === keyCount)\n resolve(result);\n };\n var errorHandler = eventRejectHandler(reject);\n for (var i = 0; i < length; ++i) {\n var key = keys$$1[i];\n if (key != null) {\n req = store.get(keys$$1[i]);\n req._pos = i;\n req.onsuccess = successHandler;\n req.onerror = errorHandler;\n ++keyCount;\n }\n }\n if (keyCount === 0)\n resolve(result);\n });\n },\n get: function (_a) {\n var trans = _a.trans, key = _a.key;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var req = store.get(key);\n req.onsuccess = function (event) { return resolve(event.target.result); };\n req.onerror = eventRejectHandler(reject);\n });\n },\n query: query(hasGetAll),\n openCursor: openCursor,\n count: function (_a) {\n var query = _a.query, trans = _a.trans;\n var index = query.index, range = query.range;\n return new Promise(function (resolve, reject) {\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n var req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n req.onsuccess = wrap(function (ev) { return resolve(ev.target.result); });\n req.onerror = eventRejectHandler(reject);\n });\n }\n };\n }\n var _a = extractSchema(db, tmpTrans), schema = _a.schema, hasGetAll = _a.hasGetAll;\n var tables = schema.tables.map(function (tableSchema) { return createDbCoreTable(tableSchema); });\n var tableMap = {};\n tables.forEach(function (table) { return tableMap[table.name] = table; });\n return {\n stack: \"dbcore\",\n transaction: db.transaction.bind(db),\n table: function (name) {\n var result = tableMap[name];\n if (!result)\n throw new Error(\"Table '\" + name + \"' not found\");\n return tableMap[name];\n },\n cmp: cmp,\n MIN_KEY: -Infinity,\n MAX_KEY: getMaxKey(IdbKeyRange),\n schema: schema\n };\n}\n\nfunction createMiddlewareStack(stackImpl, middlewares) {\n return middlewares.reduce(function (down, _a) {\n var create = _a.create;\n return (__assign(__assign({}, down), create(down)));\n }, stackImpl);\n}\nfunction createMiddlewareStacks(middlewares, idbdb, _a, tmpTrans) {\n var IDBKeyRange = _a.IDBKeyRange, indexedDB = _a.indexedDB;\n var dbcore = createMiddlewareStack(createDBCore(idbdb, indexedDB, IDBKeyRange, tmpTrans), middlewares.dbcore);\n return {\n dbcore: dbcore\n };\n}\nfunction generateMiddlewareStacks(db, tmpTrans) {\n var idbdb = tmpTrans.db;\n var stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n db.core = stacks.dbcore;\n db.tables.forEach(function (table) {\n var tableName = table.name;\n if (db.core.schema.tables.some(function (tbl) { return tbl.name === tableName; })) {\n table.core = db.core.table(tableName);\n if (db[tableName] instanceof db.Table) {\n db[tableName].core = table.core;\n }\n }\n });\n}\n\nfunction setApiOnPlace(db, objs, tableNames, dbschema) {\n tableNames.forEach(function (tableName) {\n var schema = dbschema[tableName];\n objs.forEach(function (obj) {\n 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 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 updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans).catch(rejectTransaction);\n });\n}\nfunction updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans) {\n var queue = [];\n var versions = db._versions;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n var anyContentUpgraderHasRun = false;\n var versToRun = versions.filter(function (v) { return v._cfg.version >= oldVersion; });\n versToRun.forEach(function (version) {\n queue.push(function () {\n var oldSchema = globalSchema;\n var newSchema = version._cfg.dbschema;\n adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n globalSchema = db._dbSchema = newSchema;\n var diff = getSchemaDiff(oldSchema, newSchema);\n diff.add.forEach(function (tuple) {\n createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n });\n diff.change.forEach(function (change) {\n if (change.recreate) {\n throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n }\n else {\n var store_1 = idbUpgradeTrans.objectStore(change.name);\n change.add.forEach(function (idx) { return addIndex(store_1, idx); });\n change.change.forEach(function (idx) {\n store_1.deleteIndex(idx.name);\n addIndex(store_1, idx);\n });\n change.del.forEach(function (idxName) { return store_1.deleteIndex(idxName); });\n }\n });\n var contentUpgrade = version._cfg.contentUpgrade;\n if (contentUpgrade && version._cfg.version > oldVersion) {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n trans._memoizedTables = {};\n anyContentUpgraderHasRun = true;\n var upgradeSchema_1 = shallowClone(newSchema);\n diff.del.forEach(function (table) {\n upgradeSchema_1[table] = oldSchema[table];\n });\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema_1), upgradeSchema_1);\n trans.schema = upgradeSchema_1;\n 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 if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) {\n var newSchema = version._cfg.dbschema;\n deleteRemovedTables(newSchema, idbtrans);\n }\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n });\n function runQueue() {\n return queue.length ? 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 && !isIEOrEdge))\n {\n change.recreate = true;\n diff.change.push(change);\n }\n else {\n var oldIndexes = oldDef.idxByName;\n var newIndexes = newDef.idxByName;\n var idxName = void 0;\n for (idxName in oldIndexes) {\n if (!newIndexes[idxName])\n change.del.push(idxName);\n }\n for (idxName in newIndexes) {\n var oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName];\n if (!oldIdx)\n change.add.push(newIdx);\n else if (oldIdx.src !== newIdx.src)\n change.change.push(newIdx);\n }\n if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n diff.change.push(change);\n }\n }\n }\n }\n return diff;\n}\nfunction createTable(idbtrans, tableName, primKey, indexes) {\n var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ?\n { keyPath: primKey.keyPath, autoIncrement: primKey.auto } :\n { autoIncrement: primKey.auto });\n indexes.forEach(function (idx) { return addIndex(store, idx); });\n return store;\n}\nfunction createMissingTables(newSchema, idbtrans) {\n keys(newSchema).forEach(function (tableName) {\n if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n}\nfunction deleteRemovedTables(newSchema, idbtrans) {\n for (var i = 0; i < idbtrans.db.objectStoreNames.length; ++i) {\n var storeName = idbtrans.db.objectStoreNames[i];\n if (newSchema[storeName] == null) {\n idbtrans.db.deleteObjectStore(storeName);\n }\n }\n}\nfunction addIndex(store, idx) {\n store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n}\nfunction 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 || \"\", false, 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 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 = upgradeFunction;\n return this;\n };\n return Version;\n}());\n\nfunction createVersionConstructor(db) {\n return makeClassConstructor(Version.prototype, function Version$$1(versionNumber) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n });\n}\n\nvar databaseEnumerator;\nfunction DatabaseEnumerator(indexedDB) {\n var hasDatabasesNative = indexedDB && typeof indexedDB.databases === 'function';\n var dbNamesTable;\n if (!hasDatabasesNative) {\n var db = new Dexie(DBNAMES_DB, { addons: [] });\n db.version(1).stores({ dbnames: 'name' });\n dbNamesTable = db.table('dbnames');\n }\n return {\n getDatabaseNames: function () {\n return hasDatabasesNative\n ?\n DexiePromise.resolve(indexedDB.databases()).then(function (infos) { return infos\n .map(function (info) { return info.name; })\n .filter(function (name) { return name !== DBNAMES_DB; }); })\n :\n dbNamesTable.toCollection().primaryKeys();\n },\n add: function (name) {\n return !hasDatabasesNative && name !== DBNAMES_DB && dbNamesTable.put({ name: name }).catch(nop);\n },\n remove: function (name) {\n return !hasDatabasesNative && name !== DBNAMES_DB && dbNamesTable.delete(name).catch(nop);\n }\n };\n}\nfunction initDatabaseEnumerator(indexedDB) {\n try {\n databaseEnumerator = DatabaseEnumerator(indexedDB);\n }\n catch (e) { }\n}\n\nfunction vip(fn) {\n return newScope(function () {\n PSD.letThrough = true;\n return fn();\n });\n}\n\nfunction dexieOpen(db) {\n var state = db._state;\n var indexedDB = db._deps.indexedDB;\n if (state.isBeingOpened || db.idbdb)\n return state.dbReadyPromise.then(function () { return state.dbOpenError ?\n rejection(state.dbOpenError) :\n db; });\n debug && (state.openCanceller._stackHolder = getErrorWithStack());\n state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n var resolveDbReady = state.dbReadyResolve,\n upgradeTransaction = null;\n return DexiePromise.race([state.openCanceller, new DexiePromise(function (resolve, reject) {\n if (!indexedDB)\n throw new exceptions.MissingAPI(\"indexedDB API not found. If using IE10+, make sure to run your code on a server URL \" +\n \"(not locally). If using old Safari versions, make sure to include indexedDB polyfill.\");\n var dbName = db.name;\n var req = state.autoSchema ?\n indexedDB.open(dbName) :\n indexedDB.open(dbName, Math.round(db.verno * 10));\n if (!req)\n throw new exceptions.MissingAPI(\"IndexedDB API not available\");\n req.onerror = eventRejectHandler(reject);\n req.onblocked = wrap(db._fireOnBlocked);\n req.onupgradeneeded = wrap(function (e) {\n upgradeTransaction = req.transaction;\n if (state.autoSchema && !db._options.allowEmptyDB) {\n req.onerror = preventDefault;\n upgradeTransaction.abort();\n req.result.close();\n var delreq = indexedDB.deleteDatabase(dbName);\n delreq.onsuccess = delreq.onerror = wrap(function () {\n reject(new exceptions.NoSuchDatabase(\"Database \" + dbName + \" doesnt exist\"));\n });\n }\n else {\n upgradeTransaction.onerror = eventRejectHandler(reject);\n var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion;\n db.idbdb = req.result;\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)) {\n console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.\");\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 databaseEnumerator.add(dbName);\n resolve();\n }, reject);\n })]).then(function () {\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(db.on.ready.fire)).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n var remainders = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(remainders)).then(fireRemainders);\n }\n });\n }).finally(function () {\n state.onReadyBeingFired = null;\n }).then(function () {\n state.isBeingOpened = false;\n return db;\n }).catch(function (err) {\n try {\n upgradeTransaction && upgradeTransaction.abort();\n }\n catch (e) { }\n state.isBeingOpened = false;\n db.close();\n state.dbOpenError = err;\n return rejection(state.dbOpenError);\n }).finally(function () {\n state.openComplete = true;\n resolveDbReady();\n });\n}\n\nfunction awaitIterator(iterator) {\n var callNext = function (result) { return iterator.next(result); }, doThrow = function (error) { return iterator.throw(error); }, onSuccess = step(callNext), onError = step(doThrow);\n function step(getNext) {\n return function (val) {\n var next = getNext(val), value = next.value;\n return next.done ? value :\n (!value || typeof value.then !== 'function' ?\n isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) :\n value.then(onSuccess, onError));\n };\n }\n return step(callNext)();\n}\n\nfunction extractTransactionArgs(mode, _tableArgs_, scopeFunc) {\n var i = arguments.length;\n if (i < 2)\n throw new exceptions.InvalidArgument(\"Too few arguments\");\n var args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n scopeFunc = args.pop();\n var tables = flatten(args);\n return [mode, tables, scopeFunc];\n}\nfunction enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) {\n return DexiePromise.resolve().then(function () {\n var transless = PSD.transless || PSD;\n var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n var zoneProps = {\n trans: trans,\n transless: transless\n };\n if (parentTransaction) {\n trans.idbtrans = parentTransaction.idbtrans;\n }\n else {\n trans.create();\n }\n 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), { isVirtual: isVirtual, isPrimaryKey: !isVirtual && lowLevelIndex.isPrimaryKey, keyTail: keyTail,\n keyLength: keyLength, extractKey: getKeyExtractor(keyPath), unique: !isVirtual && lowLevelIndex.unique });\n indexList.push(virtualIndex);\n if (!virtualIndex.isPrimaryKey) {\n allVirtualIndexes.push(virtualIndex);\n }\n if (keyLength > 1) {\n var virtualKeyPath = keyLength === 2 ?\n keyPath[0] :\n keyPath.slice(0, keyLength - 1);\n addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n }\n indexList.sort(function (a, b) { return a.keyTail - b.keyTail; });\n return virtualIndex;\n }\n var primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n indexLookup[\":id\"] = [primaryKey];\n for (var _i = 0, _a = schema.indexes; _i < _a.length; _i++) {\n var index = _a[_i];\n addVirtualIndexes(index.keyPath, 0, index);\n }\n function findBestIndex(keyPath) {\n var result = indexLookup[getKeyPathAlias(keyPath)];\n return result && result[0];\n }\n function translateRange(range, keyTail) {\n return {\n type: range.type === 1 ?\n 2 :\n range.type,\n lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n lowerOpen: true,\n upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n upperOpen: true\n };\n }\n function translateRequest(req) {\n var index = req.query.index;\n return index.isVirtual ? __assign(__assign({}, req), { query: {\n index: index,\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 },\n query: function (req) {\n return table.query(translateRequest(req));\n },\n openCursor: function (req) {\n var _a = req.query.index, keyTail = _a.keyTail, isVirtual = _a.isVirtual, keyLength = _a.keyLength;\n if (!isVirtual)\n return table.openCursor(req);\n function createVirtualCursor(cursor) {\n function _continue(key) {\n key != null ?\n cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) :\n req.unique ?\n cursor.continue(pad(cursor.key, req.reverse ? down.MIN_KEY : down.MAX_KEY, keyTail)) :\n cursor.continue();\n }\n 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 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\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$$1 = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys$$1)\n throw new Error(\"Keys missing\");\n req = req.type === 'add' || req.type === 'put' ? __assign(__assign({}, req), { keys: keys$$1, wantResults: true }) :\n __assign({}, req);\n if (req.type !== 'delete')\n req.values = __spreadArrays(req.values);\n if (req.keys)\n req.keys = __spreadArrays(req.keys);\n return getExistingValues(downTable, req, keys$$1).then(function (existingValues) {\n var contexts = keys$$1.map(function (key, i) {\n var existingValue = existingValues[i];\n var ctx = { onerror: null, onsuccess: null };\n if (req.type === 'delete') {\n deleting.fire.call(ctx, key, existingValue, dxTrans);\n }\n else if (req.type === 'add' || existingValue === undefined) {\n var generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n if (key == null && generatedPrimaryKey != null) {\n key = generatedPrimaryKey;\n req.keys[i] = key;\n if (!primaryKey.outbound) {\n setByKeyPath(req.values[i], primaryKey.keyPath, key);\n }\n }\n }\n else {\n var objectDiff = getObjectDiff(existingValue, req.values[i]);\n var additionalChanges_1 = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n if (additionalChanges_1) {\n var requestedValue_1 = req.values[i];\n Object.keys(additionalChanges_1).forEach(function (keyPath) {\n 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$$1.length; ++i) {\n var primKey = results ? results[i] : keys$$1[i];\n var ctx = contexts[i];\n if (primKey == null) {\n ctx.onerror && ctx.onerror(failures[i]);\n }\n else {\n ctx.onsuccess && ctx.onsuccess(req.type === 'put' && existingValues[i] ?\n req.values[i] :\n primKey\n );\n }\n }\n return { failures: failures, results: results, numFailures: numFailures, lastResult: lastResult };\n }).catch(function (error) {\n contexts.forEach(function (ctx) { return ctx.onerror && ctx.onerror(error); });\n return Promise.reject(error);\n });\n });\n }\n function deleteRange(req) {\n return deleteNextChunk(req.trans, req.range, 10000);\n }\n function deleteNextChunk(trans, range, limit) {\n return downTable.query({ trans: trans, values: false, query: { index: primaryKey, range: range }, limit: limit })\n .then(function (_a) {\n var result = _a.result;\n return addPutOrDelete({ type: 'delete', keys: result, trans: trans }).then(function (res) {\n if (res.numFailures > 0)\n return Promise.reject(res.failures[0]);\n if (result.length < limit) {\n return { failures: [], numFailures: 0, lastResult: undefined };\n }\n else {\n return deleteNextChunk(trans, __assign(__assign({}, range), { lower: result[result.length - 1], lowerOpen: true }), limit);\n }\n });\n });\n }\n } });\n return tableMiddleware;\n } })); }\n};\n\nvar Dexie = (function () {\n function Dexie(name, options) {\n var _this = this;\n this._middlewares = {};\n this.verno = 0;\n var deps = Dexie.dependencies;\n this._options = options = __assign({\n addons: Dexie.addons, autoOpen: true,\n indexedDB: deps.indexedDB, IDBKeyRange: deps.IDBKeyRange }, options);\n this._deps = {\n indexedDB: options.indexedDB,\n IDBKeyRange: options.IDBKeyRange\n };\n var addons = options.addons;\n this._dbSchema = {};\n this._versions = [];\n this._storeNames = [];\n this._allTables = {};\n this.idbdb = null;\n var state = {\n dbOpenError: null,\n isBeingOpened: false,\n onReadyBeingFired: null,\n openComplete: false,\n dbReadyResolve: nop,\n dbReadyPromise: null,\n cancelOpen: nop,\n openCanceller: null,\n autoSchema: true\n };\n state.dbReadyPromise = new 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\", { 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 '\" + _this.name + \"'. Closing db now to resume the upgrade.\");\n else\n console.warn(\"Another connection wants to delete database '\" + _this.name + \"'. Closing db now to resume the delete request.\");\n _this.close();\n });\n this.on(\"blocked\", function (ev) {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n console.warn(\"Dexie.delete('\" + _this.name + \"') was blocked\");\n else\n console.warn(\"Upgrade '\" + _this.name + \"' blocked by other connection holding version \" + ev.oldVersion / 10);\n });\n this._maxKey = getMaxKey(options.IDBKeyRange);\n this._createTransaction = function (mode, storeNames, dbschema, parentTransaction) { return new _this.Transaction(mode, storeNames, dbschema, parentTransaction); };\n this._fireOnBlocked = function (ev) {\n _this.on(\"blocked\").fire(ev);\n connections\n .filter(function (c) { return c.name === _this.name && c !== _this && !c._state.vcFired; })\n .map(function (c) { return c.on(\"versionchange\").fire(ev); });\n };\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n addons.forEach(function (addon) { return addon(_this); });\n }\n Dexie.prototype.version = function (versionNumber) {\n 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._state.openComplete || PSD.letThrough ? fn() : new DexiePromise(function (resolve, reject) {\n if (!_this._state.isBeingOpened) {\n if (!_this._options.autoOpen) {\n reject(new exceptions.DatabaseClosed());\n return;\n }\n _this.open().catch(nop);\n }\n _this._state.dbReadyPromise.then(resolve, reject);\n }).then(fn);\n };\n Dexie.prototype.use = function (_a) {\n var stack = _a.stack, create = _a.create, level = _a.level, name = _a.name;\n if (name)\n this.unuse({ stack: stack, name: name });\n var middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n middlewares.push({ stack: stack, create: create, level: level == null ? 10 : level, name: name });\n middlewares.sort(function (a, b) { return a.level - b.level; });\n return this;\n };\n Dexie.prototype.unuse = function (_a) {\n var stack = _a.stack, name = _a.name, create = _a.create;\n if (stack && this._middlewares[stack]) {\n this._middlewares[stack] = this._middlewares[stack].filter(function (mw) {\n return create ? mw.create !== create :\n name ? mw.name !== name :\n false;\n });\n }\n return this;\n };\n Dexie.prototype.open = function () {\n return dexieOpen(this);\n };\n Dexie.prototype.close = function () {\n var idx = connections.indexOf(this), state = this._state;\n if (idx >= 0)\n connections.splice(idx, 1);\n if (this.idbdb) {\n try {\n this.idbdb.close();\n }\n catch (e) { }\n this.idbdb = null;\n }\n this._options.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n if (state.isBeingOpened)\n state.cancelOpen(state.dbOpenError);\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n };\n Dexie.prototype.delete = function () {\n var _this = this;\n var hasArguments = arguments.length > 0;\n var state = this._state;\n return new DexiePromise(function (resolve, reject) {\n var doDelete = function () {\n _this.close();\n var req = _this._deps.indexedDB.deleteDatabase(_this.name);\n req.onsuccess = wrap(function () {\n databaseEnumerator.remove(_this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = _this._fireOnBlocked;\n };\n if (hasArguments)\n throw new exceptions.InvalidArgument(\"Arguments not allowed in db.delete()\");\n if (state.isBeingOpened) {\n state.dbReadyPromise.then(doDelete);\n }\n else {\n doDelete();\n }\n });\n };\n Dexie.prototype.backendDB = function () {\n return this.idbdb;\n };\n Dexie.prototype.isOpen = function () {\n return this.idbdb !== null;\n };\n Dexie.prototype.hasBeenClosed = function () {\n var dbOpenError = this._state.dbOpenError;\n return dbOpenError && (dbOpenError.name === 'DatabaseClosed');\n };\n Dexie.prototype.hasFailed = function () {\n return this._state.dbOpenError !== null;\n };\n Dexie.prototype.dynamicallyOpened = function () {\n return this._state.autoSchema;\n };\n Object.defineProperty(Dexie.prototype, \"tables\", {\n get: function () {\n var _this = this;\n return keys(this._allTables).map(function (name) { return _this._allTables[name]; });\n },\n enumerable: true,\n configurable: true\n });\n Dexie.prototype.transaction = function () {\n var args = extractTransactionArgs.apply(this, arguments);\n return this._transaction.apply(this, args);\n };\n Dexie.prototype._transaction = function (mode, tables, scopeFunc) {\n var _this = this;\n var parentTransaction = PSD.trans;\n if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1)\n parentTransaction = null;\n var onlyIfCompatible = mode.indexOf('?') !== -1;\n mode = mode.replace('!', '').replace('?', '');\n var idbMode, storeNames;\n try {\n storeNames = tables.map(function (table) {\n var storeName = table instanceof _this.Table ? table.name : table;\n if (typeof storeName !== 'string')\n throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return storeName;\n });\n if (mode == \"r\" || mode === READONLY)\n idbMode = READONLY;\n else if (mode == \"rw\" || mode == READWRITE)\n idbMode = READWRITE;\n else\n throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n if (parentTransaction) {\n if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n }\n if (parentTransaction) {\n storeNames.forEach(function (storeName) {\n if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Table \" + storeName +\n \" not included in parent transaction.\");\n }\n });\n }\n if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n parentTransaction = null;\n }\n }\n }\n catch (e) {\n return parentTransaction ?\n parentTransaction._promise(null, function (_, reject) { reject(e); }) :\n rejection(e);\n }\n var enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n return (parentTransaction ?\n parentTransaction._promise(idbMode, enterTransaction, \"lock\") :\n PSD.trans ?\n usePSD(PSD.transless, function () { return _this._whenReady(enterTransaction); }) :\n this._whenReady(enterTransaction));\n };\n Dexie.prototype.table = function (tableName) {\n if (!hasOwn(this._allTables, tableName)) {\n throw new exceptions.InvalidTable(\"Table \" + tableName + \" does not exist\");\n }\n return this._allTables[tableName];\n };\n return Dexie;\n}());\n\nvar Dexie$1 = Dexie;\nprops(Dexie$1, __assign(__assign({}, fullNameExceptions), {\n delete: function (databaseName) {\n var db = new Dexie$1(databaseName);\n return db.delete();\n },\n exists: function (name) {\n return new Dexie$1(name, { addons: [] }).open().then(function (db) {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', function () { return false; });\n },\n getDatabaseNames: function (cb) {\n return databaseEnumerator ?\n databaseEnumerator.getDatabaseNames().then(cb) :\n DexiePromise.resolve([]);\n },\n defineClass: function () {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n },\n ignoreTransaction: function (scopeFunc) {\n return PSD.trans ?\n usePSD(PSD.transless, scopeFunc) :\n scopeFunc();\n },\n vip: vip, async: function (generatorFn) {\n return function () {\n try {\n var rv = awaitIterator(generatorFn.apply(this, arguments));\n if (!rv || typeof rv.then !== 'function')\n return 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$1.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, value === 'dexie' ? function () { return true; } : dexieStackFrameFilter);\n }\n },\n derive: derive, extend: extend, props: props, override: override,\n Events: Events,\n getByKeyPath: getByKeyPath, setByKeyPath: setByKeyPath, delByKeyPath: delByKeyPath, shallowClone: shallowClone, deepClone: deepClone, getObjectDiff: getObjectDiff, asap: asap,\n minKey: minKey,\n addons: [],\n connections: connections,\n errnames: errnames,\n dependencies: (function () {\n try {\n return {\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n }\n catch (e) {\n return { indexedDB: null, IDBKeyRange: null };\n }\n })(),\n semVer: DEXIE_VERSION, version: DEXIE_VERSION.split('.')\n .map(function (n) { return parseInt(n); })\n .reduce(function (p, c, i) { return p + (c / Math.pow(10, i * 2)); }),\n default: Dexie$1,\n Dexie: Dexie$1 }));\nDexie$1.maxKey = getMaxKey(Dexie$1.dependencies.IDBKeyRange);\n\ninitDatabaseEnumerator(Dexie.dependencies.indexedDB);\nDexiePromise.rejectionMapper = mapError;\nsetDebug(debug, dexieStackFrameFilter);\n\nexport default Dexie;\nexport { Dexie };\n//# sourceMappingURL=dexie.mjs.map\n","var __extends = (this && this.__extends) || (function () {\n var 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 };\n return function (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 };\n})();\nimport Dexie from \"dexie\";\n/**\n * Provides access to persistent data used by the Service Worker.\n */\nvar ServiceWorkerDb = /** @class */ (function (_super) {\n __extends(ServiceWorkerDb, _super);\n function ServiceWorkerDb() {\n var _this = _super.call(this, \"ServiceWorker\") || this;\n _this.version(1).stores({ dynamicRouteRegistrations: \"++,&pattern\" });\n _this.dynamicRouteRegistrations = _this.table(\"dynamicRouteRegistrations\");\n return _this;\n }\n return ServiceWorkerDb;\n}(Dexie));\nexport { ServiceWorkerDb };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { retry } from \"@openmrs/esm-utils\";\nimport { absoluteWbManifestUrls, omrsCacheName } from \"./constants\";\nimport { fetchUrlsToCacheFromImportMap } from \"./import-map-utils\";\nimport { ServiceWorkerDb } from \"./storage\";\n/**\n * Attempts to resolve cacheable files from the specified import map (files are retrieved via convention)\n * and, if successful, attempts to add them to the app cache.\n * @param importMap An import map object from which cacheable files should be extracted.\n */\nexport function cacheImportMapReferences(importMap) {\n return __awaiter(this, void 0, void 0, function () {\n var urlsToCache;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fetchUrlsToCacheFromImportMap(importMap)];\n case 1:\n urlsToCache = _a.sent();\n return [4 /*yield*/, invalidateObsoleteCacheEntries(urlsToCache)];\n case 2:\n _a.sent();\n return [4 /*yield*/, addToOmrsCache(urlsToCache)];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n}\n/**\n * Adds all static app shell files to the cache.\n * Only caches the \"raw\" app shell, not any MFs/any data coming from an import map.\n */\nexport function precacheAppShell() {\n return addToOmrsCache(absoluteWbManifestUrls);\n}\n/**\n * Adds all of the given urls to the default app cache.\n * @param urls An array of URLs to be cached.\n */\nexport function addToOmrsCache(urls) {\n return __awaiter(this, void 0, void 0, function () {\n var cache, results, cached, failedToCache;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (urls.length === 0) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, caches.open(omrsCacheName)];\n case 1:\n cache = _a.sent();\n return [4 /*yield*/, Promise.all(urls.map(function (url) { return __awaiter(_this, void 0, void 0, function () {\n var e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, retry(function () { return cache.add(url); }, {\n onError: function (e, attempt) {\n return console.debug(\"Failure attempt \" + attempt + \" at caching \\\"\" + url + \"\\\". Error: \", e);\n },\n })];\n case 1:\n _a.sent();\n return [2 /*return*/, { url: url, success: true }];\n case 2:\n e_1 = _a.sent();\n return [2 /*return*/, { url: url, success: false }];\n case 3: return [2 /*return*/];\n }\n });\n }); }))];\n case 2:\n results = _a.sent();\n cached = results.filter(function (r) { return r.success; });\n failedToCache = results.filter(function (r) { return !r.success; });\n if (cached.length > 0) {\n console.debug(\"Successfully added \" + cached.length + \" URLs to the OMRS cache. URLs: \", cached.map(function (r) { return r.url; }));\n }\n if (failedToCache.length > 0) {\n console.error(\"Failed to cache \" + failedToCache.length + \" URLs. URLs: \", failedToCache.map(function (r) { return r.url; }));\n }\n return [2 /*return*/];\n }\n });\n });\n}\nfunction invalidateObsoleteCacheEntries(newImportMapUrls) {\n return __awaiter(this, void 0, void 0, function () {\n var cache, cachedUrls, dynamicRoutes, urlsToInvalidate;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, caches.open(omrsCacheName)];\n case 1:\n cache = _a.sent();\n return [4 /*yield*/, cache.keys()];\n case 2:\n cachedUrls = (_a.sent()).map(function (x) { return x.url; });\n return [4 /*yield*/, new ServiceWorkerDb().dynamicRouteRegistrations.toArray()];\n case 3:\n dynamicRoutes = _a.sent();\n urlsToInvalidate = cachedUrls.filter(function (cachedUrl) {\n return !absoluteWbManifestUrls.includes(cachedUrl) &&\n !newImportMapUrls.includes(cachedUrl) &&\n !dynamicRoutes.some(function (route) { return new RegExp(route.pattern).test(cachedUrl); });\n });\n console.info(\"Removing the following expired URLs from the cache: \", urlsToInvalidate);\n // eslint-disable-next-line no-console\n console.debug(\"The following URLs were known and not invalidated: \", absoluteWbManifestUrls, newImportMapUrls, dynamicRoutes);\n return [4 /*yield*/, Promise.all(urlsToInvalidate.map(function (url) { return cache[\"delete\"](url); }))];\n case 4:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport escapeRegExp from \"lodash-es/escapeRegExp\";\nimport { cacheImportMapReferences } from \"./caching\";\nimport { ServiceWorkerDb } from \"./storage\";\nvar messageHandlers = {\n onImportMapChanged: onImportMapChanged,\n clearDynamicRoutes: clearDynamicRoutes,\n registerDynamicRoute: registerDynamicRoute,\n};\nfunction onImportMapChanged(_a) {\n var importMap = _a.importMap;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, cacheImportMapReferences(importMap)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n}\nfunction clearDynamicRoutes() {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new ServiceWorkerDb().dynamicRouteRegistrations.clear()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n}\nfunction registerDynamicRoute(_a) {\n var pattern = _a.pattern, url = _a.url;\n return __awaiter(this, void 0, void 0, function () {\n var finalPattern, registration;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n finalPattern = pattern;\n if (!finalPattern && url) {\n finalPattern = \"^\" + escapeRegExp(url) + \"$\";\n }\n if (!finalPattern) return [3 /*break*/, 2];\n registration = { pattern: finalPattern };\n return [4 /*yield*/, new ServiceWorkerDb().dynamicRouteRegistrations.put(registration)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n}\n/**\n * Invoked when the service worker receives a message.\n * Matches the message to a handler, invokes that handler and dispatches the result returned\n * by the handler back to the window.\n *\n * For this to work, the message needs to have a defined format.\n * @param event The event data containing the message dispatched to the Service Worker.\n */\nexport function handleMessage(event) {\n var _a, _b, _c, _d, _e, _f;\n return __awaiter(this, void 0, void 0, function () {\n function fail(error) {\n console.warn(\"Handling a message resulted in an error.\", error);\n resolve({\n success: false,\n error: error,\n });\n }\n function resolve(result) {\n event.ports[0].postMessage(result !== null && result !== void 0 ? result : {});\n }\n var handler, result, e_1;\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0:\n handler = messageHandlers[(_c = (_b = (_a = event.data) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : \"\"];\n if (!handler) {\n fail(\"Received an unknown message of type \\\"\" + ((_d = event.data) === null || _d === void 0 ? void 0 : _d.type) + \" which cannot be handled.\");\n return [2 /*return*/];\n }\n _g.label = 1;\n case 1:\n _g.trys.push([1, 3, , 4]);\n return [4 /*yield*/, handler(event.data)];\n case 2:\n result = _g.sent();\n resolve({\n success: true,\n result: result,\n });\n return [3 /*break*/, 4];\n case 3:\n e_1 = _g.sent();\n fail((_f = (_e = e_1 === null || e_1 === void 0 ? void 0 : e_1.message) !== null && _e !== void 0 ? _e : e_1 === null || e_1 === void 0 ? void 0 : e_1.toString()) !== null && _f !== void 0 ? _f : \"Unknown error.\");\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array<string>}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof module:workbox-routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {module:workbox-routing~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method = defaultMethod) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n /**\n *\n * @param {module:workbox-routing-handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response\n */\n setCatchHandler(handler) {\n this.catchHandler = normalizeHandler(handler);\n }\n}\nexport { Route };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * [Route]{@link module:workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * [See the module docs for info.]{@link https://developers.google.com/web/tools/workbox/modules/workbox-routing}\n *\n * @memberof module:workbox-routing\n * @extends module:workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regular expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * the captured values will be passed to the\n * [handler's]{@link module:workbox-routing~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if ((url.origin !== location.origin) && (result.index !== 0)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` +\n `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a FetchEvent through one or more\n * [Routes]{@link module:workbox-routing.Route} responding with a Request if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof module:workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map<string, Array<module:workbox-routing.Route>>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n if (event.data && event.data.type === 'CACHE_URLS') { // eslint-disable-line\n const { payload } = event.data; // eslint-disable-line\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array<Promise<Response> | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise<Response>|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([\n `Found a route to handle this request:`, route,\n ]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`, params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise && (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if ((matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0)) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {module:workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {module:workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n return (typeof input === 'string') ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * [handle()]{@link module:workbox-strategies.Strategy~handle} or\n * [handleAll()]{@link module:workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof module:workbox-strategies\n */\nclass StrategyHandler {\n /**\n * Creates a new instance associated with the passed strategy and event\n * that's handling the request.\n *\n * The constructor also initializes the state that will be passed to each of\n * the plugins handling this request.\n *\n * @param {module:workbox-strategies.Strategy} strategy\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * [match callback]{@link module:workbox-routing~matchCallback},\n * (if applicable).\n */\n constructor(strategy, options) {\n this._cacheKeys = {};\n /**\n * The request the strategy is performing (passed to the strategy's\n * `handle()` or `handleAll()` method).\n * @name request\n * @instance\n * @type {Request}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n /**\n * The event associated with this request.\n * @name event\n * @instance\n * @type {ExtendableEvent}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n /**\n * A `URL` instance of `request.url` (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `url` param will be present if the strategy was invoked\n * from a workbox `Route` object.\n * @name url\n * @instance\n * @type {URL|undefined}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n /**\n * A `param` value (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `param` param will be present if the strategy was invoked\n * from a workbox `Route` object and the\n * [match callback]{@link module:workbox-routing~matchCallback} returned\n * a truthy value (it will be that value).\n * @name params\n * @instance\n * @type {*|undefined}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(options.event, ExtendableEvent, {\n moduleName: 'workbox-strategies',\n className: 'StrategyHandler',\n funcName: 'constructor',\n paramName: 'options.event',\n });\n }\n Object.assign(this, options);\n this.event = options.event;\n this._strategy = strategy;\n this._handlerDeferred = new Deferred();\n this._extendLifetimePromises = [];\n // Copy the plugins list (since it's mutable on the strategy),\n // so any mutations don't affect this handler instance.\n this._plugins = [...strategy.plugins];\n this._pluginStateMap = new Map();\n for (const plugin of this._plugins) {\n this._pluginStateMap.set(plugin, {});\n }\n this.event.waitUntil(this._handlerDeferred.promise);\n }\n /**\n * Fetches a given request (and invokes any applicable plugin callback\n * methods) using the `fetchOptions` (for non-navigation requests) and\n * `plugins` defined on the `Strategy` object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - `requestWillFetch()`\n * - `fetchDidSucceed()`\n * - `fetchDidFail()`\n *\n * @param {Request|string} input The URL or request to fetch.\n * @return {Promise<Response>}\n */\n async fetch(input) {\n const { event } = this;\n let request = toRequest(input);\n if (request.mode === 'navigate' &&\n event instanceof FetchEvent &&\n event.preloadResponse) {\n const possiblePreloadResponse = await event.preloadResponse;\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = this.hasCallback('fetchDidFail') ?\n request.clone() : null;\n try {\n for (const cb of this.iterateCallbacks('requestWillFetch')) {\n request = await cb({ request: request.clone(), event });\n }\n }\n catch (err) {\n if (err instanceof Error) {\n throw new WorkboxError('plugin-error-request-will-fetch', { thrownErrorMessage: err.message });\n }\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (most likely from a `fetch` event) different\n // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n fetchResponse = await fetch(request, request.mode === 'navigate' ?\n undefined : this._strategy.fetchOptions);\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n fetchResponse = await callback({\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n // `originalRequest` will only exist if a `fetchDidFail` callback\n // is being used (see above).\n if (originalRequest) {\n await this.runCallbacks('fetchDidFail', {\n error: error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n }\n /**\n * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n * the response generated by `this.fetch()`.\n *\n * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n * so you do not have to manually call `waitUntil()` on the event.\n *\n * @param {Request|string} input The request or URL to fetch and cache.\n * @return {Promise<Response>}\n */\n async fetchAndCachePut(input) {\n const response = await this.fetch(input);\n const responseClone = response.clone();\n void this.waitUntil(this.cachePut(input, responseClone));\n return response;\n }\n /**\n * Matches a request from the cache (and invokes any applicable plugin\n * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n * defined on the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cachedResponseWillByUsed()\n *\n * @param {Request|string} key The Request or URL to use as the cache key.\n * @return {Promise<Response|undefined>} A matching response, if found.\n */\n async cacheMatch(key) {\n const request = toRequest(key);\n let cachedResponse;\n const { cacheName, matchOptions } = this._strategy;\n const effectiveRequest = await this.getCacheKey(request, 'read');\n const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { cacheName });\n cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n cachedResponse = (await callback({\n cacheName,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n event: this.event,\n })) || undefined;\n }\n return cachedResponse;\n }\n /**\n * Puts a request/response pair in the cache (and invokes any applicable\n * plugin callback methods) using the `cacheName` and `plugins` defined on\n * the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cacheWillUpdate()\n * - cacheDidUpdate()\n *\n * @param {Request|string} key The request or URL to use as the cache key.\n * @param {Response} response The response to cache.\n * @return {Promise<boolean>} `false` if a cacheWillUpdate caused the response\n * not be cached, and `true` otherwise.\n */\n async cachePut(key, response) {\n const request = toRequest(key);\n // Run in the next task to avoid blocking other cache reads.\n // https://github.com/w3c/ServiceWorker/issues/1397\n await timeout(0);\n const effectiveRequest = await this.getCacheKey(request, 'write');\n if (process.env.NODE_ENV !== 'production') {\n if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(effectiveRequest.url),\n method: effectiveRequest.method,\n });\n }\n }\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await this._ensureResponseSafeToCache(response);\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n `will not be cached.`, responseToCache);\n }\n return false;\n }\n const { cacheName, matchOptions } = this._strategy;\n const cache = await self.caches.open(cacheName);\n const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n const oldResponse = hasCacheUpdateCallback ? await cacheMatchIgnoreParams(\n // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n // feature. Consider into ways to only add this behavior if using\n // precaching.\n cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions) :\n null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n `for ${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, hasCacheUpdateCallback ?\n responseToCache.clone() : responseToCache);\n }\n catch (error) {\n if (error instanceof Error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n }\n for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n await callback({\n cacheName,\n oldResponse,\n newResponse: responseToCache.clone(),\n request: effectiveRequest,\n event: this.event,\n });\n }\n return true;\n }\n /**\n * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n * executes any of those callbacks found in sequence. The final `Request`\n * object returned by the last plugin is treated as the cache key for cache\n * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n * been registered, the passed request is returned unmodified\n *\n * @param {Request} request\n * @param {string} mode\n * @return {Promise<Request>}\n */\n async getCacheKey(request, mode) {\n if (!this._cacheKeys[mode]) {\n let effectiveRequest = request;\n for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n effectiveRequest = toRequest(await callback({\n mode,\n request: effectiveRequest,\n event: this.event,\n // params has a type any can't change right now.\n params: this.params,\n }));\n }\n this._cacheKeys[mode] = effectiveRequest;\n }\n return this._cacheKeys[mode];\n }\n /**\n * Returns true if the strategy has at least one plugin with the given\n * callback.\n *\n * @param {string} name The name of the callback to check for.\n * @return {boolean}\n */\n hasCallback(name) {\n for (const plugin of this._strategy.plugins) {\n if (name in plugin) {\n return true;\n }\n }\n return false;\n }\n /**\n * Runs all plugin callbacks matching the given name, in order, passing the\n * given param object (merged ith the current plugin state) as the only\n * argument.\n *\n * Note: since this method runs all plugins, it's not suitable for cases\n * where the return value of a callback needs to be applied prior to calling\n * the next callback. See\n * [`iterateCallbacks()`]{@link module:workbox-strategies.StrategyHandler#iterateCallbacks}\n * below for how to handle that case.\n *\n * @param {string} name The name of the callback to run within each plugin.\n * @param {Object} param The object to pass as the first (and only) param\n * when executing each callback. This object will be merged with the\n * current plugin state prior to callback execution.\n */\n async runCallbacks(name, param) {\n for (const callback of this.iterateCallbacks(name)) {\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n await callback(param);\n }\n }\n /**\n * Accepts a callback and returns an iterable of matching plugin callbacks,\n * where each callback is wrapped with the current handler state (i.e. when\n * you call each callback, whatever object parameter you pass it will\n * be merged with the plugin's current state).\n *\n * @param {string} name The name fo the callback to run\n * @return {Array<Function>}\n */\n *iterateCallbacks(name) {\n for (const plugin of this._strategy.plugins) {\n if (typeof plugin[name] === 'function') {\n const state = this._pluginStateMap.get(plugin);\n const statefulCallback = (param) => {\n const statefulParam = Object.assign(Object.assign({}, param), { state });\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n return plugin[name](statefulParam);\n };\n yield statefulCallback;\n }\n }\n }\n /**\n * Adds a promise to the\n * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n * of the event event associated with the request being handled (usually a\n * `FetchEvent`).\n *\n * Note: you can await\n * [`doneWaiting()`]{@link module:workbox-strategies.StrategyHandler~doneWaiting}\n * to know when all added promises have settled.\n *\n * @param {Promise} promise A promise to add to the extend lifetime promises\n * of the event that triggered the request.\n */\n waitUntil(promise) {\n this._extendLifetimePromises.push(promise);\n return promise;\n }\n /**\n * Returns a promise that resolves once all promises passed to\n * [`waitUntil()`]{@link module:workbox-strategies.StrategyHandler~waitUntil}\n * have settled.\n *\n * Note: any work done after `doneWaiting()` settles should be manually\n * passed to an event's `waitUntil()` method (not this handler's\n * `waitUntil()` method), otherwise the service worker thread my be killed\n * prior to your work completing.\n */\n async doneWaiting() {\n let promise;\n while (promise = this._extendLifetimePromises.shift()) {\n await promise;\n }\n }\n /**\n * Stops running the strategy and immediately resolves any pending\n * `waitUntil()` promises.\n */\n destroy() {\n this._handlerDeferred.resolve(null);\n }\n /**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Request} options.request\n * @param {Response} options.response\n * @return {Promise<Response|undefined>}\n *\n * @private\n */\n async _ensureResponseSafeToCache(response) {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n responseToCache = (await callback({\n request: this.request,\n response: responseToCache,\n event: this.event,\n })) || undefined;\n pluginsUsed = true;\n if (!responseToCache) {\n break;\n }\n }\n if (!pluginsUsed) {\n if (responseToCache && responseToCache.status !== 200) {\n responseToCache = undefined;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${this.request.url}' ` +\n `is an opaque response. The caching strategy that you're ` +\n `using will not cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${this.request.url}' ` +\n `returned a status code of '${response.status}' and won't ` +\n `be cached as a result.`);\n }\n }\n }\n }\n }\n return responseToCache;\n }\n}\nexport { StrategyHandler };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof module:workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof module:workbox-strategies\n */\nclass Strategy {\n /**\n * Creates a new instance of the strategy and sets all documented option\n * properties as public instance properties.\n *\n * Note: if a custom strategy class extends the base Strategy class and does\n * not need more than these properties, it does not need to define its own\n * constructor.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * [workbox-core]{@link module:workbox-core.cacheNames}.\n * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n */\n constructor(options = {}) {\n /**\n * Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * [workbox-core]{@link module:workbox-core.cacheNames}.\n *\n * @type {string}\n */\n this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n /**\n * The list\n * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * used by this strategy.\n *\n * @type {Array<Object>}\n */\n this.plugins = options.plugins || [];\n /**\n * Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n *\n * @type {Object}\n */\n this.fetchOptions = options.fetchOptions;\n /**\n * The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n *\n * @type {Object}\n */\n this.matchOptions = options.matchOptions;\n }\n /**\n * Perform a request strategy and returns a `Promise` that will resolve with\n * a `Response`, invoking all relevant plugin callbacks.\n *\n * When a strategy instance is registered with a Workbox\n * [route]{@link module:workbox-routing.Route}, this method is automatically\n * called when the route matches.\n *\n * Alternatively, this method can be used in a standalone `FetchEvent`\n * listener by passing it to `event.respondWith()`.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n */\n handle(options) {\n const [responseDone] = this.handleAll(options);\n return responseDone;\n }\n /**\n * Similar to [`handle()`]{@link module:workbox-strategies.Strategy~handle}, but\n * instead of just returning a `Promise` that resolves to a `Response` it\n * it will return an tuple of [response, done] promises, where the former\n * (`response`) is equivalent to what `handle()` returns, and the latter is a\n * Promise that will resolve once any promises that were added to\n * `event.waitUntil()` as part of performing the strategy have completed.\n *\n * You can await the `done` promise to ensure any extra work performed by\n * the strategy (usually caching responses) completes successfully.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * @return {Array<Promise>} A tuple of [response, done]\n * promises that can be used to determine when the response resolves as\n * well as when the handler has completed all its work.\n */\n handleAll(options) {\n // Allow for flexible options to be passed.\n if (options instanceof FetchEvent) {\n options = {\n event: options,\n request: options.request,\n };\n }\n const event = options.event;\n const request = typeof options.request === 'string' ?\n new Request(options.request) :\n options.request;\n const params = 'params' in options ? options.params : undefined;\n const handler = new StrategyHandler(this, { event, request, params });\n const responseDone = this._getResponse(handler, request, event);\n const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n // Return an array of promises, suitable for use with Promise.all().\n return [responseDone, handlerDone];\n }\n async _getResponse(handler, request, event) {\n await handler.runCallbacks('handlerWillStart', { event, request });\n let response = undefined;\n try {\n response = await this._handle(request, handler);\n // The \"official\" Strategy subclasses all throw this error automatically,\n // but in case a third-party Strategy doesn't, ensure that we have a\n // consistent failure when there's no response or an error response.\n if (!response || response.type === 'error') {\n throw new WorkboxError('no-response', { url: request.url });\n }\n }\n catch (error) {\n if (error instanceof Error) {\n for (const callback of handler.iterateCallbacks('handlerDidError')) {\n response = await callback({ error, event, request });\n if (response) {\n break;\n }\n }\n }\n if (!response) {\n throw error;\n }\n else if (process.env.NODE_ENV !== 'production') {\n logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` +\n `a handlerDidError plugin.`);\n }\n }\n for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n response = await callback({ event, request, response });\n }\n return response;\n }\n async _awaitComplete(responseDone, handler, request, event) {\n let response;\n let error;\n try {\n response = await responseDone;\n }\n catch (error) {\n // Ignore errors, as response errors should be caught via the `response`\n // promise above. The `done` promise will only throw for errors in\n // promises passed to `handler.waitUntil()`.\n }\n try {\n await handler.runCallbacks('handlerDidRespond', {\n event,\n request,\n response,\n });\n await handler.doneWaiting();\n }\n catch (waitUntilError) {\n if (waitUntilError instanceof Error) {\n error = waitUntilError;\n }\n }\n await handler.runCallbacks('handlerDidComplete', {\n event,\n request,\n response,\n error: error,\n });\n handler.destroy();\n if (error) {\n throw error;\n }\n }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the [`handler`]{@link module:workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {module:workbox-strategies.StrategyHandler} handler\n * @return {Promise<Response>}\n *\n * @memberof module:workbox-strategies.Strategy\n */\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nexport const cacheOkAndOpaquePlugin = {\n /**\n * Returns a valid response (to allow caching) if the status is 200 (OK) or\n * 0 (opaque).\n *\n * @param {Object} options\n * @param {Response} options.response\n * @return {Response|null}\n *\n * @private\n */\n cacheWillUpdate: async ({ response }) => {\n if (response.status === 200 || response.status === 0) {\n return response;\n }\n return null;\n },\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nexport function publishEvent(event) {\n return __awaiter(this, void 0, void 0, function () {\n var clients, _i, clients_1, client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, self.clients.matchAll({ type: \"window\" })];\n case 1:\n clients = _a.sent();\n for (_i = 0, clients_1 = clients; _i < clients_1.length; _i++) {\n client = clients_1[_i];\n client.postMessage(event);\n }\n return [2 /*return*/];\n }\n });\n });\n}\n","import { omrsOfflineCachingStrategyHttpHeaderName, omrsOfflineResponseBodyHttpHeaderName, omrsOfflineResponseStatusHttpHeaderName, } from \"@openmrs/esm-offline/src/service-worker-http-headers\";\nexport function parseOmrsOfflineResponseBodyHeader(headers) {\n var _a;\n // The ?? undefined here is important as getOmrsHeader returns null by default when the header\n // is missing. undefined is different than null in this case since we want the body to be missing\n // if the header is not there (null is not missing).\n return ((_a = getOmrsHeader(headers, omrsOfflineResponseBodyHttpHeaderName)) !== null && _a !== void 0 ? _a : undefined);\n}\nexport function parseOmrsOfflineResponseStatusHeader(headers) {\n var _a;\n var status = +((_a = getOmrsHeader(headers, omrsOfflineResponseStatusHttpHeaderName)) !== null && _a !== void 0 ? _a : \"\");\n // The Response API requires the status to be in the 200-599 range and throws otherwise.\n return isNaN(status) || status < 200 || status > 599 ? 503 : status;\n}\nexport function hasOmrsNetworkFirstHeader(headers) {\n var header = getOmrsHeader(headers, omrsOfflineCachingStrategyHttpHeaderName);\n return header === \"network-first\";\n}\nexport function getOmrsHeader(headers, name) {\n return headers.get(name);\n}\nexport function headersToObject(headers) {\n var result = {};\n headers.forEach(function (value, key) { return (result[key] = value); });\n return result;\n}\n","export var omrsOfflineResponseBodyHttpHeaderName = \"x-omrs-offline-response-body\";\nexport var omrsOfflineResponseStatusHttpHeaderName = \"x-omrs-offline-response-status\";\nexport var omrsOfflineCachingStrategyHttpHeaderName = \"x-omrs-offline-caching-strategy\";\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { registerRoute } from \"workbox-routing\";\nimport { getOrCreateDefaultRouter } from \"workbox-routing/utils/getOrCreateDefaultRouter\";\nimport { NetworkFirst, NetworkOnly } from \"workbox-strategies\";\nimport { indexUrl, omrsCacheName } from \"./constants\";\nimport { ServiceWorkerDb } from \"./storage\";\nimport { publishEvent } from \"./event\";\nimport { validMethods } from \"workbox-routing/utils/constants\";\nimport { hasOmrsNetworkFirstHeader, headersToObject, parseOmrsOfflineResponseBodyHeader, parseOmrsOfflineResponseStatusHeader, } from \"./http-header-utils\";\nvar networkOnly = new NetworkOnly();\nvar networkFirst = new NetworkFirst({ cacheName: omrsCacheName });\n/**\n * Registers required Workbox routes used by the service worker to provide offline functionality.\n */\nexport function registerAllOmrsRoutes() {\n // Navigation requests are, when unresolvable via network (i.e. when offline), routed back\n // to the SPA's index (which should always be precached).\n // This ensures that the page loads correctly when a new navigation occurs to pages\n // like `/openmrs/spa/anything/nested`.\n registerRoute(function (_a) {\n var request = _a.request;\n return request.mode === \"navigate\";\n }, navigationHandler);\n // Fallback routing behavior.\n // Checks if a dynamic route registration exists and, if so, handles it using a Network First approach.\n // Otherwise falls back to a NetworkOnly - CacheOnly behavior.\n //\n // The latter ensures that:\n // a) precached files (like the app shell and files resolved from the importmap) are returned when offline.\n // b) anything else (e.g. API requests) is not cached.\n var router = getOrCreateDefaultRouter();\n for (var _i = 0, validMethods_1 = validMethods; _i < validMethods_1.length; _i++) {\n var method = validMethods_1[_i];\n router.setDefaultHandler(defaultHandler, method);\n }\n}\nfunction navigationHandler(options) {\n return __awaiter(this, void 0, void 0, function () {\n var e_1, cache, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 5]);\n return [4 /*yield*/, networkOnly.handle(options)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n e_1 = _a.sent();\n return [4 /*yield*/, caches.open(omrsCacheName)];\n case 3:\n cache = _a.sent();\n return [4 /*yield*/, cache.match(indexUrl)];\n case 4:\n response = _a.sent();\n return [2 /*return*/, response !== null && response !== void 0 ? response : Response.error()];\n case 5: return [2 /*return*/];\n }\n });\n });\n}\nfunction defaultHandler(options) {\n return __awaiter(this, void 0, void 0, function () {\n var useNetworkFirst;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, shouldUseNetworkFirst(options)];\n case 1:\n useNetworkFirst = _a.sent();\n if (!useNetworkFirst) return [3 /*break*/, 3];\n return [4 /*yield*/, networkFirst.handle(options)];\n case 2: return [2 /*return*/, _a.sent()];\n case 3: return [4 /*yield*/, handleWithNetworkOnlyAndCacheFallback(options)];\n case 4: return [2 /*return*/, _a.sent()];\n }\n });\n });\n}\nfunction shouldUseNetworkFirst(_a) {\n var request = _a.request, url = _a.url;\n return __awaiter(this, void 0, void 0, function () {\n var db, allDynamicRouteRegistrations, hasMatchingDynamicRoute;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (request.method !== \"GET\") {\n // TODO: Evaluate whether this should take precedence over the custom strategy header below.\n return [2 /*return*/, false];\n }\n if (hasOmrsNetworkFirstHeader(request.headers)) {\n return [2 /*return*/, true];\n }\n db = new ServiceWorkerDb();\n return [4 /*yield*/, db.dynamicRouteRegistrations.toArray()];\n case 1:\n allDynamicRouteRegistrations = _b.sent();\n hasMatchingDynamicRoute = allDynamicRouteRegistrations.some(function (route) {\n return new RegExp(route.pattern).test(url.href);\n });\n return [2 /*return*/, hasMatchingDynamicRoute];\n }\n });\n });\n}\nfunction handleWithNetworkOnlyAndCacheFallback(options) {\n return __awaiter(this, void 0, void 0, function () {\n var request, requestClone, e_2, cachedResponse, _a;\n var _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n request = options.request;\n return [4 /*yield*/, request.clone()];\n case 1:\n requestClone = _d.sent();\n _d.label = 2;\n case 2:\n _d.trys.push([2, 4, , 7]);\n return [4 /*yield*/, networkOnly.handle(options)];\n case 3: return [2 /*return*/, _d.sent()];\n case 4:\n e_2 = _d.sent();\n return [4 /*yield*/, caches.match(request, {\n cacheName: omrsCacheName,\n })];\n case 5:\n cachedResponse = _d.sent();\n if (cachedResponse) {\n return [2 /*return*/, cachedResponse];\n }\n _a = publishEvent;\n _b = {\n type: \"networkRequestFailed\"\n };\n _c = {\n url: request.url,\n method: request.method\n };\n return [4 /*yield*/, requestClone.text()];\n case 6:\n _a.apply(void 0, [(_b.request = (_c.body = _d.sent(),\n _c.headers = headersToObject(request.headers),\n _c),\n _b)]);\n return [2 /*return*/, new Response(parseOmrsOfflineResponseBodyHeader(request.headers), {\n status: parseOmrsOfflineResponseStatusHeader(request.headers),\n })];\n case 7: return [2 /*return*/];\n }\n });\n });\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [network-only]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-only}\n * request strategy.\n *\n * This class is useful if you want to take advantage of any\n * [Workbox plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}.\n *\n * If the network request fails, this will throw a `WorkboxError` exception.\n *\n * @extends module:workbox-strategies.Strategy\n * @memberof module:workbox-strategies\n */\nclass NetworkOnly extends Strategy {\n /**\n * @param {Object} [options]\n * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {number} [options.networkTimeoutSeconds] If set, any network requests\n * that fail to respond within the timeout will result in a network error.\n */\n constructor(options = {}) {\n super(options);\n this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {module:workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise<Response>}\n */\n async _handle(request, handler) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: '_handle',\n paramName: 'request',\n });\n }\n let error = undefined;\n let response;\n try {\n const promises = [handler.fetch(request)];\n if (this._networkTimeoutSeconds) {\n const timeoutPromise = timeout(this._networkTimeoutSeconds * 1000);\n promises.push(timeoutPromise);\n }\n response = await Promise.race(promises);\n if (!response) {\n throw new Error(`Timed out the network response after ` +\n `${this._networkTimeoutSeconds} seconds.`);\n }\n }\n catch (err) {\n if (err instanceof Error) {\n error = err;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n if (response) {\n logger.log(`Got response from network.`);\n }\n else {\n logger.log(`Unable to get a response from the network.`);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n}\nexport { NetworkOnly };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { cacheOkAndOpaquePlugin } from './plugins/cacheOkAndOpaquePlugin.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [network first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-falling-back-to-cache}\n * request strategy.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses]{@link https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests}.\n * Opaque responses are are cross-origin requests where the response doesn't\n * support [CORS]{@link https://enable-cors.org/}.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends module:workbox-strategies.Strategy\n * @memberof module:workbox-strategies\n */\nclass NetworkFirst extends Strategy {\n /**\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link module:workbox-core.cacheNames}.\n * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n * @param {number} [options.networkTimeoutSeconds] If set, any network requests\n * that fail to respond within the timeout will fallback to the cache.\n *\n * This option can be used to combat\n * \"[lie-fi]{@link https://developers.google.com/web/fundamentals/performance/poor-connectivity/#lie-fi}\"\n * scenarios.\n */\n constructor(options = {}) {\n super(options);\n // If this instance contains no plugins with a 'cacheWillUpdate' callback,\n // prepend the `cacheOkAndOpaquePlugin` plugin to the plugins list.\n if (!this.plugins.some((p) => 'cacheWillUpdate' in p)) {\n this.plugins.unshift(cacheOkAndOpaquePlugin);\n }\n this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;\n if (process.env.NODE_ENV !== 'production') {\n if (this._networkTimeoutSeconds) {\n assert.isType(this._networkTimeoutSeconds, 'number', {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'constructor',\n paramName: 'networkTimeoutSeconds',\n });\n }\n }\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {module:workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise<Response>}\n */\n async _handle(request, handler) {\n const logs = [];\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'handle',\n paramName: 'makeRequest',\n });\n }\n const promises = [];\n let timeoutId;\n if (this._networkTimeoutSeconds) {\n const { id, promise } = this._getTimeoutPromise({ request, logs, handler });\n timeoutId = id;\n promises.push(promise);\n }\n const networkPromise = this._getNetworkPromise({ timeoutId, request, logs, handler });\n promises.push(networkPromise);\n const response = await handler.waitUntil((async () => {\n // Promise.race() will resolve as soon as the first promise resolves.\n return await handler.waitUntil(Promise.race(promises)) ||\n // If Promise.race() resolved with null, it might be due to a network\n // timeout + a cache miss. If that were to happen, we'd rather wait until\n // the networkPromise resolves instead of returning null.\n // Note that it's fine to await an already-resolved promise, so we don't\n // have to check to see if it's still \"in flight\".\n await networkPromise;\n })());\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url });\n }\n return response;\n }\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs array\n * @param {Event} options.event\n * @return {Promise<Response>}\n *\n * @private\n */\n _getTimeoutPromise({ request, logs, handler }) {\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n const onNetworkTimeout = async () => {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Timing out the network response at ` +\n `${this._networkTimeoutSeconds} seconds.`);\n }\n resolve(await handler.cacheMatch(request));\n };\n timeoutId = setTimeout(onNetworkTimeout, this._networkTimeoutSeconds * 1000);\n });\n return {\n promise: timeoutPromise,\n id: timeoutId,\n };\n }\n /**\n * @param {Object} options\n * @param {number|undefined} options.timeoutId\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs Array.\n * @param {Event} options.event\n * @return {Promise<Response>}\n *\n * @private\n */\n async _getNetworkPromise({ timeoutId, request, logs, handler }) {\n let error;\n let response;\n try {\n response = await handler.fetchAndCachePut(request);\n }\n catch (fetchError) {\n if (fetchError instanceof Error) {\n error = fetchError;\n }\n }\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n }\n else {\n logs.push(`Unable to get a response from the network. Will respond ` +\n `with a cached response.`);\n }\n }\n if (error || !response) {\n response = await handler.cacheMatch(request);\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Found a cached response in the '${this.cacheName}'` +\n ` cache.`);\n }\n else {\n logs.push(`No response found in the '${this.cacheName}' cache.`);\n }\n }\n }\n return response;\n }\n}\nexport { NetworkFirst };\n","import { setCacheNameDetails } from \"workbox-core\";\nimport { handleMessage } from \"./message\";\nimport { precacheAppShell } from \"./caching\";\nimport { registerAllOmrsRoutes } from \"./routing\";\nimport { omrsCachePrefix } from \"./constants\";\nself.__WB_DISABLE_DEV_LOGS = true;\n// Initial Workbox setup. Renaming its default cache prefix prevents conflicts with other dev envs on localhost.\nsetCacheNameDetails({ prefix: omrsCachePrefix });\nregisterAllOmrsRoutes();\nself.addEventListener(\"message\", handleMessage);\nself.addEventListener(\"install\", function (e) {\n self.skipWaiting();\n // The app shell files are special in the sense that they can immediately be cached during SW installation.\n // They also don't change in between builds which makes them safe to cache once only.\n // If they change *during* a build, the SW is updated as well which triggers a re-installation.\n e.waitUntil(precacheAppShell());\n});\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call [registerRoute()]{@link module:workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|module:workbox-routing.Route~matchCallback|module:workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {module:workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {module:workbox-routing.Route} The generated `Route`(Useful for\n * unregistering).\n *\n * @memberof module:workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http') ?\n captureUrl.pathname : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if ((new RegExp(`${wildcards}`)).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if ((url.pathname === captureUrl.pathname) &&\n (url.origin !== captureUrl.origin)) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url.toString()}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\n else if (capture instanceof RegExp) {\n // If `capture` is a `RegExp` then `handler` and `method` must be present.\n route = new RegExpRoute(capture, handler, method);\n }\n else if (typeof capture === 'function') {\n // If `capture` is a function then `handler` and `method` must be present.\n route = new Route(capture, handler, method);\n }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\n"]}
1
+ {"version":3,"sources":["webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_version.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/_version.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/_version.js","webpack://@openmrs/esm-app-shell/webpack/bootstrap","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/WorkboxError.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/models/messages/messageGenerator.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/assert.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/models/quotaErrorCallbacks.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/cacheNames.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/Deferred.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/timeout.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_freeGlobal.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_root.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_Symbol.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isArray.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_getRawTag.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_objectToString.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseGetTag.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isObjectLike.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseToString.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_arrayMap.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isSymbol.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/escapeRegExp.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/toString.js","webpack://@openmrs/esm-app-shell/../../framework/esm-utils/src/retry.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isObject.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_coreJsData.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_isMasked.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_toSource.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseIsNative.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isFunction.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_getNative.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_getValue.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_nativeCreate.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashGet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_Hash.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashClear.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashDelete.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_hashSet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_assocIndexOf.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/eq.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheDelete.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_ListCache.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheClear.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheGet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_listCacheSet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_Map.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_getMapData.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_isKeyable.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_MapCache.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheClear.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheDelete.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheGet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_mapCacheSet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_SetCache.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_setCacheAdd.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_setCacheHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseIsNaN.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_arrayIncludes.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseIndexOf.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_strictIndexOf.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseFindIndex.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_arrayIncludesWith.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_cacheHas.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_Set.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_setToArray.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_createSet.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/noop.js","webpack://@openmrs/esm-app-shell/./src/service-worker/constants.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/uniq.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseUniq.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_arrayPush.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseIsArguments.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/isArguments.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_isFlattenable.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/_baseFlatten.js","webpack://@openmrs/esm-app-shell/../../../node_modules/lodash-es/flatten.js","webpack://@openmrs/esm-app-shell/./src/service-worker/import-map-utils.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/dexie/dist/dexie.mjs","webpack://@openmrs/esm-app-shell/./src/service-worker/storage.ts","webpack://@openmrs/esm-app-shell/./src/service-worker/caching.ts","webpack://@openmrs/esm-app-shell/./src/service-worker/message.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/utils/constants.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/utils/normalizeHandler.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/Route.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/RegExpRoute.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/Router.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/StrategyHandler.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/getFriendlyURL.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/Strategy.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/plugins/cacheOkAndOpaquePlugin.js","webpack://@openmrs/esm-app-shell/./src/service-worker/event.ts","webpack://@openmrs/esm-app-shell/./src/service-worker/http-header-utils.ts","webpack://@openmrs/esm-app-shell/../../framework/esm-offline/src/service-worker-http-headers.ts","webpack://@openmrs/esm-app-shell/./src/service-worker/routing.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/NetworkOnly.js","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-strategies/NetworkFirst.js","webpack://@openmrs/esm-app-shell/./src/service-worker/index.ts","webpack://@openmrs/esm-app-shell/../../../node_modules/workbox-routing/registerRoute.js"],"names":["self","_","e","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","WorkboxError","Error","constructor","errorCode","details","super","code","args","msg","length","JSON","stringify","messageGenerator","this","name","quotaErrorCallbacks","Set","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","cacheNames","userCacheName","cacheName","filter","value","join","stripParams","fullURL","ignoreParams","strippedURL","URL","param","searchParams","delete","href","Deferred","promise","Promise","resolve","reject","timeout","ms","setTimeout","global","Object","freeSelf","freeGlobal","Function","root","Array","isArray","objectProto","prototype","hasOwnProperty","nativeObjectToString","toString","symToStringTag","Symbol","isOwn","call","tag","unmasked","result","getRawTag","objectToString","symbolProto","symbolToString","baseToString","array","iteratee","index","arrayMap","isObjectLike","baseGetTag","isSymbol","reRegExpChar","reHasRegExpChar","RegExp","source","string","test","replace","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","next","rejected","done","then","apply","__generator","body","f","y","t","g","label","sent","trys","ops","verb","iterator","n","v","op","TypeError","pop","push","retry","fn","options","shouldRetry","getDelay","onError","attempt","lastError","e_1","_a","maxAttempts","limitAttempts","startingDelay","initialDelay","exponent","Math","pow","getExponentialDelay","delay","res","type","uid","maskSrcKey","exec","coreJsData","funcToString","reIsHostCtor","funcProto","reIsNative","isObject","func","isFunction","toSource","object","key","getValue","baseIsNative","getNative","Hash","entries","clear","entry","set","__data__","nativeCreate","size","has","get","data","other","splice","ListCache","assocIndexOf","map","MapCache","Map","getMapData","SetCache","values","add","fromIndex","strictIndexOf","predicate","fromRight","baseFindIndex","baseIsNaN","baseIndexOf","comparator","cache","forEach","setToArray","omrsCacheName","omrsCachePrefix","wbManifest","__WB_MANIFEST","indexUrl","prefixWithServiceWorkerLocationIfRelative","absoluteWbManifestUrls","url","includes","arrayIncludes","isCommon","seen","arrayIncludesWith","createSet","cacheHas","outer","computed","seenIndex","baseUniq","path","location","offset","propertyIsEnumerable","baseIsArguments","arguments","spreadableSymbol","isArguments","baseFlatten","depth","isStrict","isFlattenable","arrayPush","fetchUrlsToCacheFromImportMap","_b","imports","importMapUrlAddresses","urlsToCache","_this","_c","all","importMapAddress","buildManifest","buildManifestUrl","getBuildManifestUrl","fetch","json","getUrlsFromBuildManifests","parts","results","baseUrlForFiles","origin","pathname","split","_i","chunks","chunk","_d","_e","files","file","__assign","assign","s","i","p","__spreadArrays","il","r","k","a","j","jl","keys","_global","window","extend","obj","extension","getProto","getPrototypeOf","_hasOwn","hasOwn","prop","props","proto","setProp","defineProperty","functionOrGetSet","configurable","writable","derive","Child","from","Parent","create","bind","getOwnPropertyDescriptor","getPropertyDescriptor","_slice","slice","start","end","override","origFunc","overridedFactory","assert","b","asap","setImmediate","arrayToObject","extractor","reduce","item","nameAndValue","getByKeyPath","keyPath","rv","l","val","period","indexOf","innerObj","substr","setByKeyPath","isFrozen","currentKeyPath","remainingKeyPath","isNaN","parseInt","delByKeyPath","kp","shallowClone","m","concat","intrinsicTypeNames","num","intrinsicTypes","intrinsicTypeNameSet","x","deepClone","any","toStringTag","o","getValueOf","Uint8Array","getTime","ArrayBuffer","isView","buffer","getObjectDiff","prfx","ap","bp","apTypeName","bpTypeName","iteratorSymbol","getIteratorOf","NO_CHAR_ARRAY","getArrayOf","arrayLike","it","isAsyncFunction","debug","setDebug","libraryFilter","NEEDS_THROW_FOR_STACK","stack","getErrorWithStack","prettyStack","exception","numIgnoredFrames","message","frame","idbDomErrorNames","errorList","defaultTexts","VersionChanged","DatabaseClosed","Abort","TransactionInactive","DexieError","getMultiErrorMessage","failures","ModifyError","successCount","failedKeys","BulkError","_stack","errnames","BaseException","exceptions","fullName","msgOrInner","inner","Syntax","SyntaxError","Type","Range","RangeError","exceptionMap","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","onsuccess","onerror","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","thiz","INTERNAL","globalP","crypto","subtle","__proto__","nativeP","digest","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","patchGlobalPromise","stack_being_generated","schedulePhysicalTick","physicalTick","MutationObserver","hiddenDiv","document","createElement","observe","attributes","setAttribute","asap$1","callback","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","currentFulfiller","rejectionMapper","globalPSD","id","ref","unhandleds","onunhandled","globalError","pgp","env","finalize","uh","PSD","numScheduledCalls","tickFinalizers","DexiePromise","_listeners","onuncatched","_lib","psd","_PSD","_stackHolder","_prev","_numPrev","_state","_value","handleRejection","executePromiseTask","thenProp","microTaskId","totalEchoes","onFulfilled","onRejected","possibleAwait","cleanup","decrementExpectedAwaits","propagateToListener","Listener","nativeAwaitCompatibleWrap","linkToPreviousPromise","zone","shouldExecuteTick","beginMicroTickScope","_then","propagateAllListeners","endMicroTickScope","ex","reason","_promise","origProp","tryCatch","some","addPossiblyUnhandledError","listeners","len","finalizePhysicalTick","listener","cb","callListener","ret","markErrorAsHandled","getStack","stacks","limit","errorName","failure","prev","numPrev","wasRootExec","callbacks","unhandledErrs","finalizers","PromiseReject","wrap","errorCatcher","outerScope","switchToZone","catch","handler","err","finally","onFinally","Infinity","handle","Timeout","clearTimeout","snapShot","onPossibleParallellAsync","remaining","race","newPSD","newScope","usePSD","scheduler","follow","zoneProps","finalizer","allSettled","possiblePromises","status","AggregateError","task","awaits","echoes","taskCounter","zoneStack","zoneEchoes","zone_id_counter","props$$1","a1","a2","parent","globalEnv","PromiseProp","nthen","getPatchedPromiseThen","gthen","incrementExpectedAwaits","possiblePromise","rejection","zoneEnterEcho","targetZone","zoneLeaveEcho","bEnteringZone","currentZone","enqueueNativeMicroTask","GlobalPromise_1","targetEnv","GlobalPromise","a3","job","outerZone","origThen","onResolved","UNHANDLEDREJECTION","event","eventData","createEvent","initEvent","CustomEvent","detail","dispatchEvent","PromiseRejectionEvent","onunhandledrejection","defaultPrevented","console","warn","tempTransaction","db","mode","storeNames","openComplete","letThrough","trans","_createTransaction","_dbSchema","_completion","isBeingOpened","_options","autoOpen","open","dbReadyPromise","DEXIE_VERSION","maxString","String","fromCharCode","minKey","INVALID_KEY_ARGUMENT","STRING_EXPECTED","connections","isIEOrEdge","navigator","userAgent","hasIEDeleteObjectStoreBug","hangsOnDeleteLargeKeyRange","dexieStackFrameFilter","DBNAMES_DB","READONLY","READWRITE","combine","filter1","filter2","AnyRange","lower","lowerOpen","upper","upperOpen","workaroundForUndefinedPrimKey","Table","_trans","writeLocked","_tx","tableName","checkTableInTransaction","schema","NotFound","idbtrans","transless","keyOrCrit","where","first","core","hook","reading","fire","indexOrCrit","WhereClause","keyPaths","equals","compoundIndex","indexes","primKey","ix","compound","every","_maxKey","idxByName","idb","_deps","indexedDB","cmp","prevIndex","prevFilterFn","multi","idx","filterFunction","toCollection","and","count","thenShortcut","numRows","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","readHook","unsubscribe","defineClass","content","auto","objToAdd","mutate","numFailures","lastResult","update","keyOrObject","InvalidArgument","modify","put","range","bulkGet","keys$$1","getMany","bulkAdd","objects","keysOrOptions","wantResults","allKeys","numObjects","objectsToAdd","pos","bulkPut","objectsToPut","bulkDelete","numKeys","Events","ctx","evs","eventName","subscriber","subscribe","addEventType","chainFunction","defaultFunction","addConfiguredEvents","context","subscribers","cfg","makeClassConstructor","isPlainKeyRange","ignoreLimitFilter","algorithm","or","justLimit","replayFilter","addFilter","addReplayFilter","factory","isLimitFilter","curr","getIndexOrStore","coreSchema","isPrimKey","primaryKey","getIndexByKeyPath","Schema","openCursor","coreTable","keysOnly","dir","unique","query","iter","coreTrans","set_1","union","cursor","advance","stop","fail","_iterate","iterate","valueMapper","cursorPromise","wrappedFn","c","continue","advancer","_read","_ctx","error","table","_write","_addAlgorithm","clone","raw","min","sortBy","lastPart","lastIndex","getval","order","sorter","aVal","bVal","sort","valueMapper_1","a_1","offsetLeft","rowsLeft","until","bIncludeStopEntry","last","isMatch","indexName","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","strKey","found","changes","modifyer","anythingModified","outbound","extractKey","Dexie","totalFailures","applyMutateResult","expectedCount","nextChunk","addValues","putValues","putKeys","deleteKeys","origValue","ctx_1","coreRange","simpleCompare","simpleCompareReverse","collectionOrWhereClause","T","collection","emptyCollection","whereClause","rangeEqual","nextCasing","lowerKey","upperNeedle","lowerNeedle","llp","lwrKeyChar","addIgnoreCaseAlgorithm","match","needles","compare","upperNeedles","lowerNeedles","direction","nextKeySuffix","needlesLen","initDirection","toUpperCase","toLowerCase","upperFactory","lowerFactory","needleBounds","needle","nb","createRange","firstPossibleNeedle","lowestPossibleCasing","casing","enumerable","between","includeLower","includeUpper","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWith","str","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","ranges","ascending","descending","_min","max","_max","sortDirection","rangeSorter","newRange","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","checkKey","keyWithinCurrentRange","startsWithAnyOf","safariMultiStoreFix","getMaxKey","IdbKeyRange","only","eventRejectHandler","preventDefault","target","stopPropagation","Transaction","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","fnAndPSD","shift","idbdb","dbOpenError","MissingAPI","OpenFailed","active","transaction","ev","_reject","onabort","on","oncomplete","_resolve","bWriteLock","ReadOnly","_root","waitFor","promiseLike","_waitingFor","_waitingQueue","store","objectStore","spin","_spinCount","currentWaitPromise","abort","memoizedTables","_memoizedTables","tableSchema","transactionBoundTable","createIndexSpec","src","nameFromKeyPath","createTableSchema","getKeyExtractor","getSinglePathKeyExtractor","getEffectiveKeys","req","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","makeIDBKeyRange","upperBound","lowerBound","bound","tables","objectStoreNames","autoIncrement","indexByKeyPath","isPrimaryKey","indexNames","multiEntry","hasGetAll","extractSchema","isAddOrPut","errorHandler","_reqno","setResult","args1","args2","keyCount","callbackCount","successHandler","_pos","request","nonInfinitLimit","idbKeyRange","getAll","getAllKeys","count_1","req_1","openKeyCursor","result_1","___id","_cursorContinue","_cursorContinuePrimaryKey","continuePrimaryKey","_cursorAdvance","doThrowCursorIsStopped","gotOne","iterationPromise","resolveIteration","rejectIteration","guardedCallback","createDbCoreTable","tableMap","MIN_KEY","MAX_KEY","generateMiddlewareStacks","middlewares","IDBKeyRange","dbcore","stackImpl","down","createMiddlewareStack","createMiddlewareStacks","_middlewares","tbl","setApiOnPlace","objs","tableNames","dbschema","propDesc","removeTablesApi","lowerVersionFirst","_cfg","version","getSchemaDiff","oldSchema","newSchema","diff","del","change","oldDef","newDef","def","recreate","oldIndexes","newIndexes","idxName","oldIdx","newIdx","createTable","createObjectStore","addIndex","createIndex","buildGlobalSchema","globalSchema","storeName","idbindex","adjustToExistingIndexNames","_hasGetAll","dexieName","indexSpec","WorkerGlobalScope","databaseEnumerator","Version","_parseStoresSpec","stores","outSchema","indexNum","trim","storesSource","versions","_versions","storesSpec","_allTables","_storeNames","upgrade","upgradeFunction","contentUpgrade","vip","dexieOpen","state","openCanceller","resolveDbReady","dbReadyResolve","upgradeTransaction","dbName","autoSchema","round","verno","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","close","delreq","deleteDatabase","NoSuchDatabase","oldVer","oldVersion","idbUpgradeTrans","rejectTransaction","populate","queue","anyContentUpgraderHasRun","tuple","Upgrade","store_1","deleteIndex","upgradeSchema_1","returnValue_1","contentUpgradeIsAsync_1","promiseFollowed","decrementor","deleteObjectStore","deleteRemovedTables","runQueue","contains","updateTablesAndIndexes","runUpgraders","readGlobalSchema","ch","verifyInstalledSchema","onversionchange","vcFired","onReadyBeingFired","ready","fireRemainders","remainders","awaitIterator","callNext","onSuccess","throw","getNext","extractTransactionArgs","_tableArgs_","scopeFunc","enterTransactionScope","parentTransaction","returnValue","scopeFuncIsAsync","PrematureCommit","pad","virtualIndexMiddleware","level","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","keyLength","isVirtual","virtualIndex","translateRequest","createVirtualCursor","hooksMiddleware","downCore","downTable","dxTrans","deleting","creating","updating","addPutOrDelete","deleteNextChunk","deleteRange","effectiveKeys","getExistingValues","existingValues","contexts","existingValue","generatedPrimaryKey","objectDiff","additionalChanges_1","requestedValue_1","deps","dependencies","addons","cancelOpen","bSticky","db_1","keyRangeGenerator","keyRange","whereCtx","readingHook","createTableConstructor","complete","wasActive","createTransactionConstructor","versionNumber","createVersionConstructor","orCollection","_IDBKeyRange","createWhereClauseConstructor","newVersion","use","addon","versionInstance","_whenReady","unuse","mw","hasArguments","doDelete","remove","backendDB","isOpen","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","idbMode","onlyIfCompatible","SubTransaction","enterTransaction","InvalidTable","Dexie$1","databaseName","exists","getDatabaseNames","ignoreTransaction","async","generatorFn","spawn","currentTransaction","promiseOrFunction","optionalTimeout","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","semVer","default","maxKey","dbNamesTable","hasDatabasesNative","databases","dbnames","infos","info","DatabaseEnumerator","initDatabaseEnumerator","domError","extendStatics","__extends","d","setPrototypeOf","__","ServiceWorkerDb","_super","dynamicRouteRegistrations","cacheImportMapReferences","importMap","invalidateObsoleteCacheEntries","addToOmrsCache","urls","cached","failedToCache","caches","success","newImportMapUrls","cachedUrls","dynamicRoutes","urlsToInvalidate","cachedUrl","route","pattern","messageHandlers","onImportMapChanged","clearDynamicRoutes","registerDynamicRoute","finalPattern","validMethods","normalizeHandler","Route","method","setCatchHandler","catchHandler","RegExpRoute","regExp","Router","_routes","_defaultHandlerMap","addFetchListener","addEventListener","responsePromise","handleRequest","respondWith","addCacheListener","payload","requestPromises","Request","waitUntil","ports","postMessage","protocol","sameOrigin","params","findMatchingRoute","_catchHandler","catchErr","routes","matchResult","setDefaultHandler","registerRoute","unregisterRoute","routeIndex","defaultRouter","getOrCreateDefaultRouter","toRequest","input","StrategyHandler","strategy","_cacheKeys","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","plugins","_pluginStateMap","plugin","FetchEvent","preloadResponse","possiblePreloadResponse","originalRequest","hasCallback","iterateCallbacks","thrownErrorMessage","pluginFilteredRequest","fetchResponse","fetchOptions","response","runCallbacks","responseClone","cachePut","cachedResponse","matchOptions","effectiveRequest","getCacheKey","multiMatchOptions","responseToCache","_ensureResponseSafeToCache","hasCacheUpdateCallback","oldResponse","strippedRequestURL","keysOptions","ignoreSearch","cacheKeys","cacheKey","cacheMatchIgnoreParams","executeQuotaErrorCallbacks","newResponse","statefulCallback","statefulParam","destroy","pluginsUsed","Strategy","responseDone","handleAll","_getResponse","_awaitComplete","_handle","doneWaiting","waitUntilError","cacheOkAndOpaquePlugin","cacheWillUpdate","publishEvent","clients","clients_1","matchAll","parseOmrsOfflineResponseBodyHeader","headers","getOmrsHeader","parseOmrsOfflineResponseStatusHeader","networkOnly","_networkTimeoutSeconds","networkTimeoutSeconds","promises","timeoutPromise","networkFirst","unshift","logs","timeoutId","_getTimeoutPromise","networkPromise","_getNetworkPromise","cacheMatch","fetchAndCachePut","fetchError","navigationHandler","Response","defaultHandler","shouldUseNetworkFirst","handleWithNetworkOnlyAndCacheFallback","requestClone","text","__WB_DISABLE_DEV_LOGS","eachCacheNameDetail","capture","router","validMethods_1","registerAllOmrsRoutes","_f","_g","skipWaiting"],"mappings":"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","file":"service-worker.js","sourceRoot":"","sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:6.2.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:6.2.4'] && _();\n}\ncatch (e) { }\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:6.2.4'] && _();\n}\ncatch (e) { }\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = (process.env.NODE_ENV === 'production') ?\n fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from '../_private/WorkboxError.js';\nimport '../_version.js';\n/*\n * This method throws if the supplied value is not an array.\n * The destructed values are required to produce a meaningful error for users.\n * The destructed and restructured object is so it's clear what is\n * needed.\n */\nconst isArray = (value, details) => {\n if (!Array.isArray(value)) {\n throw new WorkboxError('not-an-array', details);\n }\n};\nconst hasMethod = (object, expectedMethod, details) => {\n const type = typeof object[expectedMethod];\n if (type !== 'function') {\n details['expectedMethod'] = expectedMethod;\n throw new WorkboxError('missing-a-method', details);\n }\n};\nconst isType = (object, expectedType, details) => {\n if (typeof object !== expectedType) {\n details['expectedType'] = expectedType;\n throw new WorkboxError('incorrect-type', details);\n }\n};\nconst isInstance = (object, \n// Need the general type to do the check later.\n// eslint-disable-next-line @typescript-eslint/ban-types\nexpectedClass, details) => {\n if (!(object instanceof expectedClass)) {\n details['expectedClassName'] = expectedClass.name;\n throw new WorkboxError('incorrect-class', details);\n }\n};\nconst isOneOf = (value, validValues, details) => {\n if (!validValues.includes(value)) {\n details['validValueDescription'] =\n `Valid values are ${JSON.stringify(validValues)}.`;\n throw new WorkboxError('invalid-value', details);\n }\n};\nconst isArrayOfClass = (value, \n// Need general type to do check later.\nexpectedClass, // eslint-disable-line\ndetails) => {\n const error = new WorkboxError('not-array-of-class', details);\n if (!Array.isArray(value)) {\n throw error;\n }\n for (const item of value) {\n if (!(item instanceof expectedClass)) {\n throw error;\n }\n }\n};\nconst finalAssertExports = process.env.NODE_ENV === 'production' ? null : {\n hasMethod,\n isArray,\n isInstance,\n isOneOf,\n isType,\n isArrayOfClass,\n};\nexport { finalAssertExports as assert };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\n// Can't change Function type right now.\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n const strippedURL = new URL(fullURL);\n for (const param of ignoreParams) {\n strippedURL.searchParams.delete(param);\n }\n return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array<string>} ignoreParams\n * @return {Promise<Response|undefined>}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n const strippedRequestURL = stripParams(request.url, ignoreParams);\n // If the request doesn't include any ignored params, match as normal.\n if (request.url === strippedRequestURL) {\n return cache.match(request, matchOptions);\n }\n // Otherwise, match by comparing keys\n const keysOptions = Object.assign(Object.assign({}, matchOptions), { ignoreSearch: true });\n const cacheKeys = await cache.keys(request, keysOptions);\n for (const cacheKey of cacheKeys) {\n const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n if (strippedRequestURL === strippedCacheKeyURL) {\n return cache.match(cacheKey, matchOptions);\n }\n }\n return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nexport { Deferred };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import Symbol from './_Symbol.js';\nimport arrayMap from './_arrayMap.js';\nimport isArray from './isArray.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nexport default baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nexport default arrayMap;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import toString from './toString.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nexport default escapeRegExp;\n","import baseToString from './_baseToString.js';\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nexport default toString;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/**\n * Executes the specified function and retries executing on failure with a custom backoff strategy\n * defined by the options.\n *\n * If not configured otherwise, this function uses the following default options:\n * * Retries 5 times beyond the initial attempt.\n * * Uses an exponential backoff starting with an initial delay of 1000ms.\n * @param fn The function to be executed and retried on failure.\n * @param options Additional options which configure the retry behavior.\n * @returns The result of successfully executing `fn`.\n * @throws Rethrows the final error of running `fn` when the function stops retrying.\n */\nexport function retry(fn, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var shouldRetry, getDelay, onError, attempt, lastError, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n shouldRetry = options.shouldRetry, getDelay = options.getDelay, onError = options.onError;\n shouldRetry = shouldRetry !== null && shouldRetry !== void 0 ? shouldRetry : (function (attempt) { return limitAttempts(attempt, 5); });\n getDelay = getDelay !== null && getDelay !== void 0 ? getDelay : (function (attempt) { return getExponentialDelay(attempt, 1000); });\n attempt = 0;\n lastError = undefined;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, , 5]);\n return [4 /*yield*/, delay(getDelay(attempt))];\n case 2:\n _a.sent();\n return [4 /*yield*/, fn()];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n e_1 = _a.sent();\n onError === null || onError === void 0 ? void 0 : onError(e_1, attempt);\n lastError = e_1;\n return [3 /*break*/, 5];\n case 5:\n if (shouldRetry(attempt++)) return [3 /*break*/, 1];\n _a.label = 6;\n case 6: \n // If we reach this fn errored and shouldn't retry anymore. Simply rethrow the final error as\n // a means of ending the retry process without a result.\n throw lastError;\n }\n });\n });\n}\nfunction limitAttempts(attempt, maxAttempts) {\n return attempt <= maxAttempts;\n}\nfunction getExponentialDelay(attempt, startingDelay, initialDelay) {\n if (initialDelay === void 0) { initialDelay = false; }\n var exponent = initialDelay ? attempt + 1 : attempt;\n return startingDelay * Math.pow(2, exponent);\n}\nfunction delay(ms) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (ms <= 0) {\n return [2 /*return*/];\n }\n return [2 /*return*/, new Promise(function (res) { return setTimeout(res, ms); })];\n });\n });\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nexport default baseIsNaN;\n","import baseIndexOf from './_baseIndexOf.js';\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nexport default arrayIncludes;\n","import baseFindIndex from './_baseFindIndex.js';\nimport baseIsNaN from './_baseIsNaN.js';\nimport strictIndexOf from './_strictIndexOf.js';\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nexport default baseIndexOf;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nexport default strictIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nexport default baseFindIndex;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nexport default arrayIncludesWith;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Set from './_Set.js';\nimport noop from './noop.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nexport default createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nexport default noop;\n","import uniq from \"lodash-es/uniq\";\nexport var omrsCachePrefix = \"omrs\";\nexport var omrsCacheName = omrsCachePrefix + \"-spa-cache-v1\";\nexport var wbManifest = self.__WB_MANIFEST;\nexport var indexUrl = prefixWithServiceWorkerLocationIfRelative(\"index.html\");\nexport var absoluteWbManifestUrls = uniq(wbManifest.map(function (_a) {\n var url = _a.url;\n return prefixWithServiceWorkerLocationIfRelative(url);\n}));\nexport var buildManifestSuffix = \".buildmanifest.json\";\nfunction prefixWithServiceWorkerLocationIfRelative(path) {\n return new URL(path, self.location.href).href;\n}\n","import baseUniq from './_baseUniq.js';\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nexport default uniq;\n","import SetCache from './_SetCache.js';\nimport arrayIncludes from './_arrayIncludes.js';\nimport arrayIncludesWith from './_arrayIncludesWith.js';\nimport cacheHas from './_cacheHas.js';\nimport createSet from './_createSet.js';\nimport setToArray from './_setToArray.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nexport default baseUniq;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","import Symbol from './_Symbol.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nexport default isFlattenable;\n","import arrayPush from './_arrayPush.js';\nimport isFlattenable from './_isFlattenable.js';\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nexport default baseFlatten;\n","import baseFlatten from './_baseFlatten.js';\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nexport default flatten;\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { buildManifestSuffix } from \"./constants\";\nimport flatten from \"lodash-es/flatten\";\n/**\n * Given an import map object, resolves the URLs of all cacheable files defined in the import map.\n * Resolving relies on a build manifest file existing in the same location as the file referenced\n * in the import map.\n */\nexport function fetchUrlsToCacheFromImportMap(_a) {\n var _b = _a.imports, imports = _b === void 0 ? {} : _b;\n return __awaiter(this, void 0, void 0, function () {\n var importMapUrlAddresses, urlsToCache;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n importMapUrlAddresses = Object.values(imports);\n return [4 /*yield*/, Promise.all(importMapUrlAddresses.map(function (importMapAddress) { return __awaiter(_this, void 0, void 0, function () {\n var buildManifestUrl, buildManifest;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n buildManifestUrl = getBuildManifestUrl(importMapAddress);\n return [4 /*yield*/, tryFetchBuildManifest(buildManifestUrl)];\n case 1:\n buildManifest = _a.sent();\n return [2 /*return*/, buildManifest\n ? getUrlsFromBuildManifests(importMapAddress, buildManifest)\n : []];\n }\n });\n }); }))];\n case 1:\n urlsToCache = _c.sent();\n return [2 /*return*/, flatten(urlsToCache)];\n }\n });\n });\n}\nfunction getBuildManifestUrl(importMapAddress) {\n return importMapAddress + buildManifestSuffix;\n}\nfunction tryFetchBuildManifest(buildManifestUrl) {\n return fetch(buildManifestUrl)\n .then(function (res) { return res.json(); })[\"catch\"](function () { return null; });\n}\nfunction getUrlsFromBuildManifests(importMapAddress, buildManifest) {\n var _a, _b;\n // The try here guards against malformed JSON responses.\n // While we do expect the build manifest to have the correct format, we cannot *rely* on it.\n // Using a try/catch here seems better to me than doing defensive checks on every field/type in the response.\n try {\n var results = [];\n var baseUrlForFiles = getUrlOfFileParentDir(new URL(importMapAddress));\n for (var _i = 0, _c = (_a = buildManifest.chunks) !== null && _a !== void 0 ? _a : []; _i < _c.length; _i++) {\n var chunk = _c[_i];\n for (var _d = 0, _e = (_b = chunk.files) !== null && _b !== void 0 ? _b : []; _d < _e.length; _d++) {\n var file = _e[_d];\n results.push(new URL(file, baseUrlForFiles).toString());\n }\n }\n return results;\n }\n catch (e) {\n return [];\n }\n}\nfunction getUrlOfFileParentDir(url) {\n var fullPath = url.origin + url.pathname; // Removes params + hash.\n var parts = fullPath.split(\"/\");\n parts[parts.length - 1] = \"\";\n return parts.join(\"/\");\n}\n","/*\n * Dexie.js - a minimalistic wrapper for IndexedDB\n * ===============================================\n *\n * By David Fahlander, david.fahlander@gmail.com\n *\n * Version 3.0.3, Wed Nov 18 2020\n *\n * http://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n */\n \nvar __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\n\n\n\n\n\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nvar keys = Object.keys;\nvar isArray = Array.isArray;\nvar _global = typeof self !== 'undefined' ? self :\n typeof window !== 'undefined' ? window :\n global;\nif (typeof Promise !== 'undefined' && !_global.Promise) {\n _global.Promise = Promise;\n}\nfunction extend(obj, extension) {\n if (typeof extension !== 'object')\n return obj;\n keys(extension).forEach(function (key) {\n obj[key] = extension[key];\n });\n return obj;\n}\nvar getProto = Object.getPrototypeOf;\nvar _hasOwn = {}.hasOwnProperty;\nfunction hasOwn(obj, prop) {\n return _hasOwn.call(obj, prop);\n}\nfunction props(proto, extension) {\n if (typeof extension === 'function')\n extension = extension(getProto(proto));\n keys(extension).forEach(function (key) {\n setProp(proto, key, extension[key]);\n });\n}\nvar defineProperty = Object.defineProperty;\nfunction setProp(obj, prop, functionOrGetSet, options) {\n defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ?\n { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } :\n { value: functionOrGetSet, configurable: true, writable: true }, options));\n}\nfunction derive(Child) {\n return {\n from: function (Parent) {\n Child.prototype = Object.create(Parent.prototype);\n setProp(Child.prototype, \"constructor\", Child);\n return {\n extend: props.bind(null, Child.prototype)\n };\n }\n };\n}\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nfunction getPropertyDescriptor(obj, prop) {\n var pd = getOwnPropertyDescriptor(obj, prop);\n var proto;\n return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop);\n}\nvar _slice = [].slice;\nfunction slice(args, start, end) {\n return _slice.call(args, start, end);\n}\nfunction override(origFunc, overridedFactory) {\n return overridedFactory(origFunc);\n}\nfunction assert(b) {\n if (!b)\n throw new Error(\"Assertion Failed\");\n}\nfunction asap(fn) {\n if (_global.setImmediate)\n setImmediate(fn);\n else\n setTimeout(fn, 0);\n}\n\nfunction arrayToObject(array, extractor) {\n return array.reduce(function (result, item, i) {\n var nameAndValue = extractor(item, i);\n if (nameAndValue)\n result[nameAndValue[0]] = nameAndValue[1];\n return result;\n }, {});\n}\n\nfunction tryCatch(fn, onerror, args) {\n try {\n fn.apply(null, args);\n }\n catch (ex) {\n onerror && onerror(ex);\n }\n}\nfunction getByKeyPath(obj, keyPath) {\n if (hasOwn(obj, keyPath))\n return obj[keyPath];\n if (!keyPath)\n return obj;\n if (typeof keyPath !== 'string') {\n var rv = [];\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n var val = getByKeyPath(obj, keyPath[i]);\n rv.push(val);\n }\n return rv;\n }\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var innerObj = obj[keyPath.substr(0, period)];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n }\n return undefined;\n}\nfunction setByKeyPath(obj, keyPath, value) {\n if (!obj || keyPath === undefined)\n return;\n if ('isFrozen' in Object && Object.isFrozen(obj))\n return;\n if (typeof keyPath !== 'string' && 'length' in keyPath) {\n assert(typeof value !== 'string' && 'length' in value);\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n setByKeyPath(obj, keyPath[i], value[i]);\n }\n }\n else {\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var currentKeyPath = keyPath.substr(0, period);\n var remainingKeyPath = keyPath.substr(period + 1);\n if (remainingKeyPath === \"\")\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(currentKeyPath)))\n obj.splice(currentKeyPath, 1);\n else\n delete obj[currentKeyPath];\n }\n else\n obj[currentKeyPath] = value;\n else {\n var innerObj = obj[currentKeyPath];\n if (!innerObj)\n innerObj = (obj[currentKeyPath] = {});\n setByKeyPath(innerObj, remainingKeyPath, value);\n }\n }\n else {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(keyPath)))\n obj.splice(keyPath, 1);\n else\n delete obj[keyPath];\n }\n else\n obj[keyPath] = value;\n }\n }\n}\nfunction delByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string')\n setByKeyPath(obj, keyPath, undefined);\n else if ('length' in keyPath)\n [].map.call(keyPath, function (kp) {\n setByKeyPath(obj, kp, undefined);\n });\n}\nfunction shallowClone(obj) {\n var rv = {};\n for (var m in obj) {\n if (hasOwn(obj, m))\n rv[m] = obj[m];\n }\n return rv;\n}\nvar concat = [].concat;\nfunction flatten(a) {\n return concat.apply([], a);\n}\nvar intrinsicTypeNames = \"Boolean,String,Date,RegExp,Blob,File,FileList,ArrayBuffer,DataView,Uint8ClampedArray,ImageData,Map,Set\"\n .split(',').concat(flatten([8, 16, 32, 64].map(function (num) { return [\"Int\", \"Uint\", \"Float\"].map(function (t) { return t + num + \"Array\"; }); }))).filter(function (t) { return _global[t]; });\nvar intrinsicTypes = intrinsicTypeNames.map(function (t) { return _global[t]; });\nvar intrinsicTypeNameSet = arrayToObject(intrinsicTypeNames, function (x) { return [x, true]; });\nfunction deepClone(any) {\n if (!any || typeof any !== 'object')\n return any;\n var rv;\n if (isArray(any)) {\n rv = [];\n for (var i = 0, l = any.length; i < l; ++i) {\n rv.push(deepClone(any[i]));\n }\n }\n else if (intrinsicTypes.indexOf(any.constructor) >= 0) {\n rv = any;\n }\n else {\n rv = any.constructor ? Object.create(any.constructor.prototype) : {};\n for (var prop in any) {\n if (hasOwn(any, prop)) {\n rv[prop] = deepClone(any[prop]);\n }\n }\n }\n return rv;\n}\nvar toString = {}.toString;\nfunction toStringTag(o) {\n return toString.call(o).slice(8, -1);\n}\nvar getValueOf = function (val, type) {\n return type === \"Array\" ? '' + val.map(function (v) { return getValueOf(v, toStringTag(v)); }) :\n type === \"ArrayBuffer\" ? '' + new Uint8Array(val) :\n type === \"Date\" ? val.getTime() :\n ArrayBuffer.isView(val) ? '' + new Uint8Array(val.buffer) :\n val;\n};\nfunction getObjectDiff(a, b, rv, prfx) {\n rv = rv || {};\n prfx = prfx || '';\n keys(a).forEach(function (prop) {\n if (!hasOwn(b, prop))\n rv[prfx + prop] = undefined;\n else {\n var ap = a[prop], bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n var apTypeName = toStringTag(ap);\n var bpTypeName = toStringTag(bp);\n if (apTypeName === bpTypeName) {\n if (intrinsicTypeNameSet[apTypeName]) {\n if (getValueOf(ap, apTypeName) !== getValueOf(bp, bpTypeName)) {\n rv[prfx + prop] = b[prop];\n }\n }\n else {\n getObjectDiff(ap, bp, rv, prfx + prop + \".\");\n }\n }\n else {\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}\nvar iteratorSymbol = typeof Symbol !== 'undefined' && Symbol.iterator;\nvar getIteratorOf = iteratorSymbol ? function (x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n} : function () { return null; };\nvar NO_CHAR_ARRAY = {};\nfunction getArrayOf(arrayLike) {\n var i, a, x, it;\n if (arguments.length === 1) {\n if (isArray(arrayLike))\n return arrayLike.slice();\n if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string')\n return [arrayLike];\n if ((it = getIteratorOf(arrayLike))) {\n a = [];\n while (x = it.next(), !x.done)\n a.push(x.value);\n return a;\n }\n if (arrayLike == null)\n return [arrayLike];\n i = arrayLike.length;\n if (typeof i === 'number') {\n a = new Array(i);\n while (i--)\n a[i] = arrayLike[i];\n return a;\n }\n return [arrayLike];\n }\n i = arguments.length;\n a = new Array(i);\n while (i--)\n a[i] = arguments[i];\n return a;\n}\nvar isAsyncFunction = typeof Symbol !== 'undefined'\n ? function (fn) { return fn[Symbol.toStringTag] === 'AsyncFunction'; }\n : function () { return false; };\n\nvar debug = typeof location !== 'undefined' &&\n /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\nfunction setDebug(value, filter) {\n debug = value;\n libraryFilter = filter;\n}\nvar libraryFilter = function () { return true; };\nvar NEEDS_THROW_FOR_STACK = !new Error(\"\").stack;\nfunction getErrorWithStack() {\n if (NEEDS_THROW_FOR_STACK)\n try {\n throw new Error();\n }\n catch (e) {\n return e;\n }\n return new Error();\n}\nfunction prettyStack(exception, numIgnoredFrames) {\n var stack = exception.stack;\n if (!stack)\n return \"\";\n numIgnoredFrames = (numIgnoredFrames || 0);\n if (stack.indexOf(exception.name) === 0)\n numIgnoredFrames += (exception.name + exception.message).split('\\n').length;\n return stack.split('\\n')\n .slice(numIgnoredFrames)\n .filter(libraryFilter)\n .map(function (frame) { return \"\\n\" + frame; })\n .join('');\n}\n\nvar dexieErrorNames = [\n 'Modify',\n 'Bulk',\n 'OpenFailed',\n 'VersionChange',\n 'Schema',\n 'Upgrade',\n 'InvalidTable',\n 'MissingAPI',\n 'NoSuchDatabase',\n 'InvalidArgument',\n 'SubTransaction',\n 'Unsupported',\n 'Internal',\n 'DatabaseClosed',\n 'PrematureCommit',\n 'ForeignAwait'\n];\nvar idbDomErrorNames = [\n 'Unknown',\n 'Constraint',\n 'Data',\n 'TransactionInactive',\n 'ReadOnly',\n 'Version',\n 'NotFound',\n 'InvalidState',\n 'InvalidAccess',\n 'Abort',\n 'Timeout',\n 'QuotaExceeded',\n 'Syntax',\n 'DataClone'\n];\nvar errorList = dexieErrorNames.concat(idbDomErrorNames);\nvar defaultTexts = {\n VersionChanged: \"Database version changed by other database connection\",\n DatabaseClosed: \"Database has been closed\",\n Abort: \"Transaction aborted\",\n TransactionInactive: \"Transaction has already completed or failed\"\n};\nfunction DexieError(name, msg) {\n this._e = getErrorWithStack();\n this.name = name;\n this.message = msg;\n}\nderive(DexieError).from(Error).extend({\n stack: {\n get: function () {\n return this._stack ||\n (this._stack = this.name + \": \" + this.message + prettyStack(this._e, 2));\n }\n },\n toString: function () { return this.name + \": \" + this.message; }\n});\nfunction getMultiErrorMessage(msg, failures) {\n return msg + \". Errors: \" + Object.keys(failures)\n .map(function (key) { return failures[key].toString(); })\n .filter(function (v, i, s) { return s.indexOf(v) === i; })\n .join('\\n');\n}\nfunction ModifyError(msg, failures, successCount, failedKeys) {\n this._e = getErrorWithStack();\n this.failures = failures;\n this.failedKeys = failedKeys;\n this.successCount = successCount;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(ModifyError).from(DexieError);\nfunction BulkError(msg, failures) {\n this._e = getErrorWithStack();\n this.name = \"BulkError\";\n this.failures = failures;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(BulkError).from(DexieError);\nvar errnames = errorList.reduce(function (obj, name) { return (obj[name] = name + \"Error\", obj); }, {});\nvar BaseException = DexieError;\nvar exceptions = errorList.reduce(function (obj, name) {\n var fullName = name + \"Error\";\n function DexieError(msgOrInner, inner) {\n this._e = getErrorWithStack();\n this.name = fullName;\n if (!msgOrInner) {\n this.message = defaultTexts[name] || fullName;\n this.inner = null;\n }\n else if (typeof msgOrInner === 'string') {\n this.message = \"\" + msgOrInner + (!inner ? '' : '\\n ' + inner);\n this.inner = inner || null;\n }\n else if (typeof msgOrInner === 'object') {\n this.message = msgOrInner.name + \" \" + msgOrInner.message;\n this.inner = msgOrInner;\n }\n }\n derive(DexieError).from(BaseException);\n obj[name] = DexieError;\n return obj;\n}, {});\nexceptions.Syntax = SyntaxError;\nexceptions.Type = TypeError;\nexceptions.Range = RangeError;\nvar exceptionMap = idbDomErrorNames.reduce(function (obj, name) {\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfunction mapError(domError, message) {\n if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])\n return domError;\n var rv = new exceptionMap[domError.name](message || domError.message, domError);\n if (\"stack\" in domError) {\n setProp(rv, \"stack\", { get: function () {\n return this.inner.stack;\n } });\n }\n return rv;\n}\nvar fullNameExceptions = errorList.reduce(function (obj, name) {\n if ([\"Syntax\", \"Type\", \"Range\"].indexOf(name) === -1)\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfullNameExceptions.ModifyError = ModifyError;\nfullNameExceptions.DexieError = DexieError;\nfullNameExceptions.BulkError = BulkError;\n\nfunction nop() { }\nfunction mirror(val) { return val; }\nfunction pureFunctionChain(f1, f2) {\n if (f1 == null || f1 === mirror)\n return f2;\n return function (val) {\n return f2(f1(val));\n };\n}\nfunction callBoth(on1, on2) {\n return function () {\n on1.apply(this, arguments);\n on2.apply(this, arguments);\n };\n}\nfunction hookCreatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res !== undefined)\n arguments[0] = res;\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res2 !== undefined ? res2 : res;\n };\n}\nfunction hookDeletingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n f1.apply(this, arguments);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = this.onerror = null;\n f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n };\n}\nfunction hookUpdatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function (modifications) {\n var res = f1.apply(this, arguments);\n extend(modifications, res);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res === undefined ?\n (res2 === undefined ? undefined : res2) :\n (extend(res, res2));\n };\n}\nfunction reverseStoppableEventChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n if (f2.apply(this, arguments) === false)\n return false;\n return f1.apply(this, arguments);\n };\n}\n\nfunction promisableChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res && typeof res.then === 'function') {\n var thiz = this, i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n return res.then(function () {\n return f2.apply(thiz, args);\n });\n }\n return f2.apply(this, arguments);\n };\n}\n\nvar INTERNAL = {};\nvar LONG_STACKS_CLIP_LIMIT = 100;\nvar MAX_LONG_STACKS = 20;\nvar ZONE_ECHO_LIMIT = 100;\nvar _a = typeof Promise === 'undefined' ?\n [] :\n (function () {\n var globalP = Promise.resolve();\n if (typeof crypto === 'undefined' || !crypto.subtle)\n return [globalP, globalP.__proto__, globalP];\n var nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [\n nativeP,\n nativeP.__proto__,\n globalP\n ];\n })();\nvar resolvedNativePromise = _a[0];\nvar nativePromiseProto = _a[1];\nvar resolvedGlobalPromise = _a[2];\nvar nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\nvar NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\nvar patchGlobalPromise = !!resolvedGlobalPromise;\nvar stack_being_generated = false;\nvar schedulePhysicalTick = resolvedGlobalPromise ?\n function () { resolvedGlobalPromise.then(physicalTick); }\n :\n _global.setImmediate ?\n setImmediate.bind(null, physicalTick) :\n _global.MutationObserver ?\n function () {\n var hiddenDiv = document.createElement(\"div\");\n (new MutationObserver(function () {\n physicalTick();\n hiddenDiv = null;\n })).observe(hiddenDiv, { attributes: true });\n hiddenDiv.setAttribute('i', '1');\n } :\n function () { setTimeout(physicalTick, 0); };\nvar asap$1 = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n};\nvar isOutsideMicroTick = true;\nvar needsNewPhysicalTick = true;\nvar unhandledErrors = [];\nvar rejectingErrors = [];\nvar currentFulfiller = null;\nvar rejectionMapper = mirror;\nvar globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: globalError,\n pgp: false,\n env: {},\n finalize: function () {\n this.unhandleds.forEach(function (uh) {\n try {\n globalError(uh[0], uh[1]);\n }\n catch (e) { }\n });\n }\n};\nvar PSD = globalPSD;\nvar microtickQueue = [];\nvar numScheduledCalls = 0;\nvar tickFinalizers = [];\nfunction DexiePromise(fn) {\n if (typeof this !== 'object')\n throw new TypeError('Promises must be constructed via new');\n this._listeners = [];\n this.onuncatched = nop;\n this._lib = false;\n var psd = (this._PSD = PSD);\n if (debug) {\n this._stackHolder = getErrorWithStack();\n this._prev = null;\n this._numPrev = 0;\n }\n if (typeof fn !== 'function') {\n if (fn !== INTERNAL)\n throw new TypeError('Not a function');\n this._state = arguments[1];\n this._value = arguments[2];\n if (this._state === false)\n handleRejection(this, this._value);\n return;\n }\n this._state = null;\n this._value = null;\n ++psd.ref;\n executePromiseTask(this, fn);\n}\nvar thenProp = {\n get: function () {\n var psd = PSD, microTaskId = totalEchoes;\n function then(onFulfilled, onRejected) {\n var _this = this;\n var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n 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 debug && linkToPreviousPromise(rv, this);\n return rv;\n }\n then.prototype = INTERNAL;\n return then;\n },\n set: function (value) {\n setProp(this, 'then', value && value.prototype === INTERNAL ?\n thenProp :\n {\n get: function () {\n return value;\n },\n set: thenProp.set\n });\n }\n};\nprops(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 onFinally();\n return value;\n }, function (err) {\n onFinally();\n return PromiseReject(err);\n });\n },\n stack: {\n get: function () {\n if (this._stack)\n return this._stack;\n try {\n stack_being_generated = true;\n var stacks = getStack(this, [], MAX_LONG_STACKS);\n var stack = stacks.join(\"\\nFrom previous: \");\n if (this._state !== null)\n this._stack = stack;\n return stack;\n }\n finally {\n stack_being_generated = false;\n }\n }\n },\n timeout: function (ms, msg) {\n var _this = this;\n return ms < Infinity ?\n new 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 linkToPreviousPromise(rv, currentFulfiller);\n return rv;\n },\n reject: PromiseReject,\n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new 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$1; },\n set: function (value) { asap$1 = value; }\n },\n rejectionMapper: {\n get: function () { return rejectionMapper; },\n set: function (value) { rejectionMapper = value; }\n },\n follow: function (fn, zoneProps) {\n return new 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}\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 debug && reason !== null && typeof reason === 'object' && !reason._promise && tryCatch(function () {\n var origProp = getPropertyDescriptor(reason, \"stack\");\n reason._promise = promise;\n setProp(reason, \"stack\", {\n get: function () {\n return stack_being_generated ?\n origProp && (origProp.get ?\n origProp.get.apply(reason) :\n origProp.value) :\n promise.stack;\n }\n });\n });\n addPossiblyUnhandledError(promise);\n propagateAllListeners(promise);\n if (shouldExecuteTick)\n endMicroTickScope();\n}\nfunction propagateAllListeners(promise) {\n var listeners = promise._listeners;\n promise._listeners = [];\n for (var i = 0, len = listeners.length; i < len; ++i) {\n propagateToListener(promise, listeners[i]);\n }\n var psd = promise._PSD;\n --psd.ref || psd.finalize();\n if (numScheduledCalls === 0) {\n ++numScheduledCalls;\n asap$1(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n }\n}\nfunction propagateToListener(promise, listener) {\n if (promise._state === null) {\n promise._listeners.push(listener);\n return;\n }\n var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n if (cb === null) {\n return (promise._state ? listener.resolve : listener.reject)(promise._value);\n }\n ++listener.psd.ref;\n ++numScheduledCalls;\n asap$1(callListener, [cb, promise, listener]);\n}\nfunction callListener(cb, promise, listener) {\n try {\n currentFulfiller = promise;\n var ret, value = promise._value;\n if (promise._state) {\n ret = cb(value);\n }\n else {\n if (rejectingErrors.length)\n rejectingErrors = [];\n ret = cb(value);\n if (rejectingErrors.indexOf(value) === -1)\n markErrorAsHandled(promise);\n }\n listener.resolve(ret);\n }\n catch (e) {\n listener.reject(e);\n }\n finally {\n currentFulfiller = null;\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n}\nfunction getStack(promise, stacks, limit) {\n if (stacks.length === limit)\n return stacks;\n var stack = \"\";\n if (promise._state === false) {\n var failure = promise._value, errorName, message;\n if (failure != null) {\n errorName = failure.name || \"Error\";\n message = failure.message || failure;\n stack = prettyStack(failure, 0);\n }\n else {\n errorName = failure;\n message = \"\";\n }\n stacks.push(errorName + (message ? \": \" + message : \"\") + stack);\n }\n if (debug) {\n stack = prettyStack(promise._stackHolder, 2);\n if (stack && stacks.indexOf(stack) === -1)\n stacks.push(stack);\n if (promise._prev)\n getStack(promise._prev, stacks, limit);\n }\n return stacks;\n}\nfunction linkToPreviousPromise(promise, prev) {\n var numPrev = prev ? prev._numPrev + 1 : 0;\n if (numPrev < LONG_STACKS_CLIP_LIMIT) {\n promise._prev = prev;\n promise._numPrev = numPrev;\n }\n}\nfunction physicalTick() {\n beginMicroTickScope() && endMicroTickScope();\n}\nfunction beginMicroTickScope() {\n var wasRootExec = isOutsideMicroTick;\n isOutsideMicroTick = false;\n needsNewPhysicalTick = false;\n return wasRootExec;\n}\nfunction endMicroTickScope() {\n var callbacks, i, l;\n do {\n while (microtickQueue.length > 0) {\n callbacks = microtickQueue;\n microtickQueue = [];\n l = callbacks.length;\n for (i = 0; i < l; ++i) {\n var item = callbacks[i];\n item[0].apply(null, item[1]);\n }\n }\n } while (microtickQueue.length > 0);\n isOutsideMicroTick = true;\n needsNewPhysicalTick = true;\n}\nfunction finalizePhysicalTick() {\n var unhandledErrs = unhandledErrors;\n unhandledErrors = [];\n unhandledErrs.forEach(function (p) {\n p._PSD.onunhandled.call(null, p._value, p);\n });\n var finalizers = tickFinalizers.slice(0);\n var i = finalizers.length;\n while (i)\n finalizers[--i]();\n}\nfunction run_at_end_of_this_or_next_physical_tick(fn) {\n function finalizer() {\n fn();\n tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n }\n tickFinalizers.push(finalizer);\n ++numScheduledCalls;\n asap$1(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n}\nfunction addPossiblyUnhandledError(promise) {\n if (!unhandledErrors.some(function (p) { return p._value === promise._value; }))\n unhandledErrors.push(promise);\n}\nfunction markErrorAsHandled(promise) {\n var i = unhandledErrors.length;\n while (i)\n if (unhandledErrors[--i]._value === promise._value) {\n unhandledErrors.splice(i, 1);\n return;\n }\n}\nfunction PromiseReject(reason) {\n return new 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$$1, a1, a2) {\n var parent = PSD, psd = Object.create(parent);\n psd.parent = parent;\n psd.ref = 0;\n psd.global = false;\n psd.id = ++zone_id_counter;\n var globalEnv = globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: 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 nthen: getPatchedPromiseThen(globalEnv.nthen, psd),\n gthen: getPatchedPromiseThen(globalEnv.gthen, psd)\n } : {};\n if (props$$1)\n extend(psd, props$$1);\n ++parent.ref;\n psd.finalize = function () {\n --this.parent.ref || this.parent.finalize();\n };\n var rv = usePSD(psd, fn, a1, a2);\n if (psd.ref === 0)\n psd.finalize();\n return rv;\n}\nfunction incrementExpectedAwaits() {\n if (!task.id)\n task.id = ++taskCounter;\n ++task.awaits;\n task.echoes += ZONE_ECHO_LIMIT;\n return task.id;\n}\nfunction decrementExpectedAwaits() {\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.id = 0;\n }\n zoneStack.push(PSD);\n switchToZone(targetZone, true);\n}\nfunction zoneLeaveEcho() {\n var zone = zoneStack[zoneStack.length - 1];\n zoneStack.pop();\n switchToZone(zone, false);\n}\nfunction switchToZone(targetZone, bEnteringZone) {\n var currentZone = PSD;\n if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {\n enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n }\n if (targetZone === PSD)\n return;\n PSD = targetZone;\n if (currentZone === globalPSD)\n globalPSD.env = snapShot();\n if (patchGlobalPromise) {\n var GlobalPromise_1 = globalPSD.env.Promise;\n var targetEnv = targetZone.env;\n nativePromiseProto.then = targetEnv.nthen;\n GlobalPromise_1.prototype.then = targetEnv.gthen;\n if (currentZone.global || targetZone.global) {\n Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n GlobalPromise_1.all = targetEnv.all;\n GlobalPromise_1.race = targetEnv.race;\n GlobalPromise_1.resolve = targetEnv.resolve;\n GlobalPromise_1.reject = targetEnv.reject;\n if (targetEnv.allSettled)\n GlobalPromise_1.allSettled = targetEnv.allSettled;\n if (targetEnv.any)\n GlobalPromise_1.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 nthen: nativePromiseProto.then,\n gthen: GlobalPromise.prototype.then\n } : {};\n}\nfunction usePSD(psd, fn, a1, a2, a3) {\n var outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn(a1, a2, a3);\n }\n finally {\n switchToZone(outerScope, false);\n }\n}\nfunction enqueueNativeMicroTask(job) {\n nativePromiseThen.call(resolvedNativePromise, job);\n}\nfunction nativeAwaitCompatibleWrap(fn, zone, possibleAwait, 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 enqueueNativeMicroTask(decrementExpectedAwaits);\n }\n };\n}\nfunction getPatchedPromiseThen(origThen, zone) {\n return function (onResolved, onRejected) {\n return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone), nativeAwaitCompatibleWrap(onRejected, zone));\n };\n}\nvar UNHANDLEDREJECTION = \"unhandledrejection\";\nfunction globalError(err, promise) {\n var rv;\n try {\n rv = promise.onuncatched(err);\n }\n catch (e) { }\n if (rv !== false)\n try {\n var event, eventData = { promise: promise, reason: err };\n if (_global.document && document.createEvent) {\n event = document.createEvent('Event');\n event.initEvent(UNHANDLEDREJECTION, true, true);\n extend(event, eventData);\n }\n else if (_global.CustomEvent) {\n event = new CustomEvent(UNHANDLEDREJECTION, { detail: eventData });\n extend(event, eventData);\n }\n if (event && _global.dispatchEvent) {\n dispatchEvent(event);\n if (!_global.PromiseRejectionEvent && _global.onunhandledrejection)\n try {\n _global.onunhandledrejection(event);\n }\n catch (_) { }\n }\n if (debug && event && !event.defaultPrevented) {\n console.warn(\"Unhandled rejection: \" + (err.stack || err));\n }\n }\n catch (e) { }\n}\nvar rejection = DexiePromise.reject;\n\nfunction tempTransaction(db, mode, storeNames, fn) {\n if (!db._state.openComplete && (!PSD.letThrough)) {\n if (!db._state.isBeingOpened) {\n if (!db._options.autoOpen)\n return rejection(new exceptions.DatabaseClosed());\n db.open().catch(nop);\n }\n return db._state.dbReadyPromise.then(function () { return tempTransaction(db, mode, storeNames, fn); });\n }\n else {\n var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n try {\n trans.create();\n }\n catch (ex) {\n return rejection(ex);\n }\n return trans._promise(mode, function (resolve, reject) {\n return newScope(function () {\n PSD.trans = trans;\n return fn(resolve, reject, trans);\n });\n }).then(function (result) {\n return trans._completion.then(function () { return result; });\n });\n }\n}\n\nvar DEXIE_VERSION = '3.0.3';\nvar maxString = String.fromCharCode(65535);\nvar minKey = -Infinity;\nvar INVALID_KEY_ARGUMENT = \"Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.\";\nvar STRING_EXPECTED = \"String expected.\";\nvar connections = [];\nvar isIEOrEdge = typeof navigator !== 'undefined' && /(MSIE|Trident|Edge)/.test(navigator.userAgent);\nvar hasIEDeleteObjectStoreBug = isIEOrEdge;\nvar hangsOnDeleteLargeKeyRange = isIEOrEdge;\nvar dexieStackFrameFilter = function (frame) { return !/(dexie\\.js|dexie\\.min\\.js)/.test(frame); };\nvar DBNAMES_DB = '__dbnames';\nvar READONLY = 'readonly';\nvar READWRITE = 'readwrite';\n\nfunction combine(filter1, filter2) {\n return filter1 ?\n filter2 ?\n function () { return filter1.apply(this, arguments) && filter2.apply(this, arguments); } :\n filter1 :\n filter2;\n}\n\nvar AnyRange = {\n type: 3 ,\n lower: -Infinity,\n lowerOpen: false,\n upper: [[]],\n upperOpen: false\n};\n\nfunction workaroundForUndefinedPrimKey(keyPath) {\n return function (obj) {\n if (getByKeyPath(obj, keyPath) === undefined) {\n obj = deepClone(obj);\n delByKeyPath(obj, keyPath);\n }\n return obj;\n };\n}\n\nvar Table = (function () {\n function Table() {\n }\n Table.prototype._trans = function (mode, fn, writeLocked) {\n var trans = this._tx || PSD.trans;\n var tableName = this.name;\n function checkTableInTransaction(resolve, reject, trans) {\n if (!trans.schema[tableName])\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n return fn(trans.idbtrans, trans);\n }\n var wasRootExec = beginMicroTickScope();\n try {\n return trans && trans.db === this.db ?\n trans === PSD.trans ?\n trans._promise(mode, checkTableInTransaction, writeLocked) :\n newScope(function () { return trans._promise(mode, checkTableInTransaction, writeLocked); }, { trans: trans, transless: PSD.transless || PSD }) :\n tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n }\n finally {\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n Table.prototype.get = function (keyOrCrit, cb) {\n var _this = this;\n if (keyOrCrit && keyOrCrit.constructor === Object)\n return this.where(keyOrCrit).first(cb);\n return this._trans('readonly', function (trans) {\n return _this.core.get({ trans: trans, key: keyOrCrit })\n .then(function (res) { return _this.hook.reading.fire(res); });\n }).then(cb);\n };\n Table.prototype.where = function (indexOrCrit) {\n if (typeof indexOrCrit === 'string')\n return new this.db.WhereClause(this, indexOrCrit);\n if (isArray(indexOrCrit))\n return new this.db.WhereClause(this, \"[\" + indexOrCrit.join('+') + \"]\");\n var keyPaths = keys(indexOrCrit);\n if (keyPaths.length === 1)\n return this\n .where(keyPaths[0])\n .equals(indexOrCrit[keyPaths[0]]);\n var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function (ix) {\n return ix.compound &&\n keyPaths.every(function (keyPath) { return ix.keyPath.indexOf(keyPath) >= 0; }) &&\n ix.keyPath.every(function (keyPath) { return keyPaths.indexOf(keyPath) >= 0; });\n })[0];\n if (compoundIndex && this.db._maxKey !== maxString)\n return this\n .where(compoundIndex.name)\n .equals(compoundIndex.keyPath.map(function (kp) { return indexOrCrit[kp]; }));\n if (!compoundIndex && debug)\n console.warn(\"The query \" + JSON.stringify(indexOrCrit) + \" on \" + this.name + \" would benefit of a \" +\n (\"compound index [\" + keyPaths.join('+') + \"]\"));\n var idxByName = this.schema.idxByName;\n var idb = this.db._deps.indexedDB;\n function equals(a, b) {\n try {\n return idb.cmp(a, b) === 0;\n }\n catch (e) {\n return false;\n }\n }\n var _a = keyPaths.reduce(function (_a, keyPath) {\n var prevIndex = _a[0], prevFilterFn = _a[1];\n var index = idxByName[keyPath];\n var value = indexOrCrit[keyPath];\n return [\n prevIndex || index,\n prevIndex || !index ?\n combine(prevFilterFn, index && index.multi ?\n function (x) {\n var prop = getByKeyPath(x, keyPath);\n return isArray(prop) && prop.some(function (item) { return equals(value, item); });\n } : function (x) { return equals(value, getByKeyPath(x, keyPath)); })\n : prevFilterFn\n ];\n }, [null, null]), idx = _a[0], filterFunction = _a[1];\n return idx ?\n this.where(idx.name).equals(indexOrCrit[idx.keyPath])\n .filter(filterFunction) :\n compoundIndex ?\n this.filter(filterFunction) :\n this.where(keyPaths).equals('');\n };\n Table.prototype.filter = function (filterFunction) {\n return this.toCollection().and(filterFunction);\n };\n Table.prototype.count = function (thenShortcut) {\n return this.toCollection().count(thenShortcut);\n };\n Table.prototype.offset = function (offset) {\n return this.toCollection().offset(offset);\n };\n Table.prototype.limit = function (numRows) {\n return this.toCollection().limit(numRows);\n };\n Table.prototype.each = function (callback) {\n return this.toCollection().each(callback);\n };\n Table.prototype.toArray = function (thenShortcut) {\n return this.toCollection().toArray(thenShortcut);\n };\n Table.prototype.toCollection = function () {\n return new this.db.Collection(new this.db.WhereClause(this));\n };\n Table.prototype.orderBy = function (index) {\n return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ?\n \"[\" + index.join('+') + \"]\" :\n index));\n };\n Table.prototype.reverse = function () {\n return this.toCollection().reverse();\n };\n Table.prototype.mapToClass = function (constructor) {\n this.schema.mappedClass = constructor;\n var readHook = function (obj) {\n if (!obj)\n return obj;\n var res = Object.create(constructor.prototype);\n for (var m in obj)\n if (hasOwn(obj, m))\n try {\n res[m] = obj[m];\n }\n catch (_) { }\n return res;\n };\n if (this.schema.readHook) {\n this.hook.reading.unsubscribe(this.schema.readHook);\n }\n this.schema.readHook = readHook;\n this.hook(\"reading\", readHook);\n return constructor;\n };\n Table.prototype.defineClass = function () {\n function Class(content) {\n extend(this, content);\n }\n \n return this.mapToClass(Class);\n };\n Table.prototype.add = function (obj, key) {\n var _this = this;\n 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 }\n return lastResult;\n });\n };\n Table.prototype.update = function (keyOrObject, modifications) {\n if (typeof modifications !== 'object' || isArray(modifications))\n throw new exceptions.InvalidArgument(\"Modifications must be an object.\");\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n keys(modifications).forEach(function (keyPath) {\n setByKeyPath(keyOrObject, keyPath, modifications[keyPath]);\n });\n var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n if (key === undefined)\n return rejection(new exceptions.InvalidArgument(\"Given object does not contain its primary key\"));\n return this.where(\":id\").equals(key).modify(modifications);\n }\n else {\n return this.where(\":id\").equals(keyOrObject).modify(modifications);\n }\n };\n Table.prototype.put = function (obj, key) {\n var _this = this;\n 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 }\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$$1) {\n var _this = this;\n return this._trans('readonly', function (trans) {\n return _this.core.getMany({\n keys: keys$$1,\n trans: trans\n }).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$$1 = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys$$1 ? 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$$1)\n throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys$$1 && keys$$1.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n 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$$1, 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(_this.name + \".bulkAdd(): \" + numFailures + \" of \" + numObjects + \" operations failed\", Object.keys(failures).map(function (pos) { return failures[pos]; }));\n });\n });\n };\n Table.prototype.bulkPut = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys$$1 = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys$$1 ? 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$$1)\n throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys$$1 && keys$$1.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n 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$$1, 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(_this.name + \".bulkPut(): \" + numFailures + \" of \" + numObjects + \" operations failed\", Object.keys(failures).map(function (pos) { return failures[pos]; }));\n });\n });\n };\n Table.prototype.bulkDelete = function (keys$$1) {\n var _this = this;\n var numKeys = keys$$1.length;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'delete', keys: keys$$1 });\n }).then(function (_a) {\n var numFailures = _a.numFailures, lastResult = _a.lastResult, failures = _a.failures;\n if (numFailures === 0)\n return lastResult;\n throw new BulkError(_this.name + \".bulkDelete(): \" + numFailures + \" of \" + 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(function fireEvent() {\n fn.apply(null, args);\n });\n });\n });\n }\n else\n throw new exceptions.InvalidArgument(\"Invalid event config\");\n });\n }\n}\n\nfunction makeClassConstructor(prototype, constructor) {\n derive(constructor).from({ prototype: prototype });\n return constructor;\n}\n\nfunction createTableConstructor(db) {\n return makeClassConstructor(Table.prototype, function Table$$1(name, tableSchema, trans) {\n this.db = db;\n this._tx = trans;\n this.name = name;\n this.schema = tableSchema;\n this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n \"creating\": [hookCreatingChain, nop],\n \"reading\": [pureFunctionChain, mirror],\n \"updating\": [hookUpdatingChain, nop],\n \"deleting\": [hookDeletingChain, nop]\n });\n });\n}\n\nfunction isPlainKeyRange(ctx, ignoreLimitFilter) {\n return !(ctx.filter || ctx.algorithm || ctx.or) &&\n (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n}\nfunction addFilter(ctx, fn) {\n ctx.filter = combine(ctx.filter, fn);\n}\nfunction addReplayFilter(ctx, factory, isLimitFilter) {\n var curr = ctx.replayFilter;\n ctx.replayFilter = curr ? function () { return combine(curr(), factory()); } : factory;\n ctx.justLimit = isLimitFilter && !curr;\n}\nfunction addMatchFilter(ctx, fn) {\n ctx.isMatch = combine(ctx.isMatch, fn);\n}\nfunction getIndexOrStore(ctx, coreSchema) {\n if (ctx.isPrimKey)\n return coreSchema.primaryKey;\n var index = coreSchema.getIndexByKeyPath(ctx.index);\n if (!index)\n throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n return index;\n}\nfunction openCursor(ctx, coreTable, trans) {\n var index = getIndexOrStore(ctx, coreTable.schema);\n return coreTable.openCursor({\n trans: trans,\n values: !ctx.keysOnly,\n reverse: ctx.dir === 'prev',\n unique: !!ctx.unique,\n query: {\n index: index,\n range: ctx.range\n }\n });\n}\nfunction iter(ctx, fn, coreTrans, coreTable) {\n var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n if (!ctx.or) {\n return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n }\n else {\n var set_1 = {};\n var union = function (item, cursor, advance) {\n if (!filter || filter(cursor, advance, function (result) { return cursor.stop(result); }, function (err) { return cursor.fail(err); })) {\n var primaryKey = cursor.primaryKey;\n var key = '' + primaryKey;\n if (key === '[object ArrayBuffer]')\n key = '' + new Uint8Array(primaryKey);\n if (!hasOwn(set_1, key)) {\n set_1[key] = true;\n fn(item, cursor, advance);\n }\n }\n };\n return Promise.all([\n ctx.or._iterate(union, coreTrans),\n iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)\n ]);\n }\n}\nfunction iterate(cursorPromise, filter, fn, valueMapper) {\n var mappedFn = valueMapper ? function (x, c, a) { return fn(valueMapper(x), c, a); } : fn;\n var wrappedFn = wrap(mappedFn);\n return cursorPromise.then(function (cursor) {\n if (cursor) {\n return cursor.start(function () {\n var c = function () { return cursor.continue(); };\n if (!filter || filter(cursor, function (advancer) { return c = advancer; }, function (val) { cursor.stop(val); c = nop; }, function (e) { cursor.fail(e); c = nop; }))\n wrappedFn(cursor.value, cursor, function (advancer) { return c = advancer; });\n c();\n });\n }\n });\n}\n\nvar Collection = (function () {\n function Collection() {\n }\n Collection.prototype._read = function (fn, cb) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readonly', fn).then(cb);\n };\n Collection.prototype._write = function (fn) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readwrite', fn, \"locked\");\n };\n Collection.prototype._addAlgorithm = function (fn) {\n var ctx = this._ctx;\n ctx.algorithm = combine(ctx.algorithm, fn);\n };\n Collection.prototype._iterate = function (fn, coreTrans) {\n return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n };\n Collection.prototype.clone = function (props$$1) {\n var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx);\n if (props$$1)\n extend(ctx, props$$1);\n rv._ctx = ctx;\n return rv;\n };\n Collection.prototype.raw = function () {\n this._ctx.valueMapper = null;\n return this;\n };\n Collection.prototype.each = function (fn) {\n var ctx = this._ctx;\n return this._read(function (trans) { return iter(ctx, fn, trans, ctx.table.core); });\n };\n Collection.prototype.count = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n var coreTable = ctx.table.core;\n if (isPlainKeyRange(ctx, true)) {\n return coreTable.count({\n trans: trans,\n query: {\n index: getIndexOrStore(ctx, coreTable.schema),\n range: ctx.range\n }\n }).then(function (count) { return Math.min(count, ctx.limit); });\n }\n else {\n var count = 0;\n return iter(ctx, function () { ++count; return false; }, trans, coreTable)\n .then(function () { return count; });\n }\n }).then(cb);\n };\n Collection.prototype.sortBy = function (keyPath, cb) {\n var parts = keyPath.split('.').reverse(), lastPart = parts[0], lastIndex = parts.length - 1;\n function getval(obj, i) {\n if (i)\n return getval(obj[parts[i]], i - 1);\n return obj[lastPart];\n }\n var order = this._ctx.dir === \"next\" ? 1 : -1;\n function sorter(a, b) {\n var aVal = getval(a, lastIndex), bVal = getval(b, lastIndex);\n return aVal < bVal ? -order : aVal > bVal ? order : 0;\n }\n return this.toArray(function (a) {\n return a.sort(sorter);\n }).then(cb);\n };\n Collection.prototype.toArray = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n var valueMapper_1 = ctx.valueMapper;\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n limit: ctx.limit,\n values: true,\n query: {\n index: index,\n range: ctx.range\n }\n }).then(function (_a) {\n var result = _a.result;\n return valueMapper_1 ? result.map(valueMapper_1) : result;\n });\n }\n else {\n var a_1 = [];\n return iter(ctx, function (item) { return a_1.push(item); }, trans, ctx.table.core).then(function () { return a_1; });\n }\n }, cb);\n };\n Collection.prototype.offset = function (offset) {\n var ctx = this._ctx;\n if (offset <= 0)\n return this;\n ctx.offset += offset;\n if (isPlainKeyRange(ctx)) {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function (cursor, advance) {\n if (offsetLeft === 0)\n return true;\n if (offsetLeft === 1) {\n --offsetLeft;\n return false;\n }\n advance(function () {\n cursor.advance(offsetLeft);\n offsetLeft = 0;\n });\n return false;\n };\n });\n }\n else {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function () { return (--offsetLeft < 0); };\n });\n }\n return this;\n };\n Collection.prototype.limit = function (numRows) {\n this._ctx.limit = Math.min(this._ctx.limit, numRows);\n addReplayFilter(this._ctx, function () {\n var rowsLeft = numRows;\n return function (cursor, advance, resolve) {\n if (--rowsLeft <= 0)\n advance(resolve);\n return rowsLeft >= 0;\n };\n }, true);\n return this;\n };\n Collection.prototype.until = function (filterFunction, bIncludeStopEntry) {\n addFilter(this._ctx, function (cursor, advance, resolve) {\n if (filterFunction(cursor.value)) {\n advance(resolve);\n return bIncludeStopEntry;\n }\n else {\n return true;\n }\n });\n return this;\n };\n Collection.prototype.first = function (cb) {\n return this.limit(1).toArray(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.last = function (cb) {\n return this.reverse().first(cb);\n };\n Collection.prototype.filter = function (filterFunction) {\n addFilter(this._ctx, function (cursor) {\n return filterFunction(cursor.value);\n });\n addMatchFilter(this._ctx, filterFunction);\n return this;\n };\n Collection.prototype.and = function (filter) {\n return this.filter(filter);\n };\n Collection.prototype.or = function (indexName) {\n return new this.db.WhereClause(this._ctx.table, indexName, this);\n };\n Collection.prototype.reverse = function () {\n this._ctx.dir = (this._ctx.dir === \"prev\" ? \"next\" : \"prev\");\n if (this._ondirectionchange)\n this._ondirectionchange(this._ctx.dir);\n return this;\n };\n Collection.prototype.desc = function () {\n return this.reverse();\n };\n Collection.prototype.eachKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.key, cursor); });\n };\n Collection.prototype.eachUniqueKey = function (cb) {\n this._ctx.unique = \"unique\";\n return this.eachKey(cb);\n };\n Collection.prototype.eachPrimaryKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.primaryKey, cursor); });\n };\n Collection.prototype.keys = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.key);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.primaryKeys = function (cb) {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n return this._read(function (trans) {\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n values: false,\n limit: ctx.limit,\n query: {\n index: index,\n range: ctx.range\n }\n });\n }).then(function (_a) {\n var result = _a.result;\n return result;\n }).then(cb);\n }\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.primaryKey);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.uniqueKeys = function (cb) {\n this._ctx.unique = \"unique\";\n return this.keys(cb);\n };\n Collection.prototype.firstKey = function (cb) {\n return this.limit(1).keys(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.lastKey = function (cb) {\n return this.reverse().firstKey(cb);\n };\n Collection.prototype.distinct = function () {\n var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n if (!idx || !idx.multi)\n return this;\n var set = {};\n addFilter(this._ctx, function (cursor) {\n var strKey = cursor.primaryKey.toString();\n var found = hasOwn(set, strKey);\n set[strKey] = true;\n return !found;\n });\n return this;\n };\n Collection.prototype.modify = function (changes) {\n var _this = this;\n var ctx = this._ctx;\n return this._write(function (trans) {\n var modifyer;\n if (typeof changes === 'function') {\n modifyer = changes;\n }\n else {\n var keyPaths = keys(changes);\n var numKeys = keyPaths.length;\n modifyer = function (item) {\n var anythingModified = false;\n for (var i = 0; i < numKeys; ++i) {\n var keyPath = keyPaths[i], val = changes[keyPath];\n if (getByKeyPath(item, keyPath) !== val) {\n setByKeyPath(item, keyPath, val);\n anythingModified = true;\n }\n }\n return anythingModified;\n };\n }\n var coreTable = ctx.table.core;\n var _a = coreTable.schema.primaryKey, outbound = _a.outbound, extractKey = _a.extractKey;\n var limit = 'testmode' in Dexie ? 1 : 2000;\n var cmp = _this.db.core.cmp;\n var totalFailures = [];\n var successCount = 0;\n var failedKeys = [];\n var applyMutateResult = function (expectedCount, res) {\n var failures = res.failures, numFailures = res.numFailures;\n successCount += expectedCount - numFailures;\n for (var _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$$1) {\n var nextChunk = function (offset) {\n var count = Math.min(limit, keys$$1.length - offset);\n return coreTable.getMany({ trans: trans, keys: keys$$1.slice(offset, offset + count) }).then(function (values) {\n var addValues = [];\n var putValues = [];\n var putKeys = outbound ? [] : null;\n var deleteKeys = [];\n for (var i = 0; i < count; ++i) {\n var origValue = values[i];\n var ctx_1 = {\n value: deepClone(origValue),\n primKey: keys$$1[offset + i]\n };\n if (modifyer.call(ctx_1, ctx_1.value, ctx_1) !== false) {\n if (ctx_1.value == null) {\n deleteKeys.push(keys$$1[offset + i]);\n }\n else if (!outbound && cmp(extractKey(origValue), extractKey(ctx_1.value)) !== 0) {\n deleteKeys.push(keys$$1[offset + i]);\n addValues.push(ctx_1.value);\n }\n else {\n putValues.push(ctx_1.value);\n if (outbound)\n putKeys.push(keys$$1[offset + i]);\n }\n }\n }\n return Promise.resolve(addValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'add', values: addValues })\n .then(function (res) {\n for (var pos in res.failures) {\n deleteKeys.splice(parseInt(pos), 1);\n }\n applyMutateResult(addValues.length, res);\n })).then(function (res) { return putValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'put', keys: putKeys, values: putValues })\n .then(function (res) { return applyMutateResult(putValues.length, res); }); }).then(function () { return deleteKeys.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'delete', keys: deleteKeys })\n .then(function (res) { return applyMutateResult(deleteKeys.length, res); }); }).then(function () {\n return keys$$1.length > offset + count && nextChunk(offset + limit);\n });\n });\n };\n return nextChunk(0).then(function () {\n if (totalFailures.length > 0)\n throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys);\n return keys$$1.length;\n });\n });\n });\n };\n Collection.prototype.delete = function () {\n var ctx = this._ctx, range = ctx.range;\n if (isPlainKeyRange(ctx) &&\n ((ctx.isPrimKey && !hangsOnDeleteLargeKeyRange) || range.type === 3 ))\n {\n return this._write(function (trans) {\n var primaryKey = ctx.table.core.schema.primaryKey;\n var coreRange = range;\n return ctx.table.core.count({ trans: trans, query: { index: primaryKey, range: coreRange } }).then(function (count) {\n return ctx.table.core.mutate({ trans: trans, type: 'deleteRange', range: coreRange })\n .then(function (_a) {\n var failures = _a.failures, lastResult = _a.lastResult, results = _a.results, numFailures = _a.numFailures;\n if (numFailures)\n throw new ModifyError(\"Could not delete some values\", Object.keys(failures).map(function (pos) { return failures[pos]; }), count - numFailures);\n return count - numFailures;\n });\n });\n });\n }\n return this.modify(function (value, ctx) { return ctx.value = null; });\n };\n return Collection;\n}());\n\nfunction createCollectionConstructor(db) {\n return makeClassConstructor(Collection.prototype, function Collection$$1(whereClause, keyRangeGenerator) {\n this.db = db;\n var keyRange = AnyRange, error = null;\n if (keyRangeGenerator)\n try {\n keyRange = keyRangeGenerator();\n }\n catch (ex) {\n error = ex;\n }\n var whereCtx = whereClause._ctx;\n var table = whereCtx.table;\n var readingHook = table.hook.reading.fire;\n this._ctx = {\n table: table,\n index: whereCtx.index,\n isPrimKey: (!whereCtx.index || (table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name)),\n range: keyRange,\n keysOnly: false,\n dir: \"next\",\n unique: \"\",\n algorithm: null,\n filter: null,\n replayFilter: null,\n justLimit: true,\n isMatch: null,\n offset: 0,\n limit: Infinity,\n error: error,\n or: whereCtx.or,\n valueMapper: readingHook !== mirror ? readingHook : null\n };\n });\n}\n\nfunction simpleCompare(a, b) {\n return a < b ? -1 : a === b ? 0 : 1;\n}\nfunction simpleCompareReverse(a, b) {\n return a > b ? -1 : a === b ? 0 : 1;\n}\n\nfunction fail(collectionOrWhereClause, err, T) {\n var collection = collectionOrWhereClause instanceof WhereClause ?\n new collectionOrWhereClause.Collection(collectionOrWhereClause) :\n collectionOrWhereClause;\n collection._ctx.error = T ? new T(err) : new TypeError(err);\n return collection;\n}\nfunction emptyCollection(whereClause) {\n return new whereClause.Collection(whereClause, function () { return rangeEqual(\"\"); }).limit(0);\n}\nfunction upperFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toUpperCase(); } :\n function (s) { return s.toLowerCase(); };\n}\nfunction lowerFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toLowerCase(); } :\n function (s) { return s.toUpperCase(); };\n}\nfunction nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n var length = Math.min(key.length, lowerNeedle.length);\n var llp = -1;\n for (var i = 0; i < length; ++i) {\n var lwrKeyChar = lowerKey[i];\n if (lwrKeyChar !== lowerNeedle[i]) {\n if (cmp(key[i], upperNeedle[i]) < 0)\n return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n if (cmp(key[i], lowerNeedle[i]) < 0)\n return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n if (llp >= 0)\n return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n return null;\n }\n if (cmp(key[i], lwrKeyChar) < 0)\n llp = i;\n }\n if (length < lowerNeedle.length && dir === \"next\")\n return key + upperNeedle.substr(key.length);\n if (length < key.length && dir === \"prev\")\n return key.substr(0, upperNeedle.length);\n return (llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1));\n}\nfunction addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) {\n var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length;\n if (!needles.every(function (s) { return typeof s === 'string'; })) {\n return fail(whereClause, STRING_EXPECTED);\n }\n function initDirection(dir) {\n upper = upperFactory(dir);\n lower = lowerFactory(dir);\n compare = (dir === \"next\" ? simpleCompare : simpleCompareReverse);\n var needleBounds = needles.map(function (needle) {\n return { lower: lower(needle), upper: upper(needle) };\n }).sort(function (a, b) {\n return compare(a.lower, b.lower);\n });\n upperNeedles = needleBounds.map(function (nb) { return nb.upper; });\n lowerNeedles = needleBounds.map(function (nb) { return nb.lower; });\n direction = dir;\n nextKeySuffix = (dir === \"next\" ? \"\" : suffix);\n }\n initDirection(\"next\");\n var c = new whereClause.Collection(whereClause, function () { return createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix); });\n c._ondirectionchange = function (direction) {\n initDirection(direction);\n };\n var firstPossibleNeedle = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n if (typeof key !== 'string')\n return false;\n var lowerKey = lower(key);\n if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n return true;\n }\n else {\n var lowestPossibleCasing = null;\n for (var i = firstPossibleNeedle; i < needlesLen; ++i) {\n var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction);\n if (casing === null && lowestPossibleCasing === null)\n firstPossibleNeedle = i + 1;\n else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) {\n lowestPossibleCasing = casing;\n }\n }\n if (lowestPossibleCasing !== null) {\n advance(function () { cursor.continue(lowestPossibleCasing + nextKeySuffix); });\n }\n else {\n advance(resolve);\n }\n return false;\n }\n });\n return c;\n}\nfunction createRange(lower, upper, lowerOpen, upperOpen) {\n return {\n type: 2 ,\n lower: lower,\n upper: upper,\n lowerOpen: lowerOpen,\n upperOpen: upperOpen\n };\n}\nfunction rangeEqual(value) {\n return {\n type: 1 ,\n lower: value,\n upper: value\n };\n}\n\nvar WhereClause = (function () {\n function WhereClause() {\n }\n Object.defineProperty(WhereClause.prototype, \"Collection\", {\n get: function () {\n return this._ctx.table.db.Collection;\n },\n enumerable: true,\n configurable: true\n });\n WhereClause.prototype.between = function (lower, upper, includeLower, includeUpper) {\n includeLower = includeLower !== false;\n includeUpper = includeUpper === true;\n try {\n if ((this._cmp(lower, upper) > 0) ||\n (this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)))\n return emptyCollection(this);\n return new this.Collection(this, function () { return createRange(lower, upper, !includeLower, !includeUpper); });\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n };\n WhereClause.prototype.equals = function (value) {\n 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$$1(table, index, orCollection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n var indexedDB = db._deps.indexedDB;\n if (!indexedDB)\n throw new exceptions.MissingAPI(\"indexedDB API missing\");\n this._cmp = this._ascending = indexedDB.cmp.bind(indexedDB);\n this._descending = function (a, b) { return indexedDB.cmp(b, a); };\n this._max = function (a, b) { return indexedDB.cmp(a, b) > 0 ? a : b; };\n this._min = function (a, b) { return indexedDB.cmp(a, b) < 0 ? a : b; };\n this._IDBKeyRange = db._deps.IDBKeyRange;\n });\n}\n\nfunction safariMultiStoreFix(storeNames) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n}\n\nfunction getMaxKey(IdbKeyRange) {\n try {\n IdbKeyRange.only([[]]);\n return [[]];\n }\n catch (e) {\n return maxString;\n }\n}\n\nfunction eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject(event.target.error);\n return false;\n });\n}\n\n\n\nfunction preventDefault(event) {\n if (event.stopPropagation)\n event.stopPropagation();\n if (event.preventDefault)\n event.preventDefault();\n}\n\nvar Transaction = (function () {\n function Transaction() {\n }\n Transaction.prototype._lock = function () {\n assert(!PSD.global);\n ++this._reculock;\n if (this._reculock === 1 && !PSD.global)\n PSD.lockOwnerFor = this;\n return this;\n };\n Transaction.prototype._unlock = function () {\n assert(!PSD.global);\n if (--this._reculock === 0) {\n if (!PSD.global)\n PSD.lockOwnerFor = null;\n while (this._blockedFuncs.length > 0 && !this._locked()) {\n var fnAndPSD = this._blockedFuncs.shift();\n try {\n usePSD(fnAndPSD[1], fnAndPSD[0]);\n }\n catch (e) { }\n }\n }\n return this;\n };\n Transaction.prototype._locked = function () {\n return this._reculock && PSD.lockOwnerFor !== this;\n };\n Transaction.prototype.create = function (idbtrans) {\n var _this = this;\n if (!this.mode)\n return this;\n var idbdb = this.db.idbdb;\n var dbOpenError = this.db._state.dbOpenError;\n assert(!this.idbtrans);\n if (!idbtrans && !idbdb) {\n switch (dbOpenError && dbOpenError.name) {\n case \"DatabaseClosedError\":\n throw new exceptions.DatabaseClosed(dbOpenError);\n case \"MissingAPIError\":\n throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n default:\n throw new exceptions.OpenFailed(dbOpenError);\n }\n }\n if (!this.active)\n throw new exceptions.TransactionInactive();\n assert(this._completion._state === null);\n idbtrans = this.idbtrans = idbtrans || idbdb.transaction(safariMultiStoreFix(this.storeNames), this.mode);\n idbtrans.onerror = wrap(function (ev) {\n preventDefault(ev);\n _this._reject(idbtrans.error);\n });\n idbtrans.onabort = wrap(function (ev) {\n preventDefault(ev);\n _this.active && _this._reject(new exceptions.Abort(idbtrans.error));\n _this.active = false;\n _this.on(\"abort\").fire(ev);\n });\n idbtrans.oncomplete = wrap(function () {\n _this.active = false;\n _this._resolve();\n });\n return this;\n };\n Transaction.prototype._promise = function (mode, fn, bWriteLock) {\n var _this = this;\n if (mode === 'readwrite' && this.mode !== 'readwrite')\n return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n if (!this.active)\n return rejection(new exceptions.TransactionInactive());\n if (this._locked()) {\n return new 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 this.active && this._reject(new exceptions.Abort());\n this.active = false;\n };\n Transaction.prototype.table = function (tableName) {\n var memoizedTables = (this._memoizedTables || (this._memoizedTables = {}));\n if (hasOwn(memoizedTables, tableName))\n return memoizedTables[tableName];\n var tableSchema = this.schema[tableName];\n if (!tableSchema) {\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n }\n var transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n transactionBoundTable.core = this.db.core.table(tableName);\n memoizedTables[tableName] = transactionBoundTable;\n return transactionBoundTable;\n };\n return Transaction;\n}());\n\nfunction createTransactionConstructor(db) {\n return makeClassConstructor(Transaction.prototype, function Transaction$$1(mode, storeNames, dbschema, parent) {\n var _this = this;\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.idbtrans = null;\n this.on = Events(this, \"complete\", \"error\", \"abort\");\n this.parent = parent || null;\n this.active = true;\n this._reculock = 0;\n this._blockedFuncs = [];\n this._resolve = null;\n this._reject = null;\n this._waitingFor = null;\n this._waitingQueue = null;\n this._spinCount = 0;\n this._completion = new 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 getKeyExtractor(keyPath) {\n if (keyPath == null) {\n return function () { return undefined; };\n }\n else if (typeof keyPath === 'string') {\n return getSinglePathKeyExtractor(keyPath);\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\nfunction getSinglePathKeyExtractor(keyPath) {\n var split = keyPath.split('.');\n if (split.length === 1) {\n return function (obj) { return obj[keyPath]; };\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\n\nfunction getEffectiveKeys(primaryKey, req) {\n if (req.type === 'delete')\n return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey);\n}\nfunction getExistingValues(table, req, effectiveKeys) {\n return req.type === 'add' ? Promise.resolve(new Array(req.values.length)) :\n table.getMany({ trans: req.trans, keys: effectiveKeys });\n}\n\nfunction arrayify(arrayLike) {\n return [].slice.call(arrayLike);\n}\n\nvar _id_counter = 0;\nfunction getKeyPathAlias(keyPath) {\n return keyPath == null ?\n \":id\" :\n typeof keyPath === 'string' ?\n keyPath :\n \"[\" + keyPath.join('+') + \"]\";\n}\nfunction createDBCore(db, indexedDB, IdbKeyRange, tmpTrans) {\n var cmp = indexedDB.cmp.bind(indexedDB);\n function extractSchema(db, trans) {\n var tables = arrayify(db.objectStoreNames);\n return {\n schema: {\n name: db.name,\n tables: tables.map(function (table) { return trans.objectStore(table); }).map(function (store) {\n var keyPath = store.keyPath, autoIncrement = store.autoIncrement;\n var compound = isArray(keyPath);\n var outbound = keyPath == null;\n var indexByKeyPath = {};\n var result = {\n name: store.name,\n primaryKey: {\n name: null,\n isPrimaryKey: true,\n outbound: outbound,\n compound: compound,\n keyPath: keyPath,\n autoIncrement: autoIncrement,\n unique: true,\n extractKey: getKeyExtractor(keyPath)\n },\n indexes: arrayify(store.indexNames).map(function (indexName) { return store.index(indexName); })\n .map(function (index) {\n var name = index.name, unique = index.unique, multiEntry = index.multiEntry, keyPath = index.keyPath;\n var compound = isArray(keyPath);\n var result = {\n name: name,\n compound: compound,\n keyPath: keyPath,\n unique: unique,\n multiEntry: multiEntry,\n extractKey: getKeyExtractor(keyPath)\n };\n indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n return result;\n }),\n getIndexByKeyPath: function (keyPath) { return indexByKeyPath[getKeyPathAlias(keyPath)]; }\n };\n indexByKeyPath[\":id\"] = result.primaryKey;\n if (keyPath != null) {\n indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n }\n return result;\n })\n },\n hasGetAll: tables.length > 0 && ('getAll' in trans.objectStore(tables[0])) &&\n !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n };\n }\n function makeIDBKeyRange(range) {\n if (range.type === 3 )\n return null;\n if (range.type === 4 )\n throw new Error(\"Cannot convert never type to IDBKeyRange\");\n var lower = range.lower, upper = range.upper, lowerOpen = range.lowerOpen, upperOpen = range.upperOpen;\n var idbRange = lower === undefined ?\n upper === undefined ?\n null :\n IdbKeyRange.upperBound(upper, !!upperOpen) :\n upper === undefined ?\n IdbKeyRange.lowerBound(lower, !!lowerOpen) :\n IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n return idbRange;\n }\n function createDbCoreTable(tableSchema) {\n var tableName = tableSchema.name;\n function mutate(_a) {\n var trans = _a.trans, type = _a.type, keys$$1 = _a.keys, values = _a.values, range = _a.range, wantResults = _a.wantResults;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var outbound = store.keyPath == null;\n var isAddOrPut = type === \"put\" || type === \"add\";\n if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange')\n throw new Error(\"Invalid operation type: \" + type);\n var length = (keys$$1 || values || { length: 1 }).length;\n if (keys$$1 && values && keys$$1.length !== values.length) {\n throw new Error(\"Given keys array must have same length as given values array.\");\n }\n if (length === 0)\n return resolve({ numFailures: 0, failures: {}, results: [], lastResult: undefined });\n var results = wantResults && __spreadArrays((keys$$1 ?\n keys$$1 :\n getEffectiveKeys(tableSchema.primaryKey, { type: type, keys: keys$$1, values: values })));\n var req;\n var failures = [];\n var numFailures = 0;\n var errorHandler = function (event) {\n ++numFailures;\n preventDefault(event);\n if (results)\n results[event.target._reqno] = undefined;\n failures[event.target._reqno] = event.target.error;\n };\n var setResult = function (_a) {\n var target = _a.target;\n results[target._reqno] = target.result;\n };\n if (type === 'deleteRange') {\n if (range.type === 4 )\n return resolve({ numFailures: numFailures, failures: failures, results: results, lastResult: undefined });\n if (range.type === 3 )\n req = store.clear();\n else\n req = store.delete(makeIDBKeyRange(range));\n }\n else {\n var _a = isAddOrPut ?\n outbound ?\n [values, keys$$1] :\n [values, null] :\n [keys$$1, null], args1 = _a[0], args2 = _a[1];\n if (isAddOrPut) {\n for (var i = 0; i < length; ++i) {\n req = (args2 && args2[i] !== undefined ?\n store[type](args1[i], args2[i]) :\n store[type](args1[i]));\n req._reqno = i;\n if (results && results[i] === undefined) {\n req.onsuccess = setResult;\n }\n req.onerror = errorHandler;\n }\n }\n else {\n for (var i = 0; i < length; ++i) {\n req = store[type](args1[i]);\n req._reqno = i;\n req.onerror = errorHandler;\n }\n }\n }\n var done = function (event) {\n var lastResult = event.target.result;\n if (results)\n results[length - 1] = lastResult;\n resolve({\n numFailures: numFailures,\n failures: failures,\n results: results,\n lastResult: lastResult\n });\n };\n req.onerror = function (event) {\n errorHandler(event);\n done(event);\n };\n req.onsuccess = done;\n });\n }\n function openCursor(_a) {\n var trans = _a.trans, values = _a.values, query = _a.query, reverse = _a.reverse, unique = _a.unique;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ?\n store :\n store.index(index.name);\n var direction = reverse ?\n unique ?\n \"prevunique\" :\n \"prev\" :\n unique ?\n \"nextunique\" :\n \"next\";\n var req = values || !('openKeyCursor' in source) ?\n source.openCursor(makeIDBKeyRange(range), direction) :\n source.openKeyCursor(makeIDBKeyRange(range), direction);\n req.onerror = eventRejectHandler(reject);\n req.onsuccess = wrap(function (ev) {\n var cursor = req.result;\n if (!cursor) {\n resolve(null);\n return;\n }\n cursor.___id = ++_id_counter;\n cursor.done = false;\n var _cursorContinue = cursor.continue.bind(cursor);\n var _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n if (_cursorContinuePrimaryKey)\n _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n var _cursorAdvance = cursor.advance.bind(cursor);\n var doThrowCursorIsNotStarted = function () { throw new Error(\"Cursor not started\"); };\n var doThrowCursorIsStopped = function () { throw new Error(\"Cursor not stopped\"); };\n cursor.trans = trans;\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n cursor.fail = wrap(reject);\n cursor.next = function () {\n var _this = this;\n var gotOne = 1;\n return this.start(function () { return gotOne-- ? _this.continue() : _this.stop(); }).then(function () { return _this; });\n };\n cursor.start = function (callback) {\n var iterationPromise = new Promise(function (resolveIteration, rejectIteration) {\n resolveIteration = wrap(resolveIteration);\n req.onerror = eventRejectHandler(rejectIteration);\n cursor.fail = rejectIteration;\n cursor.stop = function (value) {\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n resolveIteration(value);\n };\n });\n var guardedCallback = function () {\n if (req.result) {\n try {\n callback();\n }\n catch (err) {\n cursor.fail(err);\n }\n }\n else {\n cursor.done = true;\n cursor.start = function () { throw new Error(\"Cursor behind last entry\"); };\n cursor.stop();\n }\n };\n req.onsuccess = wrap(function (ev) {\n req.onsuccess = guardedCallback;\n guardedCallback();\n });\n cursor.continue = _cursorContinue;\n cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n cursor.advance = _cursorAdvance;\n guardedCallback();\n return iterationPromise;\n };\n resolve(cursor);\n }, reject);\n });\n }\n function query(hasGetAll) {\n return function (request) {\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var trans = request.trans, values = request.values, limit = request.limit, query = request.query;\n var nonInfinitLimit = limit === Infinity ? undefined : limit;\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n if (limit === 0)\n return resolve({ result: [] });\n if (hasGetAll) {\n var req = values ?\n source.getAll(idbKeyRange, nonInfinitLimit) :\n source.getAllKeys(idbKeyRange, nonInfinitLimit);\n req.onsuccess = function (event) { return resolve({ result: event.target.result }); };\n req.onerror = eventRejectHandler(reject);\n }\n else {\n var count_1 = 0;\n var req_1 = values || !('openKeyCursor' in source) ?\n source.openCursor(idbKeyRange) :\n source.openKeyCursor(idbKeyRange);\n var result_1 = [];\n req_1.onsuccess = function (event) {\n var cursor = req_1.result;\n if (!cursor)\n return resolve({ result: result_1 });\n result_1.push(values ? cursor.value : cursor.primaryKey);\n if (++count_1 === limit)\n return resolve({ result: result_1 });\n cursor.continue();\n };\n req_1.onerror = eventRejectHandler(reject);\n }\n });\n };\n }\n return {\n name: tableName,\n schema: tableSchema,\n mutate: mutate,\n getMany: function (_a) {\n var trans = _a.trans, keys$$1 = _a.keys;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var length = keys$$1.length;\n var result = new Array(length);\n var keyCount = 0;\n var callbackCount = 0;\n var valueCount = 0;\n var req;\n var successHandler = function (event) {\n var req = event.target;\n if ((result[req._pos] = req.result) != null)\n ++valueCount;\n if (++callbackCount === keyCount)\n resolve(result);\n };\n var errorHandler = eventRejectHandler(reject);\n for (var i = 0; i < length; ++i) {\n var key = keys$$1[i];\n if (key != null) {\n req = store.get(keys$$1[i]);\n req._pos = i;\n req.onsuccess = successHandler;\n req.onerror = errorHandler;\n ++keyCount;\n }\n }\n if (keyCount === 0)\n resolve(result);\n });\n },\n get: function (_a) {\n var trans = _a.trans, key = _a.key;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var req = store.get(key);\n req.onsuccess = function (event) { return resolve(event.target.result); };\n req.onerror = eventRejectHandler(reject);\n });\n },\n query: query(hasGetAll),\n openCursor: openCursor,\n count: function (_a) {\n var query = _a.query, trans = _a.trans;\n var index = query.index, range = query.range;\n return new Promise(function (resolve, reject) {\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n var req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n req.onsuccess = wrap(function (ev) { return resolve(ev.target.result); });\n req.onerror = eventRejectHandler(reject);\n });\n }\n };\n }\n var _a = extractSchema(db, tmpTrans), schema = _a.schema, hasGetAll = _a.hasGetAll;\n var tables = schema.tables.map(function (tableSchema) { return createDbCoreTable(tableSchema); });\n var tableMap = {};\n tables.forEach(function (table) { return tableMap[table.name] = table; });\n return {\n stack: \"dbcore\",\n transaction: db.transaction.bind(db),\n table: function (name) {\n var result = tableMap[name];\n if (!result)\n throw new Error(\"Table '\" + name + \"' not found\");\n return tableMap[name];\n },\n cmp: cmp,\n MIN_KEY: -Infinity,\n MAX_KEY: getMaxKey(IdbKeyRange),\n schema: schema\n };\n}\n\nfunction createMiddlewareStack(stackImpl, middlewares) {\n return middlewares.reduce(function (down, _a) {\n var create = _a.create;\n return (__assign(__assign({}, down), create(down)));\n }, stackImpl);\n}\nfunction createMiddlewareStacks(middlewares, idbdb, _a, tmpTrans) {\n var IDBKeyRange = _a.IDBKeyRange, indexedDB = _a.indexedDB;\n var dbcore = createMiddlewareStack(createDBCore(idbdb, indexedDB, IDBKeyRange, tmpTrans), middlewares.dbcore);\n return {\n dbcore: dbcore\n };\n}\nfunction generateMiddlewareStacks(db, tmpTrans) {\n var idbdb = tmpTrans.db;\n var stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n db.core = stacks.dbcore;\n db.tables.forEach(function (table) {\n var tableName = table.name;\n if (db.core.schema.tables.some(function (tbl) { return tbl.name === tableName; })) {\n table.core = db.core.table(tableName);\n if (db[tableName] instanceof db.Table) {\n db[tableName].core = table.core;\n }\n }\n });\n}\n\nfunction setApiOnPlace(db, objs, tableNames, dbschema) {\n tableNames.forEach(function (tableName) {\n var schema = dbschema[tableName];\n objs.forEach(function (obj) {\n 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 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 updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans).catch(rejectTransaction);\n });\n}\nfunction updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans) {\n var queue = [];\n var versions = db._versions;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n var anyContentUpgraderHasRun = false;\n var versToRun = versions.filter(function (v) { return v._cfg.version >= oldVersion; });\n versToRun.forEach(function (version) {\n queue.push(function () {\n var oldSchema = globalSchema;\n var newSchema = version._cfg.dbschema;\n adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n globalSchema = db._dbSchema = newSchema;\n var diff = getSchemaDiff(oldSchema, newSchema);\n diff.add.forEach(function (tuple) {\n createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n });\n diff.change.forEach(function (change) {\n if (change.recreate) {\n throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n }\n else {\n var store_1 = idbUpgradeTrans.objectStore(change.name);\n change.add.forEach(function (idx) { return addIndex(store_1, idx); });\n change.change.forEach(function (idx) {\n store_1.deleteIndex(idx.name);\n addIndex(store_1, idx);\n });\n change.del.forEach(function (idxName) { return store_1.deleteIndex(idxName); });\n }\n });\n var contentUpgrade = version._cfg.contentUpgrade;\n if (contentUpgrade && version._cfg.version > oldVersion) {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n trans._memoizedTables = {};\n anyContentUpgraderHasRun = true;\n var upgradeSchema_1 = shallowClone(newSchema);\n diff.del.forEach(function (table) {\n upgradeSchema_1[table] = oldSchema[table];\n });\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema_1), upgradeSchema_1);\n trans.schema = upgradeSchema_1;\n 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 if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) {\n var newSchema = version._cfg.dbschema;\n deleteRemovedTables(newSchema, idbtrans);\n }\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n });\n function runQueue() {\n return queue.length ? 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 && !isIEOrEdge))\n {\n change.recreate = true;\n diff.change.push(change);\n }\n else {\n var oldIndexes = oldDef.idxByName;\n var newIndexes = newDef.idxByName;\n var idxName = void 0;\n for (idxName in oldIndexes) {\n if (!newIndexes[idxName])\n change.del.push(idxName);\n }\n for (idxName in newIndexes) {\n var oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName];\n if (!oldIdx)\n change.add.push(newIdx);\n else if (oldIdx.src !== newIdx.src)\n change.change.push(newIdx);\n }\n if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n diff.change.push(change);\n }\n }\n }\n }\n return diff;\n}\nfunction createTable(idbtrans, tableName, primKey, indexes) {\n var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ?\n { keyPath: primKey.keyPath, autoIncrement: primKey.auto } :\n { autoIncrement: primKey.auto });\n indexes.forEach(function (idx) { return addIndex(store, idx); });\n return store;\n}\nfunction createMissingTables(newSchema, idbtrans) {\n keys(newSchema).forEach(function (tableName) {\n if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n}\nfunction deleteRemovedTables(newSchema, idbtrans) {\n for (var i = 0; i < idbtrans.db.objectStoreNames.length; ++i) {\n var storeName = idbtrans.db.objectStoreNames[i];\n if (newSchema[storeName] == null) {\n idbtrans.db.deleteObjectStore(storeName);\n }\n }\n}\nfunction addIndex(store, idx) {\n store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n}\nfunction 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 || \"\", false, 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 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 = upgradeFunction;\n return this;\n };\n return Version;\n}());\n\nfunction createVersionConstructor(db) {\n return makeClassConstructor(Version.prototype, function Version$$1(versionNumber) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n });\n}\n\nvar databaseEnumerator;\nfunction DatabaseEnumerator(indexedDB) {\n var hasDatabasesNative = indexedDB && typeof indexedDB.databases === 'function';\n var dbNamesTable;\n if (!hasDatabasesNative) {\n var db = new Dexie(DBNAMES_DB, { addons: [] });\n db.version(1).stores({ dbnames: 'name' });\n dbNamesTable = db.table('dbnames');\n }\n return {\n getDatabaseNames: function () {\n return hasDatabasesNative\n ?\n DexiePromise.resolve(indexedDB.databases()).then(function (infos) { return infos\n .map(function (info) { return info.name; })\n .filter(function (name) { return name !== DBNAMES_DB; }); })\n :\n dbNamesTable.toCollection().primaryKeys();\n },\n add: function (name) {\n return !hasDatabasesNative && name !== DBNAMES_DB && dbNamesTable.put({ name: name }).catch(nop);\n },\n remove: function (name) {\n return !hasDatabasesNative && name !== DBNAMES_DB && dbNamesTable.delete(name).catch(nop);\n }\n };\n}\nfunction initDatabaseEnumerator(indexedDB) {\n try {\n databaseEnumerator = DatabaseEnumerator(indexedDB);\n }\n catch (e) { }\n}\n\nfunction vip(fn) {\n return newScope(function () {\n PSD.letThrough = true;\n return fn();\n });\n}\n\nfunction dexieOpen(db) {\n var state = db._state;\n var indexedDB = db._deps.indexedDB;\n if (state.isBeingOpened || db.idbdb)\n return state.dbReadyPromise.then(function () { return state.dbOpenError ?\n rejection(state.dbOpenError) :\n db; });\n debug && (state.openCanceller._stackHolder = getErrorWithStack());\n state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n var resolveDbReady = state.dbReadyResolve,\n upgradeTransaction = null;\n return DexiePromise.race([state.openCanceller, new DexiePromise(function (resolve, reject) {\n if (!indexedDB)\n throw new exceptions.MissingAPI(\"indexedDB API not found. If using IE10+, make sure to run your code on a server URL \" +\n \"(not locally). If using old Safari versions, make sure to include indexedDB polyfill.\");\n var dbName = db.name;\n var req = state.autoSchema ?\n indexedDB.open(dbName) :\n indexedDB.open(dbName, Math.round(db.verno * 10));\n if (!req)\n throw new exceptions.MissingAPI(\"IndexedDB API not available\");\n req.onerror = eventRejectHandler(reject);\n req.onblocked = wrap(db._fireOnBlocked);\n req.onupgradeneeded = wrap(function (e) {\n upgradeTransaction = req.transaction;\n if (state.autoSchema && !db._options.allowEmptyDB) {\n req.onerror = preventDefault;\n upgradeTransaction.abort();\n req.result.close();\n var delreq = indexedDB.deleteDatabase(dbName);\n delreq.onsuccess = delreq.onerror = wrap(function () {\n reject(new exceptions.NoSuchDatabase(\"Database \" + dbName + \" doesnt exist\"));\n });\n }\n else {\n upgradeTransaction.onerror = eventRejectHandler(reject);\n var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion;\n db.idbdb = req.result;\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)) {\n console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Some queries may fail.\");\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 databaseEnumerator.add(dbName);\n resolve();\n }, reject);\n })]).then(function () {\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(db.on.ready.fire)).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n var remainders = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(remainders)).then(fireRemainders);\n }\n });\n }).finally(function () {\n state.onReadyBeingFired = null;\n }).then(function () {\n state.isBeingOpened = false;\n return db;\n }).catch(function (err) {\n try {\n upgradeTransaction && upgradeTransaction.abort();\n }\n catch (e) { }\n state.isBeingOpened = false;\n db.close();\n state.dbOpenError = err;\n return rejection(state.dbOpenError);\n }).finally(function () {\n state.openComplete = true;\n resolveDbReady();\n });\n}\n\nfunction awaitIterator(iterator) {\n var callNext = function (result) { return iterator.next(result); }, doThrow = function (error) { return iterator.throw(error); }, onSuccess = step(callNext), onError = step(doThrow);\n function step(getNext) {\n return function (val) {\n var next = getNext(val), value = next.value;\n return next.done ? value :\n (!value || typeof value.then !== 'function' ?\n isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) :\n value.then(onSuccess, onError));\n };\n }\n return step(callNext)();\n}\n\nfunction extractTransactionArgs(mode, _tableArgs_, scopeFunc) {\n var i = arguments.length;\n if (i < 2)\n throw new exceptions.InvalidArgument(\"Too few arguments\");\n var args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n scopeFunc = args.pop();\n var tables = flatten(args);\n return [mode, tables, scopeFunc];\n}\nfunction enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) {\n return DexiePromise.resolve().then(function () {\n var transless = PSD.transless || PSD;\n var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n var zoneProps = {\n trans: trans,\n transless: transless\n };\n if (parentTransaction) {\n trans.idbtrans = parentTransaction.idbtrans;\n }\n else {\n trans.create();\n }\n 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), { isVirtual: isVirtual, isPrimaryKey: !isVirtual && lowLevelIndex.isPrimaryKey, keyTail: keyTail,\n keyLength: keyLength, extractKey: getKeyExtractor(keyPath), unique: !isVirtual && lowLevelIndex.unique });\n indexList.push(virtualIndex);\n if (!virtualIndex.isPrimaryKey) {\n allVirtualIndexes.push(virtualIndex);\n }\n if (keyLength > 1) {\n var virtualKeyPath = keyLength === 2 ?\n keyPath[0] :\n keyPath.slice(0, keyLength - 1);\n addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n }\n indexList.sort(function (a, b) { return a.keyTail - b.keyTail; });\n return virtualIndex;\n }\n var primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n indexLookup[\":id\"] = [primaryKey];\n for (var _i = 0, _a = schema.indexes; _i < _a.length; _i++) {\n var index = _a[_i];\n addVirtualIndexes(index.keyPath, 0, index);\n }\n function findBestIndex(keyPath) {\n var result = indexLookup[getKeyPathAlias(keyPath)];\n return result && result[0];\n }\n function translateRange(range, keyTail) {\n return {\n type: range.type === 1 ?\n 2 :\n range.type,\n lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n lowerOpen: true,\n upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n upperOpen: true\n };\n }\n function translateRequest(req) {\n var index = req.query.index;\n return index.isVirtual ? __assign(__assign({}, req), { query: {\n index: index,\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 },\n query: function (req) {\n return table.query(translateRequest(req));\n },\n openCursor: function (req) {\n var _a = req.query.index, keyTail = _a.keyTail, isVirtual = _a.isVirtual, keyLength = _a.keyLength;\n if (!isVirtual)\n return table.openCursor(req);\n function createVirtualCursor(cursor) {\n function _continue(key) {\n key != null ?\n cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) :\n req.unique ?\n cursor.continue(pad(cursor.key, req.reverse ? down.MIN_KEY : down.MAX_KEY, keyTail)) :\n cursor.continue();\n }\n 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 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\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$$1 = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys$$1)\n throw new Error(\"Keys missing\");\n req = req.type === 'add' || req.type === 'put' ? __assign(__assign({}, req), { keys: keys$$1, wantResults: true }) :\n __assign({}, req);\n if (req.type !== 'delete')\n req.values = __spreadArrays(req.values);\n if (req.keys)\n req.keys = __spreadArrays(req.keys);\n return getExistingValues(downTable, req, keys$$1).then(function (existingValues) {\n var contexts = keys$$1.map(function (key, i) {\n var existingValue = existingValues[i];\n var ctx = { onerror: null, onsuccess: null };\n if (req.type === 'delete') {\n deleting.fire.call(ctx, key, existingValue, dxTrans);\n }\n else if (req.type === 'add' || existingValue === undefined) {\n var generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n if (key == null && generatedPrimaryKey != null) {\n key = generatedPrimaryKey;\n req.keys[i] = key;\n if (!primaryKey.outbound) {\n setByKeyPath(req.values[i], primaryKey.keyPath, key);\n }\n }\n }\n else {\n var objectDiff = getObjectDiff(existingValue, req.values[i]);\n var additionalChanges_1 = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n if (additionalChanges_1) {\n var requestedValue_1 = req.values[i];\n Object.keys(additionalChanges_1).forEach(function (keyPath) {\n 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$$1.length; ++i) {\n var primKey = results ? results[i] : keys$$1[i];\n var ctx = contexts[i];\n if (primKey == null) {\n ctx.onerror && ctx.onerror(failures[i]);\n }\n else {\n ctx.onsuccess && ctx.onsuccess(req.type === 'put' && existingValues[i] ?\n req.values[i] :\n primKey\n );\n }\n }\n return { failures: failures, results: results, numFailures: numFailures, lastResult: lastResult };\n }).catch(function (error) {\n contexts.forEach(function (ctx) { return ctx.onerror && ctx.onerror(error); });\n return Promise.reject(error);\n });\n });\n }\n function deleteRange(req) {\n return deleteNextChunk(req.trans, req.range, 10000);\n }\n function deleteNextChunk(trans, range, limit) {\n return downTable.query({ trans: trans, values: false, query: { index: primaryKey, range: range }, limit: limit })\n .then(function (_a) {\n var result = _a.result;\n return addPutOrDelete({ type: 'delete', keys: result, trans: trans }).then(function (res) {\n if (res.numFailures > 0)\n return Promise.reject(res.failures[0]);\n if (result.length < limit) {\n return { failures: [], numFailures: 0, lastResult: undefined };\n }\n else {\n return deleteNextChunk(trans, __assign(__assign({}, range), { lower: result[result.length - 1], lowerOpen: true }), limit);\n }\n });\n });\n }\n } });\n return tableMiddleware;\n } })); }\n};\n\nvar Dexie = (function () {\n function Dexie(name, options) {\n var _this = this;\n this._middlewares = {};\n this.verno = 0;\n var deps = Dexie.dependencies;\n this._options = options = __assign({\n addons: Dexie.addons, autoOpen: true,\n indexedDB: deps.indexedDB, IDBKeyRange: deps.IDBKeyRange }, options);\n this._deps = {\n indexedDB: options.indexedDB,\n IDBKeyRange: options.IDBKeyRange\n };\n var addons = options.addons;\n this._dbSchema = {};\n this._versions = [];\n this._storeNames = [];\n this._allTables = {};\n this.idbdb = null;\n var state = {\n dbOpenError: null,\n isBeingOpened: false,\n onReadyBeingFired: null,\n openComplete: false,\n dbReadyResolve: nop,\n dbReadyPromise: null,\n cancelOpen: nop,\n openCanceller: null,\n autoSchema: true\n };\n state.dbReadyPromise = new 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\", { 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 '\" + _this.name + \"'. Closing db now to resume the upgrade.\");\n else\n console.warn(\"Another connection wants to delete database '\" + _this.name + \"'. Closing db now to resume the delete request.\");\n _this.close();\n });\n this.on(\"blocked\", function (ev) {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n console.warn(\"Dexie.delete('\" + _this.name + \"') was blocked\");\n else\n console.warn(\"Upgrade '\" + _this.name + \"' blocked by other connection holding version \" + ev.oldVersion / 10);\n });\n this._maxKey = getMaxKey(options.IDBKeyRange);\n this._createTransaction = function (mode, storeNames, dbschema, parentTransaction) { return new _this.Transaction(mode, storeNames, dbschema, parentTransaction); };\n this._fireOnBlocked = function (ev) {\n _this.on(\"blocked\").fire(ev);\n connections\n .filter(function (c) { return c.name === _this.name && c !== _this && !c._state.vcFired; })\n .map(function (c) { return c.on(\"versionchange\").fire(ev); });\n };\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n addons.forEach(function (addon) { return addon(_this); });\n }\n Dexie.prototype.version = function (versionNumber) {\n 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._state.openComplete || PSD.letThrough ? fn() : new DexiePromise(function (resolve, reject) {\n if (!_this._state.isBeingOpened) {\n if (!_this._options.autoOpen) {\n reject(new exceptions.DatabaseClosed());\n return;\n }\n _this.open().catch(nop);\n }\n _this._state.dbReadyPromise.then(resolve, reject);\n }).then(fn);\n };\n Dexie.prototype.use = function (_a) {\n var stack = _a.stack, create = _a.create, level = _a.level, name = _a.name;\n if (name)\n this.unuse({ stack: stack, name: name });\n var middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n middlewares.push({ stack: stack, create: create, level: level == null ? 10 : level, name: name });\n middlewares.sort(function (a, b) { return a.level - b.level; });\n return this;\n };\n Dexie.prototype.unuse = function (_a) {\n var stack = _a.stack, name = _a.name, create = _a.create;\n if (stack && this._middlewares[stack]) {\n this._middlewares[stack] = this._middlewares[stack].filter(function (mw) {\n return create ? mw.create !== create :\n name ? mw.name !== name :\n false;\n });\n }\n return this;\n };\n Dexie.prototype.open = function () {\n return dexieOpen(this);\n };\n Dexie.prototype.close = function () {\n var idx = connections.indexOf(this), state = this._state;\n if (idx >= 0)\n connections.splice(idx, 1);\n if (this.idbdb) {\n try {\n this.idbdb.close();\n }\n catch (e) { }\n this.idbdb = null;\n }\n this._options.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n if (state.isBeingOpened)\n state.cancelOpen(state.dbOpenError);\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n };\n Dexie.prototype.delete = function () {\n var _this = this;\n var hasArguments = arguments.length > 0;\n var state = this._state;\n return new DexiePromise(function (resolve, reject) {\n var doDelete = function () {\n _this.close();\n var req = _this._deps.indexedDB.deleteDatabase(_this.name);\n req.onsuccess = wrap(function () {\n databaseEnumerator.remove(_this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = _this._fireOnBlocked;\n };\n if (hasArguments)\n throw new exceptions.InvalidArgument(\"Arguments not allowed in db.delete()\");\n if (state.isBeingOpened) {\n state.dbReadyPromise.then(doDelete);\n }\n else {\n doDelete();\n }\n });\n };\n Dexie.prototype.backendDB = function () {\n return this.idbdb;\n };\n Dexie.prototype.isOpen = function () {\n return this.idbdb !== null;\n };\n Dexie.prototype.hasBeenClosed = function () {\n var dbOpenError = this._state.dbOpenError;\n return dbOpenError && (dbOpenError.name === 'DatabaseClosed');\n };\n Dexie.prototype.hasFailed = function () {\n return this._state.dbOpenError !== null;\n };\n Dexie.prototype.dynamicallyOpened = function () {\n return this._state.autoSchema;\n };\n Object.defineProperty(Dexie.prototype, \"tables\", {\n get: function () {\n var _this = this;\n return keys(this._allTables).map(function (name) { return _this._allTables[name]; });\n },\n enumerable: true,\n configurable: true\n });\n Dexie.prototype.transaction = function () {\n var args = extractTransactionArgs.apply(this, arguments);\n return this._transaction.apply(this, args);\n };\n Dexie.prototype._transaction = function (mode, tables, scopeFunc) {\n var _this = this;\n var parentTransaction = PSD.trans;\n if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1)\n parentTransaction = null;\n var onlyIfCompatible = mode.indexOf('?') !== -1;\n mode = mode.replace('!', '').replace('?', '');\n var idbMode, storeNames;\n try {\n storeNames = tables.map(function (table) {\n var storeName = table instanceof _this.Table ? table.name : table;\n if (typeof storeName !== 'string')\n throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return storeName;\n });\n if (mode == \"r\" || mode === READONLY)\n idbMode = READONLY;\n else if (mode == \"rw\" || mode == READWRITE)\n idbMode = READWRITE;\n else\n throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n if (parentTransaction) {\n if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n }\n if (parentTransaction) {\n storeNames.forEach(function (storeName) {\n if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Table \" + storeName +\n \" not included in parent transaction.\");\n }\n });\n }\n if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n parentTransaction = null;\n }\n }\n }\n catch (e) {\n return parentTransaction ?\n parentTransaction._promise(null, function (_, reject) { reject(e); }) :\n rejection(e);\n }\n var enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n return (parentTransaction ?\n parentTransaction._promise(idbMode, enterTransaction, \"lock\") :\n PSD.trans ?\n usePSD(PSD.transless, function () { return _this._whenReady(enterTransaction); }) :\n this._whenReady(enterTransaction));\n };\n Dexie.prototype.table = function (tableName) {\n if (!hasOwn(this._allTables, tableName)) {\n throw new exceptions.InvalidTable(\"Table \" + tableName + \" does not exist\");\n }\n return this._allTables[tableName];\n };\n return Dexie;\n}());\n\nvar Dexie$1 = Dexie;\nprops(Dexie$1, __assign(__assign({}, fullNameExceptions), {\n delete: function (databaseName) {\n var db = new Dexie$1(databaseName);\n return db.delete();\n },\n exists: function (name) {\n return new Dexie$1(name, { addons: [] }).open().then(function (db) {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', function () { return false; });\n },\n getDatabaseNames: function (cb) {\n return databaseEnumerator ?\n databaseEnumerator.getDatabaseNames().then(cb) :\n DexiePromise.resolve([]);\n },\n defineClass: function () {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n },\n ignoreTransaction: function (scopeFunc) {\n return PSD.trans ?\n usePSD(PSD.transless, scopeFunc) :\n scopeFunc();\n },\n vip: vip, async: function (generatorFn) {\n return function () {\n try {\n var rv = awaitIterator(generatorFn.apply(this, arguments));\n if (!rv || typeof rv.then !== 'function')\n return 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$1.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, value === 'dexie' ? function () { return true; } : dexieStackFrameFilter);\n }\n },\n derive: derive, extend: extend, props: props, override: override,\n Events: Events,\n getByKeyPath: getByKeyPath, setByKeyPath: setByKeyPath, delByKeyPath: delByKeyPath, shallowClone: shallowClone, deepClone: deepClone, getObjectDiff: getObjectDiff, asap: asap,\n minKey: minKey,\n addons: [],\n connections: connections,\n errnames: errnames,\n dependencies: (function () {\n try {\n return {\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n }\n catch (e) {\n return { indexedDB: null, IDBKeyRange: null };\n }\n })(),\n semVer: DEXIE_VERSION, version: DEXIE_VERSION.split('.')\n .map(function (n) { return parseInt(n); })\n .reduce(function (p, c, i) { return p + (c / Math.pow(10, i * 2)); }),\n default: Dexie$1,\n Dexie: Dexie$1 }));\nDexie$1.maxKey = getMaxKey(Dexie$1.dependencies.IDBKeyRange);\n\ninitDatabaseEnumerator(Dexie.dependencies.indexedDB);\nDexiePromise.rejectionMapper = mapError;\nsetDebug(debug, dexieStackFrameFilter);\n\nexport default Dexie;\nexport { Dexie };\n//# sourceMappingURL=dexie.mjs.map\n","var __extends = (this && this.__extends) || (function () {\n var 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 };\n return function (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 };\n})();\nimport Dexie from \"dexie\";\n/**\n * Provides access to persistent data used by the Service Worker.\n */\nvar ServiceWorkerDb = /** @class */ (function (_super) {\n __extends(ServiceWorkerDb, _super);\n function ServiceWorkerDb() {\n var _this = _super.call(this, \"ServiceWorker\") || this;\n _this.version(1).stores({ dynamicRouteRegistrations: \"++,&pattern\" });\n _this.dynamicRouteRegistrations = _this.table(\"dynamicRouteRegistrations\");\n return _this;\n }\n return ServiceWorkerDb;\n}(Dexie));\nexport { ServiceWorkerDb };\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { retry } from \"@openmrs/esm-utils\";\nimport { absoluteWbManifestUrls, omrsCacheName } from \"./constants\";\nimport { fetchUrlsToCacheFromImportMap } from \"./import-map-utils\";\nimport { ServiceWorkerDb } from \"./storage\";\n/**\n * Attempts to resolve cacheable files from the specified import map (files are retrieved via convention)\n * and, if successful, attempts to add them to the app cache.\n * @param importMap An import map object from which cacheable files should be extracted.\n */\nexport function cacheImportMapReferences(importMap) {\n return __awaiter(this, void 0, void 0, function () {\n var urlsToCache;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fetchUrlsToCacheFromImportMap(importMap)];\n case 1:\n urlsToCache = _a.sent();\n return [4 /*yield*/, invalidateObsoleteCacheEntries(urlsToCache)];\n case 2:\n _a.sent();\n return [4 /*yield*/, addToOmrsCache(urlsToCache)];\n case 3:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n}\n/**\n * Adds all static app shell files to the cache.\n * Only caches the \"raw\" app shell, not any MFs/any data coming from an import map.\n */\nexport function precacheAppShell() {\n return addToOmrsCache(absoluteWbManifestUrls);\n}\n/**\n * Adds all of the given urls to the default app cache.\n * @param urls An array of URLs to be cached.\n */\nexport function addToOmrsCache(urls) {\n return __awaiter(this, void 0, void 0, function () {\n var cache, results, cached, failedToCache;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (urls.length === 0) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, caches.open(omrsCacheName)];\n case 1:\n cache = _a.sent();\n return [4 /*yield*/, Promise.all(urls.map(function (url) { return __awaiter(_this, void 0, void 0, function () {\n var e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, retry(function () { return cache.add(url); }, {\n onError: function (e, attempt) {\n return console.debug(\"Failure attempt \" + attempt + \" at caching \\\"\" + url + \"\\\". Error: \", e);\n },\n })];\n case 1:\n _a.sent();\n return [2 /*return*/, { url: url, success: true }];\n case 2:\n e_1 = _a.sent();\n return [2 /*return*/, { url: url, success: false }];\n case 3: return [2 /*return*/];\n }\n });\n }); }))];\n case 2:\n results = _a.sent();\n cached = results.filter(function (r) { return r.success; });\n failedToCache = results.filter(function (r) { return !r.success; });\n if (cached.length > 0) {\n console.debug(\"Successfully added \" + cached.length + \" URLs to the OMRS cache. URLs: \", cached.map(function (r) { return r.url; }));\n }\n if (failedToCache.length > 0) {\n console.error(\"Failed to cache \" + failedToCache.length + \" URLs. URLs: \", failedToCache.map(function (r) { return r.url; }));\n }\n return [2 /*return*/];\n }\n });\n });\n}\nfunction invalidateObsoleteCacheEntries(newImportMapUrls) {\n return __awaiter(this, void 0, void 0, function () {\n var cache, cachedUrls, dynamicRoutes, urlsToInvalidate;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, caches.open(omrsCacheName)];\n case 1:\n cache = _a.sent();\n return [4 /*yield*/, cache.keys()];\n case 2:\n cachedUrls = (_a.sent()).map(function (x) { return x.url; });\n return [4 /*yield*/, new ServiceWorkerDb().dynamicRouteRegistrations.toArray()];\n case 3:\n dynamicRoutes = _a.sent();\n urlsToInvalidate = cachedUrls.filter(function (cachedUrl) {\n return !absoluteWbManifestUrls.includes(cachedUrl) &&\n !newImportMapUrls.includes(cachedUrl) &&\n !dynamicRoutes.some(function (route) { return new RegExp(route.pattern).test(cachedUrl); });\n });\n console.info(\"Removing the following expired URLs from the cache: \", urlsToInvalidate);\n // eslint-disable-next-line no-console\n console.debug(\"The following URLs were known and not invalidated: \", absoluteWbManifestUrls, newImportMapUrls, dynamicRoutes);\n return [4 /*yield*/, Promise.all(urlsToInvalidate.map(function (url) { return cache[\"delete\"](url); }))];\n case 4:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n}\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport escapeRegExp from \"lodash-es/escapeRegExp\";\nimport { cacheImportMapReferences } from \"./caching\";\nimport { ServiceWorkerDb } from \"./storage\";\nvar messageHandlers = {\n onImportMapChanged: onImportMapChanged,\n clearDynamicRoutes: clearDynamicRoutes,\n registerDynamicRoute: registerDynamicRoute,\n};\nfunction onImportMapChanged(_a) {\n var importMap = _a.importMap;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, cacheImportMapReferences(importMap)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n}\nfunction clearDynamicRoutes() {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new ServiceWorkerDb().dynamicRouteRegistrations.clear()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n}\nfunction registerDynamicRoute(_a) {\n var pattern = _a.pattern, url = _a.url;\n return __awaiter(this, void 0, void 0, function () {\n var finalPattern, registration;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n finalPattern = pattern;\n if (!finalPattern && url) {\n finalPattern = \"^\" + escapeRegExp(url) + \"$\";\n }\n if (!finalPattern) return [3 /*break*/, 2];\n registration = { pattern: finalPattern };\n return [4 /*yield*/, new ServiceWorkerDb().dynamicRouteRegistrations.put(registration)];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n}\n/**\n * Invoked when the service worker receives a message.\n * Matches the message to a handler, invokes that handler and dispatches the result returned\n * by the handler back to the window.\n *\n * For this to work, the message needs to have a defined format.\n * @param event The event data containing the message dispatched to the Service Worker.\n */\nexport function handleMessage(event) {\n var _a, _b, _c, _d, _e, _f;\n return __awaiter(this, void 0, void 0, function () {\n function fail(error) {\n console.warn(\"Handling a message resulted in an error.\", error);\n resolve({\n success: false,\n error: error,\n });\n }\n function resolve(result) {\n event.ports[0].postMessage(result !== null && result !== void 0 ? result : {});\n }\n var handler, result, e_1;\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0:\n handler = messageHandlers[(_c = (_b = (_a = event.data) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.toString()) !== null && _c !== void 0 ? _c : \"\"];\n if (!handler) {\n fail(\"Received an unknown message of type \\\"\" + ((_d = event.data) === null || _d === void 0 ? void 0 : _d.type) + \" which cannot be handled.\");\n return [2 /*return*/];\n }\n _g.label = 1;\n case 1:\n _g.trys.push([1, 3, , 4]);\n return [4 /*yield*/, handler(event.data)];\n case 2:\n result = _g.sent();\n resolve({\n success: true,\n result: result,\n });\n return [3 /*break*/, 4];\n case 3:\n e_1 = _g.sent();\n fail((_f = (_e = e_1 === null || e_1 === void 0 ? void 0 : e_1.message) !== null && _e !== void 0 ? _e : e_1 === null || e_1 === void 0 ? void 0 : e_1.toString()) !== null && _f !== void 0 ? _f : \"Unknown error.\");\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array<string>}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof module:workbox-routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {module:workbox-routing~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method = defaultMethod) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n /**\n *\n * @param {module:workbox-routing-handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response\n */\n setCatchHandler(handler) {\n this.catchHandler = normalizeHandler(handler);\n }\n}\nexport { Route };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * [Route]{@link module:workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * [See the module docs for info.]{@link https://developers.google.com/web/tools/workbox/modules/workbox-routing}\n *\n * @memberof module:workbox-routing\n * @extends module:workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regular expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * the captured values will be passed to the\n * [handler's]{@link module:workbox-routing~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if ((url.origin !== location.origin) && (result.index !== 0)) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` +\n `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a FetchEvent through one or more\n * [Routes]{@link module:workbox-routing.Route} responding with a Request if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof module:workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map<string, Array<module:workbox-routing.Route>>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n if (event.data && event.data.type === 'CACHE_URLS') { // eslint-disable-line\n const { payload } = event.data; // eslint-disable-line\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array<Promise<Response> | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise<Response>|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([\n `Found a route to handle this request:`, route,\n ]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`, params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise && (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if ((matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0)) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {module:workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {module:workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n return (typeof input === 'string') ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * [handle()]{@link module:workbox-strategies.Strategy~handle} or\n * [handleAll()]{@link module:workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof module:workbox-strategies\n */\nclass StrategyHandler {\n /**\n * Creates a new instance associated with the passed strategy and event\n * that's handling the request.\n *\n * The constructor also initializes the state that will be passed to each of\n * the plugins handling this request.\n *\n * @param {module:workbox-strategies.Strategy} strategy\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * [match callback]{@link module:workbox-routing~matchCallback},\n * (if applicable).\n */\n constructor(strategy, options) {\n this._cacheKeys = {};\n /**\n * The request the strategy is performing (passed to the strategy's\n * `handle()` or `handleAll()` method).\n * @name request\n * @instance\n * @type {Request}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n /**\n * The event associated with this request.\n * @name event\n * @instance\n * @type {ExtendableEvent}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n /**\n * A `URL` instance of `request.url` (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `url` param will be present if the strategy was invoked\n * from a workbox `Route` object.\n * @name url\n * @instance\n * @type {URL|undefined}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n /**\n * A `param` value (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `param` param will be present if the strategy was invoked\n * from a workbox `Route` object and the\n * [match callback]{@link module:workbox-routing~matchCallback} returned\n * a truthy value (it will be that value).\n * @name params\n * @instance\n * @type {*|undefined}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(options.event, ExtendableEvent, {\n moduleName: 'workbox-strategies',\n className: 'StrategyHandler',\n funcName: 'constructor',\n paramName: 'options.event',\n });\n }\n Object.assign(this, options);\n this.event = options.event;\n this._strategy = strategy;\n this._handlerDeferred = new Deferred();\n this._extendLifetimePromises = [];\n // Copy the plugins list (since it's mutable on the strategy),\n // so any mutations don't affect this handler instance.\n this._plugins = [...strategy.plugins];\n this._pluginStateMap = new Map();\n for (const plugin of this._plugins) {\n this._pluginStateMap.set(plugin, {});\n }\n this.event.waitUntil(this._handlerDeferred.promise);\n }\n /**\n * Fetches a given request (and invokes any applicable plugin callback\n * methods) using the `fetchOptions` (for non-navigation requests) and\n * `plugins` defined on the `Strategy` object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - `requestWillFetch()`\n * - `fetchDidSucceed()`\n * - `fetchDidFail()`\n *\n * @param {Request|string} input The URL or request to fetch.\n * @return {Promise<Response>}\n */\n async fetch(input) {\n const { event } = this;\n let request = toRequest(input);\n if (request.mode === 'navigate' &&\n event instanceof FetchEvent &&\n event.preloadResponse) {\n const possiblePreloadResponse = await event.preloadResponse;\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = this.hasCallback('fetchDidFail') ?\n request.clone() : null;\n try {\n for (const cb of this.iterateCallbacks('requestWillFetch')) {\n request = await cb({ request: request.clone(), event });\n }\n }\n catch (err) {\n if (err instanceof Error) {\n throw new WorkboxError('plugin-error-request-will-fetch', { thrownErrorMessage: err.message });\n }\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (most likely from a `fetch` event) different\n // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n fetchResponse = await fetch(request, request.mode === 'navigate' ?\n undefined : this._strategy.fetchOptions);\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n fetchResponse = await callback({\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n // `originalRequest` will only exist if a `fetchDidFail` callback\n // is being used (see above).\n if (originalRequest) {\n await this.runCallbacks('fetchDidFail', {\n error: error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n }\n /**\n * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n * the response generated by `this.fetch()`.\n *\n * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n * so you do not have to manually call `waitUntil()` on the event.\n *\n * @param {Request|string} input The request or URL to fetch and cache.\n * @return {Promise<Response>}\n */\n async fetchAndCachePut(input) {\n const response = await this.fetch(input);\n const responseClone = response.clone();\n void this.waitUntil(this.cachePut(input, responseClone));\n return response;\n }\n /**\n * Matches a request from the cache (and invokes any applicable plugin\n * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n * defined on the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cachedResponseWillByUsed()\n *\n * @param {Request|string} key The Request or URL to use as the cache key.\n * @return {Promise<Response|undefined>} A matching response, if found.\n */\n async cacheMatch(key) {\n const request = toRequest(key);\n let cachedResponse;\n const { cacheName, matchOptions } = this._strategy;\n const effectiveRequest = await this.getCacheKey(request, 'read');\n const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { cacheName });\n cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n cachedResponse = (await callback({\n cacheName,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n event: this.event,\n })) || undefined;\n }\n return cachedResponse;\n }\n /**\n * Puts a request/response pair in the cache (and invokes any applicable\n * plugin callback methods) using the `cacheName` and `plugins` defined on\n * the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cacheWillUpdate()\n * - cacheDidUpdate()\n *\n * @param {Request|string} key The request or URL to use as the cache key.\n * @param {Response} response The response to cache.\n * @return {Promise<boolean>} `false` if a cacheWillUpdate caused the response\n * not be cached, and `true` otherwise.\n */\n async cachePut(key, response) {\n const request = toRequest(key);\n // Run in the next task to avoid blocking other cache reads.\n // https://github.com/w3c/ServiceWorker/issues/1397\n await timeout(0);\n const effectiveRequest = await this.getCacheKey(request, 'write');\n if (process.env.NODE_ENV !== 'production') {\n if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(effectiveRequest.url),\n method: effectiveRequest.method,\n });\n }\n }\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await this._ensureResponseSafeToCache(response);\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n `will not be cached.`, responseToCache);\n }\n return false;\n }\n const { cacheName, matchOptions } = this._strategy;\n const cache = await self.caches.open(cacheName);\n const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n const oldResponse = hasCacheUpdateCallback ? await cacheMatchIgnoreParams(\n // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n // feature. Consider into ways to only add this behavior if using\n // precaching.\n cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions) :\n null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n `for ${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, hasCacheUpdateCallback ?\n responseToCache.clone() : responseToCache);\n }\n catch (error) {\n if (error instanceof Error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n }\n for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n await callback({\n cacheName,\n oldResponse,\n newResponse: responseToCache.clone(),\n request: effectiveRequest,\n event: this.event,\n });\n }\n return true;\n }\n /**\n * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n * executes any of those callbacks found in sequence. The final `Request`\n * object returned by the last plugin is treated as the cache key for cache\n * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n * been registered, the passed request is returned unmodified\n *\n * @param {Request} request\n * @param {string} mode\n * @return {Promise<Request>}\n */\n async getCacheKey(request, mode) {\n if (!this._cacheKeys[mode]) {\n let effectiveRequest = request;\n for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n effectiveRequest = toRequest(await callback({\n mode,\n request: effectiveRequest,\n event: this.event,\n // params has a type any can't change right now.\n params: this.params,\n }));\n }\n this._cacheKeys[mode] = effectiveRequest;\n }\n return this._cacheKeys[mode];\n }\n /**\n * Returns true if the strategy has at least one plugin with the given\n * callback.\n *\n * @param {string} name The name of the callback to check for.\n * @return {boolean}\n */\n hasCallback(name) {\n for (const plugin of this._strategy.plugins) {\n if (name in plugin) {\n return true;\n }\n }\n return false;\n }\n /**\n * Runs all plugin callbacks matching the given name, in order, passing the\n * given param object (merged ith the current plugin state) as the only\n * argument.\n *\n * Note: since this method runs all plugins, it's not suitable for cases\n * where the return value of a callback needs to be applied prior to calling\n * the next callback. See\n * [`iterateCallbacks()`]{@link module:workbox-strategies.StrategyHandler#iterateCallbacks}\n * below for how to handle that case.\n *\n * @param {string} name The name of the callback to run within each plugin.\n * @param {Object} param The object to pass as the first (and only) param\n * when executing each callback. This object will be merged with the\n * current plugin state prior to callback execution.\n */\n async runCallbacks(name, param) {\n for (const callback of this.iterateCallbacks(name)) {\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n await callback(param);\n }\n }\n /**\n * Accepts a callback and returns an iterable of matching plugin callbacks,\n * where each callback is wrapped with the current handler state (i.e. when\n * you call each callback, whatever object parameter you pass it will\n * be merged with the plugin's current state).\n *\n * @param {string} name The name fo the callback to run\n * @return {Array<Function>}\n */\n *iterateCallbacks(name) {\n for (const plugin of this._strategy.plugins) {\n if (typeof plugin[name] === 'function') {\n const state = this._pluginStateMap.get(plugin);\n const statefulCallback = (param) => {\n const statefulParam = Object.assign(Object.assign({}, param), { state });\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n return plugin[name](statefulParam);\n };\n yield statefulCallback;\n }\n }\n }\n /**\n * Adds a promise to the\n * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n * of the event event associated with the request being handled (usually a\n * `FetchEvent`).\n *\n * Note: you can await\n * [`doneWaiting()`]{@link module:workbox-strategies.StrategyHandler~doneWaiting}\n * to know when all added promises have settled.\n *\n * @param {Promise} promise A promise to add to the extend lifetime promises\n * of the event that triggered the request.\n */\n waitUntil(promise) {\n this._extendLifetimePromises.push(promise);\n return promise;\n }\n /**\n * Returns a promise that resolves once all promises passed to\n * [`waitUntil()`]{@link module:workbox-strategies.StrategyHandler~waitUntil}\n * have settled.\n *\n * Note: any work done after `doneWaiting()` settles should be manually\n * passed to an event's `waitUntil()` method (not this handler's\n * `waitUntil()` method), otherwise the service worker thread my be killed\n * prior to your work completing.\n */\n async doneWaiting() {\n let promise;\n while (promise = this._extendLifetimePromises.shift()) {\n await promise;\n }\n }\n /**\n * Stops running the strategy and immediately resolves any pending\n * `waitUntil()` promises.\n */\n destroy() {\n this._handlerDeferred.resolve(null);\n }\n /**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Request} options.request\n * @param {Response} options.response\n * @return {Promise<Response|undefined>}\n *\n * @private\n */\n async _ensureResponseSafeToCache(response) {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n responseToCache = (await callback({\n request: this.request,\n response: responseToCache,\n event: this.event,\n })) || undefined;\n pluginsUsed = true;\n if (!responseToCache) {\n break;\n }\n }\n if (!pluginsUsed) {\n if (responseToCache && responseToCache.status !== 200) {\n responseToCache = undefined;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${this.request.url}' ` +\n `is an opaque response. The caching strategy that you're ` +\n `using will not cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${this.request.url}' ` +\n `returned a status code of '${response.status}' and won't ` +\n `be cached as a result.`);\n }\n }\n }\n }\n }\n return responseToCache;\n }\n}\nexport { StrategyHandler };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof module:workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof module:workbox-strategies\n */\nclass Strategy {\n /**\n * Creates a new instance of the strategy and sets all documented option\n * properties as public instance properties.\n *\n * Note: if a custom strategy class extends the base Strategy class and does\n * not need more than these properties, it does not need to define its own\n * constructor.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * [workbox-core]{@link module:workbox-core.cacheNames}.\n * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n */\n constructor(options = {}) {\n /**\n * Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * [workbox-core]{@link module:workbox-core.cacheNames}.\n *\n * @type {string}\n */\n this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n /**\n * The list\n * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * used by this strategy.\n *\n * @type {Array<Object>}\n */\n this.plugins = options.plugins || [];\n /**\n * Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n *\n * @type {Object}\n */\n this.fetchOptions = options.fetchOptions;\n /**\n * The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n *\n * @type {Object}\n */\n this.matchOptions = options.matchOptions;\n }\n /**\n * Perform a request strategy and returns a `Promise` that will resolve with\n * a `Response`, invoking all relevant plugin callbacks.\n *\n * When a strategy instance is registered with a Workbox\n * [route]{@link module:workbox-routing.Route}, this method is automatically\n * called when the route matches.\n *\n * Alternatively, this method can be used in a standalone `FetchEvent`\n * listener by passing it to `event.respondWith()`.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n */\n handle(options) {\n const [responseDone] = this.handleAll(options);\n return responseDone;\n }\n /**\n * Similar to [`handle()`]{@link module:workbox-strategies.Strategy~handle}, but\n * instead of just returning a `Promise` that resolves to a `Response` it\n * it will return an tuple of [response, done] promises, where the former\n * (`response`) is equivalent to what `handle()` returns, and the latter is a\n * Promise that will resolve once any promises that were added to\n * `event.waitUntil()` as part of performing the strategy have completed.\n *\n * You can await the `done` promise to ensure any extra work performed by\n * the strategy (usually caching responses) completes successfully.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * @return {Array<Promise>} A tuple of [response, done]\n * promises that can be used to determine when the response resolves as\n * well as when the handler has completed all its work.\n */\n handleAll(options) {\n // Allow for flexible options to be passed.\n if (options instanceof FetchEvent) {\n options = {\n event: options,\n request: options.request,\n };\n }\n const event = options.event;\n const request = typeof options.request === 'string' ?\n new Request(options.request) :\n options.request;\n const params = 'params' in options ? options.params : undefined;\n const handler = new StrategyHandler(this, { event, request, params });\n const responseDone = this._getResponse(handler, request, event);\n const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n // Return an array of promises, suitable for use with Promise.all().\n return [responseDone, handlerDone];\n }\n async _getResponse(handler, request, event) {\n await handler.runCallbacks('handlerWillStart', { event, request });\n let response = undefined;\n try {\n response = await this._handle(request, handler);\n // The \"official\" Strategy subclasses all throw this error automatically,\n // but in case a third-party Strategy doesn't, ensure that we have a\n // consistent failure when there's no response or an error response.\n if (!response || response.type === 'error') {\n throw new WorkboxError('no-response', { url: request.url });\n }\n }\n catch (error) {\n if (error instanceof Error) {\n for (const callback of handler.iterateCallbacks('handlerDidError')) {\n response = await callback({ error, event, request });\n if (response) {\n break;\n }\n }\n }\n if (!response) {\n throw error;\n }\n else if (process.env.NODE_ENV !== 'production') {\n logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` +\n `a handlerDidError plugin.`);\n }\n }\n for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n response = await callback({ event, request, response });\n }\n return response;\n }\n async _awaitComplete(responseDone, handler, request, event) {\n let response;\n let error;\n try {\n response = await responseDone;\n }\n catch (error) {\n // Ignore errors, as response errors should be caught via the `response`\n // promise above. The `done` promise will only throw for errors in\n // promises passed to `handler.waitUntil()`.\n }\n try {\n await handler.runCallbacks('handlerDidRespond', {\n event,\n request,\n response,\n });\n await handler.doneWaiting();\n }\n catch (waitUntilError) {\n if (waitUntilError instanceof Error) {\n error = waitUntilError;\n }\n }\n await handler.runCallbacks('handlerDidComplete', {\n event,\n request,\n response,\n error: error,\n });\n handler.destroy();\n if (error) {\n throw error;\n }\n }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the [`handler`]{@link module:workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {module:workbox-strategies.StrategyHandler} handler\n * @return {Promise<Response>}\n *\n * @memberof module:workbox-strategies.Strategy\n */\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nexport const cacheOkAndOpaquePlugin = {\n /**\n * Returns a valid response (to allow caching) if the status is 200 (OK) or\n * 0 (opaque).\n *\n * @param {Object} options\n * @param {Response} options.response\n * @return {Response|null}\n *\n * @private\n */\n cacheWillUpdate: async ({ response }) => {\n if (response.status === 200 || response.status === 0) {\n return response;\n }\n return null;\n },\n};\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nexport function publishEvent(event) {\n return __awaiter(this, void 0, void 0, function () {\n var clients, _i, clients_1, client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, self.clients.matchAll({ type: \"window\" })];\n case 1:\n clients = _a.sent();\n for (_i = 0, clients_1 = clients; _i < clients_1.length; _i++) {\n client = clients_1[_i];\n client.postMessage(event);\n }\n return [2 /*return*/];\n }\n });\n });\n}\n","import { omrsOfflineCachingStrategyHttpHeaderName, omrsOfflineResponseBodyHttpHeaderName, omrsOfflineResponseStatusHttpHeaderName, } from \"@openmrs/esm-offline/src/service-worker-http-headers\";\nexport function parseOmrsOfflineResponseBodyHeader(headers) {\n var _a;\n // The ?? undefined here is important as getOmrsHeader returns null by default when the header\n // is missing. undefined is different than null in this case since we want the body to be missing\n // if the header is not there (null is not missing).\n return ((_a = getOmrsHeader(headers, omrsOfflineResponseBodyHttpHeaderName)) !== null && _a !== void 0 ? _a : undefined);\n}\nexport function parseOmrsOfflineResponseStatusHeader(headers) {\n var _a;\n var status = +((_a = getOmrsHeader(headers, omrsOfflineResponseStatusHttpHeaderName)) !== null && _a !== void 0 ? _a : \"\");\n // The Response API requires the status to be in the 200-599 range and throws otherwise.\n return isNaN(status) || status < 200 || status > 599 ? 503 : status;\n}\nexport function hasOmrsNetworkFirstHeader(headers) {\n var header = getOmrsHeader(headers, omrsOfflineCachingStrategyHttpHeaderName);\n return header === \"network-first\";\n}\nexport function getOmrsHeader(headers, name) {\n return headers.get(name);\n}\nexport function headersToObject(headers) {\n var result = {};\n headers.forEach(function (value, key) { return (result[key] = value); });\n return result;\n}\n","export var omrsOfflineResponseBodyHttpHeaderName = \"x-omrs-offline-response-body\";\nexport var omrsOfflineResponseStatusHttpHeaderName = \"x-omrs-offline-response-status\";\nexport var omrsOfflineCachingStrategyHttpHeaderName = \"x-omrs-offline-caching-strategy\";\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { registerRoute } from \"workbox-routing\";\nimport { getOrCreateDefaultRouter } from \"workbox-routing/utils/getOrCreateDefaultRouter\";\nimport { NetworkFirst, NetworkOnly } from \"workbox-strategies\";\nimport { indexUrl, omrsCacheName } from \"./constants\";\nimport { ServiceWorkerDb } from \"./storage\";\nimport { publishEvent } from \"./event\";\nimport { validMethods } from \"workbox-routing/utils/constants\";\nimport { hasOmrsNetworkFirstHeader, headersToObject, parseOmrsOfflineResponseBodyHeader, parseOmrsOfflineResponseStatusHeader, } from \"./http-header-utils\";\nvar networkOnly = new NetworkOnly();\nvar networkFirst = new NetworkFirst({ cacheName: omrsCacheName });\n/**\n * Registers required Workbox routes used by the service worker to provide offline functionality.\n */\nexport function registerAllOmrsRoutes() {\n // Navigation requests are, when unresolvable via network (i.e. when offline), routed back\n // to the SPA's index (which should always be precached).\n // This ensures that the page loads correctly when a new navigation occurs to pages\n // like `/openmrs/spa/anything/nested`.\n registerRoute(function (_a) {\n var request = _a.request;\n return request.mode === \"navigate\";\n }, navigationHandler);\n // Fallback routing behavior.\n // Checks if a dynamic route registration exists and, if so, handles it using a Network First approach.\n // Otherwise falls back to a NetworkOnly - CacheOnly behavior.\n //\n // The latter ensures that:\n // a) precached files (like the app shell and files resolved from the importmap) are returned when offline.\n // b) anything else (e.g. API requests) is not cached.\n var router = getOrCreateDefaultRouter();\n for (var _i = 0, validMethods_1 = validMethods; _i < validMethods_1.length; _i++) {\n var method = validMethods_1[_i];\n router.setDefaultHandler(defaultHandler, method);\n }\n}\nfunction navigationHandler(options) {\n return __awaiter(this, void 0, void 0, function () {\n var e_1, cache, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 5]);\n return [4 /*yield*/, networkOnly.handle(options)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n e_1 = _a.sent();\n return [4 /*yield*/, caches.open(omrsCacheName)];\n case 3:\n cache = _a.sent();\n return [4 /*yield*/, cache.match(indexUrl)];\n case 4:\n response = _a.sent();\n return [2 /*return*/, response !== null && response !== void 0 ? response : Response.error()];\n case 5: return [2 /*return*/];\n }\n });\n });\n}\nfunction defaultHandler(options) {\n return __awaiter(this, void 0, void 0, function () {\n var useNetworkFirst;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, shouldUseNetworkFirst(options)];\n case 1:\n useNetworkFirst = _a.sent();\n if (!useNetworkFirst) return [3 /*break*/, 3];\n return [4 /*yield*/, networkFirst.handle(options)];\n case 2: return [2 /*return*/, _a.sent()];\n case 3: return [4 /*yield*/, handleWithNetworkOnlyAndCacheFallback(options)];\n case 4: return [2 /*return*/, _a.sent()];\n }\n });\n });\n}\nfunction shouldUseNetworkFirst(_a) {\n var request = _a.request, url = _a.url;\n return __awaiter(this, void 0, void 0, function () {\n var db, allDynamicRouteRegistrations, hasMatchingDynamicRoute;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (request.method !== \"GET\") {\n // TODO: Evaluate whether this should take precedence over the custom strategy header below.\n return [2 /*return*/, false];\n }\n if (hasOmrsNetworkFirstHeader(request.headers)) {\n return [2 /*return*/, true];\n }\n db = new ServiceWorkerDb();\n return [4 /*yield*/, db.dynamicRouteRegistrations.toArray()];\n case 1:\n allDynamicRouteRegistrations = _b.sent();\n hasMatchingDynamicRoute = allDynamicRouteRegistrations.some(function (route) {\n return new RegExp(route.pattern).test(url.href);\n });\n return [2 /*return*/, hasMatchingDynamicRoute];\n }\n });\n });\n}\nfunction handleWithNetworkOnlyAndCacheFallback(options) {\n return __awaiter(this, void 0, void 0, function () {\n var request, requestClone, e_2, cachedResponse, _a;\n var _b, _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n request = options.request;\n return [4 /*yield*/, request.clone()];\n case 1:\n requestClone = _d.sent();\n _d.label = 2;\n case 2:\n _d.trys.push([2, 4, , 7]);\n return [4 /*yield*/, networkOnly.handle(options)];\n case 3: return [2 /*return*/, _d.sent()];\n case 4:\n e_2 = _d.sent();\n return [4 /*yield*/, caches.match(request, {\n cacheName: omrsCacheName,\n })];\n case 5:\n cachedResponse = _d.sent();\n if (cachedResponse) {\n return [2 /*return*/, cachedResponse];\n }\n _a = publishEvent;\n _b = {\n type: \"networkRequestFailed\"\n };\n _c = {\n url: request.url,\n method: request.method\n };\n return [4 /*yield*/, requestClone.text()];\n case 6:\n _a.apply(void 0, [(_b.request = (_c.body = _d.sent(),\n _c.headers = headersToObject(request.headers),\n _c),\n _b)]);\n return [2 /*return*/, new Response(parseOmrsOfflineResponseBodyHeader(request.headers), {\n status: parseOmrsOfflineResponseStatusHeader(request.headers),\n })];\n case 7: return [2 /*return*/];\n }\n });\n });\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [network-only]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-only}\n * request strategy.\n *\n * This class is useful if you want to take advantage of any\n * [Workbox plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}.\n *\n * If the network request fails, this will throw a `WorkboxError` exception.\n *\n * @extends module:workbox-strategies.Strategy\n * @memberof module:workbox-strategies\n */\nclass NetworkOnly extends Strategy {\n /**\n * @param {Object} [options]\n * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {number} [options.networkTimeoutSeconds] If set, any network requests\n * that fail to respond within the timeout will result in a network error.\n */\n constructor(options = {}) {\n super(options);\n this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {module:workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise<Response>}\n */\n async _handle(request, handler) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: '_handle',\n paramName: 'request',\n });\n }\n let error = undefined;\n let response;\n try {\n const promises = [handler.fetch(request)];\n if (this._networkTimeoutSeconds) {\n const timeoutPromise = timeout(this._networkTimeoutSeconds * 1000);\n promises.push(timeoutPromise);\n }\n response = await Promise.race(promises);\n if (!response) {\n throw new Error(`Timed out the network response after ` +\n `${this._networkTimeoutSeconds} seconds.`);\n }\n }\n catch (err) {\n if (err instanceof Error) {\n error = err;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n if (response) {\n logger.log(`Got response from network.`);\n }\n else {\n logger.log(`Unable to get a response from the network.`);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n}\nexport { NetworkOnly };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { cacheOkAndOpaquePlugin } from './plugins/cacheOkAndOpaquePlugin.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a\n * [network first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#network-falling-back-to-cache}\n * request strategy.\n *\n * By default, this strategy will cache responses with a 200 status code as\n * well as [opaque responses]{@link https://developers.google.com/web/tools/workbox/guides/handle-third-party-requests}.\n * Opaque responses are are cross-origin requests where the response doesn't\n * support [CORS]{@link https://enable-cors.org/}.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends module:workbox-strategies.Strategy\n * @memberof module:workbox-strategies\n */\nclass NetworkFirst extends Strategy {\n /**\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to cache names provided by\n * [workbox-core]{@link module:workbox-core.cacheNames}.\n * @param {Array<Object>} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] [`CacheQueryOptions`](https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions)\n * @param {number} [options.networkTimeoutSeconds] If set, any network requests\n * that fail to respond within the timeout will fallback to the cache.\n *\n * This option can be used to combat\n * \"[lie-fi]{@link https://developers.google.com/web/fundamentals/performance/poor-connectivity/#lie-fi}\"\n * scenarios.\n */\n constructor(options = {}) {\n super(options);\n // If this instance contains no plugins with a 'cacheWillUpdate' callback,\n // prepend the `cacheOkAndOpaquePlugin` plugin to the plugins list.\n if (!this.plugins.some((p) => 'cacheWillUpdate' in p)) {\n this.plugins.unshift(cacheOkAndOpaquePlugin);\n }\n this._networkTimeoutSeconds = options.networkTimeoutSeconds || 0;\n if (process.env.NODE_ENV !== 'production') {\n if (this._networkTimeoutSeconds) {\n assert.isType(this._networkTimeoutSeconds, 'number', {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'constructor',\n paramName: 'networkTimeoutSeconds',\n });\n }\n }\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {module:workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise<Response>}\n */\n async _handle(request, handler) {\n const logs = [];\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'handle',\n paramName: 'makeRequest',\n });\n }\n const promises = [];\n let timeoutId;\n if (this._networkTimeoutSeconds) {\n const { id, promise } = this._getTimeoutPromise({ request, logs, handler });\n timeoutId = id;\n promises.push(promise);\n }\n const networkPromise = this._getNetworkPromise({ timeoutId, request, logs, handler });\n promises.push(networkPromise);\n const response = await handler.waitUntil((async () => {\n // Promise.race() will resolve as soon as the first promise resolves.\n return await handler.waitUntil(Promise.race(promises)) ||\n // If Promise.race() resolved with null, it might be due to a network\n // timeout + a cache miss. If that were to happen, we'd rather wait until\n // the networkPromise resolves instead of returning null.\n // Note that it's fine to await an already-resolved promise, so we don't\n // have to check to see if it's still \"in flight\".\n await networkPromise;\n })());\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url });\n }\n return response;\n }\n /**\n * @param {Object} options\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs array\n * @param {Event} options.event\n * @return {Promise<Response>}\n *\n * @private\n */\n _getTimeoutPromise({ request, logs, handler }) {\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n const onNetworkTimeout = async () => {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Timing out the network response at ` +\n `${this._networkTimeoutSeconds} seconds.`);\n }\n resolve(await handler.cacheMatch(request));\n };\n timeoutId = setTimeout(onNetworkTimeout, this._networkTimeoutSeconds * 1000);\n });\n return {\n promise: timeoutPromise,\n id: timeoutId,\n };\n }\n /**\n * @param {Object} options\n * @param {number|undefined} options.timeoutId\n * @param {Request} options.request\n * @param {Array} options.logs A reference to the logs Array.\n * @param {Event} options.event\n * @return {Promise<Response>}\n *\n * @private\n */\n async _getNetworkPromise({ timeoutId, request, logs, handler }) {\n let error;\n let response;\n try {\n response = await handler.fetchAndCachePut(request);\n }\n catch (fetchError) {\n if (fetchError instanceof Error) {\n error = fetchError;\n }\n }\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n }\n else {\n logs.push(`Unable to get a response from the network. Will respond ` +\n `with a cached response.`);\n }\n }\n if (error || !response) {\n response = await handler.cacheMatch(request);\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Found a cached response in the '${this.cacheName}'` +\n ` cache.`);\n }\n else {\n logs.push(`No response found in the '${this.cacheName}' cache.`);\n }\n }\n }\n return response;\n }\n}\nexport { NetworkFirst };\n","import { setCacheNameDetails } from \"workbox-core\";\nimport { handleMessage } from \"./message\";\nimport { precacheAppShell } from \"./caching\";\nimport { registerAllOmrsRoutes } from \"./routing\";\nimport { omrsCachePrefix } from \"./constants\";\nself.__WB_DISABLE_DEV_LOGS = true;\n// Initial Workbox setup. Renaming its default cache prefix prevents conflicts with other dev envs on localhost.\nsetCacheNameDetails({ prefix: omrsCachePrefix });\nregisterAllOmrsRoutes();\nself.addEventListener(\"message\", handleMessage);\nself.addEventListener(\"install\", function (e) {\n self.skipWaiting();\n // The app shell files are special in the sense that they can immediately be cached during SW installation.\n // They also don't change in between builds which makes them safe to cache once only.\n // If they change *during* a build, the SW is updated as well which triggers a re-installation.\n e.waitUntil(precacheAppShell());\n});\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call [registerRoute()]{@link module:workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|module:workbox-routing.Route~matchCallback|module:workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {module:workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {module:workbox-routing.Route} The generated `Route`(Useful for\n * unregistering).\n *\n * @memberof module:workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http') ?\n captureUrl.pathname : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if ((new RegExp(`${wildcards}`)).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if ((url.pathname === captureUrl.pathname) &&\n (url.origin !== captureUrl.origin)) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url.toString()}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\n else if (capture instanceof RegExp) {\n // If `capture` is a `RegExp` then `handler` and `method` must be present.\n route = new RegExpRoute(capture, handler, method);\n }\n else if (typeof capture === 'function') {\n // If `capture` is a function then `handler` and `method` must be present.\n route = new Route(capture, handler, method);\n }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\n"]}