From 38d446f07c5f9aceea5fe5e09e9d79b795cb2f3f Mon Sep 17 00:00:00 2001 From: Gajewski Dmitriy Date: Tue, 28 May 2019 15:15:24 +0300 Subject: [PATCH] (feat) dynamic tags support --- CHANGELOG.md | 5 + README.md | 5 +- docs/api/assets/js/search.js | 2 +- docs/api/classes/basemanager.html | 20 +- docs/api/classes/basestorage.html | 44 +- docs/api/classes/cache.html | 26 +- docs/api/classes/readthroughmanager.html | 24 +- docs/api/classes/redismock.html | 32 +- docs/api/classes/redisstorageadapter.html | 28 +- docs/api/classes/refreshaheadmanager.html | 32 +- .../runexecutorlockedkeyretrievestrategy.html | 6 +- docs/api/classes/teststorage.html | 24 +- docs/api/classes/teststorageadapter.html | 30 +- ...aitforresultlockedkeyretrievestrategy.html | 18 +- docs/api/classes/writethroughmanager.html | 24 +- docs/api/enums/connectionstatus.html | 8 +- .../enums/lockedkeyretrievestrategytypes.html | 6 +- docs/api/globals.html | 194 +- docs/api/index.html | 150 +- .../cachewithbasestorageoptions.html | 4 +- .../cachewithcustomstorageoptions.html | 4 +- docs/api/interfaces/command.html | 6 +- docs/api/interfaces/executorcontext.html | 10 +- docs/api/interfaces/expireoptions.html | 6 +- .../interfaces/lockedkeyretrievestrategy.html | 6 +- docs/api/interfaces/logger.html | 10 +- docs/api/interfaces/manager.html | 6 +- docs/api/interfaces/managerconstructor.html | 6 +- docs/api/interfaces/manageroptions.html | 18 +- .../interfaces/managerselectoroptions.html | 4 +- docs/api/interfaces/readoptions.html | 4 +- docs/api/interfaces/recorderrorcontext.html | 6 +- .../refreshaheadmanageroptions.html | 18 +- docs/api/interfaces/storage.html | 20 +- docs/api/interfaces/storageadapter.html | 20 +- .../api/interfaces/storageadapteroptions.html | 4 +- docs/api/interfaces/storagerecord.html | 14 +- docs/api/interfaces/storagerecordtag.html | 6 +- docs/api/interfaces/writeoptions.html | 27 +- package-lock.json | 1715 +++++++++++------ package.json | 18 +- src/storage.ts | 4 + src/storages/base.spec.ts | 46 + src/storages/base.ts | 8 +- 44 files changed, 1617 insertions(+), 1051 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f237c41..e6a1cba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +#### [1.1.0] +- support for dynamic tags in Manager's default storage via "getTags" option. +- updated jest +- security updates + #### [1.0.1] - update package.json information - version bump diff --git a/README.md b/README.md index 9bc3d0a..060542e 100644 --- a/README.md +++ b/README.md @@ -72,8 +72,9 @@ function getSomething() { `get` will check the tags and compare their versions with the current date, runs an executor if necessary and returns result. Options for `get`: -- expiresIn ?: number; - The number of milliseconds after which key values are considered expired -- tags ?: string [] - Tags - keys for which checks the validity of a particular record. If the tag value in the cache + invalidation time is string[] function which extracts tags from executor result. These tags will be merged with tags given in option below. The next method, "touch", serves to invalidate tags. Calling this method with one of the tags will make all records in the cache with this tag invalid. It can be used both to invalidate a single record (for example, by creating a unique id) or a group of records. diff --git a/docs/api/assets/js/search.js b/docs/api/assets/js/search.js index d84655b..9e28b82 100644 --- a/docs/api/assets/js/search.js +++ b/docs/api/assets/js/search.js @@ -1,3 +1,3 @@ var typedoc = typedoc || {}; typedoc.search = typedoc.search || {}; - typedoc.search.data = {"kinds":{"4":"Enumeration","16":"Enumeration member","32":"Variable","64":"Function","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","2097152":"Object literal","4194304":"Type alias"},"rows":[{"id":0,"kind":4,"name":"ConnectionStatus","url":"enums/connectionstatus.html","classes":"tsd-kind-enum"},{"id":1,"kind":16,"name":"CONNECTING","url":"enums/connectionstatus.html#connecting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ConnectionStatus"},{"id":2,"kind":16,"name":"CONNECTED","url":"enums/connectionstatus.html#connected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ConnectionStatus"},{"id":3,"kind":16,"name":"DISCONNECTED","url":"enums/connectionstatus.html#disconnected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ConnectionStatus"},{"id":4,"kind":256,"name":"StorageAdapterOptions","url":"interfaces/storageadapteroptions.html","classes":"tsd-kind-interface"},{"id":5,"kind":1024,"name":"expiresIn","url":"interfaces/storageadapteroptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageAdapterOptions"},{"id":6,"kind":256,"name":"StorageAdapter","url":"interfaces/storageadapter.html","classes":"tsd-kind-interface"},{"id":7,"kind":2048,"name":"setOptions","url":"interfaces/storageadapter.html#setoptions","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":8,"kind":2048,"name":"onConnect","url":"interfaces/storageadapter.html#onconnect","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":9,"kind":2048,"name":"getConnectionStatus","url":"interfaces/storageadapter.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":10,"kind":2048,"name":"set","url":"interfaces/storageadapter.html#set","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":11,"kind":2048,"name":"get","url":"interfaces/storageadapter.html#get","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":12,"kind":2048,"name":"del","url":"interfaces/storageadapter.html#del","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":13,"kind":2048,"name":"acquireLock","url":"interfaces/storageadapter.html#acquirelock","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":14,"kind":2048,"name":"releaseLock","url":"interfaces/storageadapter.html#releaselock","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":15,"kind":2048,"name":"isLockExists","url":"interfaces/storageadapter.html#islockexists","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":16,"kind":64,"name":"default","url":"globals.html#default","classes":"tsd-kind-function"},{"id":17,"kind":2097152,"name":"ERRORS","url":"globals.html#errors","classes":"tsd-kind-object-literal"},{"id":18,"kind":32,"name":"ParseError","url":"globals.html#errors.parseerror","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"ERRORS"},{"id":19,"kind":32,"name":"RequestMaximumTimeoutExceededError","url":"globals.html#errors.requestmaximumtimeoutexceedederror","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"ERRORS"},{"id":20,"kind":32,"name":"WaitForResultError","url":"globals.html#errors.waitforresulterror","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"ERRORS"},{"id":21,"kind":32,"name":"OperationTimeoutError","url":"globals.html#errors.operationtimeouterror","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"ERRORS"},{"id":22,"kind":2097152,"name":"EXPIRES_IN","url":"globals.html#expires_in","classes":"tsd-kind-object-literal"},{"id":23,"kind":32,"name":"minute","url":"globals.html#expires_in.minute","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"EXPIRES_IN"},{"id":24,"kind":32,"name":"hour","url":"globals.html#expires_in.hour","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"EXPIRES_IN"},{"id":25,"kind":32,"name":"day","url":"globals.html#expires_in.day","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"EXPIRES_IN"},{"id":26,"kind":64,"name":"ParseError","url":"globals.html#parseerror","classes":"tsd-kind-function"},{"id":27,"kind":64,"name":"RequestMaximumTimeoutExceededError","url":"globals.html#requestmaximumtimeoutexceedederror","classes":"tsd-kind-function"},{"id":28,"kind":64,"name":"WaitForResultError","url":"globals.html#waitforresulterror","classes":"tsd-kind-function"},{"id":29,"kind":64,"name":"OperationTimeoutError","url":"globals.html#operationtimeouterror","classes":"tsd-kind-function"},{"id":30,"kind":64,"name":"withTimeout","url":"globals.html#withtimeout","classes":"tsd-kind-function"},{"id":31,"kind":128,"name":"RedisStorageAdapter","url":"classes/redisstorageadapter.html","classes":"tsd-kind-class"},{"id":32,"kind":512,"name":"constructor","url":"classes/redisstorageadapter.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":33,"kind":1024,"name":"options","url":"classes/redisstorageadapter.html#options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"RedisStorageAdapter"},{"id":34,"kind":1024,"name":"redisInstance","url":"classes/redisstorageadapter.html#redisinstance","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"RedisStorageAdapter"},{"id":35,"kind":1024,"name":"connectionStatus","url":"classes/redisstorageadapter.html#connectionstatus","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"RedisStorageAdapter"},{"id":36,"kind":2048,"name":"getConnectionStatus","url":"classes/redisstorageadapter.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":37,"kind":2048,"name":"onConnect","url":"classes/redisstorageadapter.html#onconnect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":38,"kind":2048,"name":"set","url":"classes/redisstorageadapter.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":39,"kind":2048,"name":"get","url":"classes/redisstorageadapter.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":40,"kind":2048,"name":"del","url":"classes/redisstorageadapter.html#del","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":41,"kind":2048,"name":"acquireLock","url":"classes/redisstorageadapter.html#acquirelock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":42,"kind":2048,"name":"releaseLock","url":"classes/redisstorageadapter.html#releaselock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":43,"kind":2048,"name":"isLockExists","url":"classes/redisstorageadapter.html#islockexists","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":44,"kind":2048,"name":"setConnectionStatus","url":"classes/redisstorageadapter.html#setconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"RedisStorageAdapter"},{"id":45,"kind":32,"name":"CACHE_PREFIX","url":"globals.html#cache_prefix","classes":"tsd-kind-variable"},{"id":46,"kind":32,"name":"DEFAULT_OPERATION_TIMEOUT","url":"globals.html#default_operation_timeout","classes":"tsd-kind-variable"},{"id":47,"kind":32,"name":"DEFAULT_LOCK_EXPIRES","url":"globals.html#default_lock_expires","classes":"tsd-kind-variable"},{"id":48,"kind":4194304,"name":"CommandArgument","url":"globals.html#commandargument","classes":"tsd-kind-type-alias"},{"id":49,"kind":4194304,"name":"RedisStorageAdapterOptions","url":"globals.html#redisstorageadapteroptions","classes":"tsd-kind-type-alias"},{"id":50,"kind":65536,"name":"__type","url":"globals.html#redisstorageadapteroptions.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"RedisStorageAdapterOptions"},{"id":51,"kind":32,"name":"operationTimeout","url":"globals.html#redisstorageadapteroptions.__type.operationtimeout","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"RedisStorageAdapterOptions.__type"},{"id":52,"kind":32,"name":"lockExpireTimeout","url":"globals.html#redisstorageadapteroptions.__type.lockexpiretimeout","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"RedisStorageAdapterOptions.__type"},{"id":53,"kind":128,"name":"RedisMock","url":"classes/redismock.html","classes":"tsd-kind-class tsd-is-not-exported"},{"id":54,"kind":2048,"name":"listenerCount","url":"classes/redismock.html#listenercount-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static tsd-is-not-exported","parent":"RedisMock"},{"id":55,"kind":1024,"name":"defaultMaxListeners","url":"classes/redismock.html#defaultmaxlisteners","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static tsd-is-not-exported","parent":"RedisMock"},{"id":56,"kind":2048,"name":"addListener","url":"classes/redismock.html#addlistener","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":57,"kind":2048,"name":"on","url":"classes/redismock.html#on","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":58,"kind":2048,"name":"once","url":"classes/redismock.html#once","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":59,"kind":2048,"name":"prependListener","url":"classes/redismock.html#prependlistener","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":60,"kind":2048,"name":"prependOnceListener","url":"classes/redismock.html#prependoncelistener","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":61,"kind":2048,"name":"removeListener","url":"classes/redismock.html#removelistener","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":62,"kind":2048,"name":"removeAllListeners","url":"classes/redismock.html#removealllisteners","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":63,"kind":2048,"name":"setMaxListeners","url":"classes/redismock.html#setmaxlisteners","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":64,"kind":2048,"name":"getMaxListeners","url":"classes/redismock.html#getmaxlisteners","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":65,"kind":2048,"name":"listeners","url":"classes/redismock.html#listeners","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":66,"kind":2048,"name":"emit","url":"classes/redismock.html#emit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":67,"kind":2048,"name":"eventNames","url":"classes/redismock.html#eventnames","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":68,"kind":2048,"name":"listenerCount","url":"classes/redismock.html#listenercount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":69,"kind":32,"name":"mock","url":"globals.html#mock","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":70,"kind":32,"name":"adapter","url":"globals.html#adapter","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":71,"kind":128,"name":"TestStorageAdapter","url":"classes/teststorageadapter.html","classes":"tsd-kind-class"},{"id":72,"kind":1024,"name":"options","url":"classes/teststorageadapter.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":73,"kind":1024,"name":"testInterface","url":"classes/teststorageadapter.html#testinterface","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":74,"kind":1024,"name":"isConnected","url":"classes/teststorageadapter.html#isconnected","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":75,"kind":1024,"name":"internalStorage","url":"classes/teststorageadapter.html#internalstorage","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":76,"kind":512,"name":"constructor","url":"classes/teststorageadapter.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":77,"kind":2048,"name":"checkConnection","url":"classes/teststorageadapter.html#checkconnection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":78,"kind":2048,"name":"getConnectionStatus","url":"classes/teststorageadapter.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":79,"kind":2048,"name":"onConnect","url":"classes/teststorageadapter.html#onconnect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":80,"kind":2048,"name":"set","url":"classes/teststorageadapter.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":81,"kind":2048,"name":"get","url":"classes/teststorageadapter.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":82,"kind":2048,"name":"del","url":"classes/teststorageadapter.html#del","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":83,"kind":2048,"name":"acquireLock","url":"classes/teststorageadapter.html#acquirelock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":84,"kind":2048,"name":"releaseLock","url":"classes/teststorageadapter.html#releaselock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":85,"kind":2048,"name":"isLockExists","url":"classes/teststorageadapter.html#islockexists","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":86,"kind":256,"name":"LockedKeyRetrieveStrategy","url":"interfaces/lockedkeyretrievestrategy.html","classes":"tsd-kind-interface"},{"id":87,"kind":2048,"name":"getName","url":"interfaces/lockedkeyretrievestrategy.html#getname","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"LockedKeyRetrieveStrategy"},{"id":88,"kind":2048,"name":"get","url":"interfaces/lockedkeyretrievestrategy.html#get","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"LockedKeyRetrieveStrategy"},{"id":89,"kind":4,"name":"LockedKeyRetrieveStrategyTypes","url":"enums/lockedkeyretrievestrategytypes.html","classes":"tsd-kind-enum"},{"id":90,"kind":16,"name":"waitForResult","url":"enums/lockedkeyretrievestrategytypes.html#waitforresult","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LockedKeyRetrieveStrategyTypes"},{"id":91,"kind":16,"name":"runExecutor","url":"enums/lockedkeyretrievestrategytypes.html#runexecutor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LockedKeyRetrieveStrategyTypes"},{"id":92,"kind":4194304,"name":"LockedKeyRetrieveStrategyType","url":"globals.html#lockedkeyretrievestrategytype","classes":"tsd-kind-type-alias"},{"id":93,"kind":256,"name":"Storage","url":"interfaces/storage.html","classes":"tsd-kind-interface"},{"id":94,"kind":2048,"name":"get","url":"interfaces/storage.html#get","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":95,"kind":2048,"name":"touch","url":"interfaces/storage.html#touch","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":96,"kind":2048,"name":"lockKey","url":"interfaces/storage.html#lockkey","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":97,"kind":2048,"name":"releaseKey","url":"interfaces/storage.html#releasekey","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":98,"kind":2048,"name":"keyIsLocked","url":"interfaces/storage.html#keyislocked","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":99,"kind":2048,"name":"del","url":"interfaces/storage.html#del","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":100,"kind":2048,"name":"getTags","url":"interfaces/storage.html#gettags","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":101,"kind":2048,"name":"set","url":"interfaces/storage.html#set","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":102,"kind":2048,"name":"getConnectionStatus","url":"interfaces/storage.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":103,"kind":256,"name":"StorageRecordTag","url":"interfaces/storagerecordtag.html","classes":"tsd-kind-interface"},{"id":104,"kind":1024,"name":"name","url":"interfaces/storagerecordtag.html#name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecordTag"},{"id":105,"kind":1024,"name":"version","url":"interfaces/storagerecordtag.html#version","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecordTag"},{"id":106,"kind":256,"name":"StorageRecord","url":"interfaces/storagerecord.html","classes":"tsd-kind-interface"},{"id":107,"kind":1024,"name":"key","url":"interfaces/storagerecord.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":108,"kind":1024,"name":"permanent","url":"interfaces/storagerecord.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":109,"kind":1024,"name":"expiresIn","url":"interfaces/storagerecord.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":110,"kind":1024,"name":"createdAt","url":"interfaces/storagerecord.html#createdat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":111,"kind":1024,"name":"value","url":"interfaces/storagerecord.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":112,"kind":1024,"name":"tags","url":"interfaces/storagerecord.html#tags","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":113,"kind":256,"name":"ReadOptions","url":"interfaces/readoptions.html","classes":"tsd-kind-interface"},{"id":114,"kind":1024,"name":"lockedKeyRetrieveStrategyType","url":"interfaces/readoptions.html#lockedkeyretrievestrategytype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ReadOptions"},{"id":115,"kind":256,"name":"ExpireOptions","url":"interfaces/expireoptions.html","classes":"tsd-kind-interface"},{"id":116,"kind":1024,"name":"expiresIn","url":"interfaces/expireoptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExpireOptions"},{"id":117,"kind":1024,"name":"permanent","url":"interfaces/expireoptions.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExpireOptions"},{"id":118,"kind":256,"name":"WriteOptions","url":"interfaces/writeoptions.html","classes":"tsd-kind-interface"},{"id":119,"kind":1024,"name":"tags","url":"interfaces/writeoptions.html#tags","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"WriteOptions"},{"id":120,"kind":1024,"name":"expiresIn","url":"interfaces/writeoptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"WriteOptions"},{"id":121,"kind":1024,"name":"permanent","url":"interfaces/writeoptions.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"WriteOptions"},{"id":122,"kind":4194304,"name":"StorageRecordValue","url":"globals.html#storagerecordvalue","classes":"tsd-kind-type-alias"},{"id":123,"kind":4194304,"name":"StorageTags","url":"globals.html#storagetags","classes":"tsd-kind-type-alias"},{"id":124,"kind":65536,"name":"__type","url":"globals.html#storagetags.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"StorageTags"},{"id":125,"kind":4194304,"name":"ReadWriteOptions","url":"globals.html#readwriteoptions","classes":"tsd-kind-type-alias"},{"id":126,"kind":256,"name":"ExecutorContext","url":"interfaces/executorcontext.html","classes":"tsd-kind-interface"},{"id":127,"kind":1024,"name":"key","url":"interfaces/executorcontext.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExecutorContext"},{"id":128,"kind":1024,"name":"executor","url":"interfaces/executorcontext.html#executor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExecutorContext"},{"id":129,"kind":1024,"name":"options","url":"interfaces/executorcontext.html#options","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExecutorContext"},{"id":130,"kind":1024,"name":"record","url":"interfaces/executorcontext.html#record","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExecutorContext"},{"id":131,"kind":4194304,"name":"ValueOfExecutor","url":"globals.html#valueofexecutor","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":132,"kind":4194304,"name":"Executor","url":"globals.html#executor","classes":"tsd-kind-type-alias"},{"id":133,"kind":65536,"name":"__type","url":"globals.html#executor.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"Executor"},{"id":134,"kind":256,"name":"RecordErrorContext","url":"interfaces/recorderrorcontext.html","classes":"tsd-kind-interface"},{"id":135,"kind":1024,"name":"record","url":"interfaces/recorderrorcontext.html#record","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RecordErrorContext"},{"id":136,"kind":1024,"name":"recordValue","url":"interfaces/recorderrorcontext.html#recordvalue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RecordErrorContext"},{"id":137,"kind":64,"name":"createRecord","url":"globals.html#createrecord","classes":"tsd-kind-function"},{"id":138,"kind":256,"name":"Command","url":"interfaces/command.html","classes":"tsd-kind-interface"},{"id":139,"kind":1024,"name":"fn","url":"interfaces/command.html#fn","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Command"},{"id":140,"kind":1024,"name":"params","url":"interfaces/command.html#params","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Command"},{"id":141,"kind":128,"name":"BaseStorage","url":"classes/basestorage.html","classes":"tsd-kind-class"},{"id":142,"kind":512,"name":"constructor","url":"classes/basestorage.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"BaseStorage"},{"id":143,"kind":1024,"name":"commandsQueue","url":"classes/basestorage.html#commandsqueue","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":144,"kind":1024,"name":"prefix","url":"classes/basestorage.html#prefix","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":145,"kind":1024,"name":"hashKeys","url":"classes/basestorage.html#hashkeys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":146,"kind":1024,"name":"adapter","url":"classes/basestorage.html#adapter","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":147,"kind":2048,"name":"get","url":"classes/basestorage.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":148,"kind":2048,"name":"setTagVersions","url":"classes/basestorage.html#settagversions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":149,"kind":2048,"name":"touch","url":"classes/basestorage.html#touch","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":150,"kind":2048,"name":"lockKey","url":"classes/basestorage.html#lockkey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":151,"kind":2048,"name":"releaseKey","url":"classes/basestorage.html#releasekey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":152,"kind":2048,"name":"keyIsLocked","url":"classes/basestorage.html#keyislocked","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":153,"kind":2048,"name":"del","url":"classes/basestorage.html#del","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":154,"kind":2048,"name":"getTags","url":"classes/basestorage.html#gettags","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":155,"kind":2048,"name":"set","url":"classes/basestorage.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":156,"kind":2048,"name":"getConnectionStatus","url":"classes/basestorage.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":157,"kind":2048,"name":"isRecord","url":"classes/basestorage.html#isrecord","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":158,"kind":2048,"name":"createKey","url":"classes/basestorage.html#createkey","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":159,"kind":2048,"name":"createTagKey","url":"classes/basestorage.html#createtagkey","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":160,"kind":2048,"name":"executeCommandsFromQueue","url":"classes/basestorage.html#executecommandsfromqueue","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":161,"kind":2048,"name":"cachedCommand","url":"classes/basestorage.html#cachedcommand","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":162,"kind":32,"name":"TAGS_VERSIONS_ALIAS","url":"globals.html#tags_versions_alias","classes":"tsd-kind-variable"},{"id":163,"kind":4194304,"name":"BaseStorageOptions","url":"globals.html#basestorageoptions","classes":"tsd-kind-type-alias"},{"id":164,"kind":65536,"name":"__type","url":"globals.html#basestorageoptions.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"BaseStorageOptions"},{"id":165,"kind":32,"name":"adapter","url":"globals.html#basestorageoptions.__type.adapter","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"BaseStorageOptions.__type"},{"id":166,"kind":32,"name":"prefix","url":"globals.html#basestorageoptions.__type.prefix","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"BaseStorageOptions.__type"},{"id":167,"kind":32,"name":"hashKeys","url":"globals.html#basestorageoptions.__type.hashkeys","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"BaseStorageOptions.__type"},{"id":168,"kind":32,"name":"expiresIn","url":"globals.html#basestorageoptions.__type.expiresin","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"BaseStorageOptions.__type"},{"id":169,"kind":4194304,"name":"CommandFn","url":"globals.html#commandfn","classes":"tsd-kind-type-alias"},{"id":170,"kind":65536,"name":"__type","url":"globals.html#commandfn.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"CommandFn"},{"id":171,"kind":256,"name":"Logger","url":"interfaces/logger.html","classes":"tsd-kind-interface"},{"id":172,"kind":2048,"name":"info","url":"interfaces/logger.html#info","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Logger"},{"id":173,"kind":2048,"name":"trace","url":"interfaces/logger.html#trace","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Logger"},{"id":174,"kind":2048,"name":"warn","url":"interfaces/logger.html#warn","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Logger"},{"id":175,"kind":2048,"name":"error","url":"interfaces/logger.html#error","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Logger"},{"id":176,"kind":256,"name":"Manager","url":"interfaces/manager.html","classes":"tsd-kind-interface"},{"id":177,"kind":2048,"name":"get","url":"interfaces/manager.html#get","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"Manager"},{"id":178,"kind":2048,"name":"set","url":"interfaces/manager.html#set","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Manager"},{"id":179,"kind":128,"name":"WaitForResultLockedKeyRetrieveStrategy","url":"classes/waitforresultlockedkeyretrievestrategy.html","classes":"tsd-kind-class"},{"id":180,"kind":512,"name":"constructor","url":"classes/waitforresultlockedkeyretrievestrategy.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":181,"kind":1024,"name":"maximumTimeout","url":"classes/waitforresultlockedkeyretrievestrategy.html#maximumtimeout","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":182,"kind":1024,"name":"requestTimeout","url":"classes/waitforresultlockedkeyretrievestrategy.html#requesttimeout","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":183,"kind":1024,"name":"keyIsLocked","url":"classes/waitforresultlockedkeyretrievestrategy.html#keyislocked","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":184,"kind":1024,"name":"getRecord","url":"classes/waitforresultlockedkeyretrievestrategy.html#getrecord","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":185,"kind":1024,"name":"logger","url":"classes/waitforresultlockedkeyretrievestrategy.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":186,"kind":2048,"name":"getName","url":"classes/waitforresultlockedkeyretrievestrategy.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":187,"kind":2048,"name":"get","url":"classes/waitforresultlockedkeyretrievestrategy.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":188,"kind":32,"name":"DEFAULT_MAXIMUM_TIMEOUT","url":"globals.html#default_maximum_timeout","classes":"tsd-kind-variable"},{"id":189,"kind":32,"name":"DEFAULT_REQUEST_TIMEOUT","url":"globals.html#default_request_timeout","classes":"tsd-kind-variable"},{"id":190,"kind":4194304,"name":"KeyLockCheckFn","url":"globals.html#keylockcheckfn","classes":"tsd-kind-type-alias"},{"id":191,"kind":65536,"name":"__type","url":"globals.html#keylockcheckfn.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"KeyLockCheckFn"},{"id":192,"kind":4194304,"name":"GetRecordFn","url":"globals.html#getrecordfn","classes":"tsd-kind-type-alias"},{"id":193,"kind":65536,"name":"__type","url":"globals.html#getrecordfn.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"GetRecordFn"},{"id":194,"kind":4194304,"name":"WaitForResultLockedKeyRetrieveStrategyOptions","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions","classes":"tsd-kind-type-alias"},{"id":195,"kind":65536,"name":"__type","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions"},{"id":196,"kind":32,"name":"maximumTimeout","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.maximumtimeout","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":197,"kind":32,"name":"requestTimeout","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.requesttimeout","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":198,"kind":32,"name":"keyLockCheckFn","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.keylockcheckfn","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":199,"kind":32,"name":"getRecord","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.getrecord","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":200,"kind":32,"name":"logger","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.logger","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":201,"kind":128,"name":"RunExecutorLockedKeyRetrieveStrategy","url":"classes/runexecutorlockedkeyretrievestrategy.html","classes":"tsd-kind-class"},{"id":202,"kind":2048,"name":"getName","url":"classes/runexecutorlockedkeyretrievestrategy.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RunExecutorLockedKeyRetrieveStrategy"},{"id":203,"kind":2048,"name":"get","url":"classes/runexecutorlockedkeyretrievestrategy.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RunExecutorLockedKeyRetrieveStrategy"},{"id":204,"kind":256,"name":"ManagerOptions","url":"interfaces/manageroptions.html","classes":"tsd-kind-interface"},{"id":205,"kind":1024,"name":"prefix","url":"interfaces/manageroptions.html#prefix","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":206,"kind":1024,"name":"hashKeys","url":"interfaces/manageroptions.html#hashkeys","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":207,"kind":1024,"name":"logger","url":"interfaces/manageroptions.html#logger","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":208,"kind":1024,"name":"storage","url":"interfaces/manageroptions.html#storage","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":209,"kind":1024,"name":"refreshAheadFactor","url":"interfaces/manageroptions.html#refreshaheadfactor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":210,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"interfaces/manageroptions.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":211,"kind":1024,"name":"expiresIn","url":"interfaces/manageroptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"ManagerOptions"},{"id":212,"kind":1024,"name":"permanent","url":"interfaces/manageroptions.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"ManagerOptions"},{"id":213,"kind":128,"name":"BaseManager","url":"classes/basemanager.html","classes":"tsd-kind-class"},{"id":214,"kind":512,"name":"constructor","url":"classes/basemanager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"BaseManager"},{"id":215,"kind":1024,"name":"storage","url":"classes/basemanager.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":216,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"classes/basemanager.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":217,"kind":1024,"name":"logger","url":"classes/basemanager.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":218,"kind":2048,"name":"get","url":"classes/basemanager.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"BaseManager"},{"id":219,"kind":2048,"name":"set","url":"classes/basemanager.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseManager"},{"id":220,"kind":2048,"name":"isTagsOutdated","url":"classes/basemanager.html#istagsoutdated","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":221,"kind":2048,"name":"updateCacheAndGetResult","url":"classes/basemanager.html#updatecacheandgetresult","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-protected","parent":"BaseManager"},{"id":222,"kind":2048,"name":"getLockedKeyRetrieveStrategy","url":"classes/basemanager.html#getlockedkeyretrievestrategy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":223,"kind":64,"name":"createLogger","url":"globals.html#createlogger","classes":"tsd-kind-function"},{"id":224,"kind":256,"name":"RefreshAheadManagerOptions","url":"interfaces/refreshaheadmanageroptions.html","classes":"tsd-kind-interface"},{"id":225,"kind":1024,"name":"refreshAheadFactor","url":"interfaces/refreshaheadmanageroptions.html#refreshaheadfactor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"RefreshAheadManagerOptions"},{"id":226,"kind":1024,"name":"prefix","url":"interfaces/refreshaheadmanageroptions.html#prefix","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":227,"kind":1024,"name":"hashKeys","url":"interfaces/refreshaheadmanageroptions.html#hashkeys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":228,"kind":1024,"name":"logger","url":"interfaces/refreshaheadmanageroptions.html#logger","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":229,"kind":1024,"name":"storage","url":"interfaces/refreshaheadmanageroptions.html#storage","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":230,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"interfaces/refreshaheadmanageroptions.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":231,"kind":1024,"name":"expiresIn","url":"interfaces/refreshaheadmanageroptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":232,"kind":1024,"name":"permanent","url":"interfaces/refreshaheadmanageroptions.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":233,"kind":128,"name":"RefreshAheadManager","url":"classes/refreshaheadmanager.html","classes":"tsd-kind-class"},{"id":234,"kind":512,"name":"constructor","url":"classes/refreshaheadmanager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"RefreshAheadManager"},{"id":235,"kind":1024,"name":"refreshAheadFactor","url":"classes/refreshaheadmanager.html#refreshaheadfactor","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"RefreshAheadManager"},{"id":236,"kind":2048,"name":"getName","url":"classes/refreshaheadmanager.html#getname","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"RefreshAheadManager"},{"id":237,"kind":2048,"name":"get","url":"classes/refreshaheadmanager.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-overwrite","parent":"RefreshAheadManager"},{"id":238,"kind":2048,"name":"set","url":"classes/refreshaheadmanager.html#set","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"RefreshAheadManager"},{"id":239,"kind":2048,"name":"isRecordValid","url":"classes/refreshaheadmanager.html#isrecordvalid","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"RefreshAheadManager"},{"id":240,"kind":2048,"name":"isRecordExpireSoon","url":"classes/refreshaheadmanager.html#isrecordexpiresoon","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"RefreshAheadManager"},{"id":241,"kind":2048,"name":"refresh","url":"classes/refreshaheadmanager.html#refresh","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"RefreshAheadManager"},{"id":242,"kind":1024,"name":"storage","url":"classes/refreshaheadmanager.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":243,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"classes/refreshaheadmanager.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":244,"kind":1024,"name":"logger","url":"classes/refreshaheadmanager.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":245,"kind":2048,"name":"isTagsOutdated","url":"classes/refreshaheadmanager.html#istagsoutdated","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":246,"kind":2048,"name":"updateCacheAndGetResult","url":"classes/refreshaheadmanager.html#updatecacheandgetresult","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":247,"kind":2048,"name":"getLockedKeyRetrieveStrategy","url":"classes/refreshaheadmanager.html#getlockedkeyretrievestrategy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":248,"kind":32,"name":"DEFAULT_REFRESH_AHEAD_FACTOR","url":"globals.html#default_refresh_ahead_factor","classes":"tsd-kind-variable"},{"id":249,"kind":256,"name":"CacheWithCustomStorageOptions","url":"interfaces/cachewithcustomstorageoptions.html","classes":"tsd-kind-interface"},{"id":250,"kind":1024,"name":"storage","url":"interfaces/cachewithcustomstorageoptions.html#storage","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CacheWithCustomStorageOptions"},{"id":251,"kind":256,"name":"CacheWithBaseStorageOptions","url":"interfaces/cachewithbasestorageoptions.html","classes":"tsd-kind-interface"},{"id":252,"kind":1024,"name":"adapter","url":"interfaces/cachewithbasestorageoptions.html#adapter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CacheWithBaseStorageOptions"},{"id":253,"kind":256,"name":"ManagerConstructor","url":"interfaces/managerconstructor.html","classes":"tsd-kind-interface tsd-has-type-parameter"},{"id":254,"kind":512,"name":"constructor","url":"interfaces/managerconstructor.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-interface","parent":"ManagerConstructor"},{"id":255,"kind":2048,"name":"getName","url":"interfaces/managerconstructor.html#getname","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"ManagerConstructor"},{"id":256,"kind":256,"name":"ManagerSelectorOptions","url":"interfaces/managerselectoroptions.html","classes":"tsd-kind-interface"},{"id":257,"kind":1024,"name":"manager","url":"interfaces/managerselectoroptions.html#manager","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerSelectorOptions"},{"id":258,"kind":128,"name":"Cache","url":"classes/cache.html","classes":"tsd-kind-class"},{"id":259,"kind":512,"name":"constructor","url":"classes/cache.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Cache"},{"id":260,"kind":1024,"name":"storage","url":"classes/cache.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":261,"kind":1024,"name":"logger","url":"classes/cache.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":262,"kind":1024,"name":"expiresIn","url":"classes/cache.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":263,"kind":1024,"name":"managers","url":"classes/cache.html#managers","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":264,"kind":2048,"name":"get","url":"classes/cache.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"Cache"},{"id":265,"kind":2048,"name":"set","url":"classes/cache.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cache"},{"id":266,"kind":2048,"name":"touch","url":"classes/cache.html#touch","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cache"},{"id":267,"kind":2048,"name":"registerManager","url":"classes/cache.html#registermanager","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cache"},{"id":268,"kind":2048,"name":"getManager","url":"classes/cache.html#getmanager","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":269,"kind":4194304,"name":"CacheOptions","url":"globals.html#cacheoptions","classes":"tsd-kind-type-alias"},{"id":270,"kind":64,"name":"isCustomStorageOptions","url":"globals.html#iscustomstorageoptions","classes":"tsd-kind-function"},{"id":271,"kind":64,"name":"isBaseStorageOptions","url":"globals.html#isbasestorageoptions","classes":"tsd-kind-function"},{"id":272,"kind":128,"name":"TestStorage","url":"classes/teststorage.html","classes":"tsd-kind-class"},{"id":273,"kind":1024,"name":"storage","url":"classes/teststorage.html#storage","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":274,"kind":1024,"name":"get","url":"classes/teststorage.html#get","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":275,"kind":1024,"name":"touch","url":"classes/teststorage.html#touch","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":276,"kind":1024,"name":"lockKey","url":"classes/teststorage.html#lockkey","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":277,"kind":1024,"name":"releaseKey","url":"classes/teststorage.html#releasekey","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":278,"kind":1024,"name":"keyIsLocked","url":"classes/teststorage.html#keyislocked","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":279,"kind":1024,"name":"del","url":"classes/teststorage.html#del","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":280,"kind":1024,"name":"getTags","url":"classes/teststorage.html#gettags","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":281,"kind":1024,"name":"set","url":"classes/teststorage.html#set","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":282,"kind":1024,"name":"getConnectionStatus","url":"classes/teststorage.html#getconnectionstatus","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":283,"kind":512,"name":"constructor","url":"classes/teststorage.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"TestStorage"},{"id":284,"kind":2097152,"name":"logger","url":"globals.html#logger","classes":"tsd-kind-object-literal tsd-is-not-exported"},{"id":285,"kind":32,"name":"info","url":"globals.html#logger.info","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"logger"},{"id":286,"kind":32,"name":"trace","url":"globals.html#logger.trace","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"logger"},{"id":287,"kind":32,"name":"warn","url":"globals.html#logger.warn","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"logger"},{"id":288,"kind":32,"name":"error","url":"globals.html#logger.error","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"logger"},{"id":289,"kind":32,"name":"MockManager","url":"globals.html#mockmanager","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":290,"kind":32,"name":"instance","url":"globals.html#instance","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":291,"kind":128,"name":"ReadThroughManager","url":"classes/readthroughmanager.html","classes":"tsd-kind-class"},{"id":292,"kind":512,"name":"constructor","url":"classes/readthroughmanager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"ReadThroughManager"},{"id":293,"kind":2048,"name":"getName","url":"classes/readthroughmanager.html#getname","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ReadThroughManager"},{"id":294,"kind":2048,"name":"get","url":"classes/readthroughmanager.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-overwrite","parent":"ReadThroughManager"},{"id":295,"kind":2048,"name":"set","url":"classes/readthroughmanager.html#set","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ReadThroughManager"},{"id":296,"kind":2048,"name":"isRecordValid","url":"classes/readthroughmanager.html#isrecordvalid","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"ReadThroughManager"},{"id":297,"kind":1024,"name":"storage","url":"classes/readthroughmanager.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":298,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"classes/readthroughmanager.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":299,"kind":1024,"name":"logger","url":"classes/readthroughmanager.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":300,"kind":2048,"name":"isTagsOutdated","url":"classes/readthroughmanager.html#istagsoutdated","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":301,"kind":2048,"name":"updateCacheAndGetResult","url":"classes/readthroughmanager.html#updatecacheandgetresult","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":302,"kind":2048,"name":"getLockedKeyRetrieveStrategy","url":"classes/readthroughmanager.html#getlockedkeyretrievestrategy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":303,"kind":128,"name":"WriteThroughManager","url":"classes/writethroughmanager.html","classes":"tsd-kind-class"},{"id":304,"kind":512,"name":"constructor","url":"classes/writethroughmanager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"WriteThroughManager"},{"id":305,"kind":2048,"name":"getName","url":"classes/writethroughmanager.html#getname","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"WriteThroughManager"},{"id":306,"kind":2048,"name":"get","url":"classes/writethroughmanager.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-overwrite","parent":"WriteThroughManager"},{"id":307,"kind":2048,"name":"set","url":"classes/writethroughmanager.html#set","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"WriteThroughManager"},{"id":308,"kind":2048,"name":"isRecordValid","url":"classes/writethroughmanager.html#isrecordvalid","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"WriteThroughManager"},{"id":309,"kind":1024,"name":"storage","url":"classes/writethroughmanager.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":310,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"classes/writethroughmanager.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":311,"kind":1024,"name":"logger","url":"classes/writethroughmanager.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":312,"kind":2048,"name":"isTagsOutdated","url":"classes/writethroughmanager.html#istagsoutdated","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":313,"kind":2048,"name":"updateCacheAndGetResult","url":"classes/writethroughmanager.html#updatecacheandgetresult","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":314,"kind":2048,"name":"getLockedKeyRetrieveStrategy","url":"classes/writethroughmanager.html#getlockedkeyretrievestrategy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":315,"kind":2097152,"name":"loggerMock","url":"globals.html#loggermock","classes":"tsd-kind-object-literal tsd-is-not-exported"},{"id":316,"kind":32,"name":"error","url":"globals.html#loggermock.error","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"loggerMock"},{"id":317,"kind":32,"name":"getRecordMock","url":"globals.html#getrecordmock","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":318,"kind":32,"name":"keyLockCheckFnMock","url":"globals.html#keylockcheckfnmock","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":319,"kind":32,"name":"internalStorage","url":"globals.html#internalstorage","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":320,"kind":32,"name":"storage","url":"globals.html#storage","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":321,"kind":32,"name":"manager","url":"globals.html#manager","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":322,"kind":65536,"name":"__type","url":"globals.html#internalstorage.__type","classes":"tsd-kind-type-literal tsd-parent-kind-variable tsd-is-not-exported","parent":"internalStorage"},{"id":323,"kind":1024,"name":"storage","url":"classes/basestorage.html#storage","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BaseStorage"},{"id":324,"kind":2097152,"name":"testInterface","url":"globals.html#testinterface","classes":"tsd-kind-object-literal tsd-is-not-exported"},{"id":325,"kind":32,"name":"internalStorage","url":"globals.html#testinterface.internalstorage","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"testInterface"},{"id":326,"kind":65536,"name":"__type","url":"globals.html#testinterface.internalstorage.__type","classes":"tsd-kind-type-literal tsd-parent-kind-variable tsd-is-not-exported","parent":"testInterface.internalStorage"},{"id":327,"kind":32,"name":"testAdapter","url":"globals.html#testadapter","classes":"tsd-kind-variable tsd-is-not-exported"}]}; \ No newline at end of file + typedoc.search.data = {"kinds":{"4":"Enumeration","16":"Enumeration member","32":"Variable","64":"Function","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method","65536":"Type literal","2097152":"Object literal","4194304":"Type alias"},"rows":[{"id":0,"kind":4,"name":"ConnectionStatus","url":"enums/connectionstatus.html","classes":"tsd-kind-enum"},{"id":1,"kind":16,"name":"CONNECTING","url":"enums/connectionstatus.html#connecting","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ConnectionStatus"},{"id":2,"kind":16,"name":"CONNECTED","url":"enums/connectionstatus.html#connected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ConnectionStatus"},{"id":3,"kind":16,"name":"DISCONNECTED","url":"enums/connectionstatus.html#disconnected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"ConnectionStatus"},{"id":4,"kind":256,"name":"StorageAdapterOptions","url":"interfaces/storageadapteroptions.html","classes":"tsd-kind-interface"},{"id":5,"kind":1024,"name":"expiresIn","url":"interfaces/storageadapteroptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageAdapterOptions"},{"id":6,"kind":256,"name":"StorageAdapter","url":"interfaces/storageadapter.html","classes":"tsd-kind-interface"},{"id":7,"kind":2048,"name":"setOptions","url":"interfaces/storageadapter.html#setoptions","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":8,"kind":2048,"name":"onConnect","url":"interfaces/storageadapter.html#onconnect","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":9,"kind":2048,"name":"getConnectionStatus","url":"interfaces/storageadapter.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":10,"kind":2048,"name":"set","url":"interfaces/storageadapter.html#set","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":11,"kind":2048,"name":"get","url":"interfaces/storageadapter.html#get","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":12,"kind":2048,"name":"del","url":"interfaces/storageadapter.html#del","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":13,"kind":2048,"name":"acquireLock","url":"interfaces/storageadapter.html#acquirelock","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":14,"kind":2048,"name":"releaseLock","url":"interfaces/storageadapter.html#releaselock","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":15,"kind":2048,"name":"isLockExists","url":"interfaces/storageadapter.html#islockexists","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"StorageAdapter"},{"id":16,"kind":64,"name":"default","url":"globals.html#default","classes":"tsd-kind-function"},{"id":17,"kind":2097152,"name":"ERRORS","url":"globals.html#errors","classes":"tsd-kind-object-literal"},{"id":18,"kind":32,"name":"ParseError","url":"globals.html#errors.parseerror","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"ERRORS"},{"id":19,"kind":32,"name":"RequestMaximumTimeoutExceededError","url":"globals.html#errors.requestmaximumtimeoutexceedederror","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"ERRORS"},{"id":20,"kind":32,"name":"WaitForResultError","url":"globals.html#errors.waitforresulterror","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"ERRORS"},{"id":21,"kind":32,"name":"OperationTimeoutError","url":"globals.html#errors.operationtimeouterror","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"ERRORS"},{"id":22,"kind":2097152,"name":"EXPIRES_IN","url":"globals.html#expires_in","classes":"tsd-kind-object-literal"},{"id":23,"kind":32,"name":"minute","url":"globals.html#expires_in.minute","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"EXPIRES_IN"},{"id":24,"kind":32,"name":"hour","url":"globals.html#expires_in.hour","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"EXPIRES_IN"},{"id":25,"kind":32,"name":"day","url":"globals.html#expires_in.day","classes":"tsd-kind-variable tsd-parent-kind-object-literal","parent":"EXPIRES_IN"},{"id":26,"kind":64,"name":"ParseError","url":"globals.html#parseerror","classes":"tsd-kind-function"},{"id":27,"kind":64,"name":"RequestMaximumTimeoutExceededError","url":"globals.html#requestmaximumtimeoutexceedederror","classes":"tsd-kind-function"},{"id":28,"kind":64,"name":"WaitForResultError","url":"globals.html#waitforresulterror","classes":"tsd-kind-function"},{"id":29,"kind":64,"name":"OperationTimeoutError","url":"globals.html#operationtimeouterror","classes":"tsd-kind-function"},{"id":30,"kind":64,"name":"withTimeout","url":"globals.html#withtimeout","classes":"tsd-kind-function"},{"id":31,"kind":128,"name":"RedisStorageAdapter","url":"classes/redisstorageadapter.html","classes":"tsd-kind-class"},{"id":32,"kind":512,"name":"constructor","url":"classes/redisstorageadapter.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":33,"kind":1024,"name":"options","url":"classes/redisstorageadapter.html#options","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"RedisStorageAdapter"},{"id":34,"kind":1024,"name":"redisInstance","url":"classes/redisstorageadapter.html#redisinstance","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"RedisStorageAdapter"},{"id":35,"kind":1024,"name":"connectionStatus","url":"classes/redisstorageadapter.html#connectionstatus","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"RedisStorageAdapter"},{"id":36,"kind":2048,"name":"getConnectionStatus","url":"classes/redisstorageadapter.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":37,"kind":2048,"name":"onConnect","url":"classes/redisstorageadapter.html#onconnect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":38,"kind":2048,"name":"set","url":"classes/redisstorageadapter.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":39,"kind":2048,"name":"get","url":"classes/redisstorageadapter.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":40,"kind":2048,"name":"del","url":"classes/redisstorageadapter.html#del","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":41,"kind":2048,"name":"acquireLock","url":"classes/redisstorageadapter.html#acquirelock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":42,"kind":2048,"name":"releaseLock","url":"classes/redisstorageadapter.html#releaselock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":43,"kind":2048,"name":"isLockExists","url":"classes/redisstorageadapter.html#islockexists","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RedisStorageAdapter"},{"id":44,"kind":2048,"name":"setConnectionStatus","url":"classes/redisstorageadapter.html#setconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"RedisStorageAdapter"},{"id":45,"kind":32,"name":"CACHE_PREFIX","url":"globals.html#cache_prefix","classes":"tsd-kind-variable"},{"id":46,"kind":32,"name":"DEFAULT_OPERATION_TIMEOUT","url":"globals.html#default_operation_timeout","classes":"tsd-kind-variable"},{"id":47,"kind":32,"name":"DEFAULT_LOCK_EXPIRES","url":"globals.html#default_lock_expires","classes":"tsd-kind-variable"},{"id":48,"kind":4194304,"name":"CommandArgument","url":"globals.html#commandargument","classes":"tsd-kind-type-alias"},{"id":49,"kind":4194304,"name":"RedisStorageAdapterOptions","url":"globals.html#redisstorageadapteroptions","classes":"tsd-kind-type-alias"},{"id":50,"kind":65536,"name":"__type","url":"globals.html#redisstorageadapteroptions.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"RedisStorageAdapterOptions"},{"id":51,"kind":32,"name":"operationTimeout","url":"globals.html#redisstorageadapteroptions.__type.operationtimeout","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"RedisStorageAdapterOptions.__type"},{"id":52,"kind":32,"name":"lockExpireTimeout","url":"globals.html#redisstorageadapteroptions.__type.lockexpiretimeout","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"RedisStorageAdapterOptions.__type"},{"id":53,"kind":128,"name":"RedisMock","url":"classes/redismock.html","classes":"tsd-kind-class tsd-is-not-exported"},{"id":54,"kind":2048,"name":"listenerCount","url":"classes/redismock.html#listenercount-1","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-static tsd-is-not-exported","parent":"RedisMock"},{"id":55,"kind":1024,"name":"defaultMaxListeners","url":"classes/redismock.html#defaultmaxlisteners","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-static tsd-is-not-exported","parent":"RedisMock"},{"id":56,"kind":2048,"name":"addListener","url":"classes/redismock.html#addlistener","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":57,"kind":2048,"name":"on","url":"classes/redismock.html#on","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":58,"kind":2048,"name":"once","url":"classes/redismock.html#once","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":59,"kind":2048,"name":"prependListener","url":"classes/redismock.html#prependlistener","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":60,"kind":2048,"name":"prependOnceListener","url":"classes/redismock.html#prependoncelistener","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":61,"kind":2048,"name":"removeListener","url":"classes/redismock.html#removelistener","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":62,"kind":2048,"name":"removeAllListeners","url":"classes/redismock.html#removealllisteners","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":63,"kind":2048,"name":"setMaxListeners","url":"classes/redismock.html#setmaxlisteners","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":64,"kind":2048,"name":"getMaxListeners","url":"classes/redismock.html#getmaxlisteners","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":65,"kind":2048,"name":"listeners","url":"classes/redismock.html#listeners","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":66,"kind":2048,"name":"emit","url":"classes/redismock.html#emit","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":67,"kind":2048,"name":"eventNames","url":"classes/redismock.html#eventnames","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":68,"kind":2048,"name":"listenerCount","url":"classes/redismock.html#listenercount","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite tsd-is-inherited tsd-is-not-exported","parent":"RedisMock"},{"id":69,"kind":32,"name":"mock","url":"globals.html#mock","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":70,"kind":32,"name":"adapter","url":"globals.html#adapter","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":71,"kind":128,"name":"TestStorageAdapter","url":"classes/teststorageadapter.html","classes":"tsd-kind-class"},{"id":72,"kind":1024,"name":"options","url":"classes/teststorageadapter.html#options","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":73,"kind":1024,"name":"testInterface","url":"classes/teststorageadapter.html#testinterface","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":74,"kind":1024,"name":"isConnected","url":"classes/teststorageadapter.html#isconnected","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":75,"kind":1024,"name":"internalStorage","url":"classes/teststorageadapter.html#internalstorage","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":76,"kind":512,"name":"constructor","url":"classes/teststorageadapter.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":77,"kind":2048,"name":"checkConnection","url":"classes/teststorageadapter.html#checkconnection","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":78,"kind":2048,"name":"getConnectionStatus","url":"classes/teststorageadapter.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":79,"kind":2048,"name":"onConnect","url":"classes/teststorageadapter.html#onconnect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":80,"kind":2048,"name":"set","url":"classes/teststorageadapter.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":81,"kind":2048,"name":"get","url":"classes/teststorageadapter.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":82,"kind":2048,"name":"del","url":"classes/teststorageadapter.html#del","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":83,"kind":2048,"name":"acquireLock","url":"classes/teststorageadapter.html#acquirelock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":84,"kind":2048,"name":"releaseLock","url":"classes/teststorageadapter.html#releaselock","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":85,"kind":2048,"name":"isLockExists","url":"classes/teststorageadapter.html#islockexists","classes":"tsd-kind-method tsd-parent-kind-class","parent":"TestStorageAdapter"},{"id":86,"kind":256,"name":"LockedKeyRetrieveStrategy","url":"interfaces/lockedkeyretrievestrategy.html","classes":"tsd-kind-interface"},{"id":87,"kind":2048,"name":"getName","url":"interfaces/lockedkeyretrievestrategy.html#getname","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"LockedKeyRetrieveStrategy"},{"id":88,"kind":2048,"name":"get","url":"interfaces/lockedkeyretrievestrategy.html#get","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"LockedKeyRetrieveStrategy"},{"id":89,"kind":4,"name":"LockedKeyRetrieveStrategyTypes","url":"enums/lockedkeyretrievestrategytypes.html","classes":"tsd-kind-enum"},{"id":90,"kind":16,"name":"waitForResult","url":"enums/lockedkeyretrievestrategytypes.html#waitforresult","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LockedKeyRetrieveStrategyTypes"},{"id":91,"kind":16,"name":"runExecutor","url":"enums/lockedkeyretrievestrategytypes.html#runexecutor","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LockedKeyRetrieveStrategyTypes"},{"id":92,"kind":4194304,"name":"LockedKeyRetrieveStrategyType","url":"globals.html#lockedkeyretrievestrategytype","classes":"tsd-kind-type-alias"},{"id":93,"kind":256,"name":"Storage","url":"interfaces/storage.html","classes":"tsd-kind-interface"},{"id":94,"kind":2048,"name":"get","url":"interfaces/storage.html#get","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":95,"kind":2048,"name":"touch","url":"interfaces/storage.html#touch","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":96,"kind":2048,"name":"lockKey","url":"interfaces/storage.html#lockkey","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":97,"kind":2048,"name":"releaseKey","url":"interfaces/storage.html#releasekey","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":98,"kind":2048,"name":"keyIsLocked","url":"interfaces/storage.html#keyislocked","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":99,"kind":2048,"name":"del","url":"interfaces/storage.html#del","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":100,"kind":2048,"name":"getTags","url":"interfaces/storage.html#gettags","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":101,"kind":2048,"name":"set","url":"interfaces/storage.html#set","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":102,"kind":2048,"name":"getConnectionStatus","url":"interfaces/storage.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Storage"},{"id":103,"kind":256,"name":"StorageRecordTag","url":"interfaces/storagerecordtag.html","classes":"tsd-kind-interface"},{"id":104,"kind":1024,"name":"name","url":"interfaces/storagerecordtag.html#name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecordTag"},{"id":105,"kind":1024,"name":"version","url":"interfaces/storagerecordtag.html#version","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecordTag"},{"id":106,"kind":256,"name":"StorageRecord","url":"interfaces/storagerecord.html","classes":"tsd-kind-interface"},{"id":107,"kind":1024,"name":"key","url":"interfaces/storagerecord.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":108,"kind":1024,"name":"permanent","url":"interfaces/storagerecord.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":109,"kind":1024,"name":"expiresIn","url":"interfaces/storagerecord.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":110,"kind":1024,"name":"createdAt","url":"interfaces/storagerecord.html#createdat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":111,"kind":1024,"name":"value","url":"interfaces/storagerecord.html#value","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":112,"kind":1024,"name":"tags","url":"interfaces/storagerecord.html#tags","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StorageRecord"},{"id":113,"kind":256,"name":"ReadOptions","url":"interfaces/readoptions.html","classes":"tsd-kind-interface"},{"id":114,"kind":1024,"name":"lockedKeyRetrieveStrategyType","url":"interfaces/readoptions.html#lockedkeyretrievestrategytype","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ReadOptions"},{"id":115,"kind":256,"name":"ExpireOptions","url":"interfaces/expireoptions.html","classes":"tsd-kind-interface"},{"id":116,"kind":1024,"name":"expiresIn","url":"interfaces/expireoptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExpireOptions"},{"id":117,"kind":1024,"name":"permanent","url":"interfaces/expireoptions.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExpireOptions"},{"id":118,"kind":256,"name":"WriteOptions","url":"interfaces/writeoptions.html","classes":"tsd-kind-interface"},{"id":119,"kind":1024,"name":"tags","url":"interfaces/writeoptions.html#tags","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"WriteOptions"},{"id":120,"kind":1024,"name":"getTags","url":"interfaces/writeoptions.html#gettags","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"WriteOptions"},{"id":121,"kind":1024,"name":"expiresIn","url":"interfaces/writeoptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"WriteOptions"},{"id":122,"kind":1024,"name":"permanent","url":"interfaces/writeoptions.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"WriteOptions"},{"id":123,"kind":4194304,"name":"StorageRecordValue","url":"globals.html#storagerecordvalue","classes":"tsd-kind-type-alias"},{"id":124,"kind":4194304,"name":"StorageTags","url":"globals.html#storagetags","classes":"tsd-kind-type-alias"},{"id":125,"kind":65536,"name":"__type","url":"globals.html#storagetags.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"StorageTags"},{"id":126,"kind":4194304,"name":"ReadWriteOptions","url":"globals.html#readwriteoptions","classes":"tsd-kind-type-alias"},{"id":127,"kind":256,"name":"ExecutorContext","url":"interfaces/executorcontext.html","classes":"tsd-kind-interface"},{"id":128,"kind":1024,"name":"key","url":"interfaces/executorcontext.html#key","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExecutorContext"},{"id":129,"kind":1024,"name":"executor","url":"interfaces/executorcontext.html#executor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExecutorContext"},{"id":130,"kind":1024,"name":"options","url":"interfaces/executorcontext.html#options","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExecutorContext"},{"id":131,"kind":1024,"name":"record","url":"interfaces/executorcontext.html#record","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ExecutorContext"},{"id":132,"kind":4194304,"name":"ValueOfExecutor","url":"globals.html#valueofexecutor","classes":"tsd-kind-type-alias tsd-has-type-parameter"},{"id":133,"kind":4194304,"name":"Executor","url":"globals.html#executor","classes":"tsd-kind-type-alias"},{"id":134,"kind":65536,"name":"__type","url":"globals.html#executor.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"Executor"},{"id":135,"kind":256,"name":"RecordErrorContext","url":"interfaces/recorderrorcontext.html","classes":"tsd-kind-interface"},{"id":136,"kind":1024,"name":"record","url":"interfaces/recorderrorcontext.html#record","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RecordErrorContext"},{"id":137,"kind":1024,"name":"recordValue","url":"interfaces/recorderrorcontext.html#recordvalue","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"RecordErrorContext"},{"id":138,"kind":64,"name":"createRecord","url":"globals.html#createrecord","classes":"tsd-kind-function"},{"id":139,"kind":256,"name":"Command","url":"interfaces/command.html","classes":"tsd-kind-interface"},{"id":140,"kind":1024,"name":"fn","url":"interfaces/command.html#fn","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Command"},{"id":141,"kind":1024,"name":"params","url":"interfaces/command.html#params","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Command"},{"id":142,"kind":128,"name":"BaseStorage","url":"classes/basestorage.html","classes":"tsd-kind-class"},{"id":143,"kind":512,"name":"constructor","url":"classes/basestorage.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"BaseStorage"},{"id":144,"kind":1024,"name":"commandsQueue","url":"classes/basestorage.html#commandsqueue","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":145,"kind":1024,"name":"prefix","url":"classes/basestorage.html#prefix","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":146,"kind":1024,"name":"hashKeys","url":"classes/basestorage.html#hashkeys","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":147,"kind":1024,"name":"adapter","url":"classes/basestorage.html#adapter","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":148,"kind":2048,"name":"get","url":"classes/basestorage.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":149,"kind":2048,"name":"setTagVersions","url":"classes/basestorage.html#settagversions","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":150,"kind":2048,"name":"touch","url":"classes/basestorage.html#touch","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":151,"kind":2048,"name":"lockKey","url":"classes/basestorage.html#lockkey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":152,"kind":2048,"name":"releaseKey","url":"classes/basestorage.html#releasekey","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":153,"kind":2048,"name":"keyIsLocked","url":"classes/basestorage.html#keyislocked","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":154,"kind":2048,"name":"del","url":"classes/basestorage.html#del","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":155,"kind":2048,"name":"getTags","url":"classes/basestorage.html#gettags","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":156,"kind":2048,"name":"set","url":"classes/basestorage.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":157,"kind":2048,"name":"getConnectionStatus","url":"classes/basestorage.html#getconnectionstatus","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseStorage"},{"id":158,"kind":2048,"name":"isRecord","url":"classes/basestorage.html#isrecord","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":159,"kind":2048,"name":"createKey","url":"classes/basestorage.html#createkey","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":160,"kind":2048,"name":"createTagKey","url":"classes/basestorage.html#createtagkey","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":161,"kind":2048,"name":"executeCommandsFromQueue","url":"classes/basestorage.html#executecommandsfromqueue","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":162,"kind":2048,"name":"cachedCommand","url":"classes/basestorage.html#cachedcommand","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"BaseStorage"},{"id":163,"kind":32,"name":"TAGS_VERSIONS_ALIAS","url":"globals.html#tags_versions_alias","classes":"tsd-kind-variable"},{"id":164,"kind":4194304,"name":"BaseStorageOptions","url":"globals.html#basestorageoptions","classes":"tsd-kind-type-alias"},{"id":165,"kind":65536,"name":"__type","url":"globals.html#basestorageoptions.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"BaseStorageOptions"},{"id":166,"kind":32,"name":"adapter","url":"globals.html#basestorageoptions.__type.adapter","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"BaseStorageOptions.__type"},{"id":167,"kind":32,"name":"prefix","url":"globals.html#basestorageoptions.__type.prefix","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"BaseStorageOptions.__type"},{"id":168,"kind":32,"name":"hashKeys","url":"globals.html#basestorageoptions.__type.hashkeys","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"BaseStorageOptions.__type"},{"id":169,"kind":32,"name":"expiresIn","url":"globals.html#basestorageoptions.__type.expiresin","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"BaseStorageOptions.__type"},{"id":170,"kind":4194304,"name":"CommandFn","url":"globals.html#commandfn","classes":"tsd-kind-type-alias"},{"id":171,"kind":65536,"name":"__type","url":"globals.html#commandfn.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"CommandFn"},{"id":172,"kind":256,"name":"Logger","url":"interfaces/logger.html","classes":"tsd-kind-interface"},{"id":173,"kind":2048,"name":"info","url":"interfaces/logger.html#info","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Logger"},{"id":174,"kind":2048,"name":"trace","url":"interfaces/logger.html#trace","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Logger"},{"id":175,"kind":2048,"name":"warn","url":"interfaces/logger.html#warn","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Logger"},{"id":176,"kind":2048,"name":"error","url":"interfaces/logger.html#error","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Logger"},{"id":177,"kind":256,"name":"Manager","url":"interfaces/manager.html","classes":"tsd-kind-interface"},{"id":178,"kind":2048,"name":"get","url":"interfaces/manager.html#get","classes":"tsd-kind-method tsd-parent-kind-interface tsd-has-type-parameter","parent":"Manager"},{"id":179,"kind":2048,"name":"set","url":"interfaces/manager.html#set","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"Manager"},{"id":180,"kind":128,"name":"WaitForResultLockedKeyRetrieveStrategy","url":"classes/waitforresultlockedkeyretrievestrategy.html","classes":"tsd-kind-class"},{"id":181,"kind":512,"name":"constructor","url":"classes/waitforresultlockedkeyretrievestrategy.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":182,"kind":1024,"name":"maximumTimeout","url":"classes/waitforresultlockedkeyretrievestrategy.html#maximumtimeout","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":183,"kind":1024,"name":"requestTimeout","url":"classes/waitforresultlockedkeyretrievestrategy.html#requesttimeout","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":184,"kind":1024,"name":"keyIsLocked","url":"classes/waitforresultlockedkeyretrievestrategy.html#keyislocked","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":185,"kind":1024,"name":"getRecord","url":"classes/waitforresultlockedkeyretrievestrategy.html#getrecord","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":186,"kind":1024,"name":"logger","url":"classes/waitforresultlockedkeyretrievestrategy.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":187,"kind":2048,"name":"getName","url":"classes/waitforresultlockedkeyretrievestrategy.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":188,"kind":2048,"name":"get","url":"classes/waitforresultlockedkeyretrievestrategy.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"WaitForResultLockedKeyRetrieveStrategy"},{"id":189,"kind":32,"name":"DEFAULT_MAXIMUM_TIMEOUT","url":"globals.html#default_maximum_timeout","classes":"tsd-kind-variable"},{"id":190,"kind":32,"name":"DEFAULT_REQUEST_TIMEOUT","url":"globals.html#default_request_timeout","classes":"tsd-kind-variable"},{"id":191,"kind":4194304,"name":"KeyLockCheckFn","url":"globals.html#keylockcheckfn","classes":"tsd-kind-type-alias"},{"id":192,"kind":65536,"name":"__type","url":"globals.html#keylockcheckfn.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"KeyLockCheckFn"},{"id":193,"kind":4194304,"name":"GetRecordFn","url":"globals.html#getrecordfn","classes":"tsd-kind-type-alias"},{"id":194,"kind":65536,"name":"__type","url":"globals.html#getrecordfn.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"GetRecordFn"},{"id":195,"kind":4194304,"name":"WaitForResultLockedKeyRetrieveStrategyOptions","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions","classes":"tsd-kind-type-alias"},{"id":196,"kind":65536,"name":"__type","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type","classes":"tsd-kind-type-literal tsd-parent-kind-type-alias tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions"},{"id":197,"kind":32,"name":"maximumTimeout","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.maximumtimeout","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":198,"kind":32,"name":"requestTimeout","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.requesttimeout","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":199,"kind":32,"name":"keyLockCheckFn","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.keylockcheckfn","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":200,"kind":32,"name":"getRecord","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.getrecord","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":201,"kind":32,"name":"logger","url":"globals.html#waitforresultlockedkeyretrievestrategyoptions.__type.logger","classes":"tsd-kind-variable tsd-parent-kind-type-literal tsd-is-not-exported","parent":"WaitForResultLockedKeyRetrieveStrategyOptions.__type"},{"id":202,"kind":128,"name":"RunExecutorLockedKeyRetrieveStrategy","url":"classes/runexecutorlockedkeyretrievestrategy.html","classes":"tsd-kind-class"},{"id":203,"kind":2048,"name":"getName","url":"classes/runexecutorlockedkeyretrievestrategy.html#getname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RunExecutorLockedKeyRetrieveStrategy"},{"id":204,"kind":2048,"name":"get","url":"classes/runexecutorlockedkeyretrievestrategy.html#get","classes":"tsd-kind-method tsd-parent-kind-class","parent":"RunExecutorLockedKeyRetrieveStrategy"},{"id":205,"kind":256,"name":"ManagerOptions","url":"interfaces/manageroptions.html","classes":"tsd-kind-interface"},{"id":206,"kind":1024,"name":"prefix","url":"interfaces/manageroptions.html#prefix","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":207,"kind":1024,"name":"hashKeys","url":"interfaces/manageroptions.html#hashkeys","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":208,"kind":1024,"name":"logger","url":"interfaces/manageroptions.html#logger","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":209,"kind":1024,"name":"storage","url":"interfaces/manageroptions.html#storage","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":210,"kind":1024,"name":"refreshAheadFactor","url":"interfaces/manageroptions.html#refreshaheadfactor","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":211,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"interfaces/manageroptions.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerOptions"},{"id":212,"kind":1024,"name":"expiresIn","url":"interfaces/manageroptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"ManagerOptions"},{"id":213,"kind":1024,"name":"permanent","url":"interfaces/manageroptions.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"ManagerOptions"},{"id":214,"kind":128,"name":"BaseManager","url":"classes/basemanager.html","classes":"tsd-kind-class"},{"id":215,"kind":512,"name":"constructor","url":"classes/basemanager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"BaseManager"},{"id":216,"kind":1024,"name":"storage","url":"classes/basemanager.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":217,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"classes/basemanager.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":218,"kind":1024,"name":"logger","url":"classes/basemanager.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":219,"kind":2048,"name":"get","url":"classes/basemanager.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"BaseManager"},{"id":220,"kind":2048,"name":"set","url":"classes/basemanager.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"BaseManager"},{"id":221,"kind":2048,"name":"isTagsOutdated","url":"classes/basemanager.html#istagsoutdated","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":222,"kind":2048,"name":"updateCacheAndGetResult","url":"classes/basemanager.html#updatecacheandgetresult","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-protected","parent":"BaseManager"},{"id":223,"kind":2048,"name":"getLockedKeyRetrieveStrategy","url":"classes/basemanager.html#getlockedkeyretrievestrategy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"BaseManager"},{"id":224,"kind":64,"name":"createLogger","url":"globals.html#createlogger","classes":"tsd-kind-function"},{"id":225,"kind":256,"name":"RefreshAheadManagerOptions","url":"interfaces/refreshaheadmanageroptions.html","classes":"tsd-kind-interface"},{"id":226,"kind":1024,"name":"refreshAheadFactor","url":"interfaces/refreshaheadmanageroptions.html#refreshaheadfactor","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite","parent":"RefreshAheadManagerOptions"},{"id":227,"kind":1024,"name":"prefix","url":"interfaces/refreshaheadmanageroptions.html#prefix","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":228,"kind":1024,"name":"hashKeys","url":"interfaces/refreshaheadmanageroptions.html#hashkeys","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":229,"kind":1024,"name":"logger","url":"interfaces/refreshaheadmanageroptions.html#logger","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":230,"kind":1024,"name":"storage","url":"interfaces/refreshaheadmanageroptions.html#storage","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":231,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"interfaces/refreshaheadmanageroptions.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":232,"kind":1024,"name":"expiresIn","url":"interfaces/refreshaheadmanageroptions.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":233,"kind":1024,"name":"permanent","url":"interfaces/refreshaheadmanageroptions.html#permanent","classes":"tsd-kind-property tsd-parent-kind-interface tsd-is-inherited","parent":"RefreshAheadManagerOptions"},{"id":234,"kind":128,"name":"RefreshAheadManager","url":"classes/refreshaheadmanager.html","classes":"tsd-kind-class"},{"id":235,"kind":2048,"name":"getName","url":"classes/refreshaheadmanager.html#getname","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"RefreshAheadManager"},{"id":236,"kind":512,"name":"constructor","url":"classes/refreshaheadmanager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"RefreshAheadManager"},{"id":237,"kind":1024,"name":"refreshAheadFactor","url":"classes/refreshaheadmanager.html#refreshaheadfactor","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"RefreshAheadManager"},{"id":238,"kind":2048,"name":"get","url":"classes/refreshaheadmanager.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-overwrite","parent":"RefreshAheadManager"},{"id":239,"kind":2048,"name":"set","url":"classes/refreshaheadmanager.html#set","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"RefreshAheadManager"},{"id":240,"kind":2048,"name":"isRecordValid","url":"classes/refreshaheadmanager.html#isrecordvalid","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"RefreshAheadManager"},{"id":241,"kind":2048,"name":"isRecordExpireSoon","url":"classes/refreshaheadmanager.html#isrecordexpiresoon","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"RefreshAheadManager"},{"id":242,"kind":2048,"name":"refresh","url":"classes/refreshaheadmanager.html#refresh","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"RefreshAheadManager"},{"id":243,"kind":1024,"name":"storage","url":"classes/refreshaheadmanager.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":244,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"classes/refreshaheadmanager.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":245,"kind":1024,"name":"logger","url":"classes/refreshaheadmanager.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":246,"kind":2048,"name":"isTagsOutdated","url":"classes/refreshaheadmanager.html#istagsoutdated","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":247,"kind":2048,"name":"updateCacheAndGetResult","url":"classes/refreshaheadmanager.html#updatecacheandgetresult","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":248,"kind":2048,"name":"getLockedKeyRetrieveStrategy","url":"classes/refreshaheadmanager.html#getlockedkeyretrievestrategy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"RefreshAheadManager"},{"id":249,"kind":32,"name":"DEFAULT_REFRESH_AHEAD_FACTOR","url":"globals.html#default_refresh_ahead_factor","classes":"tsd-kind-variable"},{"id":250,"kind":256,"name":"CacheWithCustomStorageOptions","url":"interfaces/cachewithcustomstorageoptions.html","classes":"tsd-kind-interface"},{"id":251,"kind":1024,"name":"storage","url":"interfaces/cachewithcustomstorageoptions.html#storage","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CacheWithCustomStorageOptions"},{"id":252,"kind":256,"name":"CacheWithBaseStorageOptions","url":"interfaces/cachewithbasestorageoptions.html","classes":"tsd-kind-interface"},{"id":253,"kind":1024,"name":"adapter","url":"interfaces/cachewithbasestorageoptions.html#adapter","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"CacheWithBaseStorageOptions"},{"id":254,"kind":256,"name":"ManagerConstructor","url":"interfaces/managerconstructor.html","classes":"tsd-kind-interface tsd-has-type-parameter"},{"id":255,"kind":512,"name":"constructor","url":"interfaces/managerconstructor.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-interface","parent":"ManagerConstructor"},{"id":256,"kind":2048,"name":"getName","url":"interfaces/managerconstructor.html#getname","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"ManagerConstructor"},{"id":257,"kind":256,"name":"ManagerSelectorOptions","url":"interfaces/managerselectoroptions.html","classes":"tsd-kind-interface"},{"id":258,"kind":1024,"name":"manager","url":"interfaces/managerselectoroptions.html#manager","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"ManagerSelectorOptions"},{"id":259,"kind":128,"name":"Cache","url":"classes/cache.html","classes":"tsd-kind-class"},{"id":260,"kind":512,"name":"constructor","url":"classes/cache.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Cache"},{"id":261,"kind":1024,"name":"storage","url":"classes/cache.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":262,"kind":1024,"name":"logger","url":"classes/cache.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":263,"kind":1024,"name":"expiresIn","url":"classes/cache.html#expiresin","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":264,"kind":1024,"name":"managers","url":"classes/cache.html#managers","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":265,"kind":2048,"name":"get","url":"classes/cache.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter","parent":"Cache"},{"id":266,"kind":2048,"name":"set","url":"classes/cache.html#set","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cache"},{"id":267,"kind":2048,"name":"touch","url":"classes/cache.html#touch","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cache"},{"id":268,"kind":2048,"name":"registerManager","url":"classes/cache.html#registermanager","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cache"},{"id":269,"kind":2048,"name":"getManager","url":"classes/cache.html#getmanager","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"Cache"},{"id":270,"kind":4194304,"name":"CacheOptions","url":"globals.html#cacheoptions","classes":"tsd-kind-type-alias"},{"id":271,"kind":64,"name":"isCustomStorageOptions","url":"globals.html#iscustomstorageoptions","classes":"tsd-kind-function"},{"id":272,"kind":64,"name":"isBaseStorageOptions","url":"globals.html#isbasestorageoptions","classes":"tsd-kind-function"},{"id":273,"kind":128,"name":"TestStorage","url":"classes/teststorage.html","classes":"tsd-kind-class"},{"id":274,"kind":1024,"name":"storage","url":"classes/teststorage.html#storage","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":275,"kind":1024,"name":"get","url":"classes/teststorage.html#get","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":276,"kind":1024,"name":"touch","url":"classes/teststorage.html#touch","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":277,"kind":1024,"name":"lockKey","url":"classes/teststorage.html#lockkey","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":278,"kind":1024,"name":"releaseKey","url":"classes/teststorage.html#releasekey","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":279,"kind":1024,"name":"keyIsLocked","url":"classes/teststorage.html#keyislocked","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":280,"kind":1024,"name":"del","url":"classes/teststorage.html#del","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":281,"kind":1024,"name":"getTags","url":"classes/teststorage.html#gettags","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":282,"kind":1024,"name":"set","url":"classes/teststorage.html#set","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":283,"kind":1024,"name":"getConnectionStatus","url":"classes/teststorage.html#getconnectionstatus","classes":"tsd-kind-property tsd-parent-kind-class","parent":"TestStorage"},{"id":284,"kind":512,"name":"constructor","url":"classes/teststorage.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"TestStorage"},{"id":285,"kind":2097152,"name":"logger","url":"globals.html#logger","classes":"tsd-kind-object-literal tsd-is-not-exported"},{"id":286,"kind":32,"name":"info","url":"globals.html#logger.info","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"logger"},{"id":287,"kind":32,"name":"trace","url":"globals.html#logger.trace","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"logger"},{"id":288,"kind":32,"name":"warn","url":"globals.html#logger.warn","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"logger"},{"id":289,"kind":32,"name":"error","url":"globals.html#logger.error","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"logger"},{"id":290,"kind":32,"name":"mockManager","url":"globals.html#mockmanager","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":291,"kind":32,"name":"instance","url":"globals.html#instance","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":292,"kind":128,"name":"ReadThroughManager","url":"classes/readthroughmanager.html","classes":"tsd-kind-class"},{"id":293,"kind":2048,"name":"getName","url":"classes/readthroughmanager.html#getname","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"ReadThroughManager"},{"id":294,"kind":512,"name":"constructor","url":"classes/readthroughmanager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"ReadThroughManager"},{"id":295,"kind":2048,"name":"get","url":"classes/readthroughmanager.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-overwrite","parent":"ReadThroughManager"},{"id":296,"kind":2048,"name":"set","url":"classes/readthroughmanager.html#set","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"ReadThroughManager"},{"id":297,"kind":2048,"name":"isRecordValid","url":"classes/readthroughmanager.html#isrecordvalid","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"ReadThroughManager"},{"id":298,"kind":1024,"name":"storage","url":"classes/readthroughmanager.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":299,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"classes/readthroughmanager.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":300,"kind":1024,"name":"logger","url":"classes/readthroughmanager.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":301,"kind":2048,"name":"isTagsOutdated","url":"classes/readthroughmanager.html#istagsoutdated","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":302,"kind":2048,"name":"updateCacheAndGetResult","url":"classes/readthroughmanager.html#updatecacheandgetresult","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":303,"kind":2048,"name":"getLockedKeyRetrieveStrategy","url":"classes/readthroughmanager.html#getlockedkeyretrievestrategy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"ReadThroughManager"},{"id":304,"kind":128,"name":"WriteThroughManager","url":"classes/writethroughmanager.html","classes":"tsd-kind-class"},{"id":305,"kind":2048,"name":"getName","url":"classes/writethroughmanager.html#getname","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-static","parent":"WriteThroughManager"},{"id":306,"kind":512,"name":"constructor","url":"classes/writethroughmanager.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class tsd-is-overwrite","parent":"WriteThroughManager"},{"id":307,"kind":2048,"name":"get","url":"classes/writethroughmanager.html#get","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-overwrite","parent":"WriteThroughManager"},{"id":308,"kind":2048,"name":"set","url":"classes/writethroughmanager.html#set","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"WriteThroughManager"},{"id":309,"kind":2048,"name":"isRecordValid","url":"classes/writethroughmanager.html#isrecordvalid","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-private","parent":"WriteThroughManager"},{"id":310,"kind":1024,"name":"storage","url":"classes/writethroughmanager.html#storage","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":311,"kind":1024,"name":"lockedKeyRetrieveStrategies","url":"classes/writethroughmanager.html#lockedkeyretrievestrategies","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":312,"kind":1024,"name":"logger","url":"classes/writethroughmanager.html#logger","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":313,"kind":2048,"name":"isTagsOutdated","url":"classes/writethroughmanager.html#istagsoutdated","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":314,"kind":2048,"name":"updateCacheAndGetResult","url":"classes/writethroughmanager.html#updatecacheandgetresult","classes":"tsd-kind-method tsd-parent-kind-class tsd-has-type-parameter tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":315,"kind":2048,"name":"getLockedKeyRetrieveStrategy","url":"classes/writethroughmanager.html#getlockedkeyretrievestrategy","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited tsd-is-protected","parent":"WriteThroughManager"},{"id":316,"kind":2097152,"name":"loggerMock","url":"globals.html#loggermock","classes":"tsd-kind-object-literal tsd-is-not-exported"},{"id":317,"kind":32,"name":"error","url":"globals.html#loggermock.error","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"loggerMock"},{"id":318,"kind":32,"name":"getRecordMock","url":"globals.html#getrecordmock","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":319,"kind":32,"name":"keyLockCheckFnMock","url":"globals.html#keylockcheckfnmock","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":320,"kind":32,"name":"internalStorage","url":"globals.html#internalstorage","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":321,"kind":32,"name":"storage","url":"globals.html#storage","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":322,"kind":32,"name":"manager","url":"globals.html#manager","classes":"tsd-kind-variable tsd-is-not-exported"},{"id":323,"kind":65536,"name":"__type","url":"globals.html#internalstorage.__type","classes":"tsd-kind-type-literal tsd-parent-kind-variable tsd-is-not-exported","parent":"internalStorage"},{"id":324,"kind":1024,"name":"storage","url":"classes/basestorage.html#storage","classes":"tsd-kind-property tsd-parent-kind-class","parent":"BaseStorage"},{"id":325,"kind":2097152,"name":"testInterface","url":"globals.html#testinterface","classes":"tsd-kind-object-literal tsd-is-not-exported"},{"id":326,"kind":32,"name":"internalStorage","url":"globals.html#testinterface.internalstorage","classes":"tsd-kind-variable tsd-parent-kind-object-literal tsd-is-not-exported","parent":"testInterface"},{"id":327,"kind":65536,"name":"__type","url":"globals.html#testinterface.internalstorage.__type","classes":"tsd-kind-type-literal tsd-parent-kind-variable tsd-is-not-exported","parent":"testInterface.internalStorage"},{"id":328,"kind":32,"name":"testAdapter","url":"globals.html#testadapter","classes":"tsd-kind-variable tsd-is-not-exported"}]}; \ No newline at end of file diff --git a/docs/api/classes/basemanager.html b/docs/api/classes/basemanager.html index 0b809d3..ec42fac 100644 --- a/docs/api/classes/basemanager.html +++ b/docs/api/classes/basemanager.html @@ -134,7 +134,7 @@

constructor

  • Parameters

    @@ -156,7 +156,7 @@

    Protected lockedKey
    lockedKeyRetrieveStrategies: Map<string, LockedKeyRetrieveStrategy>
    @@ -166,7 +166,7 @@

    Protected logger

    logger: Logger
    @@ -176,7 +176,7 @@

    Protected storage

    storage: Storage
    @@ -194,7 +194,7 @@

    Abstract get

    Type parameters

    @@ -229,7 +229,7 @@

    Protected getLocked
  • Parameters

    @@ -252,7 +252,7 @@

    Protected isTagsOut
  • Parameters

    @@ -279,7 +279,7 @@

    Abstract set

    Parameters

    @@ -308,7 +308,7 @@

    Protected updateCache

    Type parameters

    @@ -446,4 +446,4 @@

    Legend

    - + \ No newline at end of file diff --git a/docs/api/classes/basestorage.html b/docs/api/classes/basestorage.html index 420ae77..58078fc 100644 --- a/docs/api/classes/basestorage.html +++ b/docs/api/classes/basestorage.html @@ -145,7 +145,7 @@

    constructor

  • Parameters

    @@ -167,7 +167,7 @@

    Private adapter

    @@ -183,7 +183,7 @@

    Private commandsQueue

    commandsQueue: Command[] = []
    @@ -198,7 +198,7 @@

    Private hashKeys

    hashKeys: boolean
    @@ -214,7 +214,7 @@

    Private prefix

    prefix: string
    @@ -229,7 +229,7 @@

    storage

    storage: any
    @@ -246,7 +246,7 @@

    Private cachedCommand

  • @@ -278,7 +278,7 @@

    Private createKey

  • @@ -308,7 +308,7 @@

    Private createTagKey<
  • Parameters

    @@ -332,7 +332,7 @@

    del

    @@ -360,7 +360,7 @@

    Private executeCommands
    @@ -383,7 +383,7 @@

    get

    @@ -413,7 +413,7 @@

    getConnectionStatus

    @@ -436,7 +436,7 @@

    getTags

    @@ -465,7 +465,7 @@

    Private isRecord

  • @@ -494,7 +494,7 @@

    keyIsLocked

    @@ -523,7 +523,7 @@

    lockKey

    @@ -552,7 +552,7 @@

    releaseKey

    @@ -580,7 +580,7 @@

    set

  • @@ -614,7 +614,7 @@

    setTagVersions

  • @@ -643,7 +643,7 @@

    touch

    @@ -813,4 +813,4 @@

    Legend

    - + \ No newline at end of file diff --git a/docs/api/classes/cache.html b/docs/api/classes/cache.html index f99e21c..2dae539 100644 --- a/docs/api/classes/cache.html +++ b/docs/api/classes/cache.html @@ -139,7 +139,7 @@

    constructor

  • Parameters

    @@ -161,7 +161,7 @@

    Private expiresIn

    expiresIn: number
    @@ -171,7 +171,7 @@

    Private logger

    logger: Logger
    @@ -181,7 +181,7 @@

    Private managers

    managers: Map<string, Manager>
    @@ -191,7 +191,7 @@

    Private storage

    storage: Storage
    @@ -208,7 +208,7 @@

    get

  • @@ -249,7 +249,7 @@

    Private getManager

  • @@ -271,13 +271,13 @@

    Returns

    registerManager

    • @@ -288,7 +288,7 @@

      registerManager

      Parameters

      • -
        ManagerClass: ManagerConstructor
        +
        managerClass: ManagerConstructor
      • Optional name: string | null
        @@ -311,7 +311,7 @@

        set

      • @@ -345,7 +345,7 @@

        touch

      • @@ -489,4 +489,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/classes/readthroughmanager.html b/docs/api/classes/readthroughmanager.html index 5adc5e2..7612227 100644 --- a/docs/api/classes/readthroughmanager.html +++ b/docs/api/classes/readthroughmanager.html @@ -131,7 +131,7 @@

        constructor

        Parameters

        @@ -154,7 +154,7 @@

        Protected lockedKey @@ -165,7 +165,7 @@

        Protected logger

        @@ -176,7 +176,7 @@

        Protected storage

        @@ -195,7 +195,7 @@

        get

        Implementation of Manager.get

        Overrides BaseManager.get

        Type parameters

        @@ -231,7 +231,7 @@

        Protected getLocked

        Parameters

        @@ -254,7 +254,7 @@

        Private isRecordValid
      • Parameters

        @@ -278,7 +278,7 @@

        Protected isTagsOut

        Parameters

        @@ -306,7 +306,7 @@

        set

        Implementation of Manager.set

        Overrides BaseManager.set

        Parameters

        @@ -336,7 +336,7 @@

        Protected updateCache

        Inherited from BaseManager.updateCacheAndGetResult

        Type parameters

        @@ -368,7 +368,7 @@

        Static getName

      • Returns string

        @@ -497,4 +497,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/classes/redismock.html b/docs/api/classes/redismock.html index 4f8ba51..1f722dd 100644 --- a/docs/api/classes/redismock.html +++ b/docs/api/classes/redismock.html @@ -120,7 +120,7 @@

        Static defaultMaxListe @@ -139,7 +139,7 @@

        addListener

        Inherited from EventEmitter.addListener

        Overrides EventEmitter.addListener

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:946
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:946

        Parameters

        @@ -185,7 +185,7 @@

        emit

        Inherited from EventEmitter.emit

        Overrides EventEmitter.emit

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:956
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:956

        Parameters

        @@ -213,7 +213,7 @@

        eventNames

        Inherited from EventEmitter.eventNames

        Overrides EventEmitter.eventNames

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:957
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:957

        Returns Array<string | symbol>

        @@ -232,7 +232,7 @@

        getMaxListeners

        Inherited from EventEmitter.getMaxListeners

        Overrides EventEmitter.getMaxListeners

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:954
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:954

        Returns number

        @@ -251,7 +251,7 @@

        listenerCount

        Inherited from EventEmitter.listenerCount

        Overrides EventEmitter.listenerCount

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:958
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:958

        Parameters

        @@ -276,7 +276,7 @@

        listeners

        Inherited from EventEmitter.listeners

        Overrides EventEmitter.listeners

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:955
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:955

        Parameters

        @@ -301,7 +301,7 @@

        on

        Inherited from EventEmitter.on

        Overrides EventEmitter.on

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:947
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:947

        Parameters

        @@ -347,7 +347,7 @@

        once

        Inherited from EventEmitter.once

        Overrides EventEmitter.once

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:948
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:948

        Parameters

        @@ -393,7 +393,7 @@

        prependListener

        Inherited from EventEmitter.prependListener

        Overrides EventEmitter.prependListener

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:949
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:949

        Parameters

        @@ -439,7 +439,7 @@

        prependOnceListener

        Inherited from EventEmitter.prependOnceListener

        Overrides EventEmitter.prependOnceListener

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:950
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:950

        Parameters

        @@ -485,7 +485,7 @@

        removeAllListeners

        Inherited from EventEmitter.removeAllListeners

        Overrides EventEmitter.removeAllListeners

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:952
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:952

        Parameters

        @@ -510,7 +510,7 @@

        removeListener

        Inherited from EventEmitter.removeListener

        Overrides EventEmitter.removeListener

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:951
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:951

        Parameters

        @@ -556,7 +556,7 @@

        setMaxListeners

        Inherited from EventEmitter.setMaxListeners

        Overrides EventEmitter.setMaxListeners

          -
        • Defined in /home/d.y.gaevskiy/PFA/libs-server-cache-manager/node_modules/@types/node/index.d.ts:953
        • +
        • Defined in /home/extdgaevskiy/PFA/cachalot/node_modules/@types/node/index.d.ts:953

        Parameters

        @@ -580,7 +580,7 @@

        Static listenerCount

        Parameters

        @@ -730,4 +730,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/classes/redisstorageadapter.html b/docs/api/classes/redisstorageadapter.html index b91a3b0..990927c 100644 --- a/docs/api/classes/redisstorageadapter.html +++ b/docs/api/classes/redisstorageadapter.html @@ -134,7 +134,7 @@

        constructor

      • @@ -164,7 +164,7 @@

        Private connectionStatusconnectionStatus: ConnectionStatus = ConnectionStatus.DISCONNECTED

        @@ -179,7 +179,7 @@

        Private options

        options: Required<RedisStorageAdapterOptions>
        @@ -194,7 +194,7 @@

        Private redisInstance

        redisInstance: Redis
        @@ -217,7 +217,7 @@

        acquireLock

        @@ -246,7 +246,7 @@

        del

        @@ -275,7 +275,7 @@

        get

        @@ -304,7 +304,7 @@

        getConnectionStatus

        @@ -327,7 +327,7 @@

        isLockExists

        @@ -355,7 +355,7 @@

        onConnect

      • @@ -402,7 +402,7 @@

        releaseLock

        @@ -431,7 +431,7 @@

        set

        @@ -466,7 +466,7 @@

        Private setConnection
      • @@ -612,4 +612,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/classes/refreshaheadmanager.html b/docs/api/classes/refreshaheadmanager.html index 868ebd1..0d559de 100644 --- a/docs/api/classes/refreshaheadmanager.html +++ b/docs/api/classes/refreshaheadmanager.html @@ -134,7 +134,7 @@

        constructor

        Parameters

        @@ -157,7 +157,7 @@

        Protected lockedKey @@ -168,7 +168,7 @@

        Protected logger

        @@ -178,7 +178,7 @@

        Private refreshAheadF
        refreshAheadFactor: number
        @@ -189,7 +189,7 @@

        Protected storage

        @@ -208,7 +208,7 @@

        get

        Implementation of Manager.get

        Overrides BaseManager.get

        Type parameters

        @@ -244,7 +244,7 @@

        Protected getLocked

        Parameters

        @@ -267,7 +267,7 @@

        Private isRecordExpir
      • Parameters

        @@ -290,7 +290,7 @@

        Private isRecordValid
      • Parameters

        @@ -314,7 +314,7 @@

        Protected isTagsOut

        Parameters

        @@ -340,7 +340,7 @@

        Private refresh

      • Parameters

        @@ -371,7 +371,7 @@

        set

        Implementation of Manager.set

        Overrides BaseManager.set

        Parameters

        @@ -401,7 +401,7 @@

        Protected updateCache

        Inherited from BaseManager.updateCacheAndGetResult

        Type parameters

        @@ -434,7 +434,7 @@

        Static getName

      • Returns string

        @@ -442,7 +442,7 @@

        Returns string

        Returns string

        @@ -580,4 +580,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/classes/runexecutorlockedkeyretrievestrategy.html b/docs/api/classes/runexecutorlockedkeyretrievestrategy.html index 7491629..80f4a24 100644 --- a/docs/api/classes/runexecutorlockedkeyretrievestrategy.html +++ b/docs/api/classes/runexecutorlockedkeyretrievestrategy.html @@ -115,7 +115,7 @@

        get

        Parameters

        @@ -139,7 +139,7 @@

        getName

        Returns string

        @@ -241,4 +241,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/classes/teststorage.html b/docs/api/classes/teststorage.html index 73f6494..16b91cb 100644 --- a/docs/api/classes/teststorage.html +++ b/docs/api/classes/teststorage.html @@ -120,7 +120,7 @@

        constructor

      • Parameters

        @@ -143,7 +143,7 @@

        del

        @@ -154,7 +154,7 @@

        get

        @@ -165,7 +165,7 @@

        getConnectionStatus

        @@ -176,7 +176,7 @@

        getTags

        @@ -187,7 +187,7 @@

        keyIsLocked

        @@ -198,7 +198,7 @@

        lockKey

        @@ -209,7 +209,7 @@

        releaseKey

        @@ -220,7 +220,7 @@

        set

        @@ -230,7 +230,7 @@

        storage

        storage: any
        @@ -241,7 +241,7 @@

        touch

        @@ -367,4 +367,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/classes/teststorageadapter.html b/docs/api/classes/teststorageadapter.html index 8ae9994..d09e2f2 100644 --- a/docs/api/classes/teststorageadapter.html +++ b/docs/api/classes/teststorageadapter.html @@ -128,7 +128,7 @@

        constructor

      • Parameters

        @@ -153,7 +153,7 @@

        internalStorage

        internalStorage: any
        @@ -163,7 +163,7 @@

        isConnected

        isConnected: boolean
        @@ -173,7 +173,7 @@

        options

        @@ -183,7 +183,7 @@

        testInterface

        testInterface: any
        @@ -201,7 +201,7 @@

        acquireLock

        Parameters

        @@ -224,7 +224,7 @@

        checkConnection

      • Returns void

        @@ -242,7 +242,7 @@

        del

        Parameters

        @@ -266,7 +266,7 @@

        get

        Parameters

        @@ -290,7 +290,7 @@

        getConnectionStatus

        Returns ConnectionStatus

        @@ -308,7 +308,7 @@

        isLockExists

        Parameters

        @@ -331,7 +331,7 @@

        onConnect

      • Returns ConnectionStatus

        @@ -349,7 +349,7 @@

        releaseLock

        Parameters

        @@ -372,7 +372,7 @@

        set

      • Parameters

        @@ -519,4 +519,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/classes/waitforresultlockedkeyretrievestrategy.html b/docs/api/classes/waitforresultlockedkeyretrievestrategy.html index ae50804..7fac599 100644 --- a/docs/api/classes/waitforresultlockedkeyretrievestrategy.html +++ b/docs/api/classes/waitforresultlockedkeyretrievestrategy.html @@ -132,7 +132,7 @@

        constructor

      • Parameters

        @@ -154,7 +154,7 @@

        Private getRecord

        getRecord: GetRecordFn
        @@ -164,7 +164,7 @@

        Private keyIsLocked

        keyIsLocked: KeyLockCheckFn
        @@ -174,7 +174,7 @@

        Private logger

        logger: Logger
        @@ -184,7 +184,7 @@

        Private maximumTimeout

        maximumTimeout: number
      • @@ -194,7 +194,7 @@

        Private requestTimeout

        requestTimeout: number
      • @@ -212,7 +212,7 @@

        get

        Parameters

        @@ -236,7 +236,7 @@

        getName

        Returns string

        @@ -356,4 +356,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/classes/writethroughmanager.html b/docs/api/classes/writethroughmanager.html index d9233f5..5d9ebcc 100644 --- a/docs/api/classes/writethroughmanager.html +++ b/docs/api/classes/writethroughmanager.html @@ -131,7 +131,7 @@

        constructor

        Parameters

        @@ -154,7 +154,7 @@

        Protected lockedKey @@ -165,7 +165,7 @@

        Protected logger

        @@ -176,7 +176,7 @@

        Protected storage

        @@ -195,7 +195,7 @@

        get

        Implementation of Manager.get

        Overrides BaseManager.get

        Type parameters

        @@ -231,7 +231,7 @@

        Protected getLocked

        Parameters

        @@ -254,7 +254,7 @@

        Private isRecordValid
      • Parameters

        @@ -278,7 +278,7 @@

        Protected isTagsOut

        Parameters

        @@ -306,7 +306,7 @@

        set

        Implementation of Manager.set

        Overrides BaseManager.set

        Parameters

        @@ -336,7 +336,7 @@

        Protected updateCache

        Inherited from BaseManager.updateCacheAndGetResult

        Type parameters

        @@ -368,7 +368,7 @@

        Static getName

      • Returns string

        @@ -497,4 +497,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/enums/connectionstatus.html b/docs/api/enums/connectionstatus.html index 5b449fa..fb6b8f1 100644 --- a/docs/api/enums/connectionstatus.html +++ b/docs/api/enums/connectionstatus.html @@ -89,7 +89,7 @@

        CONNECTED

        CONNECTED: = "connected"
        @@ -99,7 +99,7 @@

        CONNECTING

        CONNECTING: = "connecting"
        @@ -109,7 +109,7 @@

        DISCONNECTED

        DISCONNECTED: = "disconnected"
        @@ -211,4 +211,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/enums/lockedkeyretrievestrategytypes.html b/docs/api/enums/lockedkeyretrievestrategytypes.html index 17c8c4b..33427a4 100644 --- a/docs/api/enums/lockedkeyretrievestrategytypes.html +++ b/docs/api/enums/lockedkeyretrievestrategytypes.html @@ -88,7 +88,7 @@

        runExecutor

        runExecutor: = "runExecutor"
        @@ -98,7 +98,7 @@

        waitForResult

        waitForResult: = "waitForResult"
        @@ -197,4 +197,4 @@

        Legend

        - + \ No newline at end of file diff --git a/docs/api/globals.html b/docs/api/globals.html index 480dba9..adc154e 100644 --- a/docs/api/globals.html +++ b/docs/api/globals.html @@ -144,7 +144,6 @@

        Variables

      • DEFAULT_OPERATION_TIMEOUT
      • DEFAULT_REFRESH_AHEAD_FACTOR
      • DEFAULT_REQUEST_TIMEOUT
      • -
      • MockManager
      • TAGS_VERSIONS_ALIAS
      • adapter
      • getRecordMock
      • @@ -153,6 +152,7 @@

        Variables

      • keyLockCheckFnMock
      • manager
      • mock
      • +
      • mockManager
      • storage
      • testAdapter
      @@ -193,7 +193,7 @@

      BaseStorageOptions

      BaseStorageOptions: object
      @@ -220,7 +220,7 @@

      CacheOptions

      @@ -230,7 +230,7 @@

      CommandArgument

      CommandArgument: string | number
      @@ -240,7 +240,7 @@

      CommandFn

      CommandFn: function
      @@ -277,7 +277,7 @@

      Executor

      Executor: function
      @@ -311,7 +311,7 @@

      GetRecordFn

      GetRecordFn: function
      @@ -342,7 +342,7 @@

      KeyLockCheckFn

      KeyLockCheckFn: function
      @@ -376,7 +376,7 @@

      LockedKeyRetrieveStrategyType

      LockedKeyRetrieveStrategyType: keyof LockedKeyRetrieveStrategyTypes
      @@ -386,7 +386,7 @@

      ReadWriteOptions

      ReadWriteOptions: ReadOptions & WriteOptions
      @@ -396,7 +396,7 @@

      RedisStorageAdapterOptions

      RedisStorageAdapterOptions: object
      @@ -417,7 +417,7 @@

      StorageRecordValue

      StorageRecordValue: object | string | number | null
      @@ -427,7 +427,7 @@

      StorageTags

      StorageTags: object
      @@ -445,7 +445,7 @@

      ValueOfExecutor

      ValueOfExecutor: ValueOfExecutor<V>
      @@ -455,7 +455,7 @@

      WaitForResultLockedKeyRetrieveStrategyOpt
      WaitForResultLockedKeyRetrieveStrategyOptions: object
      @@ -488,7 +488,7 @@

      Const CACHE_PREFIX

      CACHE_PREFIX: "cache" = "cache"
      @@ -503,7 +503,7 @@

      Const DEFAULT_LOCK_EXPI
      DEFAULT_LOCK_EXPIRES: 20000 = 20000
      @@ -513,7 +513,7 @@

      Const DEFAULT_MAXIMUM_T
      DEFAULT_MAXIMUM_TIMEOUT: 3000 = 3000
      @@ -523,7 +523,7 @@

      Const DEFAULT_OPERATION_DEFAULT_OPERATION_TIMEOUT: 200 = 200

      @@ -533,7 +533,7 @@

      Const DEFAULT_REFRESH_A
      DEFAULT_REFRESH_AHEAD_FACTOR: 0.8 = 0.8
      @@ -543,17 +543,7 @@

      Const DEFAULT_REQUEST_T
      DEFAULT_REQUEST_TIMEOUT: 250 = 250
      - -
      - -

      Const MockManager

      -
      MockManager: MockManager = class {get: any = jest.fn().mockResolvedValue('mockResult');set: any = jest.fn();static getName: any = () => 'mock';}
      -
      @@ -563,7 +553,7 @@

      Const TAGS_VERSIONS_ALI
      TAGS_VERSIONS_ALIAS: "cache-tags-versions" = "cache-tags-versions"
      @@ -573,7 +563,7 @@

      Let adapter

      adapter: RedisStorageAdapter = new RedisStorageAdapter(mock)
      @@ -583,7 +573,7 @@

      Const getRecordMock

      getRecordMock: Mock<any, any> = jest.fn()
      @@ -593,9 +583,9 @@

      Let instance

      instance: any
      @@ -605,9 +595,9 @@

      Let internalStorage

      internalStorage: object
      @@ -622,7 +612,7 @@

      Const keyLockCheck
      keyLockCheckFnMock: Mock<any, any> = jest.fn()
      @@ -632,9 +622,9 @@

      Let manager

      manager: any
      @@ -644,7 +634,17 @@

      Let mock

      mock: RedisMock = new RedisMock()
      + +
      + +

      Const mockManager

      +
      mockManager: mockManager = class {static getName: any = () => 'mock';get: any = jest.fn().mockResolvedValue('mockResult');set: any = jest.fn();}
      +
      @@ -654,10 +654,10 @@

      Let storage

      storage: any
      @@ -667,7 +667,7 @@

      Let testAdapter

      testAdapter: any
      @@ -684,7 +684,7 @@

      OperationTimeoutError

    • Parameters

      @@ -707,7 +707,7 @@

      ParseError

    • Parameters

      @@ -730,7 +730,7 @@

      RequestMaximumTimeoutExceededError

    • Parameters

      @@ -756,7 +756,7 @@

      WaitForResultError

    • Parameters

      @@ -779,7 +779,7 @@

      createLogger

    • Parameters

      @@ -805,7 +805,7 @@

      createRecord

    • Parameters

      @@ -837,7 +837,7 @@

      default

    • Parameters

      @@ -866,7 +866,7 @@

      Const isBaseStorage

      Parameters

      @@ -889,7 +889,7 @@

      Const isCustomStorage

      Parameters

      @@ -912,7 +912,7 @@

      Const withTimeout

    • Parameters

      @@ -937,7 +937,7 @@

      Const ERRORS

      ERRORS: object
      @@ -946,7 +946,7 @@

      OperationTimeoutError

      OperationTimeoutError: string = "OperationTimeoutError"
      @@ -956,7 +956,7 @@

      ParseError

      ParseError: string = "ParseError"
      @@ -966,7 +966,7 @@

      RequestMaximumTimeoutExceededError

      RequestMaximumTimeoutExceededError: string = "RequestMaximumTimeoutExceededError"
      @@ -976,7 +976,7 @@

      WaitForResultError

      WaitForResultError: string = "WaitForResultError"
      @@ -987,7 +987,7 @@

      Const EXPIRES_IN

      EXPIRES_IN: object
      @@ -996,7 +996,7 @@

      day

      day: number = 86400000
      @@ -1006,7 +1006,7 @@

      hour

      hour: number = 3600000
      @@ -1016,7 +1016,7 @@

      minute

      minute: number = 60000
      @@ -1027,10 +1027,10 @@

      Const logger

      logger: object
      @@ -1039,10 +1039,10 @@

      error

      error: Mock<any, any> = jest.fn()
      @@ -1052,10 +1052,10 @@

      info

      info: Mock<any, any> = jest.fn()
      @@ -1065,10 +1065,10 @@

      trace

      trace: Mock<any, any> = jest.fn()
      @@ -1078,10 +1078,10 @@

      warn

      warn: Mock<any, any> = jest.fn()
      @@ -1092,7 +1092,7 @@

      Const loggerMock

      loggerMock: object
      @@ -1101,7 +1101,7 @@

      error

      error: Mock<any, any> = jest.fn()
      @@ -1112,7 +1112,7 @@

      Const testInterface

      testInterface: object
      @@ -1121,7 +1121,7 @@

      internalStorage

      internalStorage: object
      @@ -1305,9 +1305,6 @@

      Type declaration

    • DEFAULT_REQUEST_TIMEOUT
    • -
    • - MockManager -
    • TAGS_VERSIONS_ALIAS
    • @@ -1332,6 +1329,9 @@

      Type declaration

    • mock
    • +
    • + mockManager +
    • storage
    • @@ -1451,4 +1451,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/index.html b/docs/api/index.html index 3f3e7ac..99ff8d9 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -64,44 +64,47 @@

      cachalot

      -

      PFA Cache Manager

      -

      pipeline status - coverage report

      -

      Библиотека предназначена для кеширования результатов выполнения запросов. Из особенностей:

      +

      Cachalot

      +

      Build status + Coveralls github + Written in typescript + npm

      +

      The library is designed to cache query results. Features:

        -
      • Реализует популярные стратегии кэширования (Read-Through, Write-Through, Refresh-Ahead), а также позволяет их комбинировать
      • -
      • Определяет интерфейс адаптера, что позволяет использовать его с любыми key-value storage для которых написан соответствующий адаптер
      • -
      • Поставляется с адаптером для Redis
      • -
      • Позволяет использовать префиксы для ключей, автоматическое хэширование
      • -
      • Позволяет передать логгер который будет использоваться для вывода информационных сообщений и ошибок
      • -
      • Поддерживает различные стратегии поведения ожидания записи из кэша (тяжелые запросы), подробнее ниже
      • +
      • Implements popular caching strategies (Read-Through, Write-Through, Refresh-Ahead), and also allows them to be combined
      • +
      • Defines an adapter interface that allows you to use it with any key-value storage for which the corresponding adapter is written
      • +
      • Comes with adapter for redis
      • +
      • Allows to use prefixes for keys, automatic hashing
      • +
      • Allows to pass in a logger that will be used to display informational messages and errors
      • +
      • Supports various behaviors of cache write waiting (heavy queries), more details below.

      Getting started

      -

      Для иниализации instance Cache требуется:

      +

      To initialize Cache instance, you need:

        -
      • StorageAdapter (в примере ниже - адаптер для соединения с redis). RedisStorageAdapter принимает в качестве аргумента instance ioredis клиента.
      • -
      • Объект настроек. В опциях доступны следующие параметры:

        +
      • StorageAdapter (in the example below, an adapter for connecting to redis). RedisStorageAdapter takes as an argument the instance of ioredis client.
      • +
      • Settings object. The options are the following options:

          -
        • prefix - превфикс используемый CacheManager для хранения ключей. По сути - это неймспейс для конкретного CacheManager
        • -
        • logger - instance логгера. Должен отвечать имплементировать интерфейс:

          +
        • prefix - prefix used by CacheManager for storing keys. In essence, this is the namespace for a specific CacheManager.

          +
        • +
        • logger - instance of logger. Must implement following interface:

          interface Logger {
          -  info(...args: any[]): void;
          -  trace(...args: any[]): void;
          -  warn(...args: any[]): void;
          -  error(...args: any[]): void;
          + info(...args: any[]): void;
          + trace(...args: any[]): void;
          + warn(...args: any[]): void;
          + error(...args: any[]): void;
           }
        • -
        • expiresIn - время, через которое ключи теряют актуальность (мс)
        • +
        • expiresIn - the time after which the keys lose relevance (ms)
      -
      Пример использования:
      -

      Инициализация:

      -
      // cache-manager.ts
      +				
      Example of use:
      +

      Initialization:

      +
      // cache.ts
       
       import Redis from 'ioredis';
      -import logger from './logger';
       import Cache, { RedisStorageAdapter } from 'cachalot';
      +import logger from './logger';
       
       const redis = new Redis();
       
      @@ -109,66 +112,67 @@ 
      Пример использования:
      adapter: new RedisStorageAdapter(redis), logger, });
      -

      Основных методов работы с Cache три, их поведение зависит от выбранной стратегии кэширования:

      -

      get получает данные из кэша

      +

      There are three main methods of working with Cache; their behavior depends on the chosen caching strategy:

      +

      get gets cache data

      // get-something.ts
      -import { cache } from './cache-manager'
      +import { cache } from './cache'
       
      -const cacheKey = 'something:id100'; // ключ по которому осуществляется запись и доступ к значению
      +const cacheKey = 'something:id100'; // key that records and accesses the value
       
       function getSomething() {
         return cache.get(
             cacheKey,
      -      () => executor('hello', 'world'), // executor - функция, возвращающая промис. Выполняется если не удалось получить валидную запись из кэша
      -      { tags: [cacheKey, 'something'] }, // на каждую запись можно "повесить" теги. По любому из них запись можно инвалидировать
      +      () => executor('hello', 'world'), // executor is a function that returns promise. Run if failed to get valid cache entry
      +      { tags: [cacheKey, 'something'] }, // you can associate tags with any cache record. You can later invalidate record with any of them.
           );
       }
      -

      get сам проверит теги и сравнит их версии с текущей датой, по необходимости выполнит executor и вернет его значение. - Опции для get:

      +

      get will check the tags and compare their versions with the current date, runs an executor if necessary and returns result. + Options for get:

        -
      • expiresIn?: number; - Число секунд после которых значения ключа считается устарешим
      • -
      • tags?: string[] - Теги - ключи по которым cache-manager проверяет валидность той или иной записи. Если значение тега в кэше + время инвалидации < текушее время то тег будет считаться невалидным и запись необходимо будет получить с помощью executor
      • +
      • expiresIn?: number; - The number of milliseconds after which key values are considered expired
      • +
      • tags?: string[] - Tags - keys for which checks the validity of a particular record. If the tag value in the cache + invalidation time is <the current time, then the tag will be considered invalid and the record will need to be obtained using the executor
      • +
      • getTags?: (executorResult) => string[] function which extracts tags from executor result. These tags will be merged with tags given in option below.
      -

      Следующий метод - touch - служит для инвалидации тегов. Вызов этого метода с одним из тегов сделает все записи в кэше с этим тегом невалидными. - Может использоваться как для инвалидации одной записи (например создав уникальный id), так и группы записей.

      -

      Пример:

      -
      import { cache } from './cache-manager'
      +				

      The next method, "touch", serves to invalidate tags. Calling this method with one of the tags will make all records in the cache with this tag invalid. + It can be used both to invalidate a single record (for example, by creating a unique id) or a group of records.

      +

      Example:

      +
      import { cache } from './cache'
       
       async function createSomething() {
      -  await cache.touch(['something']) // инвалидирует все записи с тегом something
      +  await cache.touch(['something']) // invalidates all entries with the tag "something"
       }
      -

      Последний метод - set, используется в стратегиях Write-Through для обновления записей

      -

      Отметим - что touch не имеет смысла при использовании Write-Through в чистом виде, также как и нет смысла использовать set в стратегиях Refresh-Ahead и Read-Through

      +

      The latter method is set, used in write-through strategies to update entries.

      +

      Note that touch does not make sense when using Write-Through in its pure form, just as there is no point in using set in the Refresh-Ahead and Read-Through strategies

      Locked key retrieve strategies

      -

      Cache manager позволяет задать стратегию поведения get в случае если запись в кэше заблокирована (для обновления). Доступные стратегии:

      -

      waitForResult - get будет ожидать когда результат появится в кэше и блокировка снимется. Хорошо использовать при тяжелых запросах и средней нагрузке - . При высоких нагрузках может приводить к появлению спайков из-за выстраивающихся в очередь запросов. Эта стратегия используется по умолчанию

      -

      runExecutor - get будет сразу вызывать executor и возвращать его результат. Хорошо в случаях когда запросы легкие. Минус этой стратегии в временном увеличении нагрузки на БД в момент обновления записи. В будущей мажорной версии cache-manager эта стратегия будет использоваться по умолчанию

      -

      Для каждой записи стратегию можно задать индивидуально. Для этого ее имя нужно передать в опциях readThrough

      +

      Cachalot allows you to set a strategy for get behavior if the cache entry is locked (for updating). Available strategies:

      +

      waitForResult -get will wait for the result to appear in the cache and the lock will be removed. Good to use with heavy demands and average load + . Under high loads, spikes can occur due to queuing requests.

      +

      runExecutor -get will immediately call the executor and return its result. Good in cases where requests are light. The disadvantage of + this strategy is a temporary increase in the load on the database at the time of updating the record. This strategy is used by default.

      +

      For each entry, the strategy can be set individually. To do this, its name must be passed in the readThrough options.

      cache.get('something:id100', () => executor('hello', 'world'), {
           tags: [cacheKey, 'something'],
           lockedKeyRetrieveStrategy: 'runExecutor'
         },
       );

      Cache Managers

      -

      Для всех примеров выше используется стратегия Refresh-Ahead. Эта стратегия используется по умолчанию, но есть возможность подключить и другие стратегии из кэш менеджера. - Разные стратегии кэширования реализуют разные классы "менеджеры". У каждого менеджера есть строковый идентификатор. - При регистрации стратегии он получается вызовом статического метода getName класса менеджера. Далее тот же идентификатор можно использовать - в вызовах get и set чтобы сообщить экземпляру Cache какому менеджеру делегировать вызов.

      +

      For all the examples above, the Refresh-Ahead strategy is used. This strategy is used by default, but it is possible to connect other strategies from cachalot. + Different caching strategies implement different classes of "managers". Each manager has a string identifier. + When registering a strategy, it is obtained by calling the getName static method of the manager class. Further, the same identifier can be used + in get and set calls to tell the Cache instance to which manager to delegate the call.

      Refresh-Ahead

      -

      В стратегии Refresh-Ahead Cache позволяет разработчику настроить кэш для автоматической и асинхронной перезагрузки (обновления) любой недавно доступной записи в кэше из загрузчика кеша до истечения срока его действия. В результате после того, как часто используемая запись вошла в кэш, приложение не будет ощущать влияние чтения на потенциально медленное хранилище кеша, когда запись перезагружается из-за истечения срока действия. Асинхронное обновление запускается только при доступе к объекту, достаточно близкому к его времени истечения - если к объекту обращаются после его истечения, Cache выполнит синхронное чтение из хранилища кеша, чтобы обновить его значение.

      -

      Время опережающего обновления выражается в процентах от времени истечения срока действия записи. Например, предположим, что время истечения для записей в кэше установлено на 60 секунд, а коэффициент опережающего обновления установлен на 0,5. Если доступ к кешированному объекту осуществляется через 60 секунд, Cache выполнит синхронное чтение из хранилища кеша, чтобы обновить его значение. Однако, если запрос выполняется для записи, которая старше 30, но менее 60 секунд, возвращается текущее значение в кеше, и Cache планирует асинхронную перезагрузку из хранилища кеша.

      -

      Обновление с опережением особенно полезно, если к объектам обращается большое количество пользователей. Значения в кеше остаются свежими, и задержка, которая может возникнуть в результате чрезмерной перезагрузки из хранилища кеша, исключается.

      -

      По умолчанию в Cache уже определен менеджер RefreshAhead с настройками по умолчанию. Однако можно его и переопределить. Для этого достаточно зарегистрировать RefreshAheadManager заново

      +

      The Refresh-Ahead Cache strategy allows the developer to configure the cache to automatically and asynchronously reload (refresh) any recently available cache entry from the cache loader before it expires. As a result, after a frequently used entry entered the cache, the application will not sense the effect of reading on the potentially slow cache storage when the entry is reloaded due to expiration. An asynchronous update is launched only when accessing an object close enough to its expiration time — if the object is accessed after it has expired, Cache will perform a synchronous read from the cache storage to update its value.

      +

      The refresh ahead factor is expressed as a percentage of the record expiration time. For example, suppose that the expiration time for entries in the cache is set to 60 seconds, and refresh ahead factor is set to 0.5. If the cached object is accessed after 60 seconds, Cache will perform a synchronous read from the cache storage to update its value. However, if the request is made for a record that is older than 30, but less than 60 seconds, the current value in the cache is returned, and Cache plans an asynchronous reboot from the cache storage.

      +

      An advanced update is especially useful if objects are accessed by a large number of users. The values ​​in the cache remain fresh, and the delay that may result from an excessive reload from the cache storage is eliminated.

      +

      By default, RefreshAhead is already defined in Cache with default settings. However, you can override it. To do this, simply register RefreshAheadManager again

      cache.registerManager(RefreshAheadManager, null, {
         refreshAheadFactor: 0.5,
       });
      -

      Эта стратегия используется по умолчанию

      Read-Through

      -

      Когда приложение запрашивает в кэше запись, например, ключ X, а X еще не находится в кэше, Cache автоматически вызовет executor который загрузит X из базового источника данных. Если X существует в источнике данных, executor загрузит его, вернет его в Cache, затем Cache поместит его в кэш для будущего использования и, наконец, вернет X к коду приложения, который его запросил. Это называется сквозным кэшированием (Read-Through). Функциональность кэширования с опережением (Refresh-Ahead) может дополнительно повысить производительность чтения (за счет уменьшения предполагаемой задержки).

      +

      When an application requests an entry in the cache, for example, the X key, and X is not yet in the cache, Cache will automatically call executor, which loads X from the underlying data source. If X exists in the data source, executor loads it, returns it to Cache, then Cache puts it in the cache for future use and finally returns X to the application code that requested it. This is called read-through caching. Advanced caching functionality (Refresh-Ahead) can further improve read performance (by reducing the estimated latency).

      import Redis from 'ioredis';
       import logger from './logger';
      -import Cache, { RedisStorageAdapter, ReadThroughManager } from 'cachalot'; // конструктор адаптера для редиса
      +import Cache, { RedisStorageAdapter, ReadThroughManager } from 'cachalot'; // constructor adapter for redis
       
       const redis = new Redis();
       
      @@ -186,9 +190,9 @@ 

      Read-Through

      }, );

      Write-Through

      -

      При сквозной записи (Write-Through) get не вызывает никакой логики по валидации кэша, тегов, итд. Запись считается невалидной только в том случае если она отсутсвует в кэше как таковая. В этой стратегии, когда приложение обновляет часть данных в кеше (то есть вызывает set (...), чтобы изменить запись в кэше), операция не будет завершена (то есть, set не будет возвращаться), пока Cache прошел через нижележащую БД и успешно сохранил данные в базовом источнике данных. Это вовсе не улучшает производительность записи, так как вы все еще имеете дело с задержкой записи в источник данных..

      +

      With Write-Through, get causes no validation logic for the cache, tags, and so on. A record is considered invalid only if it is not in the cache as such. In this strategy, when an application updates a portion of the data in the cache (that is, calls set (...) to change the cache entry), the operation will not complete (that is, set will not return) until the Cache has passed through the underlying database and successfully saved data to the underlying data source. This does not improve write performance at all, since you are still dealing with a delay in writing to the data source.

      Read-Through + Write-Through

      -

      Возможно также комбинировать различные стратегии, наиболее распространенный вариант это Read-Through + Write-Through.

      +

      It is also possible to combine different strategies, the most common option is Read-Through + Write-Through.

      // ...
       export const cache = new Cache({
         adapter: new RedisStorageAdapter(redisClient),
      @@ -198,22 +202,30 @@ 

      Read-Through + Write-Through

      cache.registerManager(ReadThroughManager); cache.registerManager(WriteThroughManager); -// создаст перманентную запись +// creates permanent record cache.set('something:id100', 'hello', { tags: ['something:id100', 'something'], manager: WriteThroughManager.getName() }); -// прочитает запись +// gets the record const x = await cache.get('something:id100', () => executor('hello', 'world'), { tags: ['something:id100', 'something'], manager: ReadThroughManager.getName(), }, );
      -

      Полезные ссылки:

      -

      Кэширование данных

      -

      Web, кэширование и memcached

      -

      Тяжелое кэширование

      +

      License

      +

      ` + Copyright 2019 Tinkoff Bank

      +

      Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at

      +

      http://www.apache.org/licenses/LICENSE-2.0

      +

      Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License.

      @@ -191,4 +191,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/cachewithcustomstorageoptions.html b/docs/api/interfaces/cachewithcustomstorageoptions.html index 5f8cd54..b502cab 100644 --- a/docs/api/interfaces/cachewithcustomstorageoptions.html +++ b/docs/api/interfaces/cachewithcustomstorageoptions.html @@ -95,7 +95,7 @@

      storage

      storage: Storage
      @@ -191,4 +191,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/command.html b/docs/api/interfaces/command.html index 950020b..97920a8 100644 --- a/docs/api/interfaces/command.html +++ b/docs/api/interfaces/command.html @@ -105,7 +105,7 @@

      fn

      @@ -115,7 +115,7 @@

      params

      params: any
      @@ -214,4 +214,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/executorcontext.html b/docs/api/interfaces/executorcontext.html index fd65e26..8e51059 100644 --- a/docs/api/interfaces/executorcontext.html +++ b/docs/api/interfaces/executorcontext.html @@ -98,7 +98,7 @@

      executor

      executor: Executor
      @@ -108,7 +108,7 @@

      key

      key: string
      @@ -118,7 +118,7 @@

      options

      @@ -128,7 +128,7 @@

      Optional record

      @@ -233,4 +233,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/expireoptions.html b/docs/api/interfaces/expireoptions.html index f86a6f4..ccc22cb 100644 --- a/docs/api/interfaces/expireoptions.html +++ b/docs/api/interfaces/expireoptions.html @@ -104,7 +104,7 @@

      Optional expiresIn

      expiresIn: undefined | number
      @@ -119,7 +119,7 @@

      Optional permanent

      permanent: undefined | false | true
      @@ -223,4 +223,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/lockedkeyretrievestrategy.html b/docs/api/interfaces/lockedkeyretrievestrategy.html index 8a8b522..016a1c2 100644 --- a/docs/api/interfaces/lockedkeyretrievestrategy.html +++ b/docs/api/interfaces/lockedkeyretrievestrategy.html @@ -116,7 +116,7 @@

      get

    • Type parameters

      @@ -145,7 +145,7 @@

      getName

    • Returns string

      @@ -247,4 +247,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/logger.html b/docs/api/interfaces/logger.html index f20a170..c2f8cb1 100644 --- a/docs/api/interfaces/logger.html +++ b/docs/api/interfaces/logger.html @@ -110,7 +110,7 @@

      error

    • Parameters

      @@ -133,7 +133,7 @@

      info

    • Parameters

      @@ -156,7 +156,7 @@

      trace

    • Parameters

      @@ -179,7 +179,7 @@

      warn

    • Parameters

      @@ -293,4 +293,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/manager.html b/docs/api/interfaces/manager.html index 9b2f01a..97e2030 100644 --- a/docs/api/interfaces/manager.html +++ b/docs/api/interfaces/manager.html @@ -118,7 +118,7 @@

      get

    • Type parameters

      @@ -153,7 +153,7 @@

      set

    • Parameters

      @@ -267,4 +267,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/managerconstructor.html b/docs/api/interfaces/managerconstructor.html index b5297f8..184b0a6 100644 --- a/docs/api/interfaces/managerconstructor.html +++ b/docs/api/interfaces/managerconstructor.html @@ -113,7 +113,7 @@

      constructor

    • Parameters

      @@ -139,7 +139,7 @@

      getName

    • Returns string

      @@ -241,4 +241,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/manageroptions.html b/docs/api/interfaces/manageroptions.html index b4aeb96..980f899 100644 --- a/docs/api/interfaces/manageroptions.html +++ b/docs/api/interfaces/manageroptions.html @@ -113,7 +113,7 @@

      Optional expiresIn

      @@ -128,7 +128,7 @@

      Optional hashKeys

      hashKeys: undefined | false | true
      @@ -138,7 +138,7 @@

      Optional lockedKeyRe
      lockedKeyRetrieveStrategies: [string, LockedKeyRetrieveStrategy][]
      @@ -148,7 +148,7 @@

      logger

      logger: Logger
      @@ -159,7 +159,7 @@

      Optional permanent

      @@ -174,7 +174,7 @@

      Optional prefix

      prefix: undefined | string
      @@ -184,7 +184,7 @@

      Optional refreshAheadrefreshAheadFactor: undefined | number

      @@ -194,7 +194,7 @@

      storage

      storage: Storage
      @@ -311,4 +311,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/managerselectoroptions.html b/docs/api/interfaces/managerselectoroptions.html index 256b726..0bbe79d 100644 --- a/docs/api/interfaces/managerselectoroptions.html +++ b/docs/api/interfaces/managerselectoroptions.html @@ -95,7 +95,7 @@

      Optional manager

      manager: undefined | string
      @@ -191,4 +191,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/readoptions.html b/docs/api/interfaces/readoptions.html index 77463f6..41966a1 100644 --- a/docs/api/interfaces/readoptions.html +++ b/docs/api/interfaces/readoptions.html @@ -102,7 +102,7 @@

      Optional lockedKeyRe
      lockedKeyRetrieveStrategyType: LockedKeyRetrieveStrategyType | string
      @@ -204,4 +204,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/recorderrorcontext.html b/docs/api/interfaces/recorderrorcontext.html index 5e01645..611dfaa 100644 --- a/docs/api/interfaces/recorderrorcontext.html +++ b/docs/api/interfaces/recorderrorcontext.html @@ -96,7 +96,7 @@

      record

      @@ -106,7 +106,7 @@

      recordValue

      recordValue: any
      @@ -205,4 +205,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/refreshaheadmanageroptions.html b/docs/api/interfaces/refreshaheadmanageroptions.html index f6173b9..5605660 100644 --- a/docs/api/interfaces/refreshaheadmanageroptions.html +++ b/docs/api/interfaces/refreshaheadmanageroptions.html @@ -108,7 +108,7 @@

      Optional expiresIn

      @@ -124,7 +124,7 @@

      Optional hashKeys

      @@ -135,7 +135,7 @@

      Optional lockedKeyRe @@ -146,7 +146,7 @@

      logger

      @@ -157,7 +157,7 @@

      Optional permanent

      @@ -173,7 +173,7 @@

      Optional prefix

      @@ -184,7 +184,7 @@

      Optional refreshAhead

      Overrides ManagerOptions.refreshAheadFactor

      @@ -195,7 +195,7 @@

      storage

      @@ -312,4 +312,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/storage.html b/docs/api/interfaces/storage.html index 397d8fd..ae8be3b 100644 --- a/docs/api/interfaces/storage.html +++ b/docs/api/interfaces/storage.html @@ -124,7 +124,7 @@

      del

    • Parameters

      @@ -147,7 +147,7 @@

      get

    • Parameters

      @@ -170,7 +170,7 @@

      getConnectionStatus

    • Returns ConnectionStatus

      @@ -187,7 +187,7 @@

      getTags

    • Parameters

      @@ -210,7 +210,7 @@

      keyIsLocked

    • Parameters

      @@ -233,7 +233,7 @@

      lockKey

    • Parameters

      @@ -256,7 +256,7 @@

      releaseKey

    • Parameters

      @@ -279,7 +279,7 @@

      set

    • Parameters

      @@ -308,7 +308,7 @@

      touch

    • Parameters

      @@ -437,4 +437,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/storageadapter.html b/docs/api/interfaces/storageadapter.html index 408abba..5257967 100644 --- a/docs/api/interfaces/storageadapter.html +++ b/docs/api/interfaces/storageadapter.html @@ -123,7 +123,7 @@

      acquireLock

    • @@ -151,7 +151,7 @@

      del

    • @@ -179,7 +179,7 @@

      get

    • @@ -208,7 +208,7 @@

      getConnectionStatus

    • @@ -230,7 +230,7 @@

      isLockExists

    • @@ -258,7 +258,7 @@

      onConnect

    • @@ -304,7 +304,7 @@

      releaseLock

    • @@ -332,7 +332,7 @@

      set

    • @@ -367,7 +367,7 @@

      Optional setOptions

    • @@ -501,4 +501,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/storageadapteroptions.html b/docs/api/interfaces/storageadapteroptions.html index 0dabe19..439f561 100644 --- a/docs/api/interfaces/storageadapteroptions.html +++ b/docs/api/interfaces/storageadapteroptions.html @@ -103,7 +103,7 @@

      Optional expiresIn

      expiresIn: undefined | number
      @@ -199,4 +199,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/storagerecord.html b/docs/api/interfaces/storagerecord.html index f2250a9..31f2d3a 100644 --- a/docs/api/interfaces/storagerecord.html +++ b/docs/api/interfaces/storagerecord.html @@ -108,7 +108,7 @@

      createdAt

      createdAt: number
      @@ -123,7 +123,7 @@

      expiresIn

      expiresIn: number
      @@ -138,7 +138,7 @@

      key

      key: string
      @@ -153,7 +153,7 @@

      permanent

      permanent: boolean
      @@ -168,7 +168,7 @@

      tags

      @@ -183,7 +183,7 @@

      Optional value

      @@ -299,4 +299,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/storagerecordtag.html b/docs/api/interfaces/storagerecordtag.html index a0225dd..3aed8f8 100644 --- a/docs/api/interfaces/storagerecordtag.html +++ b/docs/api/interfaces/storagerecordtag.html @@ -103,7 +103,7 @@

      name

      name: string
      @@ -118,7 +118,7 @@

      version

      version: number
      @@ -222,4 +222,4 @@

      Legend

      - + \ No newline at end of file diff --git a/docs/api/interfaces/writeoptions.html b/docs/api/interfaces/writeoptions.html index 8731e83..f80d8d3 100644 --- a/docs/api/interfaces/writeoptions.html +++ b/docs/api/interfaces/writeoptions.html @@ -87,6 +87,7 @@

      Index

      Properties

      @@ -103,7 +104,7 @@

      Optional expiresIn

      @@ -112,6 +113,21 @@

      Optional expiresIn

      +
      + +

      Optional getTags

      +
      getTags: undefined | function
      + +
      +
      +

      getTags allows to detect tags for record depending on executor result

      +
      +
      +

      Optional permanent

      @@ -119,7 +135,7 @@

      Optional permanent

      @@ -134,7 +150,7 @@

      Optional tags

      tags: string[]
      @@ -165,6 +181,9 @@

      Optional tags

    • expiresIn
    • +
    • + getTags +
    • permanent
    • @@ -243,4 +262,4 @@

      Legend

      - + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bd693c5..570d1ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cachalot", - "version": "1.0.1", + "version": "1.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -14,18 +14,18 @@ } }, "@babel/core": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz", - "integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.5.tgz", + "integrity": "sha512-OvjIh6aqXtlsA8ujtGKfC7LYWksYSX8yQcM8Ay3LuvVeQ63lcOKgoZWVqcpFwkd29aYU9rVx7jxhfhiEDV9MZA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.3.4", - "@babel/helpers": "^7.2.0", - "@babel/parser": "^7.3.4", - "@babel/template": "^7.2.2", - "@babel/traverse": "^7.3.4", - "@babel/types": "^7.3.4", + "@babel/generator": "^7.4.4", + "@babel/helpers": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.5", + "@babel/types": "^7.4.4", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", @@ -53,12 +53,12 @@ } }, "@babel/generator": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz", - "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", "dev": true, "requires": { - "@babel/types": "^7.3.4", + "@babel/types": "^7.4.4", "jsesc": "^2.5.1", "lodash": "^4.17.11", "source-map": "^0.5.0", @@ -100,23 +100,23 @@ "dev": true }, "@babel/helper-split-export-declaration": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", - "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.4.4" } }, "@babel/helpers": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz", - "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", + "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", "dev": true, "requires": { - "@babel/template": "^7.1.2", - "@babel/traverse": "^7.1.5", - "@babel/types": "^7.3.0" + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/highlight": { @@ -131,9 +131,9 @@ } }, "@babel/parser": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz", - "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.5.tgz", + "integrity": "sha512-9mUqkL1FF5T7f0WDFfAoDdiMVPWsdD1gZYzSnaXsxUCUqzuch/8of9G3VUSNiZmMBoRxT3neyVsqeiL/ZPcjew==", "dev": true }, "@babel/plugin-syntax-object-rest-spread": { @@ -146,28 +146,28 @@ } }, "@babel/template": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz", - "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.2.2", - "@babel/types": "^7.2.2" + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" } }, "@babel/traverse": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz", - "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==", + "version": "7.4.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.5.tgz", + "integrity": "sha512-Vc+qjynwkjRmIFGxy0KYoPj4FdVDxLej89kMHFsWScq999uX+pwcX4v9mWRjW0KcAYTPAuVQl2LKP1wEVLsp+A==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.3.4", + "@babel/generator": "^7.4.4", "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.0.0", - "@babel/parser": "^7.3.4", - "@babel/types": "^7.3.4", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.5", + "@babel/types": "^7.4.4", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.11" @@ -185,9 +185,9 @@ } }, "@babel/types": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz", - "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", "dev": true, "requires": { "esutils": "^2.0.2", @@ -206,44 +206,43 @@ } }, "@jest/console": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.3.0.tgz", - "integrity": "sha512-NaCty/OOei6rSDcbPdMiCbYCI0KGFGPgGO6B09lwWt5QTxnkuhKYET9El5u5z1GAcSxkQmSMtM63e24YabCWqA==", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", + "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", "dev": true, "requires": { "@jest/source-map": "^24.3.0", - "@types/node": "*", "chalk": "^2.0.1", "slash": "^2.0.0" } }, "@jest/core": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.5.0.tgz", - "integrity": "sha512-RDZArRzAs51YS7dXG1pbXbWGxK53rvUu8mCDYsgqqqQ6uSOaTjcVyBl2Jce0exT2rSLk38ca7az7t2f3b0/oYQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.8.0.tgz", + "integrity": "sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/reporters": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", "exit": "^0.1.2", "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.5.0", - "jest-config": "^24.5.0", - "jest-haste-map": "^24.5.0", - "jest-message-util": "^24.5.0", + "jest-changed-files": "^24.8.0", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-resolve-dependencies": "^24.5.0", - "jest-runner": "^24.5.0", - "jest-runtime": "^24.5.0", - "jest-snapshot": "^24.5.0", - "jest-util": "^24.5.0", - "jest-validate": "^24.5.0", - "jest-watcher": "^24.5.0", + "jest-resolve-dependencies": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", + "jest-watcher": "^24.8.0", "micromatch": "^3.1.10", "p-each-series": "^1.0.0", "pirates": "^4.0.1", @@ -253,52 +252,51 @@ } }, "@jest/environment": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.5.0.tgz", - "integrity": "sha512-tzUHR9SHjMXwM8QmfHb/EJNbF0fjbH4ieefJBvtwO8YErLTrecc1ROj0uo2VnIT6SlpEGZnvdCK6VgKYBo8LsA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.8.0.tgz", + "integrity": "sha512-vlGt2HLg7qM+vtBrSkjDxk9K0YtRBi7HfRFaDxoRtyi+DyVChzhF20duvpdAnKVBV6W5tym8jm0U9EfXbDk1tw==", "dev": true, "requires": { - "@jest/fake-timers": "^24.5.0", - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", - "@types/node": "*", - "jest-mock": "^24.5.0" + "@jest/fake-timers": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0" } }, "@jest/fake-timers": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.5.0.tgz", - "integrity": "sha512-i59KVt3QBz9d+4Qr4QxsKgsIg+NjfuCjSOWj3RQhjF5JNy+eVJDhANQ4WzulzNCHd72srMAykwtRn5NYDGVraw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.8.0.tgz", + "integrity": "sha512-2M4d5MufVXwi6VzZhJ9f5S/wU4ud2ck0kxPof1Iz3zWx6Y+V2eJrES9jEktB6O3o/oEyk+il/uNu9PvASjWXQw==", "dev": true, "requires": { - "@jest/types": "^24.5.0", - "@types/node": "*", - "jest-message-util": "^24.5.0", - "jest-mock": "^24.5.0" + "@jest/types": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0" } }, "@jest/reporters": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.5.0.tgz", - "integrity": "sha512-vfpceiaKtGgnuC3ss5czWOihKOUSyjJA4M4udm6nH8xgqsuQYcyDCi4nMMcBKsHXWgz9/V5G7iisnZGfOh1w6Q==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.8.0.tgz", + "integrity": "sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==", "dev": true, "requires": { - "@jest/environment": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", "exit": "^0.1.2", "glob": "^7.1.2", - "istanbul-api": "^2.1.1", "istanbul-lib-coverage": "^2.0.2", "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", "istanbul-lib-source-maps": "^3.0.1", - "jest-haste-map": "^24.5.0", - "jest-resolve": "^24.5.0", - "jest-runtime": "^24.5.0", - "jest-util": "^24.5.0", - "jest-worker": "^24.4.0", + "istanbul-reports": "^2.1.1", + "jest-haste-map": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", "node-notifier": "^5.2.1", "slash": "^2.0.0", "source-map": "^0.6.0", @@ -317,32 +315,44 @@ } }, "@jest/test-result": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.5.0.tgz", - "integrity": "sha512-u66j2vBfa8Bli1+o3rCaVnVYa9O8CAFZeqiqLVhnarXtreSXG33YQ6vNYBogT7+nYiFNOohTU21BKiHlgmxD5A==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.8.0.tgz", + "integrity": "sha512-+YdLlxwizlfqkFDh7Mc7ONPQAhA4YylU1s529vVM1rsf67vGZH/2GGm5uO8QzPeVyaVMobCQ7FTxl38QrKRlng==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/types": "^24.8.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.8.0.tgz", + "integrity": "sha512-OzL/2yHyPdCHXEzhoBuq37CE99nkme15eHkAzXRVqthreWZamEMA0WoetwstsQBCXABhczpK03JNbc4L01vvLg==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/types": "^24.5.0", - "@types/istanbul-lib-coverage": "^1.1.0" + "@jest/test-result": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-runner": "^24.8.0", + "jest-runtime": "^24.8.0" } }, "@jest/transform": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.5.0.tgz", - "integrity": "sha512-XSsDz1gdR/QMmB8UCKlweAReQsZrD/DK7FuDlNo/pE8EcKMrfi2kqLRk8h8Gy/PDzgqJj64jNEzOce9pR8oj1w==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.8.0.tgz", + "integrity": "sha512-xBMfFUP7TortCs0O+Xtez2W7Zu1PLH9bvJgtraN1CDST6LBM/eTOZ9SfwS/lvV8yOfcDpFmwf9bq5cYbXvqsvA==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "babel-plugin-istanbul": "^5.1.0", "chalk": "^2.0.1", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.5.0", + "jest-haste-map": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-util": "^24.5.0", + "jest-util": "^24.8.0", "micromatch": "^3.1.10", "realpath-native": "^1.1.0", "slash": "^2.0.0", @@ -351,19 +361,20 @@ } }, "@jest/types": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.5.0.tgz", - "integrity": "sha512-kN7RFzNMf2R8UDadPOl6ReyI+MT8xfqRuAnuVL+i4gwjv/zubdDK+EDeLHYwq1j0CSSR2W/MmgaRlMZJzXdmVA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", + "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^1.1.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", "@types/yargs": "^12.0.9" } }, "@types/babel__core": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.0.tgz", - "integrity": "sha512-wJTeJRt7BToFx3USrCDs2BhEi4ijBInTQjOIukj6a/5tEkwpFMVZ+1ppgmE+Q/FQyc5P/VWUbx7I9NELrKruHA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.2.tgz", + "integrity": "sha512-cfCCrFmiGY/yq0NuKNxIQvZFy9kY/1immpSpTngOnyIbD4+eJOG5mxphhHDv3CHL9GltO4GcKr54kGBg3RNdbg==", "dev": true, "requires": { "@babel/parser": "^7.1.0", @@ -452,21 +463,49 @@ } }, "@types/istanbul-lib-coverage": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz", - "integrity": "sha512-ohkhb9LehJy+PA40rDtGAji61NCgdtKLAlFoYp4cnuuQEswwdK3vz9SOIkkyc3wrk8dzjphQApNs56yyXLStaQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", "dev": true }, + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, "@types/jest": { - "version": "23.3.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.3.14.tgz", - "integrity": "sha512-Q5hTcfdudEL2yOmluA1zaSyPbzWPmJ3XfSWeP3RyoYvS9hnje1ZyagrZOuQ6+1nQC1Gw+7gap3pLNL3xL6UBug==", + "version": "24.0.13", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.13.tgz", + "integrity": "sha512-3m6RPnO35r7Dg+uMLj1+xfZaOgIHHHut61djNjzwExXN4/Pm9has9C6I1KMYSfz7mahDhWUOVg4HW/nZdv5Pww==", + "dev": true, + "requires": { + "@types/jest-diff": "*" + } + }, + "@types/jest-diff": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", + "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", "dev": true }, "@types/lodash": { - "version": "4.14.123", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.123.tgz", - "integrity": "sha512-pQvPkc4Nltyx7G1Ww45OjVqUsJP4UsZm+GWJpigXgkikZqJgRm4c48g027o6tdgubWHwFRF15iFd+Y4Pmqv6+Q==", + "version": "4.14.132", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.132.tgz", + "integrity": "sha512-RNUU1rrh85NgUJcjOOr96YXr+RHwInGbaQCZmlitqOaCKXffj8bh+Zxwuq5rjDy5OgzFldDVoqk4pyLEDiwxIw==", "dev": true }, "@types/marked": { @@ -504,9 +543,9 @@ "dev": true }, "@types/yargs": { - "version": "12.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.9.tgz", - "integrity": "sha512-sCZy4SxP9rN2w30Hlmg5dtdRwgYQfYRiLo9usw8X9cxlf+H4FqM1xX7+sNH7NNKVdbXMJWqva7iyy+fxh/V7fA==", + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", + "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", "dev": true }, "abab": { @@ -522,9 +561,9 @@ "dev": true }, "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", "dev": true, "requires": { "acorn": "^6.0.1", @@ -588,15 +627,6 @@ "normalize-path": "^2.1.1" } }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } - }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -636,12 +666,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -669,15 +693,6 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", @@ -708,108 +723,49 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, "babel-jest": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.5.0.tgz", - "integrity": "sha512-0fKCXyRwxFTJL0UXDJiT2xYxO9Lu2vBd9n+cC+eDjESzcVG3s2DRGAxbzJX21fceB1WYoBjAh8pQ83dKcl003g==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.8.0.tgz", + "integrity": "sha512-+5/kaZt4I9efoXzPlZASyK/lN9qdRKmmUav9smVc0ruPQD7IsfucQ87gpOE8mn2jbDuS6M/YOW6n3v9ZoIfgnw==", "dev": true, "requires": { - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", "@types/babel__core": "^7.1.0", "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.3.0", + "babel-preset-jest": "^24.6.0", "chalk": "^2.4.2", "slash": "^2.0.0" } }, "babel-plugin-istanbul": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.1.tgz", - "integrity": "sha512-RNNVv2lsHAXJQsEJ5jonQwrJVWK8AcZpG1oxhnjCUaAjL7xahYLANhPUZbzEQHjKy1NMYUwn+0NPKQc8iSY4xQ==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.4.tgz", + "integrity": "sha512-dySz4VJMH+dpndj0wjJ8JPs/7i1TdSPb1nRrn56/92pKOF9VKC1FMFJmMXjzlGGusnCAqujP6PBCiKq0sVA+YQ==", "dev": true, "requires": { "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.0.0", - "test-exclude": "^5.0.0" + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" } }, "babel-plugin-jest-hoist": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.3.0.tgz", - "integrity": "sha512-nWh4N1mVH55Tzhx2isvUN5ebM5CDUvIpXPZYMRazQughie/EqGnbR+czzoQlhUmJG9pPJmYDRhvocotb2THl1w==", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", + "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", "dev": true, "requires": { "@types/babel__traverse": "^7.0.6" } }, "babel-preset-jest": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.3.0.tgz", - "integrity": "sha512-VGTV2QYBa/Kn3WCOKdfS31j9qomaXSgJqi65B6o05/1GsJyj9LVhSljM9ro4S+IBGj/ENhNBuH9bpqzztKAQSw==", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", + "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", "dev": true, "requires": { "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.3.0" + "babel-plugin-jest-hoist": "^24.6.0" } }, "balanced-match": { @@ -992,15 +948,15 @@ } }, "callsites": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.0.0.tgz", - "integrity": "sha512-tWnkwu9YEq2uzlBDI4RcLn8jrFvF9AOi8PxDNU3hZZjJcjkcRAq3vCI+vZcg1SuxISDYe86k9VZFwAxDiJGoAw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "capture-exit": { @@ -1139,9 +1095,9 @@ } }, "commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true }, "compare-versions": { @@ -1151,9 +1107,9 @@ "dev": true }, "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "concat-map": { @@ -1217,9 +1173,9 @@ "dev": true }, "cssstyle": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.1.tgz", - "integrity": "sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", "dev": true, "requires": { "cssom": "0.3.x" @@ -1285,15 +1241,6 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - } - }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -1351,9 +1298,9 @@ "dev": true }, "denque": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.0.tgz", - "integrity": "sha512-gh513ac7aiKrAgjiIBWZG0EASyDF9p4JMWwKA8YU5s9figrL5SRNEMT6FDynsegakuhWd1wVqTvqvqAoDxw7wQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz", + "integrity": "sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==", "dev": true }, "detect-newline": { @@ -1583,16 +1530,16 @@ } }, "expect": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.5.0.tgz", - "integrity": "sha512-p2Gmc0CLxOgkyA93ySWmHFYHUPFIHG6XZ06l7WArWAsrqYVaVEkOU5NtT5i68KUyGKbkQgDCkiT65bWmdoL6Bw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.8.0.tgz", + "integrity": "sha512-/zYvP8iMDrzaaxHVa724eJBCKqSHmO0FA7EDkBiRHxg6OipmMn1fN+C8T9L9K8yr7UONkOifu6+LLH+z76CnaA==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "ansi-styles": "^3.2.0", - "jest-get-type": "^24.3.0", - "jest-matcher-utils": "^24.5.0", - "jest-message-util": "^24.5.0", + "jest-get-type": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", "jest-regex-util": "^24.3.0" } }, @@ -1721,16 +1668,6 @@ "bser": "^2.0.0" } }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -1763,12 +1700,6 @@ "locate-path": "^3.0.0" } }, - "flexbuffer": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/flexbuffer/-/flexbuffer-0.0.6.tgz", - "integrity": "sha1-A5/fI/iCPkQMOPMnfm/vEXQhWzA=", - "dev": true - }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -1818,6 +1749,554 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -1869,9 +2348,9 @@ } }, "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "graceful-fs": { @@ -1893,9 +2372,9 @@ "dev": true }, "handlebars": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.1.tgz", - "integrity": "sha512-3Zhi6C0euYZL5sM0Zcy7lInLXKQ+YLcF/olbN010mzGQ4XVm50JeyBnMqofHh696GrciGruC7kCcApPDJvVgwA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", "dev": true, "requires": { "neo-async": "^2.6.0", @@ -1929,23 +2408,6 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -2085,15 +2547,14 @@ "dev": true }, "ioredis": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.8.0.tgz", - "integrity": "sha512-D8pR/xyA333i+sotCHpTK8qbwrXLE9pKOGo+Aosn7FbuyJ5mcoXezByWkUe7KEW8LF9XD5lJPS4+u6P+0aIpzA==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-4.9.5.tgz", + "integrity": "sha512-L9MVfvX4F3LScTMEgriCGixzqinJsYy7Mt0NPX8RyuOTmx5JW0744pM4Ze2KVQcP3J0zvKYZ1LywAB6KIq7PYg==", "dev": true, "requires": { "cluster-key-slot": "^1.0.6", "debug": "^3.1.0", "denque": "^1.1.0", - "flexbuffer": "0.0.6", "lodash.defaults": "^4.2.0", "lodash.flatten": "^4.4.0", "redis-commands": "1.4.0", @@ -2207,9 +2668,9 @@ "dev": true }, "is-generator-fn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.0.0.tgz", - "integrity": "sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, "is-number": { @@ -2307,66 +2768,44 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "istanbul-api": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.1.tgz", - "integrity": "sha512-kVmYrehiwyeBAk/wE71tW6emzLiHGjYIiDrc8sfyty4F8M02/lrgXSm+R1kXysmF20zArvmZXjlE/mg24TVPJw==", - "dev": true, - "requires": { - "async": "^2.6.1", - "compare-versions": "^3.2.1", - "fileset": "^2.0.3", - "istanbul-lib-coverage": "^2.0.3", - "istanbul-lib-hook": "^2.0.3", - "istanbul-lib-instrument": "^3.1.0", - "istanbul-lib-report": "^2.0.4", - "istanbul-lib-source-maps": "^3.0.2", - "istanbul-reports": "^2.1.1", - "js-yaml": "^3.12.0", - "make-dir": "^1.3.0", - "minimatch": "^3.0.4", - "once": "^1.4.0" - } - }, "istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, - "istanbul-lib-hook": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz", - "integrity": "sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA==", - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } - }, "istanbul-lib-instrument": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", - "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", - "dev": true, - "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.3", - "semver": "^5.5.0" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.1.0.tgz", + "integrity": "sha512-kCqEOOHoBcFs/2Ccuk4Xarm/KiWRSLEX9CAZF8xkJ6ZPlIoTZ8V5f7J16vYLJqDbR7KrxTJpR2lqjIEm2Qx9cQ==", + "dev": true + } } }, "istanbul-lib-report": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz", - "integrity": "sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, "requires": { - "istanbul-lib-coverage": "^2.0.3", - "make-dir": "^1.3.0", - "supports-color": "^6.0.0" + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { @@ -2381,15 +2820,15 @@ } }, "istanbul-lib-source-maps": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz", - "integrity": "sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "requires": { "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.3", - "make-dir": "^1.3.0", - "rimraf": "^2.6.2", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", "source-map": "^0.6.1" }, "dependencies": { @@ -2405,40 +2844,40 @@ } }, "istanbul-reports": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.1.1.tgz", - "integrity": "sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", + "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", "dev": true, "requires": { - "handlebars": "^4.1.0" + "handlebars": "^4.1.2" } }, "jest": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.5.0.tgz", - "integrity": "sha512-lxL+Fq5/RH7inxxmfS2aZLCf8MsS+YCUBfeiNO6BWz/MmjhDGaIEA/2bzEf9q4Q0X+mtFHiinHFvQ0u+RvW/qQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.8.0.tgz", + "integrity": "sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==", "dev": true, "requires": { "import-local": "^2.0.0", - "jest-cli": "^24.5.0" + "jest-cli": "^24.8.0" }, "dependencies": { "jest-cli": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.5.0.tgz", - "integrity": "sha512-P+Jp0SLO4KWN0cGlNtC7JV0dW1eSFR7eRpoOucP2UM0sqlzp/bVHeo71Omonvigrj9AvCKy7NtQANtqJ7FXz8g==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.8.0.tgz", + "integrity": "sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==", "dev": true, "requires": { - "@jest/core": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/core": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", "exit": "^0.1.2", "import-local": "^2.0.0", "is-ci": "^2.0.0", - "jest-config": "^24.5.0", - "jest-util": "^24.5.0", - "jest-validate": "^24.5.0", + "jest-config": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", "prompts": "^2.0.1", "realpath-native": "^1.1.0", "yargs": "^12.0.2" @@ -2447,50 +2886,51 @@ } }, "jest-changed-files": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.5.0.tgz", - "integrity": "sha512-Ikl29dosYnTsH9pYa1Tv9POkILBhN/TLZ37xbzgNsZ1D2+2n+8oEZS2yP1BrHn/T4Rs4Ggwwbp/x8CKOS5YJOg==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.8.0.tgz", + "integrity": "sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "execa": "^1.0.0", "throat": "^4.0.0" } }, "jest-config": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.5.0.tgz", - "integrity": "sha512-t2UTh0Z2uZhGBNVseF8wA2DS2SuBiLOL6qpLq18+OZGfFUxTM7BzUVKyHFN/vuN+s/aslY1COW95j1Rw81huOQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.8.0.tgz", + "integrity": "sha512-Czl3Nn2uEzVGsOeaewGWoDPD8GStxCpAe0zOYs2x2l0fZAgPbCr3uwUkgNKV3LwE13VXythM946cd5rdGkkBZw==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/types": "^24.5.0", - "babel-jest": "^24.5.0", + "@jest/test-sequencer": "^24.8.0", + "@jest/types": "^24.8.0", + "babel-jest": "^24.8.0", "chalk": "^2.0.1", "glob": "^7.1.1", - "jest-environment-jsdom": "^24.5.0", - "jest-environment-node": "^24.5.0", - "jest-get-type": "^24.3.0", - "jest-jasmine2": "^24.5.0", + "jest-environment-jsdom": "^24.8.0", + "jest-environment-node": "^24.8.0", + "jest-get-type": "^24.8.0", + "jest-jasmine2": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.5.0", - "jest-util": "^24.5.0", - "jest-validate": "^24.5.0", + "jest-resolve": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", "micromatch": "^3.1.10", - "pretty-format": "^24.5.0", + "pretty-format": "^24.8.0", "realpath-native": "^1.1.0" } }, "jest-diff": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.5.0.tgz", - "integrity": "sha512-mCILZd9r7zqL9Uh6yNoXjwGQx0/J43OD2vvWVKwOEOLZliQOsojXwqboubAQ+Tszrb6DHGmNU7m4whGeB9YOqw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.8.0.tgz", + "integrity": "sha512-wxetCEl49zUpJ/bvUmIFjd/o52J+yWcoc5ZyPq4/W1LUKGEhRYDIbP1KcF6t+PvqNrGAFk4/JhtxDq/Nnzs66g==", "dev": true, "requires": { "chalk": "^2.0.1", "diff-sequences": "^24.3.0", - "jest-get-type": "^24.3.0", - "pretty-format": "^24.5.0" + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" } }, "jest-docblock": { @@ -2503,122 +2943,125 @@ } }, "jest-each": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.5.0.tgz", - "integrity": "sha512-6gy3Kh37PwIT5sNvNY2VchtIFOOBh8UCYnBlxXMb5sr5wpJUDPTUATX2Axq1Vfk+HWTMpsYPeVYp4TXx5uqUBw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.8.0.tgz", + "integrity": "sha512-NrwK9gaL5+XgrgoCsd9svsoWdVkK4gnvyhcpzd6m487tXHqIdYeykgq3MKI1u4I+5Zf0tofr70at9dWJDeb+BA==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", - "jest-get-type": "^24.3.0", - "jest-util": "^24.5.0", - "pretty-format": "^24.5.0" + "jest-get-type": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0" } }, "jest-environment-jsdom": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.5.0.tgz", - "integrity": "sha512-62Ih5HbdAWcsqBx2ktUnor/mABBo1U111AvZWcLKeWN/n/gc5ZvDBKe4Og44fQdHKiXClrNGC6G0mBo6wrPeGQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.8.0.tgz", + "integrity": "sha512-qbvgLmR7PpwjoFjM/sbuqHJt/NCkviuq9vus9NBn/76hhSidO+Z6Bn9tU8friecegbJL8gzZQEMZBQlFWDCwAQ==", "dev": true, "requires": { - "@jest/environment": "^24.5.0", - "@jest/fake-timers": "^24.5.0", - "@jest/types": "^24.5.0", - "jest-mock": "^24.5.0", - "jest-util": "^24.5.0", + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0", "jsdom": "^11.5.1" } }, "jest-environment-node": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.5.0.tgz", - "integrity": "sha512-du6FuyWr/GbKLsmAbzNF9mpr2Iu2zWSaq/BNHzX+vgOcts9f2ayXBweS7RAhr+6bLp6qRpMB6utAMF5Ygktxnw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.8.0.tgz", + "integrity": "sha512-vIGUEScd1cdDgR6sqn2M08sJTRLQp6Dk/eIkCeO4PFHxZMOgy+uYLPMC4ix3PEfM5Au/x3uQ/5Tl0DpXXZsJ/Q==", "dev": true, "requires": { - "@jest/environment": "^24.5.0", - "@jest/fake-timers": "^24.5.0", - "@jest/types": "^24.5.0", - "jest-mock": "^24.5.0", - "jest-util": "^24.5.0" + "@jest/environment": "^24.8.0", + "@jest/fake-timers": "^24.8.0", + "@jest/types": "^24.8.0", + "jest-mock": "^24.8.0", + "jest-util": "^24.8.0" } }, "jest-get-type": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", - "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.8.0.tgz", + "integrity": "sha512-RR4fo8jEmMD9zSz2nLbs2j0zvPpk/KCEz3a62jJWbd2ayNo0cb+KFRxPHVhE4ZmgGJEQp0fosmNz84IfqM8cMQ==", "dev": true }, "jest-haste-map": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.5.0.tgz", - "integrity": "sha512-mb4Yrcjw9vBgSvobDwH8QUovxApdimGcOkp+V1ucGGw4Uvr3VzZQBJhNm1UY3dXYm4XXyTW2G7IBEZ9pM2ggRQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.8.0.tgz", + "integrity": "sha512-ZBPRGHdPt1rHajWelXdqygIDpJx8u3xOoLyUBWRW28r3tagrgoepPrzAozW7kW9HrQfhvmiv1tncsxqHJO1onQ==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", + "anymatch": "^2.0.0", "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", "graceful-fs": "^4.1.15", "invariant": "^2.2.4", "jest-serializer": "^24.4.0", - "jest-util": "^24.5.0", - "jest-worker": "^24.4.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", "micromatch": "^3.1.10", - "sane": "^4.0.3" + "sane": "^4.0.3", + "walker": "^1.0.7" } }, "jest-jasmine2": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.5.0.tgz", - "integrity": "sha512-sfVrxVcx1rNUbBeyIyhkqZ4q+seNKyAG6iM0S2TYBdQsXjoFDdqWFfsUxb6uXSsbimbXX/NMkJIwUZ1uT9+/Aw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.8.0.tgz", + "integrity": "sha512-cEky88npEE5LKd5jPpTdDCLvKkdyklnaRycBXL6GNmpxe41F0WN44+i7lpQKa/hcbXaQ+rc9RMaM4dsebrYong==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", "co": "^4.6.0", - "expect": "^24.5.0", + "expect": "^24.8.0", "is-generator-fn": "^2.0.0", - "jest-each": "^24.5.0", - "jest-matcher-utils": "^24.5.0", - "jest-message-util": "^24.5.0", - "jest-runtime": "^24.5.0", - "jest-snapshot": "^24.5.0", - "jest-util": "^24.5.0", - "pretty-format": "^24.5.0", + "jest-each": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "pretty-format": "^24.8.0", "throat": "^4.0.0" } }, "jest-leak-detector": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.5.0.tgz", - "integrity": "sha512-LZKBjGovFRx3cRBkqmIg+BZnxbrLqhQl09IziMk3oeh1OV81Hg30RUIx885mq8qBv1PA0comB9bjKcuyNO1bCQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.8.0.tgz", + "integrity": "sha512-cG0yRSK8A831LN8lIHxI3AblB40uhv0z+SsQdW3GoMMVcK+sJwrIIyax5tu3eHHNJ8Fu6IMDpnLda2jhn2pD/g==", "dev": true, "requires": { - "pretty-format": "^24.5.0" + "pretty-format": "^24.8.0" } }, "jest-matcher-utils": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.5.0.tgz", - "integrity": "sha512-QM1nmLROjLj8GMGzg5VBra3I9hLpjMPtF1YqzQS3rvWn2ltGZLrGAO1KQ9zUCVi5aCvrkbS5Ndm2evIP9yZg1Q==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz", + "integrity": "sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==", "dev": true, "requires": { "chalk": "^2.0.1", - "jest-diff": "^24.5.0", - "jest-get-type": "^24.3.0", - "pretty-format": "^24.5.0" + "jest-diff": "^24.8.0", + "jest-get-type": "^24.8.0", + "pretty-format": "^24.8.0" } }, "jest-message-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.5.0.tgz", - "integrity": "sha512-6ZYgdOojowCGiV0D8WdgctZEAe+EcFU+KrVds+0ZjvpZurUW2/oKJGltJ6FWY2joZwYXN5VL36GPV6pNVRqRnQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.8.0.tgz", + "integrity": "sha512-p2k71rf/b6ns8btdB0uVdljWo9h0ovpnEe05ZKWceQGfXYr4KkzgKo3PBi8wdnd9OtNh46VpNIJynUn/3MKm1g==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "@types/stack-utils": "^1.0.1", "chalk": "^2.0.1", "micromatch": "^3.1.10", @@ -2627,12 +3070,12 @@ } }, "jest-mock": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.5.0.tgz", - "integrity": "sha512-ZnAtkWrKf48eERgAOiUxVoFavVBziO2pAi2MfZ1+bGXVkDfxWLxU0//oJBkgwbsv6OAmuLBz4XFFqvCFMqnGUw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.8.0.tgz", + "integrity": "sha512-6kWugwjGjJw+ZkK4mDa0Df3sDlUTsV47MSrT0nGQ0RBWJbpODDQ8MHDVtGtUYBne3IwZUhtB7elxHspU79WH3A==", "dev": true, "requires": { - "@jest/types": "^24.5.0" + "@jest/types": "^24.8.0" } }, "jest-pnp-resolver": { @@ -2648,12 +3091,12 @@ "dev": true }, "jest-resolve": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.5.0.tgz", - "integrity": "sha512-ZIfGqLX1Rg8xJpQqNjdoO8MuxHV1q/i2OO1hLXjgCWFWs5bsedS8UrOdgjUqqNae6DXA+pCyRmdcB7lQEEbXew==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.8.0.tgz", + "integrity": "sha512-+hjSzi1PoRvnuOICoYd5V/KpIQmkAsfjFO71458hQ2Whi/yf1GDeBOFj8Gxw4LrApHsVJvn5fmjcPdmoUHaVKw==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "browser-resolve": "^1.11.3", "chalk": "^2.0.1", "jest-pnp-resolver": "^1.2.1", @@ -2661,68 +3104,68 @@ } }, "jest-resolve-dependencies": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.5.0.tgz", - "integrity": "sha512-dRVM1D+gWrFfrq2vlL5P9P/i8kB4BOYqYf3S7xczZ+A6PC3SgXYSErX/ScW/469pWMboM1uAhgLF+39nXlirCQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz", + "integrity": "sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.5.0" + "jest-snapshot": "^24.8.0" } }, "jest-runner": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.5.0.tgz", - "integrity": "sha512-oqsiS9TkIZV5dVkD+GmbNfWBRPIvxqmlTQ+AQUJUQ07n+4xTSDc40r+aKBynHw9/tLzafC00DIbJjB2cOZdvMA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.8.0.tgz", + "integrity": "sha512-utFqC5BaA3JmznbissSs95X1ZF+d+4WuOWwpM9+Ak356YtMhHE/GXUondZdcyAAOTBEsRGAgH/0TwLzfI9h7ow==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/environment": "^24.5.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "chalk": "^2.4.2", "exit": "^0.1.2", "graceful-fs": "^4.1.15", - "jest-config": "^24.5.0", + "jest-config": "^24.8.0", "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.5.0", - "jest-jasmine2": "^24.5.0", - "jest-leak-detector": "^24.5.0", - "jest-message-util": "^24.5.0", - "jest-resolve": "^24.5.0", - "jest-runtime": "^24.5.0", - "jest-util": "^24.5.0", - "jest-worker": "^24.4.0", + "jest-haste-map": "^24.8.0", + "jest-jasmine2": "^24.8.0", + "jest-leak-detector": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", + "jest-runtime": "^24.8.0", + "jest-util": "^24.8.0", + "jest-worker": "^24.6.0", "source-map-support": "^0.5.6", "throat": "^4.0.0" } }, "jest-runtime": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.5.0.tgz", - "integrity": "sha512-GTFHzfLdwpaeoDPilNpBrorlPoNZuZrwKKzKJs09vWwHo+9TOsIIuszK8cWOuKC7ss07aN1922Ge8fsGdsqCuw==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.8.0.tgz", + "integrity": "sha512-Mq0aIXhvO/3bX44ccT+czU1/57IgOMyy80oM0XR/nyD5zgBcesF84BPabZi39pJVA6UXw+fY2Q1N+4BiVUBWOA==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/environment": "^24.5.0", + "@jest/console": "^24.7.1", + "@jest/environment": "^24.8.0", "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.5.0", - "@jest/types": "^24.5.0", + "@jest/transform": "^24.8.0", + "@jest/types": "^24.8.0", "@types/yargs": "^12.0.2", "chalk": "^2.0.1", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.1.15", - "jest-config": "^24.5.0", - "jest-haste-map": "^24.5.0", - "jest-message-util": "^24.5.0", - "jest-mock": "^24.5.0", + "jest-config": "^24.8.0", + "jest-haste-map": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-mock": "^24.8.0", "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.5.0", - "jest-snapshot": "^24.5.0", - "jest-util": "^24.5.0", - "jest-validate": "^24.5.0", + "jest-resolve": "^24.8.0", + "jest-snapshot": "^24.8.0", + "jest-util": "^24.8.0", + "jest-validate": "^24.8.0", "realpath-native": "^1.1.0", "slash": "^2.0.0", "strip-bom": "^3.0.0", @@ -2736,37 +3179,36 @@ "dev": true }, "jest-snapshot": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.5.0.tgz", - "integrity": "sha512-eBEeJb5ROk0NcpodmSKnCVgMOo+Qsu5z9EDl3tGffwPzK1yV37mjGWF2YeIz1NkntgTzP+fUL4s09a0+0dpVWA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.8.0.tgz", + "integrity": "sha512-5ehtWoc8oU9/cAPe6fez6QofVJLBKyqkY2+TlKTOf0VllBB/mqUNdARdcjlZrs9F1Cv+/HKoCS/BknT0+tmfPg==", "dev": true, "requires": { "@babel/types": "^7.0.0", - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "chalk": "^2.0.1", - "expect": "^24.5.0", - "jest-diff": "^24.5.0", - "jest-matcher-utils": "^24.5.0", - "jest-message-util": "^24.5.0", - "jest-resolve": "^24.5.0", + "expect": "^24.8.0", + "jest-diff": "^24.8.0", + "jest-matcher-utils": "^24.8.0", + "jest-message-util": "^24.8.0", + "jest-resolve": "^24.8.0", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^24.5.0", + "pretty-format": "^24.8.0", "semver": "^5.5.0" } }, "jest-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.5.0.tgz", - "integrity": "sha512-Xy8JsD0jvBz85K7VsTIQDuY44s+hYJyppAhcsHsOsGisVtdhar6fajf2UOf2mEVEgh15ZSdA0zkCuheN8cbr1Q==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.8.0.tgz", + "integrity": "sha512-DYZeE+XyAnbNt0BG1OQqKy/4GVLPtzwGx5tsnDrFcax36rVE3lTA5fbvgmbVPUZf9w77AJ8otqR4VBbfFJkUZA==", "dev": true, "requires": { - "@jest/console": "^24.3.0", - "@jest/fake-timers": "^24.5.0", + "@jest/console": "^24.7.1", + "@jest/fake-timers": "^24.8.0", "@jest/source-map": "^24.3.0", - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", - "@types/node": "*", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "callsites": "^3.0.0", "chalk": "^2.0.1", "graceful-fs": "^4.1.15", @@ -2777,42 +3219,40 @@ } }, "jest-validate": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.5.0.tgz", - "integrity": "sha512-gg0dYszxjgK2o11unSIJhkOFZqNRQbWOAB2/LOUdsd2LfD9oXiMeuee8XsT0iRy5EvSccBgB4h/9HRbIo3MHgQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.8.0.tgz", + "integrity": "sha512-+/N7VOEMW1Vzsrk3UWBDYTExTPwf68tavEPKDnJzrC6UlHtUDU/fuEdXqFoHzv9XnQ+zW6X3qMZhJ3YexfeLDA==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "camelcase": "^5.0.0", "chalk": "^2.0.1", - "jest-get-type": "^24.3.0", + "jest-get-type": "^24.8.0", "leven": "^2.1.0", - "pretty-format": "^24.5.0" + "pretty-format": "^24.8.0" } }, "jest-watcher": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.5.0.tgz", - "integrity": "sha512-/hCpgR6bg0nKvD3nv4KasdTxuhwfViVMHUATJlnGCD0r1QrmIssimPbmc5KfAQblAVxkD8xrzuij9vfPUk1/rA==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.8.0.tgz", + "integrity": "sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==", "dev": true, "requires": { - "@jest/test-result": "^24.5.0", - "@jest/types": "^24.5.0", - "@types/node": "*", + "@jest/test-result": "^24.8.0", + "@jest/types": "^24.8.0", "@types/yargs": "^12.0.9", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", - "jest-util": "^24.5.0", + "jest-util": "^24.8.0", "string-length": "^2.0.0" } }, "jest-worker": { - "version": "24.4.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.4.0.tgz", - "integrity": "sha512-BH9X/klG9vxwoO99ZBUbZFfV8qO0XNZ5SIiCyYK2zOuJBl6YJVAeNIQjcoOVNu4HGEHeYEKsUWws8kSlSbZ9YQ==", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", "dev": true, "requires": { - "@types/node": "*", "merge-stream": "^1.0.1", "supports-color": "^6.1.0" }, @@ -2835,9 +3275,9 @@ "dev": true }, "js-yaml": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz", - "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -2951,9 +3391,9 @@ "dev": true }, "kleur": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.2.tgz", - "integrity": "sha512-3h7B2WRT5LNXOtQiAaWonilegHcPSf9nLVXlSTci8lu1dZUuui61+EsPEZqSVxY7rXYmB2DVKMQILxaO5WL61Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, "lcid": { @@ -3054,12 +3494,21 @@ } }, "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { - "pify": "^3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } } }, "make-error": { @@ -3108,9 +3557,9 @@ "dev": true }, "mem": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.2.0.tgz", - "integrity": "sha512-5fJxa68urlY0Ir8ijatKa3eRz5lwXnRCTvo9+TbTGAuTFJOwpGcY0X05moBd0nW45965Njt4CDI2GFQoG8DvqA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", @@ -3164,9 +3613,9 @@ } }, "mimic-fn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.0.0.tgz", - "integrity": "sha512-jbex9Yd/3lmICXwYT6gA/j2mNQGU48wCh/VzRd+/Y/PjYQtlg1gLMdZqvu9s/xH7qKvngxRObl56XZR609IMbA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimatch": { @@ -3228,6 +3677,13 @@ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -3254,9 +3710,9 @@ "dev": true }, "neo-async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", - "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, "nice-try": { @@ -3327,9 +3783,9 @@ "dev": true }, "nwsapi": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.1.tgz", - "integrity": "sha512-T5GaA1J/d34AC8mkrFD2O0DR17kwJ702ZOtJOsS8RpbsQZVOC2/xYFb1i/cw+xdM54JIlMuojjDOYct8GIWtwg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==", "dev": true }, "oauth-sign": { @@ -3370,9 +3826,9 @@ } }, "object-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.0.tgz", - "integrity": "sha512-6OO5X1+2tYkNyNEx6TsCxEqFfRWaqx6EtMiSbGrw8Ob8v9Ne+Hl8rBAgLBZn5wjEz3s/s6U1WXFUFOcxxAwUpg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object-visit": { @@ -3485,9 +3941,9 @@ "dev": true }, "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { @@ -3515,9 +3971,9 @@ "dev": true }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "parse-json": { @@ -3624,12 +4080,12 @@ "dev": true }, "pretty-format": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.5.0.tgz", - "integrity": "sha512-/3RuSghukCf8Riu5Ncve0iI+BzVkbRU5EeUoArKARZobREycuH5O4waxvaNIloEXdb0qwgmEAed5vTpX1HNROQ==", + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz", + "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==", "dev": true, "requires": { - "@jest/types": "^24.5.0", + "@jest/types": "^24.8.0", "ansi-regex": "^4.0.0", "ansi-styles": "^3.2.0", "react-is": "^16.8.4" @@ -3648,9 +4104,9 @@ "dev": true }, "prompts": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz", - "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.1.0.tgz", + "integrity": "sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg==", "dev": true, "requires": { "kleur": "^3.0.2", @@ -3686,9 +4142,9 @@ "dev": true }, "react-is": { - "version": "16.8.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.4.tgz", - "integrity": "sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==", + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", "dev": true }, "read-pkg": { @@ -3867,9 +4323,9 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { @@ -3968,9 +4424,9 @@ "dev": true }, "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true }, "set-blocking": { @@ -4200,9 +4656,9 @@ } }, "source-map-support": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", - "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -4242,9 +4698,9 @@ } }, "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", "dev": true }, "split-string": { @@ -4382,9 +4838,9 @@ } }, "strip-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.1.0.tgz", - "integrity": "sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" @@ -4418,15 +4874,15 @@ "dev": true }, "test-exclude": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.1.0.tgz", - "integrity": "sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", "dev": true, "requires": { - "arrify": "^1.0.1", + "glob": "^7.1.3", "minimatch": "^3.0.4", "read-pkg-up": "^4.0.0", - "require-main-filename": "^1.0.1" + "require-main-filename": "^2.0.0" } }, "throat": { @@ -4515,9 +4971,9 @@ "dev": true }, "ts-jest": { - "version": "23.10.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-23.10.5.tgz", - "integrity": "sha512-MRCs9qnGoyKgFc8adDEntAOP64fWK1vZKnOYU1o2HxaqjdJvGqmkLCPCnVq1/If4zkUmEjKPnCiUisTrlX2p2A==", + "version": "24.0.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.2.tgz", + "integrity": "sha512-h6ZCZiA1EQgjczxq+uGLXQlNgeg02WWJBbeT8j6nyIBRQdglqbvzDoHahTEIiS6Eor6x8mK6PfZ7brQ9Q6tzHw==", "dev": true, "requires": { "bs-logger": "0.x", @@ -4555,18 +5011,18 @@ "dev": true }, "tslint": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.14.0.tgz", - "integrity": "sha512-IUla/ieHVnB8Le7LdQFRGlVJid2T/gaJe5VkjzRVSRR6pA2ODYrnfR1hmxi+5+au9l50jBwpbBL34txgv4NnTQ==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz", + "integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==", "dev": true, "requires": { - "babel-code-frame": "^6.22.0", + "@babel/code-frame": "^7.0.0", "builtin-modules": "^1.1.1", "chalk": "^2.3.0", "commander": "^2.12.1", "diff": "^3.2.0", "glob": "^7.1.1", - "js-yaml": "^3.7.0", + "js-yaml": "^3.13.0", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "resolve": "^1.3.2", @@ -4696,20 +5152,29 @@ "dev": true }, "typescript": { - "version": "3.3.3333", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.3333.tgz", - "integrity": "sha512-JjSKsAfuHBE/fB2oZ8NxtRTk5iGcg6hkYXMnZ3Wc+b2RSqejEqTaem11mHASMnFilHrax3sLK0GDzcJrekZYLw==", + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", "dev": true }, "uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.15.tgz", + "integrity": "sha512-fe7aYFotptIddkwcm6YuA0HmknBZ52ZzOsUxZEdhhkSsz7RfjHDX2QDxwKTiv4JQ5t5NhfmpgAK+J7LiDhKSqg==", "dev": true, "optional": true, "requires": { - "commander": "~2.19.0", + "commander": "~2.20.0", "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true, + "optional": true + } } }, "union-value": { @@ -5031,6 +5496,14 @@ "which-module": "^2.0.0", "y18n": "^3.2.1 || ^4.0.0", "yargs-parser": "^11.1.1" + }, + "dependencies": { + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + } } }, "yargs-parser": { diff --git a/package.json b/package.json index a9e2648..f540cce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cachalot", - "version": "1.0.1", + "version": "1.1.0", "description": "Cache manager for nodejs with support different cache strategies", "keywords": [ "cache", @@ -38,17 +38,17 @@ "lodash": "^4.17.11" }, "devDependencies": { - "@types/ioredis": "^4.0.9", - "@types/jest": "^23", - "@types/lodash": "^4.14.120", + "@types/ioredis": "^4.0.10", + "@types/jest": "^24.0.13", + "@types/lodash": "^4.14.132", "@types/node": "^8", "coveralls": "^3.0.3", - "ioredis": "^4.6.3", - "jest": "^24.3.1", - "ts-jest": "^23", - "tslint": "^5.13.1", + "ioredis": "^4.9.5", + "jest": "^24.8.0", + "ts-jest": "^24.0.2", + "tslint": "^5.16.0", "tslint-config-unional": "^0.10.0", "typedoc": "^0.14.2", - "typescript": "^3.3.3" + "typescript": "^3.4.5" } } diff --git a/src/storage.ts b/src/storage.ts index 9474dae..ff0bfbf 100644 --- a/src/storage.ts +++ b/src/storage.ts @@ -97,6 +97,10 @@ export interface WriteOptions extends ExpireOptions { * the record will need to be obtained using the executor */ tags?: string[]; + /** + * getTags allows to detect tags for record depending on executor result + */ + getTags?: (executorResult: any) => string[]; } export type ReadWriteOptions = ReadOptions & WriteOptions; diff --git a/src/storages/base.spec.ts b/src/storages/base.spec.ts index acf5288..b6ee0fe 100644 --- a/src/storages/base.spec.ts +++ b/src/storages/base.spec.ts @@ -86,6 +86,52 @@ describe('BaseStorage', () => { expect(value.expiresIn).toEqual(expect.any(Number)); }); + it('set sets key to storage adapter with dynamic tags', async () => { + await storage.set('test', '123', { getTags: (result) => [result]}); + + const value = JSON.parse(testInterface.internalStorage['cache-test']); + + expect(value).toMatchObject({ + key: 'test', + permanent: true, + value: '"123"' + }); + expect(value.tags).toMatchObject([{ name: '123'}]); + expect(value.expiresIn).toEqual(expect.any(Number)); + }); + + it('set sets key to storage adapter with concatenated dynamic tags and simple tags', async () => { + await storage.set('test', '123', { tags: ['tag1'], getTags: (result) => [result]}); + + const value = JSON.parse(testInterface.internalStorage['cache-test']); + + expect(value).toMatchObject({ + key: 'test', + permanent: true, + value: '"123"' + }); + expect(value.tags).toMatchObject([{ name: 'tag1'}, { name: '123'}]); + expect(value.expiresIn).toEqual(expect.any(Number)); + }); + + it('set throws if dynamic tags Fn returns non-array value', async () => { + await expect(storage.set('test', '123', { getTags: (result) => result})).rejects.toThrow(); + }); + + it('set sets object key to storage adapter with dynamic tags', async () => { + await storage.set('test', { id: 'uuid' }, { getTags: ({ id }) => [id]}); + + const value = JSON.parse(testInterface.internalStorage['cache-test']); + + expect(value).toMatchObject({ + key: 'test', + permanent: true, + value: '{"id":"uuid"}' + }); + expect(value.tags).toMatchObject([{ name: 'uuid'}]); + expect(value.expiresIn).toEqual(expect.any(Number)); + }); + it('set sets key to storage adapter with given options', async () => { await storage.set('test', '123', { expiresIn: 0 }); diff --git a/src/storages/base.ts b/src/storages/base.ts index 056dd28..75e65cf 100644 --- a/src/storages/base.ts +++ b/src/storages/base.ts @@ -147,7 +147,13 @@ export class BaseStorage implements Storage { */ public async set(key: string, value: StorageRecordValue, options: WriteOptions = {}): Promise { const tags: string[] = options.tags || []; - const record = createRecord(key, value, tags.map(createTag), options); + const dynamicTags = isFunction(options.getTags) ? options.getTags(value) : []; + + if (!Array.isArray(dynamicTags)) { + throw new TypeError(`getTags should return an array of strings, got ${typeof dynamicTags}`); + } + + const record = createRecord(key, value, tags.concat(dynamicTags).map(createTag), options); await this.adapter.set( this.createKey(key),