Spaces:
Configuration error
Configuration error
| /** | |
| * 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. | |
| */ | |
| export const maxHashBytes = BigInt('18446744073709551615'); | |
| /** | |
| * Base hash reader implementation. | |
| */ | |
| export 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 > maxHashBytes) { | |
| throw new RangeError(`Cannot read past ${maxHashBytes} bytes in BLAKE3 hashes`); | |
| } | |
| if (position < BigInt(0)) { | |
| throw new RangeError(`Cannot read to a negative position`); | |
| } | |
| } | |
| } | |
| //# sourceMappingURL=hash-reader.js.map |