PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo-express/node_modules/ripple-binary-codec/distrib/npm
Просмотр файла: shamap.js
'use strict';var assert = require('assert');
var makeClass = require('./utils/make-class');var _require =
require('./types');var Hash256 = _require.Hash256;var _require2 =
require('./hash-prefixes');var HashPrefix = _require2.HashPrefix;var _require3 =
require('./hashes');var Hasher = _require3.Sha512Half;
var ShaMapNode = makeClass({
virtuals: {
hashPrefix: function hashPrefix() {},
isLeaf: function isLeaf() {},
isInner: function isInner() {} },
cached: {
hash: function hash() {
var hasher = Hasher.put(this.hashPrefix());
this.toBytesSink(hasher);
return hasher.finish();} } });
var ShaMapLeaf = makeClass({
inherits: ShaMapNode,
ShaMapLeaf: function ShaMapLeaf(index, item) {
ShaMapNode.call(this);
this.index = index;
this.item = item;},
isLeaf: function isLeaf() {
return true;},
isInner: function isInner() {
return false;},
hashPrefix: function hashPrefix() {
return this.item.hashPrefix();},
toBytesSink: function toBytesSink(sink) {
this.item.toBytesSink(sink);
this.index.toBytesSink(sink);} });
var $uper = ShaMapNode.prototype;
var ShaMapInner = makeClass({
inherits: ShaMapNode,
ShaMapInner: function ShaMapInner() {var depth = arguments.length <= 0 || arguments[0] === undefined ? 0 : arguments[0];
ShaMapNode.call(this);
this.depth = depth;
this.slotBits = 0;
this.branches = Array(16);},
isInner: function isInner() {
return true;},
isLeaf: function isLeaf() {
return false;},
hashPrefix: function hashPrefix() {
return HashPrefix.innerNode;},
setBranch: function setBranch(slot, branch) {
this.slotBits = this.slotBits | 1 << slot;
this.branches[slot] = branch;},
empty: function empty() {
return this.slotBits === 0;},
hash: function hash() {
if (this.empty()) {
return Hash256.ZERO_256;}
return $uper.hash.call(this);},
toBytesSink: function toBytesSink(sink) {
for (var i = 0; i < this.branches.length; i++) {
var branch = this.branches[i];
var hash = branch ? branch.hash() : Hash256.ZERO_256;
hash.toBytesSink(sink);}},
addItem: function addItem(index, item, leaf) {
assert(index instanceof Hash256);
var nibble = index.nibblet(this.depth);
var existing = this.branches[nibble];
if (!existing) {
this.setBranch(nibble, leaf || new ShaMapLeaf(index, item));} else
if (existing.isLeaf()) {
var newInner = new ShaMapInner(this.depth + 1);
newInner.addItem(existing.index, null, existing);
newInner.addItem(index, item, leaf);
this.setBranch(nibble, newInner);} else
if (existing.isInner()) {
existing.addItem(index, item, leaf);} else
{
assert(false);}} });
var ShaMap = makeClass({
inherits: ShaMapInner });
module.exports = {
ShaMap: ShaMap };Выполнить команду
Для локальной разработки. Не используйте в интернете!