1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.default = mocks;
|
9 |
|
10 | require("core-js/modules/web.dom.iterable");
|
11 |
|
12 | var _bn = _interopRequireDefault(require("bn.js"));
|
13 |
|
14 | var _Header = _interopRequireDefault(require("@polkadot/types/Header"));
|
15 |
|
16 | var _testing = _interopRequireDefault(require("@polkadot/storage/testing"));
|
17 |
|
18 | var _toU8a = _interopRequireDefault(require("@polkadot/util/bn/toU8a"));
|
19 |
|
20 | var _toHex = _interopRequireDefault(require("@polkadot/util/u8a/toHex"));
|
21 |
|
22 | var _asU8a = _interopRequireDefault(require("@polkadot/util-crypto/random/asU8a"));
|
23 |
|
24 | var _testing2 = _interopRequireDefault(require("@polkadot/util-keyring/testing"));
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | const keyring = (0, _testing2.default)();
|
31 | const emitEvents = ['connected', 'disconnected'];
|
32 | let emitIndex = 0;
|
33 |
|
34 | function makeBlockHeader(prevNumber) {
|
35 | const blockNumber = prevNumber.addn(1);
|
36 | return {
|
37 | digest: {
|
38 | logs: []
|
39 | },
|
40 | extrinsicsRoot: (0, _asU8a.default)(),
|
41 | number: blockNumber,
|
42 | parentHash: prevNumber.eqn(-1) ? new Uint8Array(32) : (0, _toU8a.default)(prevNumber, 256, false),
|
43 | stateRoot: (0, _toU8a.default)(blockNumber, 256, false)
|
44 | };
|
45 | }
|
46 |
|
47 | function updateSubs(subscriptions, method, value) {
|
48 | subscriptions[method].lastValue = value;
|
49 | Object.values(subscriptions[method].callbacks).forEach(cb => {
|
50 | try {
|
51 | cb(null, value);
|
52 | } catch (error) {
|
53 | console.error(`Error on '${method}' subscription`, error);
|
54 | }
|
55 | });
|
56 | }
|
57 |
|
58 | function setStorageBn(db, createKey, value, ...keyParams) {
|
59 | const keyValue = (0, _toHex.default)(createKey(...keyParams));
|
60 | db[keyValue] = (0, _toU8a.default)(value, 64, true);
|
61 | }
|
62 |
|
63 | function mocks({
|
64 | emitter,
|
65 | db,
|
66 | subscriptions
|
67 | }) {
|
68 | let newHead = makeBlockHeader(new _bn.default(-1));
|
69 | setInterval(() => {
|
70 | if (++emitIndex === emitEvents.length) {
|
71 | emitIndex = 0;
|
72 | }
|
73 |
|
74 | emitter.emit(emitEvents[emitIndex]);
|
75 | newHead = makeBlockHeader(newHead.number);
|
76 | keyring.getPairs().forEach(({
|
77 | publicKey
|
78 | }, index) => {
|
79 | setStorageBn(db, _testing.default.balances.freeBalance, newHead.number.muln(3).iaddn(index), publicKey());
|
80 | setStorageBn(db, _testing.default.system.accountNonce, newHead.number.addn(index), publicKey());
|
81 | });
|
82 | setStorageBn(db, _testing.default.timestamp.now, Math.floor(Date.now() / 1000));
|
83 | updateSubs(subscriptions, 'chain_newHead', new _Header.default(newHead).toJSON());
|
84 | }, 5000);
|
85 | } |
\ | No newline at end of file |