@keyv/etcd 1.2.0 → 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.
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -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":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAC,KAAK,EAAa,MAAM,OAAO,CAAC;AAaxC,MAAM,QAAsB,SAAQ,YAAY;IACxC,UAAU,CAAU;IACpB,IAAI,CAAkB;IACtB,MAAM,CAAQ;IACd,KAAK,CAAS;IACd,SAAS,CAAU;IAE1B,YAAY,GAA8B,EAAE,OAAyB;QACpE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,UAAU,GAAG,OAAO,OAAO,EAAE,GAAG,KAAK,QAAQ,CAAC;QAEnD,GAAG,KAAK,EAAE,CAAC;QAEX,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,GAAG,GAAG,EAAC,GAAG,EAAC,CAAC;QACb,CAAC;QAED,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACb,GAAG,GAAG,EAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,EAAC,CAAC;QAC9B,CAAC;QAED,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,GAAG,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,IAAI,GAAG;YACX,GAAG,EAAE,gBAAgB;YACrB,GAAG,GAAG;YACN,GAAG,OAAO;SACV,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,KAAK,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,CAAC;YACrB,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;QACJ,CAAC;IACF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAgC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAc;QAC3B,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;aACjC,IAAI,CAAC,MAAM,CAAC,EAAE;YACd,MAAM,IAAI,GAA6B,EAAE,CAAC;YAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC5B,wCAAwC;gBACxC,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;oBAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACP,wCAAwC;oBACxC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAA0B,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;YAED,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAY;QAClC,IAAI,MAAM,GAAuB,QAAQ,CAAC;QAE1C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,MAAM,GAAG,OAAO,CAAC;QAClB,CAAC;QAED,gEAAgE;QAChE,MAAM,IAAI,CAAC,MAAM,CAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,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;IACvE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAc;QAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,oCAAoC;QACpC,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;IACzF,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS;YAC7B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,CAAE,QAAQ,CAAC,SAAkB;QAClC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM;aAChC,MAAM,EAAE;aACR,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;aACxC,IAAI,EAAE,CAAC;QAET,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,UAAU;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACD;AAED,eAAe,QAAQ,CAAC"}
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,16 +1,15 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
- import type { Lease } from 'etcd3';
4
- import { Etcd3 } from 'etcd3';
5
- import type { Store, StoredData } from 'keyv';
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
- type GetOutput<Value> = Value | Promise<Value | undefined> | undefined;
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): import("etcd3").PutBuilder;
23
- delete(key: string): Promise<boolean>;
24
- deleteMany(keys: string[]): Promise<boolean>;
25
- clear(): Promise<void>;
26
- has(key: string): Promise<boolean>;
27
- disconnect(): void;
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,13 +1,40 @@
1
1
  "use strict";
2
- /* eslint-disable @typescript-eslint/no-unsafe-argument */
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", 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]); } }
25
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
26
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
27
+ function fulfill(value) { resume("next", value); }
28
+ function reject(value) { resume("throw", value); }
29
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
30
+ };
3
31
  const events_1 = require("events");
4
32
  const etcd3_1 = require("etcd3");
5
- const cockatiel_1 = require("cockatiel");
6
33
  class KeyvEtcd extends events_1.EventEmitter {
7
34
  constructor(url, options) {
8
35
  super();
9
36
  this.ttlSupport = typeof (options === null || options === void 0 ? void 0 : options.ttl) === 'number';
10
- url = url !== null && url !== void 0 ? url : {};
37
+ url !== null && url !== void 0 ? url : (url = {});
11
38
  if (typeof url === 'string') {
12
39
  url = { url };
13
40
  }
@@ -19,18 +46,8 @@ class KeyvEtcd extends events_1.EventEmitter {
19
46
  }
20
47
  this.opts = Object.assign(Object.assign({ url: '127.0.0.1:2379' }, url), options);
21
48
  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
49
  this.client = new etcd3_1.Etcd3({
27
50
  hosts: this.opts.url,
28
- faultHandling: {
29
- // @ts-expect-error - iPolicy
30
- host: () => policy,
31
- // @ts-expect-error - iPolicy
32
- global: policy,
33
- },
34
51
  });
35
52
  // Https://github.com/microsoft/etcd3/issues/105
36
53
  this.client.getRoles().catch(error => this.emit('error', error));
@@ -41,62 +58,103 @@ class KeyvEtcd extends events_1.EventEmitter {
41
58
  }
42
59
  }
43
60
  get(key) {
44
- return this.client.get(key);
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ return this.client.get(key);
63
+ });
45
64
  }
46
65
  getMany(keys) {
47
- const promises = [];
48
- for (const key of keys) {
49
- promises.push(this.get(key));
50
- }
51
- return Promise.allSettled(promises)
52
- .then(values => {
53
- const data = [];
54
- for (const value of values) {
55
- // @ts-expect-error - value is an object
56
- if (value.value === null) {
57
- data.push(undefined);
58
- }
59
- else {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ const promises = [];
68
+ for (const key of keys) {
69
+ promises.push(this.get(key));
70
+ }
71
+ return Promise.allSettled(promises)
72
+ .then(values => {
73
+ const data = [];
74
+ for (const value of values) {
60
75
  // @ts-expect-error - value is an object
61
- data.push(value.value);
76
+ if (value.value === null) {
77
+ data.push(undefined);
78
+ }
79
+ else {
80
+ // @ts-expect-error - value is an object
81
+ data.push(value.value);
82
+ }
62
83
  }
63
- }
64
- return data;
84
+ return data;
85
+ });
65
86
  });
66
87
  }
67
88
  set(key, value) {
68
- let client = 'client';
69
- if (this.opts.ttl) {
70
- client = 'lease';
71
- }
72
- // @ts-expect-error - Value needs to be number, string or buffer
73
- return this[client].put(key).value(value);
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ let client = 'client';
91
+ if (this.opts.ttl) {
92
+ client = 'lease';
93
+ }
94
+ // @ts-expect-error - Value needs to be number, string or buffer
95
+ return this[client].put(key).value(value);
96
+ });
74
97
  }
75
98
  delete(key) {
76
- if (typeof key !== 'string') {
77
- return Promise.resolve(false);
78
- }
79
- return this.client.delete().key(key).then(key => key.deleted !== '0');
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ if (typeof key !== 'string') {
101
+ return false;
102
+ }
103
+ return this.client.delete().key(key).then(key => key.deleted !== '0');
104
+ });
80
105
  }
81
106
  deleteMany(keys) {
82
- const promises = [];
83
- for (const key of keys) {
84
- promises.push(this.delete(key));
85
- }
86
- // @ts-expect-error - x is an object
87
- return Promise.allSettled(promises).then(values => values.every(x => x.value === true));
107
+ return __awaiter(this, void 0, void 0, function* () {
108
+ const promises = [];
109
+ for (const key of keys) {
110
+ promises.push(this.delete(key));
111
+ }
112
+ // @ts-expect-error - x is an object
113
+ return Promise.allSettled(promises).then(values => values.every(x => x.value === true));
114
+ });
88
115
  }
89
116
  clear() {
90
- const promise = this.namespace
91
- ? this.client.delete().prefix(this.namespace)
92
- : this.client.delete().all();
93
- return promise.then(() => undefined);
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ const promise = this.namespace
119
+ ? this.client.delete().prefix(this.namespace)
120
+ : this.client.delete().all();
121
+ return promise.then(() => undefined);
122
+ });
123
+ }
124
+ iterator(namespace) {
125
+ return __asyncGenerator(this, arguments, function* iterator_1() {
126
+ var _a, e_1, _b, _c;
127
+ const iterator = yield __await(this.client
128
+ .getAll()
129
+ .prefix(namespace ? namespace + ':' : '')
130
+ .keys());
131
+ try {
132
+ 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) {
133
+ _c = iterator_2_1.value;
134
+ _d = false;
135
+ const key = _c;
136
+ const value = yield __await(this.get(key));
137
+ yield yield __await([key, value]);
138
+ }
139
+ }
140
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
141
+ finally {
142
+ try {
143
+ if (!_d && !_a && (_b = iterator_2.return)) yield __await(_b.call(iterator_2));
144
+ }
145
+ finally { if (e_1) throw e_1.error; }
146
+ }
147
+ });
94
148
  }
95
149
  has(key) {
96
- return this.client.get(key).exists();
150
+ return __awaiter(this, void 0, void 0, function* () {
151
+ return this.client.get(key).exists();
152
+ });
97
153
  }
98
154
  disconnect() {
99
- return this.client.close();
155
+ return __awaiter(this, void 0, void 0, function* () {
156
+ return this.client.close();
157
+ });
100
158
  }
101
159
  }
102
160
  module.exports = KeyvEtcd;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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<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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,26 +1,35 @@
1
1
  {
2
2
  "name": "@keyv/etcd",
3
- "version": "1.2.0",
3
+ "version": "2.0.0-rc.1",
4
4
  "description": "Etcd storage adapter for Keyv",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
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.dist.json",
15
+ "build": "tsc --project tsconfig.csj.json && tsc --project tsconfig.esm.json",
9
16
  "prepare": "yarn build",
10
- "test": "xo && c8 ava --serial",
11
- "test:ci": "xo && ava --serial",
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": 0,
17
- "unicorn/no-array-reduce": 0,
18
- "unicorn/prefer-object-from-entries": 0,
19
- "unicorn/prefer-node-protocol": 0,
20
- "import/extensions": 0,
21
- "@typescript-eslint/no-confusing-void-expression": 0,
22
- "@typescript-eslint/promise-function-async": 0,
23
- "eslint-comments/no-unused-disable": 0
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"
24
33
  }
25
34
  },
26
35
  "ava": {
@@ -55,20 +64,18 @@
55
64
  },
56
65
  "homepage": "https://github.com/jaredwray/keyv",
57
66
  "dependencies": {
58
- "cockatiel": "^3.1.1",
59
- "etcd3": "^1.1.0"
67
+ "etcd3": "^1.1.2"
60
68
  },
61
69
  "devDependencies": {
62
70
  "@keyv/test-suite": "*",
63
- "ava": "^5.2.0",
64
- "c8": "^7.13.0",
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.1",
68
- "tsd": "^0.28.1",
69
- "typescript": "^5.0.4",
70
- "webpack": "^5.79.0",
71
- "xo": "^0.54.1"
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"