@keyv/etcd 1.2.1 → 2.0.0-rc.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/cjs/index.d.ts +29 -0
- package/dist/cjs/index.js +111 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types.d.ts +8 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/index.d.ts +29 -0
- package/dist/esm/index.js +109 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types.d.ts +8 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/package.json +30 -23
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
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
|
+
type KeyvEtcdOptions = {
|
|
7
|
+
url?: string;
|
|
8
|
+
uri?: string;
|
|
9
|
+
ttl?: number;
|
|
10
|
+
busyTimeout?: number;
|
|
11
|
+
};
|
|
12
|
+
declare class KeyvEtcd<Value = any> extends EventEmitter {
|
|
13
|
+
ttlSupport: boolean;
|
|
14
|
+
opts: KeyvEtcdOptions;
|
|
15
|
+
client: Etcd3;
|
|
16
|
+
lease?: Lease;
|
|
17
|
+
namespace?: string;
|
|
18
|
+
constructor(url?: KeyvEtcdOptions | string, options?: KeyvEtcdOptions);
|
|
19
|
+
get(key: string): GetOutput<Value>;
|
|
20
|
+
getMany(keys: string[]): Promise<Array<StoredData<Value>>>;
|
|
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
|
+
}
|
|
29
|
+
export default KeyvEtcd;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const events_1 = require("events");
|
|
4
|
+
const etcd3_1 = require("etcd3");
|
|
5
|
+
class KeyvEtcd extends events_1.EventEmitter {
|
|
6
|
+
ttlSupport;
|
|
7
|
+
opts;
|
|
8
|
+
client;
|
|
9
|
+
lease;
|
|
10
|
+
namespace;
|
|
11
|
+
constructor(url, options) {
|
|
12
|
+
super();
|
|
13
|
+
this.ttlSupport = typeof options?.ttl === 'number';
|
|
14
|
+
url ??= {};
|
|
15
|
+
if (typeof url === 'string') {
|
|
16
|
+
url = { url };
|
|
17
|
+
}
|
|
18
|
+
if (url.uri) {
|
|
19
|
+
url = { url: url.uri, ...url };
|
|
20
|
+
}
|
|
21
|
+
if (url.ttl) {
|
|
22
|
+
this.ttlSupport = typeof url.ttl === 'number';
|
|
23
|
+
}
|
|
24
|
+
this.opts = {
|
|
25
|
+
url: '127.0.0.1:2379',
|
|
26
|
+
...url,
|
|
27
|
+
...options,
|
|
28
|
+
};
|
|
29
|
+
this.opts.url = this.opts.url.replace(/^etcd:\/\//, '');
|
|
30
|
+
this.client = new etcd3_1.Etcd3({
|
|
31
|
+
hosts: this.opts.url,
|
|
32
|
+
});
|
|
33
|
+
// Https://github.com/microsoft/etcd3/issues/105
|
|
34
|
+
this.client.getRoles().catch(error => this.emit('error', error));
|
|
35
|
+
if (this.ttlSupport) {
|
|
36
|
+
this.lease = this.client.lease(this.opts.ttl / 1000, {
|
|
37
|
+
autoKeepAlive: false,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async get(key) {
|
|
42
|
+
return this.client.get(key);
|
|
43
|
+
}
|
|
44
|
+
async getMany(keys) {
|
|
45
|
+
const promises = [];
|
|
46
|
+
for (const key of keys) {
|
|
47
|
+
promises.push(this.get(key));
|
|
48
|
+
}
|
|
49
|
+
return Promise.allSettled(promises)
|
|
50
|
+
.then(values => {
|
|
51
|
+
const data = [];
|
|
52
|
+
for (const value of values) {
|
|
53
|
+
// @ts-expect-error - value is an object
|
|
54
|
+
if (value.value === null) {
|
|
55
|
+
data.push(undefined);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// @ts-expect-error - value is an object
|
|
59
|
+
data.push(value.value);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return data;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
async set(key, value) {
|
|
66
|
+
let client = 'client';
|
|
67
|
+
if (this.opts.ttl) {
|
|
68
|
+
client = 'lease';
|
|
69
|
+
}
|
|
70
|
+
// @ts-expect-error - Value needs to be number, string or buffer
|
|
71
|
+
await this[client].put(key).value(value);
|
|
72
|
+
}
|
|
73
|
+
async delete(key) {
|
|
74
|
+
if (typeof key !== 'string') {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
return this.client.delete().key(key).then(key => key.deleted !== '0');
|
|
78
|
+
}
|
|
79
|
+
async deleteMany(keys) {
|
|
80
|
+
const promises = [];
|
|
81
|
+
for (const key of keys) {
|
|
82
|
+
promises.push(this.delete(key));
|
|
83
|
+
}
|
|
84
|
+
// @ts-expect-error - x is an object
|
|
85
|
+
return Promise.allSettled(promises).then(values => values.every(x => x.value === true));
|
|
86
|
+
}
|
|
87
|
+
async clear() {
|
|
88
|
+
const promise = this.namespace
|
|
89
|
+
? this.client.delete().prefix(this.namespace)
|
|
90
|
+
: this.client.delete().all();
|
|
91
|
+
return promise.then(() => undefined);
|
|
92
|
+
}
|
|
93
|
+
async *iterator(namespace) {
|
|
94
|
+
const iterator = await this.client
|
|
95
|
+
.getAll()
|
|
96
|
+
.prefix(namespace ? namespace + ':' : '')
|
|
97
|
+
.keys();
|
|
98
|
+
for await (const key of iterator) {
|
|
99
|
+
const value = await this.get(key);
|
|
100
|
+
yield [key, value];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async has(key) {
|
|
104
|
+
return this.client.get(key).exists();
|
|
105
|
+
}
|
|
106
|
+
async disconnect() {
|
|
107
|
+
return this.client.close();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.default = KeyvEtcd;
|
|
111
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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<void>;
|
|
5
|
+
export type DeleteOutput = Promise<boolean>;
|
|
6
|
+
export type DeleteManyOutput = Promise<boolean>;
|
|
7
|
+
export type ClearOutput = Promise<void>;
|
|
8
|
+
export type HasOutput = Promise<boolean>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
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
|
+
type KeyvEtcdOptions = {
|
|
7
|
+
url?: string;
|
|
8
|
+
uri?: string;
|
|
9
|
+
ttl?: number;
|
|
10
|
+
busyTimeout?: number;
|
|
11
|
+
};
|
|
12
|
+
declare class KeyvEtcd<Value = any> extends EventEmitter {
|
|
13
|
+
ttlSupport: boolean;
|
|
14
|
+
opts: KeyvEtcdOptions;
|
|
15
|
+
client: Etcd3;
|
|
16
|
+
lease?: Lease;
|
|
17
|
+
namespace?: string;
|
|
18
|
+
constructor(url?: KeyvEtcdOptions | string, options?: KeyvEtcdOptions);
|
|
19
|
+
get(key: string): GetOutput<Value>;
|
|
20
|
+
getMany(keys: string[]): Promise<Array<StoredData<Value>>>;
|
|
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
|
+
}
|
|
29
|
+
export default KeyvEtcd;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { Etcd3 } from 'etcd3';
|
|
3
|
+
class KeyvEtcd extends EventEmitter {
|
|
4
|
+
ttlSupport;
|
|
5
|
+
opts;
|
|
6
|
+
client;
|
|
7
|
+
lease;
|
|
8
|
+
namespace;
|
|
9
|
+
constructor(url, options) {
|
|
10
|
+
super();
|
|
11
|
+
this.ttlSupport = typeof options?.ttl === 'number';
|
|
12
|
+
url ??= {};
|
|
13
|
+
if (typeof url === 'string') {
|
|
14
|
+
url = { url };
|
|
15
|
+
}
|
|
16
|
+
if (url.uri) {
|
|
17
|
+
url = { url: url.uri, ...url };
|
|
18
|
+
}
|
|
19
|
+
if (url.ttl) {
|
|
20
|
+
this.ttlSupport = typeof url.ttl === 'number';
|
|
21
|
+
}
|
|
22
|
+
this.opts = {
|
|
23
|
+
url: '127.0.0.1:2379',
|
|
24
|
+
...url,
|
|
25
|
+
...options,
|
|
26
|
+
};
|
|
27
|
+
this.opts.url = this.opts.url.replace(/^etcd:\/\//, '');
|
|
28
|
+
this.client = new Etcd3({
|
|
29
|
+
hosts: this.opts.url,
|
|
30
|
+
});
|
|
31
|
+
// Https://github.com/microsoft/etcd3/issues/105
|
|
32
|
+
this.client.getRoles().catch(error => this.emit('error', error));
|
|
33
|
+
if (this.ttlSupport) {
|
|
34
|
+
this.lease = this.client.lease(this.opts.ttl / 1000, {
|
|
35
|
+
autoKeepAlive: false,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async get(key) {
|
|
40
|
+
return this.client.get(key);
|
|
41
|
+
}
|
|
42
|
+
async getMany(keys) {
|
|
43
|
+
const promises = [];
|
|
44
|
+
for (const key of keys) {
|
|
45
|
+
promises.push(this.get(key));
|
|
46
|
+
}
|
|
47
|
+
return Promise.allSettled(promises)
|
|
48
|
+
.then(values => {
|
|
49
|
+
const data = [];
|
|
50
|
+
for (const value of values) {
|
|
51
|
+
// @ts-expect-error - value is an object
|
|
52
|
+
if (value.value === null) {
|
|
53
|
+
data.push(undefined);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// @ts-expect-error - value is an object
|
|
57
|
+
data.push(value.value);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return data;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async set(key, value) {
|
|
64
|
+
let client = 'client';
|
|
65
|
+
if (this.opts.ttl) {
|
|
66
|
+
client = 'lease';
|
|
67
|
+
}
|
|
68
|
+
// @ts-expect-error - Value needs to be number, string or buffer
|
|
69
|
+
await this[client].put(key).value(value);
|
|
70
|
+
}
|
|
71
|
+
async delete(key) {
|
|
72
|
+
if (typeof key !== 'string') {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return this.client.delete().key(key).then(key => key.deleted !== '0');
|
|
76
|
+
}
|
|
77
|
+
async deleteMany(keys) {
|
|
78
|
+
const promises = [];
|
|
79
|
+
for (const key of keys) {
|
|
80
|
+
promises.push(this.delete(key));
|
|
81
|
+
}
|
|
82
|
+
// @ts-expect-error - x is an object
|
|
83
|
+
return Promise.allSettled(promises).then(values => values.every(x => x.value === true));
|
|
84
|
+
}
|
|
85
|
+
async clear() {
|
|
86
|
+
const promise = this.namespace
|
|
87
|
+
? this.client.delete().prefix(this.namespace)
|
|
88
|
+
: this.client.delete().all();
|
|
89
|
+
return promise.then(() => undefined);
|
|
90
|
+
}
|
|
91
|
+
async *iterator(namespace) {
|
|
92
|
+
const iterator = await this.client
|
|
93
|
+
.getAll()
|
|
94
|
+
.prefix(namespace ? namespace + ':' : '')
|
|
95
|
+
.keys();
|
|
96
|
+
for await (const key of iterator) {
|
|
97
|
+
const value = await this.get(key);
|
|
98
|
+
yield [key, value];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async has(key) {
|
|
102
|
+
return this.client.get(key).exists();
|
|
103
|
+
}
|
|
104
|
+
async disconnect() {
|
|
105
|
+
return this.client.close();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export default KeyvEtcd;
|
|
109
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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<void>;
|
|
5
|
+
export type DeleteOutput = Promise<boolean>;
|
|
6
|
+
export type DeleteManyOutput = Promise<boolean>;
|
|
7
|
+
export type ClearOutput = Promise<void>;
|
|
8
|
+
export type HasOutput = Promise<boolean>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
package/dist/index.js
CHANGED
|
@@ -19,8 +19,9 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
|
19
19
|
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
20
20
|
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
21
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
|
|
22
|
+
return i = {}, verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
23
|
+
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
|
|
24
|
+
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
|
|
24
25
|
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
25
26
|
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
26
27
|
function fulfill(value) { resume("next", value); }
|
|
@@ -33,7 +34,7 @@ class KeyvEtcd extends events_1.EventEmitter {
|
|
|
33
34
|
constructor(url, options) {
|
|
34
35
|
super();
|
|
35
36
|
this.ttlSupport = typeof (options === null || options === void 0 ? void 0 : options.ttl) === 'number';
|
|
36
|
-
url
|
|
37
|
+
url !== null && url !== void 0 ? url : (url = {});
|
|
37
38
|
if (typeof url === 'string') {
|
|
38
39
|
url = { url };
|
|
39
40
|
}
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,27 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keyv/etcd",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-rc.1",
|
|
4
4
|
"description": "Etcd storage adapter for Keyv",
|
|
5
|
-
"main": "dist/index.js",
|
|
6
|
-
"
|
|
5
|
+
"main": "dist/cjs/index.js",
|
|
6
|
+
"module": "dist/esm/index.js",
|
|
7
|
+
"types": "dist/esm/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"require": "./dist/cjs/index.js",
|
|
11
|
+
"import": "./dist/esm/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
7
14
|
"scripts": {
|
|
8
|
-
"build": "tsc --project tsconfig.
|
|
15
|
+
"build": "tsc --project tsconfig.csj.json && tsc --project tsconfig.esm.json",
|
|
9
16
|
"prepare": "yarn build",
|
|
10
|
-
"test": "xo &&
|
|
11
|
-
"test:ci": "xo &&
|
|
17
|
+
"test": "xo --fix && vitest run --coverage",
|
|
18
|
+
"test:ci": "xo && vitest --run --sequence.setupFiles=list",
|
|
12
19
|
"clean": "rm -rf node_modules && rm -rf ./coverage"
|
|
13
20
|
},
|
|
14
21
|
"xo": {
|
|
15
22
|
"rules": {
|
|
16
|
-
"unicorn/prefer-module":
|
|
17
|
-
"unicorn/no-array-reduce":
|
|
18
|
-
"unicorn/prefer-object-from-entries":
|
|
19
|
-
"unicorn/prefer-node-protocol":
|
|
20
|
-
"import/extensions":
|
|
21
|
-
"@typescript-eslint/no-confusing-void-expression":
|
|
22
|
-
"@typescript-eslint/promise-function-async":
|
|
23
|
-
"eslint-comments/no-unused-disable":
|
|
24
|
-
"unicorn/prefer-event-target":
|
|
23
|
+
"unicorn/prefer-module": "off",
|
|
24
|
+
"unicorn/no-array-reduce": "off",
|
|
25
|
+
"unicorn/prefer-object-from-entries": "off",
|
|
26
|
+
"unicorn/prefer-node-protocol": "off",
|
|
27
|
+
"import/extensions": "off",
|
|
28
|
+
"@typescript-eslint/no-confusing-void-expression": "off",
|
|
29
|
+
"@typescript-eslint/promise-function-async": "off",
|
|
30
|
+
"eslint-comments/no-unused-disable": "off",
|
|
31
|
+
"unicorn/prefer-event-target": "off",
|
|
32
|
+
"import/no-extraneous-dependencies": "off"
|
|
25
33
|
}
|
|
26
34
|
},
|
|
27
35
|
"ava": {
|
|
@@ -60,15 +68,14 @@
|
|
|
60
68
|
},
|
|
61
69
|
"devDependencies": {
|
|
62
70
|
"@keyv/test-suite": "*",
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"keyv": "*",
|
|
71
|
+
"c8": "^9.1.0",
|
|
72
|
+
"keyv": "^5.0.0-rc.1",
|
|
66
73
|
"requirable": "^1.0.5",
|
|
67
|
-
"ts-node": "^10.9.
|
|
68
|
-
"tsd": "^0.
|
|
69
|
-
"typescript": "^5.
|
|
70
|
-
"webpack": "^5.
|
|
71
|
-
"xo": "^0.
|
|
74
|
+
"ts-node": "^10.9.2",
|
|
75
|
+
"tsd": "^0.31.0",
|
|
76
|
+
"typescript": "^5.4.5",
|
|
77
|
+
"webpack": "^5.91.0",
|
|
78
|
+
"xo": "^0.58.0"
|
|
72
79
|
},
|
|
73
80
|
"tsd": {
|
|
74
81
|
"directory": "test"
|