keyv 4.5.2 → 4.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -151,6 +151,8 @@ The following are third-party storage adapters compatible with Keyv:
151
151
  - [keyv-firestore ](https://github.com/goto-bus-stop/keyv-firestore) – Firebase Cloud Firestore adapter for Keyv
152
152
  - [keyv-mssql](https://github.com/pmorgan3/keyv-mssql) - Microsoft Sql Server adapter for Keyv
153
153
  - [keyv-azuretable](https://github.com/howlowck/keyv-azuretable) - Azure Table Storage/API adapter for Keyv
154
+ - [keyv-arango](https://github.com/TimMikeladze/keyv-arango) - ArangoDB storage adapter for Keyv
155
+ - [keyv-momento](https://github.com/momentohq/node-keyv-adaptor/) - Momento storage adapter for Keyv
154
156
 
155
157
  ## Add Cache Support to your Module
156
158
 
package/package.json CHANGED
@@ -1,18 +1,22 @@
1
1
  {
2
2
  "name": "keyv",
3
- "version": "4.5.2",
3
+ "version": "4.5.4",
4
4
  "description": "Simple key-value storage with support for multiple backends",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
7
- "test": "xo && nyc ava --serial",
8
- "coverage": "nyc report --reporter=text-lcov > coverage.lcov",
9
- "clean": "rm -rf node_modules && rm -rf .nyc_output && rm -rf coverage.lcov && rm -rf ./test/testdb.sqlite"
7
+ "build": "echo 'No build step required.'",
8
+ "prepare": "yarn build",
9
+ "test": "xo && c8 ava --serial",
10
+ "test:ci": "xo && ava --serial",
11
+ "clean": "rm -rf node_modules && rm -rf ./coverage && rm -rf ./test/testdb.sqlite"
10
12
  },
11
13
  "xo": {
12
14
  "rules": {
13
15
  "unicorn/prefer-module": 0,
14
16
  "unicorn/prefer-node-protocol": 0,
15
- "@typescript-eslint/consistent-type-definitions": 0
17
+ "@typescript-eslint/consistent-type-definitions": 0,
18
+ "unicorn/no-typeof-undefined": 0,
19
+ "unicorn/prefer-event-target": 0
16
20
  }
17
21
  },
18
22
  "repository": {
@@ -37,16 +41,11 @@
37
41
  },
38
42
  "devDependencies": {
39
43
  "@keyv/test-suite": "*",
40
- "ava": "^5.0.1",
41
- "eslint": "^8.26.0",
44
+ "eslint": "^8.51.0",
42
45
  "eslint-plugin-promise": "^6.1.1",
43
- "nyc": "^15.1.0",
44
- "pify": "5.0.0",
45
- "this": "^1.1.0",
46
- "timekeeper": "^2.2.0",
47
- "tsd": "^0.24.1",
48
- "typescript": "^4.8.4",
49
- "xo": "^0.52.4"
46
+ "pify": "^5.0.0",
47
+ "timekeeper": "^2.3.1",
48
+ "tsd": "^0.29.0"
50
49
  },
51
50
  "tsd": {
52
51
  "directory": "test"
package/src/index.d.ts CHANGED
@@ -27,18 +27,14 @@ declare class Keyv<Value = any, Options extends Record<string, any> = Record<str
27
27
  constructor(uri?: string, options?: Keyv.Options<Value> & Options);
28
28
 
29
29
  /** Returns the value. */
30
- get<Raw extends boolean = false>(key: string, options?: {raw?: Raw}):
31
- Promise<(Raw extends false
32
- ? Value
33
- : Keyv.DeserializedData<Value>) | undefined>;
30
+ get(key: string, options?: {raw?: false}): Promise<Value | undefined>;
31
+ /** Returns the raw value. */
32
+ get(key: string, options: {raw: true}): Promise<Keyv.DeserializedData<Value> | undefined>;
34
33
 
35
34
  /** Returns an array of values. Uses `store.getMany` if it exists, otherwise uses parallel calls to `store.get`. */
36
- get<Raw extends boolean = false>(
37
- key: string[],
38
- options?: {raw?: Raw}
39
- ): Promise<
40
- Array<(Raw extends false ? Value : Keyv.DeserializedData<Value>) | undefined>
41
- >;
35
+ get(key: string[], options?: {raw?: false}): Promise<Array<Value | undefined>>;
36
+ /** Returns an array of raw values. Uses `store.getMany` if it exists, otherwise uses parallel calls to `store.get`. */
37
+ get(key: string[], options: {raw: true}): Promise<Array<Keyv.DeserializedData<Value> | undefined>>;
42
38
 
43
39
  /**
44
40
  * Set a value.
package/src/index.js CHANGED
@@ -66,7 +66,7 @@ class Keyv extends EventEmitter {
66
66
  for await (const [key, raw] of typeof iterator === 'function'
67
67
  ? iterator(this.opts.store.namespace)
68
68
  : iterator) {
69
- const data = this.opts.deserialize(raw);
69
+ const data = await this.opts.deserialize(raw);
70
70
  if (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {
71
71
  continue;
72
72
  }
@@ -153,27 +153,22 @@ class Keyv extends EventEmitter {
153
153
  }
154
154
 
155
155
  if (isArray) {
156
- const result = [];
157
-
158
- for (let row of data) {
156
+ return data.map((row, index) => {
159
157
  if ((typeof row === 'string')) {
160
158
  row = this.opts.deserialize(row);
161
159
  }
162
160
 
163
161
  if (row === undefined || row === null) {
164
- result.push(undefined);
165
- continue;
162
+ return undefined;
166
163
  }
167
164
 
168
165
  if (typeof row.expires === 'number' && Date.now() > row.expires) {
169
- this.delete(key).then(() => undefined);
170
- result.push(undefined);
171
- } else {
172
- result.push((options && options.raw) ? row : row.value);
166
+ this.delete(key[index]).then(() => undefined);
167
+ return undefined;
173
168
  }
174
- }
175
169
 
176
- return result;
170
+ return (options && options.raw) ? row : row.value;
171
+ });
177
172
  }
178
173
 
179
174
  if (typeof data.expires === 'number' && Date.now() > data.expires) {