UNPKG

2.19 kBJavaScriptView Raw
1'use strict';
2
3var _values = require('babel-runtime/core-js/object/values');
4
5var _values2 = _interopRequireDefault(_values);
6
7function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
9// Copyright 2017-2018 Jaco Greeff
10// This software may be modified and distributed under the terms
11// of the ISC license. See the LICENSE file for details.
12
13
14// FIME: This file is way too long and way too messy
15
16var BN = require('bn.js');
17var headerEncode = require('@polkadot/primitives-json/header/encode');
18var bnToU8a = require('@polkadot/util/bn/toU8a');
19var randomAsU8a = require('@polkadot/util-crypto/random/asU8a');
20var testKeyring = require('@polkadot/util-keyring/testing');
21
22var storageKey = require('./storageKey');
23
24var keyring = testKeyring();
25
26function makeBlockHeader(prevNumber) {
27 var blockNumber = prevNumber.addn(1);
28
29 return {
30 digest: {
31 logs: []
32 },
33 extrinsicsRoot: randomAsU8a(),
34 number: blockNumber,
35 parentHash: prevNumber.eqn(-1) ? new Uint8Array(32) : bnToU8a(prevNumber, 256),
36 stateRoot: bnToU8a(blockNumber, 256)
37 };
38}
39
40function updateSubs(subscriptions, method, value) {
41 subscriptions[method].lastValue = value;
42
43 (0, _values2.default)(subscriptions[method].callbacks).forEach(function (cb) {
44 try {
45 // flowlint-next-line unclear-type:off
46 cb(null, value);
47 } catch (error) {
48 console.error('Error on \'' + method + '\' subscription', error);
49 }
50 });
51}
52
53function setStorageBn(storage, prefix, key, value) {
54 storage[storageKey(prefix, key)] = bnToU8a(value, 64, true);
55}
56
57module.exports = function mocks(_ref) {
58 var storage = _ref.storage,
59 subscriptions = _ref.subscriptions;
60
61 var newHead = makeBlockHeader(new BN(-1));
62
63 setInterval(function () {
64 newHead = makeBlockHeader(newHead.number);
65
66 (0, _values2.default)(keyring).forEach(function (pair, index) {
67 // flowlint-next-line unclear-type:off
68 var publicKey = pair.publicKey();
69 var balance = newHead.number.muln(3).iaddn(index);
70
71 setStorageBn(storage, 'sta:bal:', publicKey, balance);
72 });
73
74 updateSubs(subscriptions, 'subscribe_newHead', headerEncode(newHead));
75 }, 5000);
76};
\No newline at end of file