12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /**
- * 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
|