@lodestar/db 1.39.0 → 1.40.0-dev.3715a82f3f

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,7 +1,7 @@
1
1
  import { Type } from "@chainsafe/ssz";
2
2
  import { ChainForkConfig } from "@lodestar/config";
3
3
  import { KeyValue } from "./controller/index.js";
4
- import { Db, FilterOptions } from "./controller/interface.js";
4
+ import { Db, DbBatch, FilterOptions } from "./controller/interface.js";
5
5
  type Id = Uint8Array | string | number | bigint;
6
6
  /**
7
7
  * Repository is a high level kv storage
@@ -50,6 +50,8 @@ export declare abstract class PrefixedRepository<P, I extends Id, T> {
50
50
  putManyBinary(prefix: P, items: KeyValue<I, Uint8Array>[]): Promise<void>;
51
51
  delete(prefix: P, id: I): Promise<void>;
52
52
  deleteMany(prefix: P | P[]): Promise<void>;
53
+ batch(prefix: P, batch: DbBatch<I, T>): Promise<void>;
54
+ batchBinary(prefix: P, batch: DbBatch<I, Uint8Array>): Promise<void>;
53
55
  valuesStream(prefix: P | P[]): AsyncIterable<T>;
54
56
  valuesStreamBinary(prefix: P | P[]): AsyncIterable<{
55
57
  prefix: P;
@@ -1 +1 @@
1
- {"version":3,"file":"abstractPrefixedRepository.d.ts","sourceRoot":"","sources":["../src/abstractPrefixedRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstractPrefixedRepository.d.ts","sourceRoot":"","sources":["../src/abstractPrefixedRepository.ts"],"names":[],"mappings":"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"}
@@ -113,6 +113,29 @@ export class PrefixedRepository {
113
113
  }
114
114
  await this.db.batchDelete(keys.flat(), this.dbReqOpts);
115
115
  }
116
+ async batch(prefix, batch) {
117
+ const batchWithKeys = [];
118
+ for (const b of batch) {
119
+ if (b.type === "del") {
120
+ batchWithKeys.push({ type: b.type, key: this.wrapKey(this.encodeKeyRaw(prefix, b.key)) });
121
+ }
122
+ else {
123
+ batchWithKeys.push({
124
+ type: b.type,
125
+ key: this.wrapKey(this.encodeKeyRaw(prefix, b.key)),
126
+ value: this.encodeValue(b.value),
127
+ });
128
+ }
129
+ }
130
+ await this.db.batch(batchWithKeys, this.dbReqOpts);
131
+ }
132
+ async batchBinary(prefix, batch) {
133
+ const batchWithKeys = [];
134
+ for (const b of batch) {
135
+ batchWithKeys.push({ ...b, key: this.wrapKey(this.encodeKeyRaw(prefix, b.key)) });
136
+ }
137
+ await this.db.batch(batchWithKeys, this.dbReqOpts);
138
+ }
116
139
  async *valuesStream(prefix) {
117
140
  for (const p of Array.isArray(prefix) ? prefix : [prefix]) {
118
141
  for await (const vb of this.db.valuesStream({
@@ -1 +1 @@
1
- {"version":3,"file":"abstractPrefixedRepository.js","sourceRoot":"","sources":["../src/abstractPrefixedRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstractPrefixedRepository.js","sourceRoot":"","sources":["../src/abstractPrefixedRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAGzC,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAC;AAIpC;;;;;;GAMG;AACH,MAAM,OAAgB,kBAAkB;IAQ1B;IACA;IACA;IACA;IACO;IAXF,SAAS,CAAY;IACtC,yDAAyD;IACxC,MAAM,CAAa;IACpC,yDAAyD;IACxC,MAAM,CAAa;IAEpC,YACY,MAAuB,EACvB,EAAM,EACN,MAAc,EACd,IAAa,EACN,QAAgB;QAJvB,WAAM,GAAN,MAAM,CAAiB;QACvB,OAAE,GAAF,EAAE,CAAI;QACN,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAS;QACN,aAAQ,GAAR,QAAQ,CAAQ;QAEjC,IAAI,CAAC,SAAS,GAAG,EAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAaS,WAAW,CAAC,KAAQ;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAES,WAAW,CAAC,IAAgB;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAES,OAAO,CAAC,GAAe;QAC/B,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAES,SAAS,CAAC,GAAe;QACjC,OAAO,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,KAAQ;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAM,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAS,EAAE,EAAK;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAS,EAAE,GAAQ;QAC/B,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAS,EAAE,GAAQ;QACrC,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAS,EAAE,EAAK;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAS,EAAE,IAAO;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAS,EAAE,KAAU;QACjC,MAAM,KAAK,GAAuC,EAAE,CAAC;QACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAS,EAAE,EAAK,EAAE,KAAiB;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAS,EAAE,KAAgC;QAC7D,MAAM,KAAK,GAAuC,EAAE,CAAC;QACrD,KAAK,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,IAAI,KAAK,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAS,EAAE,EAAK;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAe;QAC9B,MAAM,IAAI,GAAmB,EAAE,CAAC;QAEhC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;gBACtC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAS,EAAE,KAAoB;QACzC,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACrB,aAAa,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnD,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;iBACjC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAS,EAAE,KAA6B;QACxD,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,EAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,CAAC,YAAY,CAAC,MAAe;QACjC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;gBAC1C,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,EAAE,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,kBAAkB,CAAC,MAAe;QACvC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,IAAI,KAAK,EAAE,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;gBACrD,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,EAAE,CAAC;gBACH,MAAM,EAAC,MAAM,EAAE,EAAE,EAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAE5D,MAAM;oBACJ,MAAM;oBACN,EAAE;oBACF,KAAK;iBACN,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,aAAa,CAAC,MAAe;QAClC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,IAAI,KAAK,EAAE,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;gBACrD,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,EAAE,CAAC;gBACH,MAAM,EAAC,MAAM,EAAE,EAAE,EAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAE5D,MAAM;oBACJ,MAAM;oBACN,EAAE;oBACF,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;iBAC/B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,CAAC,mBAAmB,CAAC,MAAe;QACxC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,IAAI,KAAK,EAAE,MAAM,EAAC,GAAG,EAAE,KAAK,EAAC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;gBACrD,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,EAAE,CAAC;gBACH,MAAM,EAAC,MAAM,EAAE,EAAE,EAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAE5D,MAAM;oBACJ,MAAM;oBACN,EAAE,EAAE,EAAE;oBACN,KAAK;iBACN,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAwC;QACjD,MAAM,QAAQ,GAA8B;YAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QAEF,IAAI,IAAI,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;aAAM,IAAI,IAAI,EAAE,EAAE,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7B,CAAC;QAED,IAAI,IAAI,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC;YAC5B,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;aAAM,IAAI,IAAI,EAAE,EAAE,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,EAAE,OAAO,KAAK,SAAS;YAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QACjE,IAAI,IAAI,EAAE,KAAK,KAAK,SAAS;YAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAE3D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF"}
@@ -1,8 +1,43 @@
1
1
  import { Type } from "@chainsafe/ssz";
2
2
  import { ChainForkConfig } from "@lodestar/config";
3
3
  import { FilterOptions, KeyValue } from "./controller/index.js";
4
- import { Db } from "./controller/interface.js";
4
+ import { Db, DbBatch, DbReqOpts } from "./controller/interface.js";
5
5
  export type Id = Uint8Array | string | number | bigint;
6
+ /**
7
+ * BinaryRepository is a high level kv storage
8
+ * managing a Uint8Array to Uint8Array kv database
9
+ * It translates typed keys and Uint8Array values required by the underlying database
10
+ */
11
+ export declare abstract class BinaryRepository<I extends Id> {
12
+ protected config: ChainForkConfig;
13
+ protected db: Db;
14
+ protected bucket: number;
15
+ protected readonly bucketId: string;
16
+ protected readonly dbReqOpts: DbReqOpts;
17
+ protected readonly minKey: Uint8Array;
18
+ protected readonly maxKey: Uint8Array;
19
+ protected constructor(config: ChainForkConfig, db: Db, bucket: number, bucketId: string);
20
+ keys(opts?: FilterOptions<I>): Promise<I[]>;
21
+ keysStream(opts?: FilterOptions<I>): AsyncIterable<I>;
22
+ firstKey(): Promise<I | null>;
23
+ lastKey(): Promise<I | null>;
24
+ encodeKey(id: I): Uint8Array;
25
+ decodeKey(key: Uint8Array): I;
26
+ getBinary(id: I): Promise<Uint8Array | null>;
27
+ putBinary(id: I, value: Uint8Array): Promise<void>;
28
+ binaries(opts?: FilterOptions<I>): Promise<Uint8Array[]>;
29
+ lastBinary(): Promise<Uint8Array | null>;
30
+ batchPutBinary(items: KeyValue<I, Uint8Array>[]): Promise<void>;
31
+ binaryEntriesStream(opts?: FilterOptions<I>): AsyncIterable<KeyValue<Uint8Array, Uint8Array>>;
32
+ has(id: I): Promise<boolean>;
33
+ delete(id: I): Promise<void>;
34
+ batchDelete(ids: I[]): Promise<void>;
35
+ batchBinary(batch: DbBatch<I, Uint8Array>): Promise<void>;
36
+ /**
37
+ * Transforms opts from I to Uint8Array
38
+ */
39
+ protected dbFilterOptions(opts?: FilterOptions<I>): FilterOptions<Uint8Array>;
40
+ }
6
41
  /**
7
42
  * Repository is a high level kv storage
8
43
  * managing a Uint8Array to Uint8Array kv database
@@ -11,50 +46,27 @@ export type Id = Uint8Array | string | number | bigint;
11
46
  * By default, SSZ-encoded values,
12
47
  * indexed by root
13
48
  */
14
- export declare abstract class Repository<I extends Id, T> {
15
- protected config: ChainForkConfig;
16
- protected db: Db;
17
- protected bucket: number;
49
+ export declare abstract class Repository<I extends Id, T> extends BinaryRepository<I> {
18
50
  protected type: Type<T>;
19
- protected readonly bucketId: string;
20
- private readonly dbReqOpts;
21
- private readonly minKey;
22
- private readonly maxKey;
23
51
  protected constructor(config: ChainForkConfig, db: Db, bucket: number, type: Type<T>, bucketId: string);
24
52
  encodeValue(value: T): Uint8Array;
25
53
  decodeValue(data: Uint8Array): T;
26
- encodeKey(id: I): Uint8Array;
27
- decodeKey(key: Uint8Array): I;
28
54
  get(id: I): Promise<T | null>;
29
- getBinary(id: I): Promise<Uint8Array | null>;
30
- has(id: I): Promise<boolean>;
31
55
  put(id: I, value: T): Promise<void>;
32
- putBinary(id: I, value: Uint8Array): Promise<void>;
33
- delete(id: I): Promise<void>;
34
56
  getId(value: T): I;
35
57
  add(value: T): Promise<void>;
36
58
  remove(value: T): Promise<void>;
37
59
  batchPut(items: KeyValue<I, T>[]): Promise<void>;
38
- batchPutBinary(items: KeyValue<I, Uint8Array>[]): Promise<void>;
39
- batchDelete(ids: I[]): Promise<void>;
60
+ batch(batch: DbBatch<I, T>): Promise<void>;
40
61
  batchAdd(values: T[]): Promise<void>;
41
62
  batchRemove(values: T[]): Promise<void>;
42
- keys(opts?: FilterOptions<I>): Promise<I[]>;
43
- keysStream(opts?: FilterOptions<I>): AsyncIterable<I>;
44
63
  values(opts?: FilterOptions<I>): Promise<T[]>;
45
64
  valuesStream(opts?: FilterOptions<I>): AsyncIterable<T>;
46
- binaryEntriesStream(opts?: FilterOptions<I>): AsyncIterable<KeyValue<Uint8Array, Uint8Array>>;
47
65
  entries(opts?: FilterOptions<I>): Promise<KeyValue<I, T>[]>;
48
66
  entriesStream(opts?: FilterOptions<I>): AsyncIterable<KeyValue<I, T>>;
49
- firstKey(): Promise<I | null>;
50
- lastKey(): Promise<I | null>;
51
67
  firstValue(): Promise<T | null>;
52
68
  lastValue(): Promise<T | null>;
53
69
  firstEntry(): Promise<KeyValue<I, T> | null>;
54
70
  lastEntry(): Promise<KeyValue<I, T> | null>;
55
- /**
56
- * Transforms opts from I to Uint8Array
57
- */
58
- protected dbFilterOptions(opts?: FilterOptions<I>): FilterOptions<Uint8Array>;
59
71
  }
60
72
  //# sourceMappingURL=abstractRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"abstractRepository.d.ts","sourceRoot":"","sources":["../src/abstractRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstractRepository.d.ts","sourceRoot":"","sources":["../src/abstractRepository.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,53 @@
1
1
  import { BUCKET_LENGTH } from "./const.js";
2
2
  import { encodeKey as _encodeKey } from "./util.js";
3
3
  /**
4
- * Repository is a high level kv storage
4
+ * BinaryRepository is a high level kv storage
5
5
  * managing a Uint8Array to Uint8Array kv database
6
- * It translates typed keys and values to Uint8Arrays required by the underlying database
7
- *
8
- * By default, SSZ-encoded values,
9
- * indexed by root
6
+ * It translates typed keys and Uint8Array values required by the underlying database
10
7
  */
11
- export class Repository {
8
+ export class BinaryRepository {
12
9
  config;
13
10
  db;
14
11
  bucket;
15
- type;
16
12
  bucketId;
17
13
  dbReqOpts;
18
14
  minKey;
19
15
  maxKey;
20
- constructor(config, db, bucket, type, bucketId) {
16
+ constructor(config, db, bucket, bucketId) {
21
17
  this.config = config;
22
18
  this.db = db;
23
19
  this.bucket = bucket;
24
- this.type = type;
25
20
  this.bucketId = bucketId;
26
21
  this.dbReqOpts = { bucketId: this.bucketId };
27
22
  this.minKey = _encodeKey(bucket, Buffer.alloc(0));
28
23
  this.maxKey = _encodeKey(bucket + 1, Buffer.alloc(0));
29
24
  }
30
- encodeValue(value) {
31
- return this.type.serialize(value);
25
+ async keys(opts) {
26
+ const data = await this.db.keys(this.dbFilterOptions(opts));
27
+ return (data ?? []).map((data) => this.decodeKey(data));
32
28
  }
33
- decodeValue(data) {
34
- return this.type.deserialize(data);
29
+ async *keysStream(opts) {
30
+ const keysStream = this.db.keysStream(this.dbFilterOptions(opts));
31
+ const decodeKey = this.decodeKey.bind(this);
32
+ for await (const key of keysStream) {
33
+ yield decodeKey(key);
34
+ }
35
+ }
36
+ async firstKey() {
37
+ // Metrics accounted in this.keys()
38
+ const keys = await this.keys({ limit: 1, bucketId: this.bucketId });
39
+ if (!keys.length) {
40
+ return null;
41
+ }
42
+ return keys[0];
43
+ }
44
+ async lastKey() {
45
+ // Metrics accounted in this.keys()
46
+ const keys = await this.keys({ limit: 1, reverse: true, bucketId: this.bucketId });
47
+ if (!keys.length) {
48
+ return null;
49
+ }
50
+ return keys[0];
35
51
  }
36
52
  encodeKey(id) {
37
53
  return _encodeKey(this.bucket, id);
@@ -39,30 +55,123 @@ export class Repository {
39
55
  decodeKey(key) {
40
56
  return key.slice(BUCKET_LENGTH);
41
57
  }
42
- async get(id) {
43
- const value = await this.db.get(this.encodeKey(id), this.dbReqOpts);
44
- if (!value)
45
- return null;
46
- return this.decodeValue(value);
47
- }
48
58
  async getBinary(id) {
49
59
  const value = await this.db.get(this.encodeKey(id), this.dbReqOpts);
50
60
  if (!value)
51
61
  return null;
52
62
  return value;
53
63
  }
54
- async has(id) {
55
- return (await this.get(id)) !== null;
56
- }
57
- async put(id, value) {
58
- await this.db.put(this.encodeKey(id), this.encodeValue(value), this.dbReqOpts);
59
- }
60
64
  async putBinary(id, value) {
61
65
  await this.db.put(this.encodeKey(id), value, this.dbReqOpts);
62
66
  }
67
+ async binaries(opts) {
68
+ const data = await this.db.values(this.dbFilterOptions(opts));
69
+ return data ?? [];
70
+ }
71
+ async lastBinary() {
72
+ // Metrics accounted in this.values()
73
+ const binaryValues = await this.binaries({ limit: 1, reverse: true, bucketId: this.bucketId });
74
+ if (!binaryValues.length) {
75
+ return null;
76
+ }
77
+ return binaryValues[0];
78
+ }
79
+ // Similar to batchPut but we support value as Uint8Array
80
+ async batchPutBinary(items) {
81
+ if (items.length === 1) {
82
+ return this.db.put(this.encodeKey(items[0].key), items[0].value, this.dbReqOpts);
83
+ }
84
+ await this.db.batchPut(Array.from({ length: items.length }, (_, i) => ({
85
+ key: this.encodeKey(items[i].key),
86
+ value: items[i].value,
87
+ })), this.dbReqOpts);
88
+ }
89
+ async *binaryEntriesStream(opts) {
90
+ yield* this.db.entriesStream(this.dbFilterOptions(opts));
91
+ }
92
+ async has(id) {
93
+ return (await this.getBinary(id)) !== null;
94
+ }
63
95
  async delete(id) {
64
96
  await this.db.delete(this.encodeKey(id), this.dbReqOpts);
65
97
  }
98
+ async batchDelete(ids) {
99
+ if (ids.length === 1) {
100
+ return this.delete(ids[0]);
101
+ }
102
+ await this.db.batchDelete(Array.from({ length: ids.length }, (_, i) => this.encodeKey(ids[i])), this.dbReqOpts);
103
+ }
104
+ async batchBinary(batch) {
105
+ const batchWithKeys = [];
106
+ for (const b of batch) {
107
+ batchWithKeys.push({ ...b, key: this.encodeKey(b.key) });
108
+ }
109
+ await this.db.batch(batchWithKeys, this.dbReqOpts);
110
+ }
111
+ /**
112
+ * Transforms opts from I to Uint8Array
113
+ */
114
+ dbFilterOptions(opts) {
115
+ const optsBuff = {
116
+ bucketId: this.bucketId,
117
+ };
118
+ // Set at least one min key
119
+ if (opts?.lt !== undefined) {
120
+ optsBuff.lt = this.encodeKey(opts.lt);
121
+ }
122
+ else if (opts?.lte !== undefined) {
123
+ optsBuff.lte = this.encodeKey(opts.lte);
124
+ }
125
+ else {
126
+ optsBuff.lt = this.maxKey;
127
+ }
128
+ // Set at least one max key
129
+ if (opts?.gt !== undefined) {
130
+ optsBuff.gt = this.encodeKey(opts.gt);
131
+ }
132
+ else if (opts?.gte !== undefined) {
133
+ optsBuff.gte = this.encodeKey(opts.gte);
134
+ }
135
+ else {
136
+ optsBuff.gte = this.minKey;
137
+ }
138
+ if (opts?.reverse !== undefined)
139
+ optsBuff.reverse = opts.reverse;
140
+ if (opts?.limit !== undefined)
141
+ optsBuff.limit = opts.limit;
142
+ return optsBuff;
143
+ }
144
+ }
145
+ /**
146
+ * Repository is a high level kv storage
147
+ * managing a Uint8Array to Uint8Array kv database
148
+ * It translates typed keys and values to Uint8Arrays required by the underlying database
149
+ *
150
+ * By default, SSZ-encoded values,
151
+ * indexed by root
152
+ */
153
+ export class Repository extends BinaryRepository {
154
+ type;
155
+ constructor(config, db, bucket, type, bucketId) {
156
+ super(config, db, bucket, bucketId);
157
+ this.type = type;
158
+ this.type = type;
159
+ }
160
+ encodeValue(value) {
161
+ return this.type.serialize(value);
162
+ }
163
+ decodeValue(data) {
164
+ return this.type.deserialize(data);
165
+ }
166
+ async get(id) {
167
+ const value = await this.db.get(this.encodeKey(id), this.dbReqOpts);
168
+ if (!value)
169
+ return null;
170
+ return this.decodeValue(value);
171
+ }
172
+ async put(id, value) {
173
+ await this.db.put(this.encodeKey(id), this.encodeValue(value), this.dbReqOpts);
174
+ }
66
175
  // The Id can be inferred from the value
67
176
  getId(value) {
68
177
  return this.type.hashTreeRoot(value);
@@ -82,21 +191,17 @@ export class Repository {
82
191
  value: this.encodeValue(items[i].value),
83
192
  })), this.dbReqOpts);
84
193
  }
85
- // Similar to batchPut but we support value as Uint8Array
86
- async batchPutBinary(items) {
87
- if (items.length === 1) {
88
- return this.db.put(this.encodeKey(items[0].key), items[0].value, this.dbReqOpts);
194
+ async batch(batch) {
195
+ const batchWithKeys = [];
196
+ for (const b of batch) {
197
+ if (b.type === "del") {
198
+ batchWithKeys.push({ ...b, key: this.encodeKey(b.key) });
199
+ }
200
+ else {
201
+ batchWithKeys.push({ ...b, key: this.encodeKey(b.key), value: this.encodeValue(b.value) });
202
+ }
89
203
  }
90
- await this.db.batchPut(Array.from({ length: items.length }, (_, i) => ({
91
- key: this.encodeKey(items[i].key),
92
- value: items[i].value,
93
- })), this.dbReqOpts);
94
- }
95
- async batchDelete(ids) {
96
- if (ids.length === 1) {
97
- return this.delete(ids[0]);
98
- }
99
- await this.db.batchDelete(Array.from({ length: ids.length }, (_, i) => this.encodeKey(ids[i])), this.dbReqOpts);
204
+ await this.db.batch(batchWithKeys, this.dbReqOpts);
100
205
  }
101
206
  async batchAdd(values) {
102
207
  // handle single value in batchPut
@@ -109,19 +214,8 @@ export class Repository {
109
214
  // handle single value in batchDelete
110
215
  await this.batchDelete(Array.from({ length: values.length }, (_ignored, i) => this.getId(values[i])));
111
216
  }
112
- async keys(opts) {
113
- const data = await this.db.keys(this.dbFilterOptions(opts));
114
- return (data ?? []).map((data) => this.decodeKey(data));
115
- }
116
- async *keysStream(opts) {
117
- const keysStream = this.db.keysStream(this.dbFilterOptions(opts));
118
- const decodeKey = this.decodeKey.bind(this);
119
- for await (const key of keysStream) {
120
- yield decodeKey(key);
121
- }
122
- }
123
217
  async values(opts) {
124
- const data = await this.db.values(this.dbFilterOptions(opts));
218
+ const data = await this.binaries(opts);
125
219
  return (data ?? []).map((data) => this.decodeValue(data));
126
220
  }
127
221
  async *valuesStream(opts) {
@@ -131,9 +225,6 @@ export class Repository {
131
225
  yield decodeValue(value);
132
226
  }
133
227
  }
134
- async *binaryEntriesStream(opts) {
135
- yield* this.db.entriesStream(this.dbFilterOptions(opts));
136
- }
137
228
  async entries(opts) {
138
229
  const data = await this.db.entries(this.dbFilterOptions(opts));
139
230
  return (data ?? []).map((data) => ({
@@ -152,22 +243,6 @@ export class Repository {
152
243
  };
153
244
  }
154
245
  }
155
- async firstKey() {
156
- // Metrics accounted in this.keys()
157
- const keys = await this.keys({ limit: 1, bucketId: this.bucketId });
158
- if (!keys.length) {
159
- return null;
160
- }
161
- return keys[0];
162
- }
163
- async lastKey() {
164
- // Metrics accounted in this.keys()
165
- const keys = await this.keys({ limit: 1, reverse: true, bucketId: this.bucketId });
166
- if (!keys.length) {
167
- return null;
168
- }
169
- return keys[0];
170
- }
171
246
  async firstValue() {
172
247
  // Metrics accounted in this.values()
173
248
  const values = await this.values({ limit: 1, bucketId: this.bucketId });
@@ -200,38 +275,5 @@ export class Repository {
200
275
  }
201
276
  return entries[0];
202
277
  }
203
- /**
204
- * Transforms opts from I to Uint8Array
205
- */
206
- dbFilterOptions(opts) {
207
- const optsBuff = {
208
- bucketId: this.bucketId,
209
- };
210
- // Set at least one min key
211
- if (opts?.lt !== undefined) {
212
- optsBuff.lt = this.encodeKey(opts.lt);
213
- }
214
- else if (opts?.lte !== undefined) {
215
- optsBuff.lte = this.encodeKey(opts.lte);
216
- }
217
- else {
218
- optsBuff.lt = this.maxKey;
219
- }
220
- // Set at least on max key
221
- if (opts?.gt !== undefined) {
222
- optsBuff.gt = this.encodeKey(opts.gt);
223
- }
224
- else if (opts?.gte !== undefined) {
225
- optsBuff.gte = this.encodeKey(opts.gte);
226
- }
227
- else {
228
- optsBuff.gte = this.minKey;
229
- }
230
- if (opts?.reverse !== undefined)
231
- optsBuff.reverse = opts.reverse;
232
- if (opts?.limit !== undefined)
233
- optsBuff.limit = opts.limit;
234
- return optsBuff;
235
- }
236
278
  }
237
279
  //# sourceMappingURL=abstractRepository.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abstractRepository.js","sourceRoot":"","sources":["../src/abstractRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstractRepository.js","sourceRoot":"","sources":["../src/abstractRepository.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type { DatabaseController, Db, DbReqOpts, FilterOptions, KeyValue } from "./interface.js";
1
+ export type { DatabaseController, Db, DbBatch, DbBatchOperation, DbReqOpts, FilterOptions, KeyValue, } from "./interface.js";
2
2
  export { LevelDbController } from "./level.js";
3
3
  export type { LevelDbControllerMetrics } from "./metrics.js";
4
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,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,YAAY,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,EAAE,EACF,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,QAAQ,GACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC7C,YAAY,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC"}
@@ -22,6 +22,15 @@ export interface KeyValue<K, V> {
22
22
  key: K;
23
23
  value: V;
24
24
  }
25
+ export type DbBatchOperation<K, V> = {
26
+ type: "del";
27
+ key: K;
28
+ } | {
29
+ type: "put";
30
+ key: K;
31
+ value: V;
32
+ };
33
+ export type DbBatch<K, V> = DbBatchOperation<K, V>[];
25
34
  export interface DatabaseController<K, V> {
26
35
  close(): Promise<void>;
27
36
  /** To inject metrics after CLI initialization */
@@ -32,6 +41,7 @@ export interface DatabaseController<K, V> {
32
41
  delete(key: K, opts?: DbReqOpts): Promise<void>;
33
42
  batchPut(items: KeyValue<K, V>[], opts?: DbReqOpts): Promise<void>;
34
43
  batchDelete(keys: K[], opts?: DbReqOpts): Promise<void>;
44
+ batch(batch: DbBatch<K, V>, opts?: DbReqOpts): Promise<void>;
35
45
  keysStream(opts?: FilterOptions<K>): AsyncIterable<K>;
36
46
  keys(opts?: FilterOptions<K>): Promise<K[]>;
37
47
  valuesStream(opts?: FilterOptions<K>): AsyncIterable<V>;
@@ -1 +1 @@
1
- {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/controller/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,wBAAwB,EAAC,MAAM,cAAc,CAAC;AAEtD,uDAAuD;AACvD,MAAM,MAAM,EAAE,GAAG,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,EAAE,CAAC,EAAE,CAAC,CAAC;IACP,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,EAAE,CAAC,EAAE,CAAC,CAAC;IACP,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,kBAAkB;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,QAAQ,CAAC,CAAC,EAAE,CAAC;IAC5B,GAAG,EAAE,CAAC,CAAC;IACP,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC;IAGtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,iDAAiD;IACjD,UAAU,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAIpD,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAEhE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAIhD,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAIxD,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5C,YAAY,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAE9C,aAAa,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CAC7D"}
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/controller/interface.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ClassicLevel } from "classic-level";
2
2
  import { Logger } from "@lodestar/utils";
3
- import { DatabaseController, DatabaseOptions, DbReqOpts, FilterOptions, KeyValue } from "./interface.js";
3
+ import { DatabaseController, DatabaseOptions, DbBatch, DbReqOpts, FilterOptions, KeyValue } from "./interface.js";
4
4
  import { LevelDbControllerMetrics } from "./metrics.js";
5
5
  export interface LevelDBOptions extends DatabaseOptions {
6
6
  db?: ClassicLevel<Uint8Array, Uint8Array>;
@@ -36,6 +36,7 @@ export declare class LevelDbController implements DatabaseController<Uint8Array,
36
36
  delete(key: Uint8Array, opts?: DbReqOpts): Promise<void>;
37
37
  batchPut(items: KeyValue<Uint8Array, Uint8Array>[], opts?: DbReqOpts): Promise<void>;
38
38
  batchDelete(keys: Uint8Array[], opts?: DbReqOpts): Promise<void>;
39
+ batch(batch: DbBatch<Uint8Array, Uint8Array>, opts?: DbReqOpts): Promise<void>;
39
40
  keysStream(opts?: FilterOptions<Uint8Array>): AsyncIterable<Uint8Array>;
40
41
  valuesStream(opts?: FilterOptions<Uint8Array>): AsyncIterable<Uint8Array>;
41
42
  entriesStream(opts?: FilterOptions<Uint8Array>): AsyncIterable<KeyValue<Uint8Array, Uint8Array>>;
@@ -1 +1 @@
1
- {"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../src/controller/level.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../../src/controller/level.ts"],"names":[],"mappings":"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"}
@@ -109,6 +109,11 @@ export class LevelDbController {
109
109
  this.metrics?.dbWriteItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, keys.length);
110
110
  return this.db.batch(keys.map((key) => ({ type: "del", key: key })));
111
111
  }
112
+ batch(batch, opts) {
113
+ this.metrics?.dbWriteReq.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, 1);
114
+ this.metrics?.dbWriteItems.inc({ bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN }, batch.length);
115
+ return this.db.batch(batch);
116
+ }
112
117
  keysStream(opts = {}) {
113
118
  return this.metricsIterator(this.db.keys(opts), (key) => key, opts.bucketId ?? BUCKET_ID_UNKNOWN);
114
119
  }
@@ -1 +1 @@
1
- {"version":3,"file":"level.js","sourceRoot":"","sources":["../../src/controller/level.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"level.js","sourceRoot":"","sources":["../../src/controller/level.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodestar/db",
3
- "version": "1.39.0",
3
+ "version": "1.40.0-dev.3715a82f3f",
4
4
  "description": "DB modules of Lodestar",
5
5
  "author": "ChainSafe Systems",
6
6
  "homepage": "https://github.com/ChainSafe/lodestar#readme",
@@ -44,13 +44,13 @@
44
44
  },
45
45
  "dependencies": {
46
46
  "@chainsafe/ssz": "^1.2.2",
47
- "@lodestar/config": "^1.39.0",
48
- "@lodestar/utils": "^1.39.0",
47
+ "@lodestar/config": "^1.40.0-dev.3715a82f3f",
48
+ "@lodestar/utils": "^1.40.0-dev.3715a82f3f",
49
49
  "classic-level": "^1.4.1",
50
50
  "it-all": "^3.0.4"
51
51
  },
52
52
  "devDependencies": {
53
- "@lodestar/logger": "^1.39.0"
53
+ "@lodestar/logger": "^1.40.0-dev.3715a82f3f"
54
54
  },
55
- "gitHead": "98e408948e3d4a42229a17d950cbcb01ba6dd29c"
55
+ "gitHead": "d37469ce3f1ccf5c6a377d1b76b11140efd3f6c7"
56
56
  }
@@ -2,7 +2,7 @@ import {Type} from "@chainsafe/ssz";
2
2
  import {ChainForkConfig} from "@lodestar/config";
3
3
  import {BUCKET_LENGTH} from "./const.js";
4
4
  import {KeyValue} from "./controller/index.js";
5
- import {Db, DbReqOpts, FilterOptions} from "./controller/interface.js";
5
+ import {Db, DbBatch, DbReqOpts, FilterOptions} from "./controller/interface.js";
6
6
  import {encodeKey} from "./util.js";
7
7
 
8
8
  type Id = Uint8Array | string | number | bigint;
@@ -148,6 +148,30 @@ export abstract class PrefixedRepository<P, I extends Id, T> {
148
148
  await this.db.batchDelete(keys.flat(), this.dbReqOpts);
149
149
  }
150
150
 
151
+ async batch(prefix: P, batch: DbBatch<I, T>): Promise<void> {
152
+ const batchWithKeys = [];
153
+ for (const b of batch) {
154
+ if (b.type === "del") {
155
+ batchWithKeys.push({type: b.type, key: this.wrapKey(this.encodeKeyRaw(prefix, b.key))});
156
+ } else {
157
+ batchWithKeys.push({
158
+ type: b.type,
159
+ key: this.wrapKey(this.encodeKeyRaw(prefix, b.key)),
160
+ value: this.encodeValue(b.value),
161
+ });
162
+ }
163
+ }
164
+ await this.db.batch(batchWithKeys, this.dbReqOpts);
165
+ }
166
+
167
+ async batchBinary(prefix: P, batch: DbBatch<I, Uint8Array>): Promise<void> {
168
+ const batchWithKeys = [];
169
+ for (const b of batch) {
170
+ batchWithKeys.push({...b, key: this.wrapKey(this.encodeKeyRaw(prefix, b.key))});
171
+ }
172
+ await this.db.batch(batchWithKeys, this.dbReqOpts);
173
+ }
174
+
151
175
  async *valuesStream(prefix: P | P[]): AsyncIterable<T> {
152
176
  for (const p of Array.isArray(prefix) ? prefix : [prefix]) {
153
177
  for await (const vb of this.db.valuesStream({
@@ -2,30 +2,26 @@ import {Type} from "@chainsafe/ssz";
2
2
  import {ChainForkConfig} from "@lodestar/config";
3
3
  import {BUCKET_LENGTH} from "./const.js";
4
4
  import {FilterOptions, KeyValue} from "./controller/index.js";
5
- import {Db, DbReqOpts} from "./controller/interface.js";
5
+ import {Db, DbBatch, DbReqOpts} from "./controller/interface.js";
6
6
  import {encodeKey as _encodeKey} from "./util.js";
7
7
 
8
8
  export type Id = Uint8Array | string | number | bigint;
9
9
 
10
10
  /**
11
- * Repository is a high level kv storage
11
+ * BinaryRepository is a high level kv storage
12
12
  * managing a Uint8Array to Uint8Array kv database
13
- * It translates typed keys and values to Uint8Arrays required by the underlying database
14
- *
15
- * By default, SSZ-encoded values,
16
- * indexed by root
13
+ * It translates typed keys and Uint8Array values required by the underlying database
17
14
  */
18
- export abstract class Repository<I extends Id, T> {
19
- private readonly dbReqOpts: DbReqOpts;
15
+ export abstract class BinaryRepository<I extends Id> {
16
+ protected readonly dbReqOpts: DbReqOpts;
20
17
 
21
- private readonly minKey: Uint8Array;
22
- private readonly maxKey: Uint8Array;
18
+ protected readonly minKey: Uint8Array;
19
+ protected readonly maxKey: Uint8Array;
23
20
 
24
21
  protected constructor(
25
22
  protected config: ChainForkConfig,
26
23
  protected db: Db,
27
24
  protected bucket: number,
28
- protected type: Type<T>,
29
25
  protected readonly bucketId: string
30
26
  ) {
31
27
  this.dbReqOpts = {bucketId: this.bucketId};
@@ -33,12 +29,35 @@ export abstract class Repository<I extends Id, T> {
33
29
  this.maxKey = _encodeKey(bucket + 1, Buffer.alloc(0));
34
30
  }
35
31
 
36
- encodeValue(value: T): Uint8Array {
37
- return this.type.serialize(value);
32
+ async keys(opts?: FilterOptions<I>): Promise<I[]> {
33
+ const data = await this.db.keys(this.dbFilterOptions(opts));
34
+ return (data ?? []).map((data) => this.decodeKey(data));
38
35
  }
39
36
 
40
- decodeValue(data: Uint8Array): T {
41
- return this.type.deserialize(data);
37
+ async *keysStream(opts?: FilterOptions<I>): AsyncIterable<I> {
38
+ const keysStream = this.db.keysStream(this.dbFilterOptions(opts));
39
+ const decodeKey = this.decodeKey.bind(this);
40
+ for await (const key of keysStream) {
41
+ yield decodeKey(key);
42
+ }
43
+ }
44
+
45
+ async firstKey(): Promise<I | null> {
46
+ // Metrics accounted in this.keys()
47
+ const keys = await this.keys({limit: 1, bucketId: this.bucketId});
48
+ if (!keys.length) {
49
+ return null;
50
+ }
51
+ return keys[0];
52
+ }
53
+
54
+ async lastKey(): Promise<I | null> {
55
+ // Metrics accounted in this.keys()
56
+ const keys = await this.keys({limit: 1, reverse: true, bucketId: this.bucketId});
57
+ if (!keys.length) {
58
+ return null;
59
+ }
60
+ return keys[0];
42
61
  }
43
62
 
44
63
  encodeKey(id: I): Uint8Array {
@@ -49,34 +68,147 @@ export abstract class Repository<I extends Id, T> {
49
68
  return key.slice(BUCKET_LENGTH) as I;
50
69
  }
51
70
 
52
- async get(id: I): Promise<T | null> {
53
- const value = await this.db.get(this.encodeKey(id), this.dbReqOpts);
54
- if (!value) return null;
55
- return this.decodeValue(value);
56
- }
57
-
58
71
  async getBinary(id: I): Promise<Uint8Array | null> {
59
72
  const value = await this.db.get(this.encodeKey(id), this.dbReqOpts);
60
73
  if (!value) return null;
61
74
  return value;
62
75
  }
63
76
 
64
- async has(id: I): Promise<boolean> {
65
- return (await this.get(id)) !== null;
77
+ async putBinary(id: I, value: Uint8Array): Promise<void> {
78
+ await this.db.put(this.encodeKey(id), value, this.dbReqOpts);
66
79
  }
67
80
 
68
- async put(id: I, value: T): Promise<void> {
69
- await this.db.put(this.encodeKey(id), this.encodeValue(value), this.dbReqOpts);
81
+ async binaries(opts?: FilterOptions<I>): Promise<Uint8Array[]> {
82
+ const data = await this.db.values(this.dbFilterOptions(opts));
83
+ return data ?? [];
70
84
  }
71
85
 
72
- async putBinary(id: I, value: Uint8Array): Promise<void> {
73
- await this.db.put(this.encodeKey(id), value, this.dbReqOpts);
86
+ async lastBinary(): Promise<Uint8Array | null> {
87
+ // Metrics accounted in this.values()
88
+ const binaryValues = await this.binaries({limit: 1, reverse: true, bucketId: this.bucketId});
89
+ if (!binaryValues.length) {
90
+ return null;
91
+ }
92
+ return binaryValues[0];
93
+ }
94
+
95
+ // Similar to batchPut but we support value as Uint8Array
96
+ async batchPutBinary(items: KeyValue<I, Uint8Array>[]): Promise<void> {
97
+ if (items.length === 1) {
98
+ return this.db.put(this.encodeKey(items[0].key), items[0].value, this.dbReqOpts);
99
+ }
100
+
101
+ await this.db.batchPut(
102
+ Array.from({length: items.length}, (_, i) => ({
103
+ key: this.encodeKey(items[i].key),
104
+ value: items[i].value,
105
+ })),
106
+ this.dbReqOpts
107
+ );
108
+ }
109
+
110
+ async *binaryEntriesStream(opts?: FilterOptions<I>): AsyncIterable<KeyValue<Uint8Array, Uint8Array>> {
111
+ yield* this.db.entriesStream(this.dbFilterOptions(opts));
112
+ }
113
+
114
+ async has(id: I): Promise<boolean> {
115
+ return (await this.getBinary(id)) !== null;
74
116
  }
75
117
 
76
118
  async delete(id: I): Promise<void> {
77
119
  await this.db.delete(this.encodeKey(id), this.dbReqOpts);
78
120
  }
79
121
 
122
+ async batchDelete(ids: I[]): Promise<void> {
123
+ if (ids.length === 1) {
124
+ return this.delete(ids[0]);
125
+ }
126
+
127
+ await this.db.batchDelete(
128
+ Array.from({length: ids.length}, (_, i) => this.encodeKey(ids[i])),
129
+ this.dbReqOpts
130
+ );
131
+ }
132
+
133
+ async batchBinary(batch: DbBatch<I, Uint8Array>): Promise<void> {
134
+ const batchWithKeys: DbBatch<Uint8Array, Uint8Array> = [];
135
+ for (const b of batch) {
136
+ batchWithKeys.push({...b, key: this.encodeKey(b.key)});
137
+ }
138
+ await this.db.batch(batchWithKeys, this.dbReqOpts);
139
+ }
140
+
141
+ /**
142
+ * Transforms opts from I to Uint8Array
143
+ */
144
+ protected dbFilterOptions(opts?: FilterOptions<I>): FilterOptions<Uint8Array> {
145
+ const optsBuff: FilterOptions<Uint8Array> = {
146
+ bucketId: this.bucketId,
147
+ };
148
+
149
+ // Set at least one min key
150
+ if (opts?.lt !== undefined) {
151
+ optsBuff.lt = this.encodeKey(opts.lt);
152
+ } else if (opts?.lte !== undefined) {
153
+ optsBuff.lte = this.encodeKey(opts.lte);
154
+ } else {
155
+ optsBuff.lt = this.maxKey;
156
+ }
157
+
158
+ // Set at least one max key
159
+ if (opts?.gt !== undefined) {
160
+ optsBuff.gt = this.encodeKey(opts.gt);
161
+ } else if (opts?.gte !== undefined) {
162
+ optsBuff.gte = this.encodeKey(opts.gte);
163
+ } else {
164
+ optsBuff.gte = this.minKey;
165
+ }
166
+
167
+ if (opts?.reverse !== undefined) optsBuff.reverse = opts.reverse;
168
+ if (opts?.limit !== undefined) optsBuff.limit = opts.limit;
169
+
170
+ return optsBuff;
171
+ }
172
+ }
173
+
174
+ /**
175
+ * Repository is a high level kv storage
176
+ * managing a Uint8Array to Uint8Array kv database
177
+ * It translates typed keys and values to Uint8Arrays required by the underlying database
178
+ *
179
+ * By default, SSZ-encoded values,
180
+ * indexed by root
181
+ */
182
+ export abstract class Repository<I extends Id, T> extends BinaryRepository<I> {
183
+ protected constructor(
184
+ config: ChainForkConfig,
185
+ db: Db,
186
+ bucket: number,
187
+ protected type: Type<T>,
188
+ bucketId: string
189
+ ) {
190
+ super(config, db, bucket, bucketId);
191
+ this.type = type;
192
+ }
193
+
194
+ encodeValue(value: T): Uint8Array {
195
+ return this.type.serialize(value);
196
+ }
197
+
198
+ decodeValue(data: Uint8Array): T {
199
+ return this.type.deserialize(data);
200
+ }
201
+
202
+ async get(id: I): Promise<T | null> {
203
+ const value = await this.db.get(this.encodeKey(id), this.dbReqOpts);
204
+ if (!value) return null;
205
+ return this.decodeValue(value);
206
+ }
207
+
208
+ async put(id: I, value: T): Promise<void> {
209
+ await this.db.put(this.encodeKey(id), this.encodeValue(value), this.dbReqOpts);
210
+ }
211
+
80
212
  // The Id can be inferred from the value
81
213
  getId(value: T): I {
82
214
  return this.type.hashTreeRoot(value) as I;
@@ -104,30 +236,16 @@ export abstract class Repository<I extends Id, T> {
104
236
  );
105
237
  }
106
238
 
107
- // Similar to batchPut but we support value as Uint8Array
108
- async batchPutBinary(items: KeyValue<I, Uint8Array>[]): Promise<void> {
109
- if (items.length === 1) {
110
- return this.db.put(this.encodeKey(items[0].key), items[0].value, this.dbReqOpts);
111
- }
112
-
113
- await this.db.batchPut(
114
- Array.from({length: items.length}, (_, i) => ({
115
- key: this.encodeKey(items[i].key),
116
- value: items[i].value,
117
- })),
118
- this.dbReqOpts
119
- );
120
- }
121
-
122
- async batchDelete(ids: I[]): Promise<void> {
123
- if (ids.length === 1) {
124
- return this.delete(ids[0]);
239
+ async batch(batch: DbBatch<I, T>): Promise<void> {
240
+ const batchWithKeys: DbBatch<Uint8Array, Uint8Array> = [];
241
+ for (const b of batch) {
242
+ if (b.type === "del") {
243
+ batchWithKeys.push({...b, key: this.encodeKey(b.key)});
244
+ } else {
245
+ batchWithKeys.push({...b, key: this.encodeKey(b.key), value: this.encodeValue(b.value)});
246
+ }
125
247
  }
126
-
127
- await this.db.batchDelete(
128
- Array.from({length: ids.length}, (_, i) => this.encodeKey(ids[i])),
129
- this.dbReqOpts
130
- );
248
+ await this.db.batch(batchWithKeys, this.dbReqOpts);
131
249
  }
132
250
 
133
251
  async batchAdd(values: T[]): Promise<void> {
@@ -145,21 +263,8 @@ export abstract class Repository<I extends Id, T> {
145
263
  await this.batchDelete(Array.from({length: values.length}, (_ignored, i) => this.getId(values[i])));
146
264
  }
147
265
 
148
- async keys(opts?: FilterOptions<I>): Promise<I[]> {
149
- const data = await this.db.keys(this.dbFilterOptions(opts));
150
- return (data ?? []).map((data) => this.decodeKey(data));
151
- }
152
-
153
- async *keysStream(opts?: FilterOptions<I>): AsyncIterable<I> {
154
- const keysStream = this.db.keysStream(this.dbFilterOptions(opts));
155
- const decodeKey = this.decodeKey.bind(this);
156
- for await (const key of keysStream) {
157
- yield decodeKey(key);
158
- }
159
- }
160
-
161
266
  async values(opts?: FilterOptions<I>): Promise<T[]> {
162
- const data = await this.db.values(this.dbFilterOptions(opts));
267
+ const data = await this.binaries(opts);
163
268
  return (data ?? []).map((data) => this.decodeValue(data));
164
269
  }
165
270
 
@@ -171,10 +276,6 @@ export abstract class Repository<I extends Id, T> {
171
276
  }
172
277
  }
173
278
 
174
- async *binaryEntriesStream(opts?: FilterOptions<I>): AsyncIterable<KeyValue<Uint8Array, Uint8Array>> {
175
- yield* this.db.entriesStream(this.dbFilterOptions(opts));
176
- }
177
-
178
279
  async entries(opts?: FilterOptions<I>): Promise<KeyValue<I, T>[]> {
179
280
  const data = await this.db.entries(this.dbFilterOptions(opts));
180
281
  return (data ?? []).map((data) => ({
@@ -195,24 +296,6 @@ export abstract class Repository<I extends Id, T> {
195
296
  }
196
297
  }
197
298
 
198
- async firstKey(): Promise<I | null> {
199
- // Metrics accounted in this.keys()
200
- const keys = await this.keys({limit: 1, bucketId: this.bucketId});
201
- if (!keys.length) {
202
- return null;
203
- }
204
- return keys[0];
205
- }
206
-
207
- async lastKey(): Promise<I | null> {
208
- // Metrics accounted in this.keys()
209
- const keys = await this.keys({limit: 1, reverse: true, bucketId: this.bucketId});
210
- if (!keys.length) {
211
- return null;
212
- }
213
- return keys[0];
214
- }
215
-
216
299
  async firstValue(): Promise<T | null> {
217
300
  // Metrics accounted in this.values()
218
301
  const values = await this.values({limit: 1, bucketId: this.bucketId});
@@ -248,36 +331,4 @@ export abstract class Repository<I extends Id, T> {
248
331
  }
249
332
  return entries[0];
250
333
  }
251
-
252
- /**
253
- * Transforms opts from I to Uint8Array
254
- */
255
- protected dbFilterOptions(opts?: FilterOptions<I>): FilterOptions<Uint8Array> {
256
- const optsBuff: FilterOptions<Uint8Array> = {
257
- bucketId: this.bucketId,
258
- };
259
-
260
- // Set at least one min key
261
- if (opts?.lt !== undefined) {
262
- optsBuff.lt = this.encodeKey(opts.lt);
263
- } else if (opts?.lte !== undefined) {
264
- optsBuff.lte = this.encodeKey(opts.lte);
265
- } else {
266
- optsBuff.lt = this.maxKey;
267
- }
268
-
269
- // Set at least on max key
270
- if (opts?.gt !== undefined) {
271
- optsBuff.gt = this.encodeKey(opts.gt);
272
- } else if (opts?.gte !== undefined) {
273
- optsBuff.gte = this.encodeKey(opts.gte);
274
- } else {
275
- optsBuff.gte = this.minKey;
276
- }
277
-
278
- if (opts?.reverse !== undefined) optsBuff.reverse = opts.reverse;
279
- if (opts?.limit !== undefined) optsBuff.limit = opts.limit;
280
-
281
- return optsBuff;
282
- }
283
334
  }
@@ -1,3 +1,11 @@
1
- export type {DatabaseController, Db, DbReqOpts, FilterOptions, KeyValue} from "./interface.js";
1
+ export type {
2
+ DatabaseController,
3
+ Db,
4
+ DbBatch,
5
+ DbBatchOperation,
6
+ DbReqOpts,
7
+ FilterOptions,
8
+ KeyValue,
9
+ } from "./interface.js";
2
10
  export {LevelDbController} from "./level.js";
3
11
  export type {LevelDbControllerMetrics} from "./metrics.js";
@@ -28,6 +28,9 @@ export interface KeyValue<K, V> {
28
28
  value: V;
29
29
  }
30
30
 
31
+ export type DbBatchOperation<K, V> = {type: "del"; key: K} | {type: "put"; key: K; value: V};
32
+ export type DbBatch<K, V> = DbBatchOperation<K, V>[];
33
+
31
34
  export interface DatabaseController<K, V> {
32
35
  // service start / stop
33
36
 
@@ -48,6 +51,7 @@ export interface DatabaseController<K, V> {
48
51
 
49
52
  batchPut(items: KeyValue<K, V>[], opts?: DbReqOpts): Promise<void>;
50
53
  batchDelete(keys: K[], opts?: DbReqOpts): Promise<void>;
54
+ batch(batch: DbBatch<K, V>, opts?: DbReqOpts): Promise<void>;
51
55
 
52
56
  // Iterate over entries
53
57
 
@@ -1,6 +1,6 @@
1
1
  import {ClassicLevel} from "classic-level";
2
2
  import {Logger} from "@lodestar/utils";
3
- import {DatabaseController, DatabaseOptions, DbReqOpts, FilterOptions, KeyValue} from "./interface.js";
3
+ import {DatabaseController, DatabaseOptions, DbBatch, DbReqOpts, FilterOptions, KeyValue} from "./interface.js";
4
4
  import {LevelDbControllerMetrics} from "./metrics.js";
5
5
 
6
6
  enum Status {
@@ -143,6 +143,13 @@ export class LevelDbController implements DatabaseController<Uint8Array, Uint8Ar
143
143
  return this.db.batch(keys.map((key) => ({type: "del", key: key})));
144
144
  }
145
145
 
146
+ batch(batch: DbBatch<Uint8Array, Uint8Array>, opts?: DbReqOpts): Promise<void> {
147
+ this.metrics?.dbWriteReq.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, 1);
148
+ this.metrics?.dbWriteItems.inc({bucket: opts?.bucketId ?? BUCKET_ID_UNKNOWN}, batch.length);
149
+
150
+ return this.db.batch(batch);
151
+ }
152
+
146
153
  keysStream(opts: FilterOptions<Uint8Array> = {}): AsyncIterable<Uint8Array> {
147
154
  return this.metricsIterator(this.db.keys(opts), (key) => key, opts.bucketId ?? BUCKET_ID_UNKNOWN);
148
155
  }