UNPKG

@polkadot/api-provider

Version:
85 lines (69 loc) 2.73 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = mocks; require("core-js/modules/web.dom.iterable"); var _bn = _interopRequireDefault(require("bn.js")); var _static = _interopRequireDefault(require("@polkadot/storage/static")); var _Header = _interopRequireDefault(require("@polkadot/types/Header")); var _toU8a = _interopRequireDefault(require("@polkadot/util/bn/toU8a")); var _toHex = _interopRequireDefault(require("@polkadot/util/u8a/toHex")); var _asU8a = _interopRequireDefault(require("@polkadot/util-crypto/random/asU8a")); var _testing = _interopRequireDefault(require("@polkadot/util-keyring/testing")); // Copyright 2017-2018 @polkadot/api-provider authors & contributors // This software may be modified and distributed under the terms // of the ISC license. See the LICENSE file for details. // FIXME: This file is way too long and way too messy const keyring = (0, _testing.default)(); const emitEvents = ['connected', 'disconnected']; let emitIndex = 0; function makeBlockHeader(prevNumber) { const blockNumber = prevNumber.addn(1); return { digest: { logs: [] }, extrinsicsRoot: (0, _asU8a.default)(), number: blockNumber, parentHash: prevNumber.eqn(-1) ? new Uint8Array(32) : (0, _toU8a.default)(prevNumber, 256, false), stateRoot: (0, _toU8a.default)(blockNumber, 256, false) }; } function updateSubs(subscriptions, method, value) { subscriptions[method].lastValue = value; Object.values(subscriptions[method].callbacks).forEach(cb => { try { cb(null, value); } catch (error) { console.error(`Error on '${method}' subscription`, error); } }); } function setStorageBn(db, createKey, value, ...keyParams) { const keyValue = (0, _toHex.default)(createKey(...keyParams)); db[keyValue] = (0, _toU8a.default)(value, 64, true); } function mocks({ emitter, db, subscriptions }) { let newHead = makeBlockHeader(new _bn.default(-1)); setInterval(() => { if (++emitIndex === emitEvents.length) { emitIndex = 0; } emitter.emit(emitEvents[emitIndex]); newHead = makeBlockHeader(newHead.number); keyring.getPairs().forEach(({ publicKey }, index) => { setStorageBn(db, _static.default.balances.freeBalance, newHead.number.muln(3).iaddn(index), publicKey()); setStorageBn(db, _static.default.system.accountNonce, newHead.number.addn(index), publicKey()); }); setStorageBn(db, _static.default.timestamp.now, Math.floor(Date.now() / 1000)); updateSubs(subscriptions, 'chain_newHead', new _Header.default(newHead).toJSON()); }, 5000); }