packages/oo7-substrate/src/srml/session.js
- const { Bond, TransformBond } = require('oo7')
- const { ss58Encode } = require('../ss58')
-
- function augment (runtime, chain) {
- let timestamp = runtime.timestamp
- let session = runtime.session
- if (session._extras) {
- return
- } else {
- session._extras = true
- }
-
- session.blocksRemaining = Bond // 1..60
- .all([chain.height, session.lastLengthChange, session.sessionLength])
- .map(([h, c, l]) => {
- c = (c || 0);
- return l - (h - c + l) % l;
- });
- session.lateness = Bond
- .all([
- timestamp.blockPeriod,
- timestamp.now,
- session.blocksRemaining,
- session.sessionLength,
- session.currentStart,
- ]).map(([p, n, r, l, s]) => (n.number + p.number * r - s.number) / (p.number * l));
- session.percentLate = session.lateness.map(l => Math.round(l * 100 - 100));
-
- session.validatorIndexOf = id =>
- new TransformBond((i, id) => {
- let ss58 = ss58Encode(id);
- return i.findIndex(a => ss58Encode(a) === ss58);
- }, [session.validators, id])
- }
-
- module.exports = { augment }