summaryrefslogtreecommitdiff
path: root/node_modules/blake3-wasm/dist/base/hash-reader.js
diff options
context:
space:
mode:
authorakiyamn2023-09-24 23:22:21 +1000
committerakiyamn2023-09-24 23:22:21 +1000
commit4e87195739f2a5d9a05451b48773c8afdc680765 (patch)
tree9cba501844a4a11dcbdffc4050ed8189561c55ed /node_modules/blake3-wasm/dist/base/hash-reader.js
downloadprice-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.js70
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