mirror of
https://github.com/Instadapp/Swap-Aggregator-Subgraph.git
synced 2024-07-29 21:57:12 +00:00
53 lines
1.6 KiB
JavaScript
Executable File
53 lines
1.6 KiB
JavaScript
Executable File
import { _heap_write } from '../other/utils';
|
|
import { IllegalStateError } from '../other/errors';
|
|
var Hash = /** @class */ (function () {
|
|
function Hash() {
|
|
this.pos = 0;
|
|
this.len = 0;
|
|
}
|
|
Hash.prototype.reset = function () {
|
|
this.result = null;
|
|
this.pos = 0;
|
|
this.len = 0;
|
|
this.asm.reset();
|
|
return this;
|
|
};
|
|
Hash.prototype.process = function (data) {
|
|
if (this.result !== null)
|
|
throw new IllegalStateError('state must be reset before processing new data');
|
|
var asm = this.asm;
|
|
var heap = this.heap;
|
|
var hpos = this.pos;
|
|
var hlen = this.len;
|
|
var dpos = 0;
|
|
var dlen = data.length;
|
|
var wlen = 0;
|
|
while (dlen > 0) {
|
|
wlen = _heap_write(heap, hpos + hlen, data, dpos, dlen);
|
|
hlen += wlen;
|
|
dpos += wlen;
|
|
dlen -= wlen;
|
|
wlen = asm.process(hpos, hlen);
|
|
hpos += wlen;
|
|
hlen -= wlen;
|
|
if (!hlen)
|
|
hpos = 0;
|
|
}
|
|
this.pos = hpos;
|
|
this.len = hlen;
|
|
return this;
|
|
};
|
|
Hash.prototype.finish = function () {
|
|
if (this.result !== null)
|
|
throw new IllegalStateError('state must be reset before processing new data');
|
|
this.asm.finish(this.pos, this.len, 0);
|
|
this.result = new Uint8Array(this.HASH_SIZE);
|
|
this.result.set(this.heap.subarray(0, this.HASH_SIZE));
|
|
this.pos = 0;
|
|
this.len = 0;
|
|
return this;
|
|
};
|
|
return Hash;
|
|
}());
|
|
export { Hash };
|