12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- const MAX_SHORT_STRING = require('./wasm-hash').MAX_SHORT_STRING;
- class BatchedHash {
- constructor(hash) {
- this.string = undefined;
- this.encoding = undefined;
- this.hash = hash;
- }
-
- update(data, inputEncoding) {
- if (this.string !== undefined) {
- if (
- typeof data === 'string' &&
- inputEncoding === this.encoding &&
- this.string.length + data.length < MAX_SHORT_STRING
- ) {
- this.string += data;
- return this;
- }
- this.hash.update(this.string, this.encoding);
- this.string = undefined;
- }
- if (typeof data === 'string') {
- if (
- data.length < MAX_SHORT_STRING &&
-
- (!inputEncoding || !inputEncoding.startsWith('ba'))
- ) {
- this.string = data;
- this.encoding = inputEncoding;
- } else {
- this.hash.update(data, inputEncoding);
- }
- } else {
- this.hash.update(data);
- }
- return this;
- }
-
- digest(encoding) {
- if (this.string !== undefined) {
- this.hash.update(this.string, this.encoding);
- }
- return this.hash.digest(encoding);
- }
- }
- module.exports = BatchedHash;
|