bedrock-ledger-node/lib/ledger-node.js

/*!
 * Copyright (c) 2016-2018 Digital Bazaar, Inc. All rights reserved.
 */
'use strict';

const LedgerNodeBlocks = require('./ledger-node-blocks');
const LedgerNodeConfig = require('./ledger-node-config');
const LedgerNodeEvents = require('./ledger-node-events');
const LedgerNodeOperations = require('./ledger-node-operations');
const LedgerNodeMeta = require('./ledger-node-meta');
const LedgerNodeRecords = require('./ledger-node-records');

/**
 * Ledger Node class that exposes the blocks, events, and meta APIs.
 */
module.exports = class LedgerNode {
  constructor(options) {
    this.id = options.id;
    this.ledger = options.ledger;
    this.consensus = options.consensus;
    this.storage = options.storage;
    this.driver = {};
    this.injector = options.injector;
    const ledgerNode = this;
    this.meta = new LedgerNodeMeta({ledgerNode});
    // this.meta = new LedgerNodeMeta(options.storage.meta, options.consensus);
    this.blocks = new LedgerNodeBlocks({ledgerNode});
    // this.blocks = new LedgerNodeBlocks(
    //   this, options.storage, options.consensus);
    this.config = new LedgerNodeConfig({ledgerNode});
    // this.config = new LedgerNodeConfig(
    //   this, options.storage, options.consensus);
    this.events = new LedgerNodeEvents({ledgerNode});
    // this.events = new LedgerNodeEvents(
    //   this, options.storage, options.consensus);
    this.operations = new LedgerNodeOperations({ledgerNode});
    // this.operations = new LedgerNodeOperations(
    //   this, options.storage, options.consensus);
    this.records = new LedgerNodeRecords({ledgerNode});
    // this.stateMachine = new LedgerNodeStateMachine(
    //   this, options.storage, options.consensus);
  }
};