@lodestar/db 1.35.0-dev.91dadf81de → 1.35.0-dev.98d359db41

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.
@@ -1,3 +1,4 @@
1
1
  export type { DatabaseController, Db, DbReqOpts, FilterOptions, KeyValue } from "./interface.js";
2
+ export { LevelDbController } from "./level.js";
2
3
  export type { LevelDbControllerMetrics } from "./metrics.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC/F,YAAY,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAC,kBAAkB,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,YAAY,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAC"}
@@ -1,2 +1,2 @@
1
- export {};
1
+ export { LevelDbController } from "./level.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodestar/db",
3
- "version": "1.35.0-dev.91dadf81de",
3
+ "version": "1.35.0-dev.98d359db41",
4
4
  "description": "DB modules of Lodestar",
5
5
  "author": "ChainSafe Systems",
6
6
  "homepage": "https://github.com/ChainSafe/lodestar#readme",
@@ -16,16 +16,6 @@
16
16
  ".": {
17
17
  "bun": "./src/index.ts",
18
18
  "import": "./lib/index.js"
19
- },
20
- "./controller/level": {
21
- "bun": "./src/controller/level_bun.ts",
22
- "import": "./lib/controller/level.js"
23
- }
24
- },
25
- "imports": {
26
- "#controller/level": {
27
- "bun": "./src/controller/level_bun.ts",
28
- "import": "./src/controller/level.js"
29
19
  }
30
20
  },
31
21
  "types": "./lib/index.d.ts",
@@ -50,14 +40,13 @@
50
40
  },
51
41
  "dependencies": {
52
42
  "@chainsafe/ssz": "^1.2.2",
53
- "@lodestar/bun": "git+https://github.com/ChainSafe/lodestar-bun.git",
54
- "@lodestar/config": "1.35.0-dev.91dadf81de",
55
- "@lodestar/utils": "1.35.0-dev.91dadf81de",
43
+ "@lodestar/config": "1.35.0-dev.98d359db41",
44
+ "@lodestar/utils": "1.35.0-dev.98d359db41",
56
45
  "classic-level": "^1.4.1",
57
46
  "it-all": "^3.0.4"
58
47
  },
59
48
  "devDependencies": {
60
- "@lodestar/logger": "1.35.0-dev.91dadf81de"
49
+ "@lodestar/logger": "1.35.0-dev.98d359db41"
61
50
  },
62
- "gitHead": "7adab90fbdd05bff1005342660de37c56c8aa538"
51
+ "gitHead": "8b90f83d313e2dd3e7584faaa70269fe570fad25"
63
52
  }
@@ -1,2 +1,3 @@
1
1
  export type {DatabaseController, Db, DbReqOpts, FilterOptions, KeyValue} from "./interface.js";
2
+ export {LevelDbController} from "./level.js";
2
3
  export type {LevelDbControllerMetrics} from "./metrics.js";
@@ -1,35 +0,0 @@
1
- import { DB } from "@lodestar/bun";
2
- import { Logger } from "@lodestar/utils";
3
- import { DatabaseController, DatabaseOptions, DbReqOpts, FilterOptions, KeyValue } from "./interface.js";
4
- import { LevelDbControllerMetrics } from "./metrics.js";
5
- export type LevelDbControllerModules = {
6
- logger: Logger;
7
- metrics?: LevelDbControllerMetrics | null;
8
- };
9
- export declare enum Status {
10
- started = "started",
11
- closed = "closed"
12
- }
13
- export declare class LevelDbController implements DatabaseController<Uint8Array, Uint8Array> {
14
- private readonly db;
15
- private metrics;
16
- private status;
17
- constructor(db: DB, metrics: LevelDbControllerMetrics | null);
18
- static create(options: DatabaseOptions, { metrics }: LevelDbControllerModules): Promise<LevelDbController>;
19
- static destroy(location: string): Promise<void>;
20
- close(): Promise<void>;
21
- setMetrics(metrics: LevelDbControllerMetrics): void;
22
- get(key: Uint8Array, opts?: DbReqOpts): Promise<Uint8Array | null>;
23
- getMany(keys: Uint8Array[], opts?: DbReqOpts): Promise<(Uint8Array | undefined)[]>;
24
- put(key: Uint8Array, value: Uint8Array, opts?: DbReqOpts): Promise<void>;
25
- delete(key: Uint8Array, opts?: DbReqOpts): Promise<void>;
26
- batchPut(items: KeyValue<Uint8Array, Uint8Array>[], opts?: DbReqOpts): Promise<void>;
27
- batchDelete(keys: Uint8Array[], opts?: DbReqOpts): Promise<void>;
28
- keysStream(opts?: FilterOptions<Uint8Array>): AsyncIterable<Uint8Array>;
29
- keys(opts?: FilterOptions<Uint8Array>): Promise<Uint8Array[]>;
30
- valuesStream(opts?: FilterOptions<Uint8Array>): AsyncIterable<Uint8Array>;
31
- values(opts?: FilterOptions<Uint8Array>): Promise<Uint8Array[]>;
32
- entriesStream(opts?: FilterOptions<Uint8Array>): AsyncIterable<KeyValue<Uint8Array, Uint8Array>>;
33
- entries(opts?: FilterOptions<Uint8Array>): Promise<KeyValue<Uint8Array, Uint8Array>[]>;
34
- }
35
- //# sourceMappingURL=level_bun.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"level_bun.d.ts","sourceRoot":"","sources":["../../src/controller/level_bun.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,EAAE,EAiBH,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,kBAAkB,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AACvG,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAC;AAEtD,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAC3C,CAAC;AAEF,oBAAY,MAAM;IAChB,OAAO,YAAY;IACnB,MAAM,WAAW;CAClB;AAID,qBAAa,iBAAkB,YAAW,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC;IAIhF,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,OAAO;IAJjB,OAAO,CAAC,MAAM,CAAkB;gBAGb,EAAE,EAAE,EAAE,EACf,OAAO,EAAE,wBAAwB,GAAG,IAAI;WAGrC,MAAM,CAAC,OAAO,EAAE,eAAe,EAAE,EAAC,OAAO,EAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC;WAKjG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,UAAU,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAO7C,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAOlE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC;IAOlF,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxE,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpF,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtE,UAAU,CAAC,IAAI,GAAE,aAAa,CAAC,UAAU,CAAM,GAAG,aAAa,CAAC,UAAU,CAAC;IA+BrE,IAAI,CAAC,IAAI,GAAE,aAAa,CAAC,UAAU,CAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA2BvE,YAAY,CAAC,IAAI,GAAE,aAAa,CAAC,UAAU,CAAM,GAAG,aAAa,CAAC,UAAU,CAAC;IAgCvE,MAAM,CAAC,IAAI,GAAE,aAAa,CAAC,UAAU,CAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA4BzE,aAAa,CAAC,IAAI,GAAE,aAAa,CAAC,UAAU,CAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAgC9F,OAAO,CAAC,IAAI,GAAE,aAAa,CAAC,UAAU,CAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;CA2BjG"}
@@ -1,269 +0,0 @@
1
- import { dbBatchDelete, dbBatchPut, dbClose, dbDelete, dbDestroy, dbGet, dbIterator, dbOpen, dbPut, iteratorDestroy, iteratorKey, iteratorNext, iteratorSeek, iteratorSeekToFirst, iteratorValid, iteratorValue, } from "@lodestar/bun";
2
- export var Status;
3
- (function (Status) {
4
- Status["started"] = "started";
5
- Status["closed"] = "closed";
6
- })(Status || (Status = {}));
7
- const BUCKET_ID_UNKNOWN = "unknown";
8
- export class LevelDbController {
9
- db;
10
- metrics;
11
- status = Status.started;
12
- constructor(db, metrics) {
13
- this.db = db;
14
- this.metrics = metrics;
15
- }
16
- static async create(options, { metrics }) {
17
- const db = dbOpen(options.name, { create_if_missing: true });
18
- return new LevelDbController(db, metrics ?? null);
19
- }
20
- static async destroy(location) {
21
- dbDestroy(location);
22
- }
23
- async close() {
24
- if (this.status === Status.closed) {
25
- return;
26
- }
27
- this.status = Status.closed;
28
- dbClose(this.db);
29
- }
30
- setMetrics(metrics) {
31
- if (this.metrics !== null) {
32
- throw new Error("Metrics already set");
33
- }
34
- this.metrics = metrics;
35
- }
36
- async get(key, opts) {
37
- this.metrics?.dbReadReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
38
- this.metrics?.dbReadItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
39
- return dbGet(this.db, key);
40
- }
41
- async getMany(keys, opts) {
42
- this.metrics?.dbReadReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
43
- this.metrics?.dbReadItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, keys.length);
44
- return keys.map((key) => dbGet(this.db, key) ?? undefined);
45
- }
46
- async put(key, value, opts) {
47
- this.metrics?.dbWriteReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
48
- this.metrics?.dbWriteItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
49
- dbPut(this.db, key, value);
50
- }
51
- async delete(key, opts) {
52
- this.metrics?.dbWriteReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
53
- this.metrics?.dbWriteItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
54
- dbDelete(this.db, key);
55
- }
56
- async batchPut(items, opts) {
57
- this.metrics?.dbWriteReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
58
- this.metrics?.dbWriteItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, items.length);
59
- dbBatchPut(this.db, items);
60
- }
61
- async batchDelete(keys, opts) {
62
- this.metrics?.dbWriteReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
63
- this.metrics?.dbWriteItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, keys.length);
64
- dbBatchDelete(this.db, keys);
65
- }
66
- keysStream(opts = {}) {
67
- const iterator = dbIterator(this.db);
68
- if (opts.gt) {
69
- iteratorSeek(iterator, opts.gt);
70
- iteratorNext(iterator);
71
- }
72
- else if (opts.gte) {
73
- iteratorSeek(iterator, opts.gte);
74
- }
75
- else {
76
- iteratorSeekToFirst(iterator);
77
- }
78
- const bucket = opts.bucketId ?? BUCKET_ID_UNKNOWN;
79
- const metrics = this.metrics;
80
- metrics?.dbReadReq.inc({ bucket }, 1);
81
- let itemsRead = 0;
82
- return (async function* () {
83
- try {
84
- while (iteratorValid(iterator)) {
85
- const key = iteratorKey(iterator);
86
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0)
87
- break;
88
- if (opts.lte && Buffer.compare(key, opts.lte) > 0)
89
- break;
90
- itemsRead++;
91
- yield key;
92
- iteratorNext(iterator);
93
- }
94
- }
95
- finally {
96
- metrics?.dbReadItems.inc({ bucket }, itemsRead);
97
- iteratorDestroy(iterator);
98
- }
99
- })();
100
- }
101
- async keys(opts = {}) {
102
- const iterator = dbIterator(this.db);
103
- if (opts.gt) {
104
- iteratorSeek(iterator, opts.gt);
105
- iteratorNext(iterator);
106
- }
107
- else if (opts.gte) {
108
- iteratorSeek(iterator, opts.gte);
109
- }
110
- else {
111
- iteratorSeekToFirst(iterator);
112
- }
113
- const keys = [];
114
- this.metrics?.dbReadReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
115
- try {
116
- while (iteratorValid(iterator)) {
117
- const key = iteratorKey(iterator);
118
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0)
119
- break;
120
- if (opts.lte && Buffer.compare(key, opts.lte) > 0)
121
- break;
122
- keys.push(key);
123
- iteratorNext(iterator);
124
- }
125
- return keys;
126
- }
127
- finally {
128
- this.metrics?.dbReadItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, keys.length);
129
- iteratorDestroy(iterator);
130
- }
131
- }
132
- valuesStream(opts = {}) {
133
- const iterator = dbIterator(this.db);
134
- if (opts.gt) {
135
- iteratorSeek(iterator, opts.gt);
136
- iteratorNext(iterator);
137
- }
138
- else if (opts.gte) {
139
- iteratorSeek(iterator, opts.gte);
140
- }
141
- else {
142
- iteratorSeekToFirst(iterator);
143
- }
144
- const bucket = opts.bucketId ?? BUCKET_ID_UNKNOWN;
145
- const metrics = this.metrics;
146
- metrics?.dbReadReq.inc({ bucket }, 1);
147
- let itemsRead = 0;
148
- return (async function* () {
149
- try {
150
- while (iteratorValid(iterator)) {
151
- const key = iteratorKey(iterator);
152
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0)
153
- break;
154
- if (opts.lte && Buffer.compare(key, opts.lte) > 0)
155
- break;
156
- itemsRead++;
157
- const value = iteratorValue(iterator);
158
- yield value;
159
- iteratorNext(iterator);
160
- }
161
- }
162
- finally {
163
- metrics?.dbReadItems.inc({ bucket }, itemsRead);
164
- iteratorDestroy(iterator);
165
- }
166
- })();
167
- }
168
- async values(opts = {}) {
169
- const iterator = dbIterator(this.db);
170
- if (opts.gt) {
171
- iteratorSeek(iterator, opts.gt);
172
- iteratorNext(iterator);
173
- }
174
- else if (opts.gte) {
175
- iteratorSeek(iterator, opts.gte);
176
- }
177
- else {
178
- iteratorSeekToFirst(iterator);
179
- }
180
- const values = [];
181
- this.metrics?.dbReadReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
182
- try {
183
- while (iteratorValid(iterator)) {
184
- const key = iteratorKey(iterator);
185
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0)
186
- break;
187
- if (opts.lte && Buffer.compare(key, opts.lte) > 0)
188
- break;
189
- const value = iteratorValue(iterator);
190
- values.push(value);
191
- iteratorNext(iterator);
192
- }
193
- return values;
194
- }
195
- finally {
196
- this.metrics?.dbReadItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, values.length);
197
- iteratorDestroy(iterator);
198
- }
199
- }
200
- entriesStream(opts = {}) {
201
- const iterator = dbIterator(this.db);
202
- if (opts.gt) {
203
- iteratorSeek(iterator, opts.gt);
204
- iteratorNext(iterator);
205
- }
206
- else if (opts.gte) {
207
- iteratorSeek(iterator, opts.gte);
208
- }
209
- else {
210
- iteratorSeekToFirst(iterator);
211
- }
212
- const bucket = opts.bucketId ?? BUCKET_ID_UNKNOWN;
213
- const metrics = this.metrics;
214
- metrics?.dbReadReq.inc({ bucket }, 1);
215
- let itemsRead = 0;
216
- return (async function* () {
217
- try {
218
- while (iteratorValid(iterator)) {
219
- const key = iteratorKey(iterator);
220
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0)
221
- break;
222
- if (opts.lte && Buffer.compare(key, opts.lte) > 0)
223
- break;
224
- itemsRead++;
225
- const value = iteratorValue(iterator);
226
- yield { key, value };
227
- iteratorNext(iterator);
228
- }
229
- }
230
- finally {
231
- metrics?.dbReadItems.inc({ bucket }, itemsRead);
232
- iteratorDestroy(iterator);
233
- }
234
- })();
235
- }
236
- async entries(opts = {}) {
237
- const iterator = dbIterator(this.db);
238
- if (opts.gt) {
239
- iteratorSeek(iterator, opts.gt);
240
- iteratorNext(iterator);
241
- }
242
- else if (opts.gte) {
243
- iteratorSeek(iterator, opts.gte);
244
- }
245
- else {
246
- iteratorSeekToFirst(iterator);
247
- }
248
- const entries = [];
249
- this.metrics?.dbReadReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
250
- try {
251
- while (iteratorValid(iterator)) {
252
- const key = iteratorKey(iterator);
253
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0)
254
- break;
255
- if (opts.lte && Buffer.compare(key, opts.lte) > 0)
256
- break;
257
- const value = iteratorValue(iterator);
258
- entries.push({ key, value });
259
- iteratorNext(iterator);
260
- }
261
- return entries;
262
- }
263
- finally {
264
- this.metrics?.dbReadItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, entries.length);
265
- iteratorDestroy(iterator);
266
- }
267
- }
268
- }
269
- //# sourceMappingURL=level_bun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"level_bun.js","sourceRoot":"","sources":["../../src/controller/level_bun.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EACb,UAAU,EACV,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,UAAU,EACV,MAAM,EACN,KAAK,EACL,eAAe,EACf,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,GACd,MAAM,eAAe,CAAC;AAUvB,MAAM,CAAN,IAAY,MAGX;AAHD,WAAY,MAAM;IAChB,6BAAmB,CAAA;IACnB,2BAAiB,CAAA;AACnB,CAAC,EAHW,MAAM,KAAN,MAAM,QAGjB;AAED,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAEpC,MAAM,OAAO,iBAAiB;IAIT;IACT;IAJF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;IAEhC,YACmB,EAAM,EACf,OAAwC;QAD/B,OAAE,GAAF,EAAE,CAAI;QACf,YAAO,GAAP,OAAO,CAAiC;IAC/C,CAAC;IAEJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAwB,EAAE,EAAC,OAAO,EAA2B;QAC/E,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAC,iBAAiB,EAAE,IAAI,EAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,iBAAiB,CAAC,EAAE,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAgB;QACnC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE5B,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,OAAiC;QAC1C,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAe,EAAE,IAAgB;QACzC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAEhF,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAkB,EAAE,IAAgB;QAChD,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAe,EAAE,KAAiB,EAAE,IAAgB;QAC5D,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAEjF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAe,EAAE,IAAgB;QAC5C,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAEjF,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAyC,EAAE,IAAgB;QACxE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAE5F,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAkB,EAAE,IAAgB;QACpD,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE3F,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,OAAkC,EAAE;QAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,SAAS,CAAC;YACrB,IAAI,CAAC;gBACH,OAAO,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAClC,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;wBAAE,MAAM;oBACxD,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,MAAM;oBACzD,SAAS,EAAE,CAAC;oBACZ,MAAM,GAAG,CAAC;oBACV,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,EAAE,SAAS,CAAC,CAAC;gBAC9C,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAkC,EAAE;QAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC;YACH,OAAO,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;oBAAE,MAAM;gBACxD,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,MAAM;gBACzD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,YAAY,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1F,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,YAAY,CAAC,OAAkC,EAAE;QAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,SAAS,CAAC;YACrB,IAAI,CAAC;gBACH,OAAO,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAClC,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;wBAAE,MAAM;oBACxD,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,MAAM;oBACzD,SAAS,EAAE,CAAC;oBACZ,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;oBACtC,MAAM,KAAK,CAAC;oBACZ,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,EAAE,SAAS,CAAC,CAAC;gBAC9C,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAkC,EAAE;QAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC;YACH,OAAO,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;oBAAE,MAAM;gBACxD,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,MAAM;gBACzD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,YAAY,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5F,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,aAAa,CAAC,OAAkC,EAAE;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,SAAS,CAAC;YACrB,IAAI,CAAC;gBACH,OAAO,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;oBAClC,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;wBAAE,MAAM;oBACxD,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,MAAM;oBACzD,SAAS,EAAE,CAAC;oBACZ,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;oBACtC,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC;oBACnB,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,EAAE,SAAS,CAAC,CAAC;gBAC9C,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAkC,EAAE;QAChD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC;YACH,OAAO,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;oBAAE,MAAM;gBACxD,IAAI,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,MAAM;gBACzD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CAAC;gBAC3B,YAAY,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,iBAAiB,EAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7F,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF"}
@@ -1,288 +0,0 @@
1
- import {
2
- DB,
3
- dbBatchDelete,
4
- dbBatchPut,
5
- dbClose,
6
- dbDelete,
7
- dbDestroy,
8
- dbGet,
9
- dbIterator,
10
- dbOpen,
11
- dbPut,
12
- iteratorDestroy,
13
- iteratorKey,
14
- iteratorNext,
15
- iteratorSeek,
16
- iteratorSeekToFirst,
17
- iteratorValid,
18
- iteratorValue,
19
- } from "@lodestar/bun";
20
- import {Logger} from "@lodestar/utils";
21
- import {DatabaseController, DatabaseOptions, DbReqOpts, FilterOptions, KeyValue} from "./interface.js";
22
- import {LevelDbControllerMetrics} from "./metrics.js";
23
-
24
- export type LevelDbControllerModules = {
25
- logger: Logger;
26
- metrics?: LevelDbControllerMetrics | null;
27
- };
28
-
29
- export enum Status {
30
- started = "started",
31
- closed = "closed",
32
- }
33
-
34
- const BUCKET_ID_UNKNOWN = "unknown";
35
-
36
- export class LevelDbController implements DatabaseController<Uint8Array, Uint8Array> {
37
- private status = Status.started;
38
-
39
- constructor(
40
- private readonly db: DB,
41
- private metrics: LevelDbControllerMetrics | null
42
- ) {}
43
-
44
- static async create(options: DatabaseOptions, {metrics}: LevelDbControllerModules): Promise<LevelDbController> {
45
- const db = dbOpen(options.name, {create_if_missing: true});
46
- return new LevelDbController(db, metrics ?? null);
47
- }
48
-
49
- static async destroy(location: string): Promise<void> {
50
- dbDestroy(location);
51
- }
52
-
53
- async close(): Promise<void> {
54
- if (this.status === Status.closed) {
55
- return;
56
- }
57
- this.status = Status.closed;
58
-
59
- dbClose(this.db);
60
- }
61
-
62
- setMetrics(metrics: LevelDbControllerMetrics): void {
63
- if (this.metrics !== null) {
64
- throw new Error("Metrics already set");
65
- }
66
- this.metrics = metrics;
67
- }
68
-
69
- async get(key: Uint8Array, opts?: DbReqOpts): Promise<Uint8Array | null> {
70
- this.metrics?.dbReadReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
71
- this.metrics?.dbReadItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
72
-
73
- return dbGet(this.db, key);
74
- }
75
-
76
- async getMany(keys: Uint8Array[], opts?: DbReqOpts): Promise<(Uint8Array | undefined)[]> {
77
- this.metrics?.dbReadReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
78
- this.metrics?.dbReadItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, keys.length);
79
-
80
- return keys.map((key) => dbGet(this.db, key) ?? undefined);
81
- }
82
-
83
- async put(key: Uint8Array, value: Uint8Array, opts?: DbReqOpts): Promise<void> {
84
- this.metrics?.dbWriteReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
85
- this.metrics?.dbWriteItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
86
-
87
- dbPut(this.db, key, value);
88
- }
89
-
90
- async delete(key: Uint8Array, opts?: DbReqOpts): Promise<void> {
91
- this.metrics?.dbWriteReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
92
- this.metrics?.dbWriteItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
93
-
94
- dbDelete(this.db, key);
95
- }
96
-
97
- async batchPut(items: KeyValue<Uint8Array, Uint8Array>[], opts?: DbReqOpts): Promise<void> {
98
- this.metrics?.dbWriteReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
99
- this.metrics?.dbWriteItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, items.length);
100
-
101
- dbBatchPut(this.db, items);
102
- }
103
-
104
- async batchDelete(keys: Uint8Array[], opts?: DbReqOpts): Promise<void> {
105
- this.metrics?.dbWriteReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
106
- this.metrics?.dbWriteItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, keys.length);
107
-
108
- dbBatchDelete(this.db, keys);
109
- }
110
-
111
- keysStream(opts: FilterOptions<Uint8Array> = {}): AsyncIterable<Uint8Array> {
112
- const iterator = dbIterator(this.db);
113
- if (opts.gt) {
114
- iteratorSeek(iterator, opts.gt);
115
- iteratorNext(iterator);
116
- } else if (opts.gte) {
117
- iteratorSeek(iterator, opts.gte);
118
- } else {
119
- iteratorSeekToFirst(iterator);
120
- }
121
- const bucket = opts.bucketId ?? BUCKET_ID_UNKNOWN;
122
- const metrics = this.metrics;
123
- metrics?.dbReadReq.inc({bucket}, 1);
124
- let itemsRead = 0;
125
- return (async function* () {
126
- try {
127
- while (iteratorValid(iterator)) {
128
- const key = iteratorKey(iterator);
129
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0) break;
130
- if (opts.lte && Buffer.compare(key, opts.lte) > 0) break;
131
- itemsRead++;
132
- yield key;
133
- iteratorNext(iterator);
134
- }
135
- } finally {
136
- metrics?.dbReadItems.inc({bucket}, itemsRead);
137
- iteratorDestroy(iterator);
138
- }
139
- })();
140
- }
141
-
142
- async keys(opts: FilterOptions<Uint8Array> = {}): Promise<Uint8Array[]> {
143
- const iterator = dbIterator(this.db);
144
- if (opts.gt) {
145
- iteratorSeek(iterator, opts.gt);
146
- iteratorNext(iterator);
147
- } else if (opts.gte) {
148
- iteratorSeek(iterator, opts.gte);
149
- } else {
150
- iteratorSeekToFirst(iterator);
151
- }
152
- const keys = [];
153
- this.metrics?.dbReadReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
154
- try {
155
- while (iteratorValid(iterator)) {
156
- const key = iteratorKey(iterator);
157
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0) break;
158
- if (opts.lte && Buffer.compare(key, opts.lte) > 0) break;
159
- keys.push(key);
160
- iteratorNext(iterator);
161
- }
162
- return keys;
163
- } finally {
164
- this.metrics?.dbReadItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, keys.length);
165
- iteratorDestroy(iterator);
166
- }
167
- }
168
-
169
- valuesStream(opts: FilterOptions<Uint8Array> = {}): AsyncIterable<Uint8Array> {
170
- const iterator = dbIterator(this.db);
171
- if (opts.gt) {
172
- iteratorSeek(iterator, opts.gt);
173
- iteratorNext(iterator);
174
- } else if (opts.gte) {
175
- iteratorSeek(iterator, opts.gte);
176
- } else {
177
- iteratorSeekToFirst(iterator);
178
- }
179
- const bucket = opts.bucketId ?? BUCKET_ID_UNKNOWN;
180
- const metrics = this.metrics;
181
- metrics?.dbReadReq.inc({bucket}, 1);
182
- let itemsRead = 0;
183
- return (async function* () {
184
- try {
185
- while (iteratorValid(iterator)) {
186
- const key = iteratorKey(iterator);
187
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0) break;
188
- if (opts.lte && Buffer.compare(key, opts.lte) > 0) break;
189
- itemsRead++;
190
- const value = iteratorValue(iterator);
191
- yield value;
192
- iteratorNext(iterator);
193
- }
194
- } finally {
195
- metrics?.dbReadItems.inc({bucket}, itemsRead);
196
- iteratorDestroy(iterator);
197
- }
198
- })();
199
- }
200
-
201
- async values(opts: FilterOptions<Uint8Array> = {}): Promise<Uint8Array[]> {
202
- const iterator = dbIterator(this.db);
203
- if (opts.gt) {
204
- iteratorSeek(iterator, opts.gt);
205
- iteratorNext(iterator);
206
- } else if (opts.gte) {
207
- iteratorSeek(iterator, opts.gte);
208
- } else {
209
- iteratorSeekToFirst(iterator);
210
- }
211
- const values = [];
212
- this.metrics?.dbReadReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
213
- try {
214
- while (iteratorValid(iterator)) {
215
- const key = iteratorKey(iterator);
216
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0) break;
217
- if (opts.lte && Buffer.compare(key, opts.lte) > 0) break;
218
- const value = iteratorValue(iterator);
219
- values.push(value);
220
- iteratorNext(iterator);
221
- }
222
- return values;
223
- } finally {
224
- this.metrics?.dbReadItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, values.length);
225
- iteratorDestroy(iterator);
226
- }
227
- }
228
-
229
- entriesStream(opts: FilterOptions<Uint8Array> = {}): AsyncIterable<KeyValue<Uint8Array, Uint8Array>> {
230
- const iterator = dbIterator(this.db);
231
- if (opts.gt) {
232
- iteratorSeek(iterator, opts.gt);
233
- iteratorNext(iterator);
234
- } else if (opts.gte) {
235
- iteratorSeek(iterator, opts.gte);
236
- } else {
237
- iteratorSeekToFirst(iterator);
238
- }
239
- const bucket = opts.bucketId ?? BUCKET_ID_UNKNOWN;
240
- const metrics = this.metrics;
241
- metrics?.dbReadReq.inc({bucket}, 1);
242
- let itemsRead = 0;
243
- return (async function* () {
244
- try {
245
- while (iteratorValid(iterator)) {
246
- const key = iteratorKey(iterator);
247
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0) break;
248
- if (opts.lte && Buffer.compare(key, opts.lte) > 0) break;
249
- itemsRead++;
250
- const value = iteratorValue(iterator);
251
- yield {key, value};
252
- iteratorNext(iterator);
253
- }
254
- } finally {
255
- metrics?.dbReadItems.inc({bucket}, itemsRead);
256
- iteratorDestroy(iterator);
257
- }
258
- })();
259
- }
260
-
261
- async entries(opts: FilterOptions<Uint8Array> = {}): Promise<KeyValue<Uint8Array, Uint8Array>[]> {
262
- const iterator = dbIterator(this.db);
263
- if (opts.gt) {
264
- iteratorSeek(iterator, opts.gt);
265
- iteratorNext(iterator);
266
- } else if (opts.gte) {
267
- iteratorSeek(iterator, opts.gte);
268
- } else {
269
- iteratorSeekToFirst(iterator);
270
- }
271
- const entries = [];
272
- this.metrics?.dbReadReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
273
- try {
274
- while (iteratorValid(iterator)) {
275
- const key = iteratorKey(iterator);
276
- if (opts.lt && Buffer.compare(key, opts.lt) >= 0) break;
277
- if (opts.lte && Buffer.compare(key, opts.lte) > 0) break;
278
- const value = iteratorValue(iterator);
279
- entries.push({key, value});
280
- iteratorNext(iterator);
281
- }
282
- return entries;
283
- } finally {
284
- this.metrics?.dbReadItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, entries.length);
285
- iteratorDestroy(iterator);
286
- }
287
- }
288
- }