Spaces:
Configuration error
Configuration error
; | |
Object.defineProperty(exports, "__esModule", { value: true }); | |
/** | |
* The maximum number of bytes that can be read from the hash. | |
* | |
* Calculated out 2^64-1, since `Xn` syntax (for `Xn ** Yn`) requires TS | |
* targeting esnext/es2020 which includes features that Node 10 doesn't | |
* yet supported. | |
*/ | |
exports.maxHashBytes = BigInt('18446744073709551615'); | |
/** | |
* Base hash reader implementation. | |
*/ | |
class BaseHashReader { | |
constructor(reader) { | |
this.pos = BigInt(0); | |
this.reader = reader; | |
} | |
get position() { | |
return this.pos; | |
} | |
set position(value) { | |
var _a; | |
// to avoid footguns of people using numbers: | |
if (typeof value !== 'bigint') { | |
throw new Error(`Got a ${typeof value} set in to reader.position, expected a bigint`); | |
} | |
this.boundsCheck(value); | |
this.pos = value; | |
(_a = this.reader) === null || _a === void 0 ? void 0 : _a.set_position(value); | |
} | |
/** | |
* @inheritdoc | |
*/ | |
readInto(target) { | |
if (!this.reader) { | |
throw new Error(`Cannot read from a hash after it was disposed`); | |
} | |
const next = this.pos + BigInt(target.length); | |
this.boundsCheck(next); | |
this.reader.fill(target); | |
this.position = next; | |
} | |
/** | |
* @inheritdoc | |
*/ | |
read(bytes) { | |
const data = this.alloc(bytes); | |
this.readInto(data); | |
return data; | |
} | |
/** | |
* @inheritdoc | |
*/ | |
dispose() { | |
var _a, _b; | |
(_b = (_a = this.reader) === null || _a === void 0 ? void 0 : _a.free) === null || _b === void 0 ? void 0 : _b.call(_a); | |
this.reader = undefined; | |
} | |
boundsCheck(position) { | |
if (position > exports.maxHashBytes) { | |
throw new RangeError(`Cannot read past ${exports.maxHashBytes} bytes in BLAKE3 hashes`); | |
} | |
if (position < BigInt(0)) { | |
throw new RangeError(`Cannot read to a negative position`); | |
} | |
} | |
} | |
exports.BaseHashReader = BaseHashReader; | |
//# sourceMappingURL=hash-reader.js.map |