@mainsail/consensus 0.0.1-alpha.13 → 0.0.1-alpha.14

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 +1 @@
1
- {"version":3,"file":"bootstrapper.d.ts","sourceRoot":"","sources":["../source/bootstrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AAEpE,qBACa,YAAa,YAAW,SAAS,CAAC,SAAS,CAAC,YAAY;IAEpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAGlD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4C;IAG3E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAEnD,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC;CA6C3E"}
1
+ {"version":3,"file":"bootstrapper.d.ts","sourceRoot":"","sources":["../source/bootstrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAsB,MAAM,qBAAqB,CAAC;AAEpE,qBACa,YAAa,YAAW,SAAS,CAAC,SAAS,CAAC,YAAY;IAEpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAGlD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4C;IAG3E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAEjD,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,CAAC;CA6C3E"}
@@ -55,7 +55,7 @@ __decorate([
55
55
  __metadata("design:type", Object)
56
56
  ], Bootstrapper.prototype, "roundStateRepo", void 0);
57
57
  __decorate([
58
- inject(Identifiers.Consensus.Storage),
58
+ inject(Identifiers.ConsensusStorage.Service),
59
59
  __metadata("design:type", Object)
60
60
  ], Bootstrapper.prototype, "storage", void 0);
61
61
  Bootstrapper = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrapper.js","sourceRoot":"","sources":["../source/bootstrapper.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAS,MAAM,qBAAqB,CAAC;AAG7D,IAAM,YAAY,GAAlB,MAAM,YAAY;IAUjB,KAAK,CAAC,GAAG;QACf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtF,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpF,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACxF,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAkE,CAAC;QAC/G,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,uDAAuD;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACrF,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,wDAAwD;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACtF,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAChC,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD,CAAA;AArDiB;IADhB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;;4CACS;AAGjC;IADhB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC;;oDACwB;AAG1D;IADhB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC;;6CAC0B;AARpD,YAAY;IADxB,UAAU,EAAE;GACA,YAAY,CAuDxB"}
1
+ {"version":3,"file":"bootstrapper.js","sourceRoot":"","sources":["../source/bootstrapper.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAS,MAAM,qBAAqB,CAAC;AAG7D,IAAM,YAAY,GAAlB,MAAM,YAAY;IAUjB,KAAK,CAAC,GAAG;QACf,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtF,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpF,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;YACxF,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAkE,CAAC;QAC/G,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,uDAAuD;YACvD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACrF,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,wDAAwD;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YACtF,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC;QAChC,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;CACD,CAAA;AArDiB;IADhB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;;4CACS;AAGjC;IADhB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,oBAAoB,CAAC;;oDACwB;AAG1D;IADhB,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC;;6CACiB;AARlD,YAAY;IADxB,UAAU,EAAE;GACA,YAAY,CAuDxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAS,MAAM,kBAAkB,CAAC;AAYpD,qBAAa,eAAgB,SAAQ,SAAS,CAAC,eAAe;IAChD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAS,MAAM,kBAAkB,CAAC;AAUpD,qBAAa,eAAgB,SAAQ,SAAS,CAAC,eAAe;IAChD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAIrC"}
@@ -7,7 +7,6 @@ import { Consensus } from "./consensus.js";
7
7
  import { CommitProcessor, PrecommitProcessor, PrevoteProcessor, ProposalProcessor } from "./processors/index.js";
8
8
  import { RoundStateRepository } from "./round-state-repository.js";
9
9
  import { Scheduler } from "./scheduler.js";
10
- import { Storage } from "./storage.js";
11
10
  export class ServiceProvider extends Providers.ServiceProvider {
12
11
  async register() {
13
12
  this.app.bind(Identifiers.Consensus.Aggregator).to(Aggregator).inSingletonScope();
@@ -21,35 +20,12 @@ export class ServiceProvider extends Providers.ServiceProvider {
21
20
  this.app
22
21
  .bind(Identifiers.Consensus.CommitState.Factory)
23
22
  .toFactory((context) => (commit) => context.container.resolve(CommitState).configure(commit));
24
- // Storage for prevotes, precommits and proposals
25
- const storage = this.app.get(Identifiers.Database.Instance.Consensus);
26
- this.app.bind(Identifiers.Database.Storage.Proposal).toConstantValue(storage.openDB({ name: "proposals" }));
27
- this.app.bind(Identifiers.Database.Storage.PreVote).toConstantValue(storage.openDB({ name: "prevotes" }));
28
- this.app.bind(Identifiers.Database.Storage.PreCommit).toConstantValue(storage.openDB({ name: "precommits" }));
29
- this.app
30
- .bind(Identifiers.Database.Storage.ConsensusState)
31
- .toConstantValue(storage.openDB({ name: "consensus" }));
32
- this.app.bind(Identifiers.Consensus.Storage).to(Storage).inSingletonScope();
33
23
  this.app.bind(Identifiers.Consensus.Bootstrapper).to(Bootstrapper).inSingletonScope();
34
24
  this.app.bind(Identifiers.Consensus.Service).toConstantValue(this.app.resolve(Consensus));
35
25
  }
36
26
  async dispose() {
37
27
  const consensus = this.app.get(Identifiers.Consensus.Service);
38
28
  await consensus.dispose();
39
- const storage = this.app.get(Identifiers.Consensus.Storage);
40
- await storage.clear();
41
- await storage.saveState(consensus.getState());
42
- const roundStates = this.app
43
- .get(Identifiers.Consensus.RoundStateRepository)
44
- .getRoundStates();
45
- const proposals = roundStates
46
- .map((roundState) => roundState.getProposal())
47
- .filter((proposal) => !!proposal);
48
- await storage.saveProposals(proposals);
49
- const prevotes = roundStates.flatMap((roundState) => roundState.getPrevotes());
50
- await storage.savePrevotes(prevotes);
51
- const precommits = roundStates.flatMap((roundState) => roundState.getPrecommits());
52
- await storage.savePrecommits(precommits);
53
29
  }
54
30
  }
55
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mainsail/consensus",
3
- "version": "0.0.1-alpha.13",
3
+ "version": "0.0.1-alpha.14",
4
4
  "description": "Consensus for the Mainsail blockchain",
5
5
  "license": "GPL-3.0-only",
6
6
  "contributors": [],
@@ -12,13 +12,12 @@
12
12
  ],
13
13
  "dependencies": {
14
14
  "dayjs": "1.11.10",
15
- "lmdb": "2.9.4",
16
- "@mainsail/contracts": "0.0.1-alpha.13",
17
- "@mainsail/kernel": "0.0.1-alpha.13",
18
- "@mainsail/container": "0.0.1-alpha.13"
15
+ "@mainsail/container": "0.0.1-alpha.14",
16
+ "@mainsail/kernel": "0.0.1-alpha.14",
17
+ "@mainsail/contracts": "0.0.1-alpha.14"
19
18
  },
20
19
  "devDependencies": {
21
- "rewiremock": "3.14.5",
20
+ "esmock": "2.6.4",
22
21
  "uvu": "^0.5.6"
23
22
  },
24
23
  "engines": {
@@ -29,9 +28,10 @@
29
28
  "build:watch": "pnpm run clean && tsc -w",
30
29
  "clean": "del distribution",
31
30
  "release": "pnpm publish --access public",
32
- "test": "uvu -r tsm source .test.ts",
31
+ "test": "pnpm run uvu source .test.ts",
33
32
  "test:coverage": "c8 pnpm run test",
34
33
  "test:coverage:html": "c8 -r html --all pnpm run test",
35
- "test:file": "uvu -r tsm source"
34
+ "test:file": "pnpm run uvu source",
35
+ "uvu": "tsx --tsconfig ../../tsconfig.test.json ./node_modules/uvu/bin.js"
36
36
  }
37
37
  }
@@ -1,19 +0,0 @@
1
- import { Contracts } from "@mainsail/contracts";
2
- export declare class Storage implements Contracts.Consensus.ConsensusStorage {
3
- private readonly proposalStorage;
4
- private readonly prevoteStorage;
5
- private readonly precommitStorage;
6
- private readonly stateStorage;
7
- private readonly validatorSet;
8
- private readonly messageFactory;
9
- getState(): Promise<Contracts.Consensus.ConsensusStateData | undefined>;
10
- saveState(state: Contracts.Consensus.ConsensusState): Promise<void>;
11
- saveProposals(proposals: Contracts.Crypto.Proposal[]): Promise<void>;
12
- savePrevotes(prevotes: Contracts.Crypto.Prevote[]): Promise<void>;
13
- savePrecommits(precommits: Contracts.Crypto.Precommit[]): Promise<void>;
14
- getProposals(): Promise<Contracts.Crypto.Proposal[]>;
15
- getPrevotes(): Promise<Contracts.Crypto.Prevote[]>;
16
- getPrecommits(): Promise<Contracts.Crypto.Precommit[]>;
17
- clear(): Promise<void>;
18
- }
19
- //# sourceMappingURL=storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../source/storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAC;AAG7D,qBACa,OAAQ,YAAW,SAAS,CAAC,SAAS,CAAC,gBAAgB;IAEnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAGjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAGhD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAGlD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAG9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAG/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAErD,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAgBvE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAanE,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpE,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjE,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYvE,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAKpD,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAKlD,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAKtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAQnC"}
@@ -1,111 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { inject, injectable } from "@mainsail/container";
11
- import { Contracts, Identifiers } from "@mainsail/contracts";
12
- import * as lmdb from "lmdb";
13
- let Storage = class Storage {
14
- async getState() {
15
- if (!this.stateStorage.doesExist("consensus-state")) {
16
- return undefined;
17
- }
18
- const data = await this.stateStorage.get("consensus-state");
19
- return {
20
- height: data.height,
21
- lockedRound: data.lockedRound,
22
- round: data.round,
23
- step: data.step,
24
- validRound: data.validRound,
25
- };
26
- }
27
- async saveState(state) {
28
- // always overwrite existing state; we only care about state for uncommitted blocks
29
- const data = {
30
- height: state.height,
31
- lockedRound: state.lockedRound,
32
- round: state.round,
33
- step: state.step,
34
- validRound: state.validRound,
35
- };
36
- await this.stateStorage.put("consensus-state", data);
37
- }
38
- async saveProposals(proposals) {
39
- await this.proposalStorage.transaction(async () => {
40
- for (const proposal of proposals) {
41
- const validator = this.validatorSet.getValidator(proposal.validatorIndex);
42
- await this.proposalStorage.put(`${proposal.round}-${validator.getConsensusPublicKey()}`, proposal.toData());
43
- }
44
- });
45
- }
46
- async savePrevotes(prevotes) {
47
- await this.prevoteStorage.transaction(async () => {
48
- for (const prevote of prevotes) {
49
- const validator = this.validatorSet.getValidator(prevote.validatorIndex);
50
- await this.prevoteStorage.put(`${prevote.round}-${validator.getConsensusPublicKey()}`, prevote.toData());
51
- }
52
- });
53
- }
54
- async savePrecommits(precommits) {
55
- await this.precommitStorage.transaction(async () => {
56
- for (const precommit of precommits) {
57
- const validator = this.validatorSet.getValidator(precommit.validatorIndex);
58
- await this.precommitStorage.put(`${precommit.round}-${validator.getConsensusPublicKey()}`, precommit.toData());
59
- }
60
- });
61
- }
62
- async getProposals() {
63
- const proposals = [...this.proposalStorage.getValues(undefined)];
64
- return Promise.all(proposals.map((proposal) => this.messageFactory.makeProposalFromData(proposal)));
65
- }
66
- async getPrevotes() {
67
- const prevotes = [...this.prevoteStorage.getValues(undefined)];
68
- return Promise.all(prevotes.map((prevote) => this.messageFactory.makePrevoteFromData(prevote)));
69
- }
70
- async getPrecommits() {
71
- const precommits = [...this.precommitStorage.getValues(undefined)];
72
- return Promise.all(precommits.map((precommit) => this.messageFactory.makePrecommitFromData(precommit)));
73
- }
74
- async clear() {
75
- await Promise.all([
76
- this.proposalStorage.clearAsync(),
77
- this.prevoteStorage.clearAsync(),
78
- this.precommitStorage.clearAsync(),
79
- this.stateStorage.clearAsync(),
80
- ]);
81
- }
82
- };
83
- __decorate([
84
- inject(Identifiers.Database.Storage.Proposal),
85
- __metadata("design:type", lmdb.Database)
86
- ], Storage.prototype, "proposalStorage", void 0);
87
- __decorate([
88
- inject(Identifiers.Database.Storage.PreVote),
89
- __metadata("design:type", lmdb.Database)
90
- ], Storage.prototype, "prevoteStorage", void 0);
91
- __decorate([
92
- inject(Identifiers.Database.Storage.PreCommit),
93
- __metadata("design:type", lmdb.Database)
94
- ], Storage.prototype, "precommitStorage", void 0);
95
- __decorate([
96
- inject(Identifiers.Database.Storage.ConsensusState),
97
- __metadata("design:type", lmdb.Database)
98
- ], Storage.prototype, "stateStorage", void 0);
99
- __decorate([
100
- inject(Identifiers.ValidatorSet.Service),
101
- __metadata("design:type", Object)
102
- ], Storage.prototype, "validatorSet", void 0);
103
- __decorate([
104
- inject(Identifiers.Cryptography.Message.Factory),
105
- __metadata("design:type", Object)
106
- ], Storage.prototype, "messageFactory", void 0);
107
- Storage = __decorate([
108
- injectable()
109
- ], Storage);
110
- export { Storage };
111
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../source/storage.ts"],"names":[],"mappings":"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"}