diff options
| author | akiyamn | 2023-09-24 23:22:21 +1000 |
|---|---|---|
| committer | akiyamn | 2023-09-24 23:22:21 +1000 |
| commit | 4e87195739f2a5d9a05451b48773c8afdc680765 (patch) | |
| tree | 9cba501844a4a11dcbdffc4050ed8189561c55ed /node_modules/blake3-wasm/dist/base/hash-reader.js | |
| download | price-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.tar.gz price-tracker-worker-4e87195739f2a5d9a05451b48773c8afdc680765.zip | |
Initial commit (by create-cloudflare CLI)
Diffstat (limited to 'node_modules/blake3-wasm/dist/base/hash-reader.js')
| -rw-r--r-- | node_modules/blake3-wasm/dist/base/hash-reader.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/node_modules/blake3-wasm/dist/base/hash-reader.js b/node_modules/blake3-wasm/dist/base/hash-reader.js new file mode 100644 index 0000000..e5eb5e5 --- /dev/null +++ b/node_modules/blake3-wasm/dist/base/hash-reader.js @@ -0,0 +1,70 @@ +"use strict"; +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
\ No newline at end of file |
