@keyv/etcd 1.2.0 → 1.2.1
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/dist/index.d.ts +11 -11
- package/dist/index.js +108 -51
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +9 -9
package/dist/index.d.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { EventEmitter } from 'events';
|
|
3
|
-
import type
|
|
4
|
-
import {
|
|
5
|
-
import type {
|
|
3
|
+
import { Etcd3, type Lease } from 'etcd3';
|
|
4
|
+
import type { StoredData } from 'keyv';
|
|
5
|
+
import type { ClearOutput, DeleteManyOutput, DeleteOutput, GetOutput, HasOutput, SetOutput } from './types';
|
|
6
6
|
type KeyvEtcdOptions = {
|
|
7
7
|
url?: string;
|
|
8
8
|
uri?: string;
|
|
9
9
|
ttl?: number;
|
|
10
10
|
busyTimeout?: number;
|
|
11
11
|
};
|
|
12
|
-
|
|
13
|
-
declare class KeyvEtcd<Value = any> extends EventEmitter implements Store<Value> {
|
|
12
|
+
declare class KeyvEtcd<Value = any> extends EventEmitter {
|
|
14
13
|
ttlSupport: boolean;
|
|
15
14
|
opts: KeyvEtcdOptions;
|
|
16
15
|
client: Etcd3;
|
|
@@ -19,11 +18,12 @@ declare class KeyvEtcd<Value = any> extends EventEmitter implements Store<Value>
|
|
|
19
18
|
constructor(url?: KeyvEtcdOptions | string, options?: KeyvEtcdOptions);
|
|
20
19
|
get(key: string): GetOutput<Value>;
|
|
21
20
|
getMany(keys: string[]): Promise<Array<StoredData<Value>>>;
|
|
22
|
-
set(key: string, value: Value):
|
|
23
|
-
delete(key: string):
|
|
24
|
-
deleteMany(keys: string[]):
|
|
25
|
-
clear():
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
set(key: string, value: Value): SetOutput;
|
|
22
|
+
delete(key: string): DeleteOutput;
|
|
23
|
+
deleteMany(keys: string[]): DeleteManyOutput;
|
|
24
|
+
clear(): ClearOutput;
|
|
25
|
+
iterator(namespace?: string): AsyncGenerator<(string | Awaited<Value> | undefined)[], void, unknown>;
|
|
26
|
+
has(key: string): HasOutput;
|
|
27
|
+
disconnect(): Promise<void>;
|
|
28
28
|
}
|
|
29
29
|
export = KeyvEtcd;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
12
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
13
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
14
|
+
var m = o[Symbol.asyncIterator], i;
|
|
15
|
+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
16
|
+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
17
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
18
|
+
};
|
|
19
|
+
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
20
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
21
|
+
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
22
|
+
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
23
|
+
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
|
|
24
|
+
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
25
|
+
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
26
|
+
function fulfill(value) { resume("next", value); }
|
|
27
|
+
function reject(value) { resume("throw", value); }
|
|
28
|
+
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
29
|
+
};
|
|
3
30
|
const events_1 = require("events");
|
|
4
31
|
const etcd3_1 = require("etcd3");
|
|
5
|
-
const cockatiel_1 = require("cockatiel");
|
|
6
32
|
class KeyvEtcd extends events_1.EventEmitter {
|
|
7
33
|
constructor(url, options) {
|
|
8
34
|
super();
|
|
@@ -19,18 +45,8 @@ class KeyvEtcd extends events_1.EventEmitter {
|
|
|
19
45
|
}
|
|
20
46
|
this.opts = Object.assign(Object.assign({ url: '127.0.0.1:2379' }, url), options);
|
|
21
47
|
this.opts.url = this.opts.url.replace(/^etcd:\/\//, '');
|
|
22
|
-
const policy = (0, cockatiel_1.retry)(cockatiel_1.handleAll, { backoff: new cockatiel_1.ExponentialBackoff() });
|
|
23
|
-
policy.onFailure(error => {
|
|
24
|
-
this.emit('error', error.reason);
|
|
25
|
-
});
|
|
26
48
|
this.client = new etcd3_1.Etcd3({
|
|
27
49
|
hosts: this.opts.url,
|
|
28
|
-
faultHandling: {
|
|
29
|
-
// @ts-expect-error - iPolicy
|
|
30
|
-
host: () => policy,
|
|
31
|
-
// @ts-expect-error - iPolicy
|
|
32
|
-
global: policy,
|
|
33
|
-
},
|
|
34
50
|
});
|
|
35
51
|
// Https://github.com/microsoft/etcd3/issues/105
|
|
36
52
|
this.client.getRoles().catch(error => this.emit('error', error));
|
|
@@ -41,62 +57,103 @@ class KeyvEtcd extends events_1.EventEmitter {
|
|
|
41
57
|
}
|
|
42
58
|
}
|
|
43
59
|
get(key) {
|
|
44
|
-
return this
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
return this.client.get(key);
|
|
62
|
+
});
|
|
45
63
|
}
|
|
46
64
|
getMany(keys) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (value.value === null) {
|
|
57
|
-
data.push(undefined);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
const promises = [];
|
|
67
|
+
for (const key of keys) {
|
|
68
|
+
promises.push(this.get(key));
|
|
69
|
+
}
|
|
70
|
+
return Promise.allSettled(promises)
|
|
71
|
+
.then(values => {
|
|
72
|
+
const data = [];
|
|
73
|
+
for (const value of values) {
|
|
60
74
|
// @ts-expect-error - value is an object
|
|
61
|
-
|
|
75
|
+
if (value.value === null) {
|
|
76
|
+
data.push(undefined);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// @ts-expect-error - value is an object
|
|
80
|
+
data.push(value.value);
|
|
81
|
+
}
|
|
62
82
|
}
|
|
63
|
-
|
|
64
|
-
|
|
83
|
+
return data;
|
|
84
|
+
});
|
|
65
85
|
});
|
|
66
86
|
}
|
|
67
87
|
set(key, value) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
let client = 'client';
|
|
90
|
+
if (this.opts.ttl) {
|
|
91
|
+
client = 'lease';
|
|
92
|
+
}
|
|
93
|
+
// @ts-expect-error - Value needs to be number, string or buffer
|
|
94
|
+
return this[client].put(key).value(value);
|
|
95
|
+
});
|
|
74
96
|
}
|
|
75
97
|
delete(key) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
98
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
if (typeof key !== 'string') {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
return this.client.delete().key(key).then(key => key.deleted !== '0');
|
|
103
|
+
});
|
|
80
104
|
}
|
|
81
105
|
deleteMany(keys) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
const promises = [];
|
|
108
|
+
for (const key of keys) {
|
|
109
|
+
promises.push(this.delete(key));
|
|
110
|
+
}
|
|
111
|
+
// @ts-expect-error - x is an object
|
|
112
|
+
return Promise.allSettled(promises).then(values => values.every(x => x.value === true));
|
|
113
|
+
});
|
|
88
114
|
}
|
|
89
115
|
clear() {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
116
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
const promise = this.namespace
|
|
118
|
+
? this.client.delete().prefix(this.namespace)
|
|
119
|
+
: this.client.delete().all();
|
|
120
|
+
return promise.then(() => undefined);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
iterator(namespace) {
|
|
124
|
+
return __asyncGenerator(this, arguments, function* iterator_1() {
|
|
125
|
+
var _a, e_1, _b, _c;
|
|
126
|
+
const iterator = yield __await(this.client
|
|
127
|
+
.getAll()
|
|
128
|
+
.prefix(namespace ? namespace + ':' : '')
|
|
129
|
+
.keys());
|
|
130
|
+
try {
|
|
131
|
+
for (var _d = true, iterator_2 = __asyncValues(iterator), iterator_2_1; iterator_2_1 = yield __await(iterator_2.next()), _a = iterator_2_1.done, !_a; _d = true) {
|
|
132
|
+
_c = iterator_2_1.value;
|
|
133
|
+
_d = false;
|
|
134
|
+
const key = _c;
|
|
135
|
+
const value = yield __await(this.get(key));
|
|
136
|
+
yield yield __await([key, value]);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
140
|
+
finally {
|
|
141
|
+
try {
|
|
142
|
+
if (!_d && !_a && (_b = iterator_2.return)) yield __await(_b.call(iterator_2));
|
|
143
|
+
}
|
|
144
|
+
finally { if (e_1) throw e_1.error; }
|
|
145
|
+
}
|
|
146
|
+
});
|
|
94
147
|
}
|
|
95
148
|
has(key) {
|
|
96
|
-
return this
|
|
149
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
return this.client.get(key).exists();
|
|
151
|
+
});
|
|
97
152
|
}
|
|
98
153
|
disconnect() {
|
|
99
|
-
return this
|
|
154
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
155
|
+
return this.client.close();
|
|
156
|
+
});
|
|
100
157
|
}
|
|
101
158
|
}
|
|
102
159
|
module.exports = KeyvEtcd;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAoC;AACpC,iCAAwC;AAWxC,MAAM,QAAsB,SAAQ,qBAAY;IAO/C,YAAY,GAA8B,EAAE,OAAyB;QACpE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAA,KAAK,QAAQ,CAAC;QAEnD,GAAG,GAAG,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,CAAC;QAEhB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC5B,GAAG,GAAG,EAAC,GAAG,EAAC,CAAC;SACZ;QAED,IAAI,GAAG,CAAC,GAAG,EAAE;YACZ,GAAG,mBAAI,GAAG,EAAE,GAAG,CAAC,GAAG,IAAK,GAAG,CAAC,CAAC;SAC7B;QAED,IAAI,GAAG,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,UAAU,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC;SAC9C;QAED,IAAI,CAAC,IAAI,iCACR,GAAG,EAAE,gBAAgB,IAClB,GAAG,GACH,OAAO,CACV,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC,MAAM,GAAG,IAAI,aAAK,CAAC;YACvB,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;SACpB,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAEjE,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAI,GAAG,IAAI,EAAE;gBACrD,aAAa,EAAE,KAAK;aACpB,CAAC,CAAC;SACH;IACF,CAAC;IAEK,GAAG,CAAC,GAAW;;YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAgC,CAAC;QAC5D,CAAC;KAAA;IAEK,OAAO,CAAC,IAAc;;YAC3B,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACvB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aAC7B;YAED,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;iBACjC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACd,MAAM,IAAI,GAA6B,EAAE,CAAC;gBAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;oBAC3B,wCAAwC;oBACxC,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE;wBACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACrB;yBAAM;wBACN,wCAAwC;wBACxC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAA0B,CAAC,CAAC;qBAC5C;iBACD;gBAED,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC;KAAA;IAEK,GAAG,CAAC,GAAW,EAAE,KAAY;;YAClC,IAAI,MAAM,GAAuB,QAAQ,CAAC;YAE1C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClB,MAAM,GAAG,OAAO,CAAC;aACjB;YAED,gEAAgE;YAChE,OAAO,IAAI,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;KAAA;IAEK,MAAM,CAAC,GAAW;;YACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBAC5B,OAAO,KAAK,CAAC;aACb;YAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;QACvE,CAAC;KAAA;IAEK,UAAU,CAAC,IAAc;;YAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACvB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;aAChC;YAED,oCAAoC;YACpC,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;QACzF,CAAC;KAAA;IAEK,KAAK;;YACV,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS;gBAC7B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC7C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;KAAA;IAEO,QAAQ,CAAC,SAAkB;;;YAClC,MAAM,QAAQ,GAAG,cAAM,IAAI,CAAC,MAAM;iBAChC,MAAM,EAAE;iBACR,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxC,IAAI,EAAE,CAAA,CAAC;;gBAET,KAAwB,eAAA,aAAA,cAAA,QAAQ,CAAA,cAAA,2FAAE;oBAAV,wBAAQ;oBAAR,WAAQ;oBAArB,MAAM,GAAG,KAAA,CAAA;oBACnB,MAAM,KAAK,GAAG,cAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAC;oBAClC,oBAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA,CAAC;iBACnB;;;;;;;;;QACF,CAAC;KAAA;IAEK,GAAG,CAAC,GAAW;;YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACtC,CAAC;KAAA;IAEK,UAAU;;YACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;KAAA;CACD;AAED,iBAAS,QAAQ,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type StoredData } from 'keyv';
|
|
2
|
+
export type GetOutput<Value> = Promise<Value | undefined>;
|
|
3
|
+
export type GetManyOutput<Value> = Promise<Array<StoredData<Value | undefined> | undefined>>;
|
|
4
|
+
export type SetOutput = Promise<any>;
|
|
5
|
+
export type DeleteOutput = Promise<boolean>;
|
|
6
|
+
export type DeleteManyOutput = Promise<boolean>;
|
|
7
|
+
export type ClearOutput = Promise<void>;
|
|
8
|
+
export type HasOutput = Promise<boolean>;
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keyv/etcd",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Etcd storage adapter for Keyv",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
"import/extensions": 0,
|
|
21
21
|
"@typescript-eslint/no-confusing-void-expression": 0,
|
|
22
22
|
"@typescript-eslint/promise-function-async": 0,
|
|
23
|
-
"eslint-comments/no-unused-disable": 0
|
|
23
|
+
"eslint-comments/no-unused-disable": 0,
|
|
24
|
+
"unicorn/prefer-event-target": 0
|
|
24
25
|
}
|
|
25
26
|
},
|
|
26
27
|
"ava": {
|
|
@@ -55,20 +56,19 @@
|
|
|
55
56
|
},
|
|
56
57
|
"homepage": "https://github.com/jaredwray/keyv",
|
|
57
58
|
"dependencies": {
|
|
58
|
-
"
|
|
59
|
-
"etcd3": "^1.1.0"
|
|
59
|
+
"etcd3": "^1.1.2"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@keyv/test-suite": "*",
|
|
63
|
-
"ava": "^5.
|
|
64
|
-
"c8": "^
|
|
63
|
+
"ava": "^5.3.1",
|
|
64
|
+
"c8": "^8.0.1",
|
|
65
65
|
"keyv": "*",
|
|
66
66
|
"requirable": "^1.0.5",
|
|
67
67
|
"ts-node": "^10.9.1",
|
|
68
68
|
"tsd": "^0.28.1",
|
|
69
|
-
"typescript": "^5.
|
|
70
|
-
"webpack": "^5.
|
|
71
|
-
"xo": "^0.
|
|
69
|
+
"typescript": "^5.1.6",
|
|
70
|
+
"webpack": "^5.88.2",
|
|
71
|
+
"xo": "^0.56.0"
|
|
72
72
|
},
|
|
73
73
|
"tsd": {
|
|
74
74
|
"directory": "test"
|