bireader 4.0.2 → 4.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../node_modules/tslib/tslib.es6.js","../src/common.ts","../src/core/BiBase.ts","../src/BiReader.ts","../src/BiWriter.ts","../src/core/BiBaseAsync.ts","../src/BiReaderAsync.ts","../src/BiWriterAsync.ts","../src/indexImport.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","// #region Types\r\n\r\nexport type endian = \"little\" | \"big\";\r\n\r\nexport type BigValue = number | bigint;\r\n\r\nexport type BiOptions = {\r\n /**\r\n * Byte offset to start, default is 0 \r\n */\r\n byteOffset?: number,\r\n /**\r\n * Bit offset within the byte to start (0 - 7), default is 0 \r\n */\r\n bitOffset?: number,\r\n /**\r\n * Endianness ``big`` or ``little`` (default little)\r\n */\r\n endianness?: endian,\r\n /**\r\n * Strict mode: if ``true`` does not extend supplied array on outside write (default ``false``)\r\n */\r\n strict?: boolean,\r\n /**\r\n * Amount of data to add when extending the buffer array when strict mode is false. Note: Changes logic in ``.get`` and ``.return``.\r\n */\r\n growthIncrement?: number,\r\n /**\r\n * When reading a 64 bit value, the reader checks if the value is safe for a ``number`` type and convert it.\r\n * \r\n * Set this to ``true`` if you wish for it to always stay a ``BigInt``.\r\n */\r\n enforceBigInt?: boolean,\r\n /**\r\n * If you want to prevent write operations\r\n */\r\n readOnly?: boolean\r\n /**\r\n * For Async classes. Sets the chunk size to read on each wait cycle. Set to 0 for full file on first read.\r\n */\r\n windowSize?: number\r\n};\r\n\r\nexport type stringOptions = {\r\n /**\r\n * for fixed length (in units NOT btyes), non-terminate value utf strings\r\n */\r\n length?: number,\r\n /**\r\n * ascii, utf-8, utf-16, utf-32, pascal or wide-pascal\r\n * \r\n * - `ascii` & `utf-8` are single byte strings with a null terminator\r\n * - `utf-16` is a 2 byte string with a null terminator\r\n * - `utf-32` is a 4 byte string with a null terminator\r\n * - `pascal` is a single byte fixed length string with the first value being its length. Size of the length value is set in `lengthReadSize`\r\n * - `wide-pascal` is a 2 byte fixed length string with the first value being its length. Size of the length value is set in `lengthReadSize`\r\n * - `double-wide-pascal` is a 4 byte fixed length string with the first value being its length. Size of the length value is set in `lengthReadSize`\r\n */\r\n stringType?: \"ascii\" | \"utf-8\" | \"utf-16\" | \"utf-32\" | \"pascal\" | \"wide-pascal\" | \"double-wide-pascal\",\r\n /**\r\n * only with stringType: \"utf\"\r\n */\r\n terminateValue?: number,\r\n /**\r\n * for pascal strings. 1, 2 or 4 byte length read size\r\n */\r\n lengthReadSize?: 1 | 2 | 4,\r\n /**\r\n * for pascal strings. 1, 2 or 4 byte length write size\r\n */\r\n lengthWriteSize?: 1 | 2 | 4,\r\n /**\r\n * removes 0x00 characters\r\n */\r\n stripNull?: boolean,\r\n /**\r\n * TextEncoder accepted types \r\n */\r\n encoding?: string,\r\n /**\r\n * for wide-pascal, utf-16, utf-32\r\n */\r\n endian?: \"big\" | \"little\",\r\n};\r\n\r\nexport type hexdumpOptions = {\r\n /**\r\n * number of bytes to log, default ``192`` or end of data\r\n */\r\n length?: number,\r\n /**\r\n * byte to start dump (default ``0``)\r\n */\r\n startByte?: number,\r\n /**\r\n * Suppress unicode character preview for even columns.\r\n */\r\n suppressUnicode?: boolean,\r\n /**\r\n * Returns the hex dump string instead of logging it.\r\n */\r\n returnString?: boolean\r\n};\r\n\r\n// #region Checks\r\n\r\nconst testFallback = process && process.argv && process.argv.indexOf(\"FALLBACK=true\") != -1;\r\n\r\nexport const canInt8 = testFallback ? false : \"getUint8\" in DataView.prototype && \"getInt8\" in DataView.prototype && \"setUint8\" in DataView.prototype && \"setInt8\" in DataView.prototype;\r\n\r\nexport const canInt16 = testFallback ? false : \"getUint16\" in DataView.prototype && \"getInt16\" in DataView.prototype && \"setUint16\" in DataView.prototype && \"setInt16\" in DataView.prototype;\r\n\r\nexport const canFloat16 = testFallback ? false : 'getFloat16' in DataView.prototype && 'setFloat16' in DataView.prototype;\r\n\r\nexport const canInt32 = testFallback ? false : 'getInt32' in DataView.prototype && 'getUint32' in DataView.prototype && 'setInt32' in DataView.prototype && 'setUint32' in DataView.prototype;\r\n\r\nexport const canFloat32 = testFallback ? false : \"getFloat32\" in DataView.prototype && \"setFloat32\" in DataView.prototype;\r\n\r\nexport const canBigInt64 = testFallback ? false : \"getBigUint64\" in DataView.prototype && \"getBigInt64\" in DataView.prototype && \"setBigUint64\" in DataView.prototype && \"setBigInt64\" in DataView.prototype;\r\n\r\nexport const canFloat64 = testFallback ? false : \"getFloat64\" in DataView.prototype && \"setFloat64\" in DataView.prototype;\r\n\r\nexport const hasBigInt = typeof BigInt === 'function';\r\n\r\nconst FLOAT32_MAX = 3.4028234663852886e+38;\r\n\r\nconst FLOAT32_MIN = -FLOAT32_MAX;\r\n\r\nconst FLOAT64_MAX = Number.MAX_VALUE;\r\n\r\nconst FLOAT64_MIN = -FLOAT64_MAX;\r\n\r\nconst MIN_SAFE_BIGINT = hasBigInt ? BigInt(Number.MIN_SAFE_INTEGER) : 0;\r\n\r\nconst MAX_SAFE_BIGINT = hasBigInt ? BigInt(Number.MAX_SAFE_INTEGER) : 0;\r\n\r\n// #region Helpers\r\n\r\n/**\r\n * If value can be convert to number\r\n */\r\nexport function isSafeInt64(big: bigint): boolean {\r\n return hasBigInt ? (big >= MIN_SAFE_BIGINT && big <= MAX_SAFE_BIGINT) : false;\r\n};\r\n\r\nexport function isBuffer(obj: any): obj is Buffer {\r\n return (typeof Buffer !== 'undefined' && Buffer.isBuffer(obj));\r\n};\r\n\r\nexport function isUint8Array(obj: Uint8Array | Buffer): obj is Uint8Array {\r\n if (typeof Buffer === 'undefined') {\r\n return true;\r\n }\r\n\r\n if (typeof Buffer !== 'undefined' && Buffer.isBuffer(obj)) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport function isBufferOrUint8Array(obj: any): obj is Buffer | Uint8Array {\r\n return obj instanceof Uint8Array || isBuffer(obj);\r\n};\r\n\r\nexport function normalizeBitOffset(bit: number): number {\r\n return ((bit % 8) + 8) % 8;\r\n};\r\n\r\n/**\r\n * Convert bigint safely to number\r\n */\r\nfunction bigintToNumber(value: bigint) {\r\n const num = Number(value);\r\n\r\n if (!Number.isFinite(num)) {\r\n throw new RangeError(\"BigInt too large to convert safely\");\r\n }\r\n\r\n return num;\r\n};\r\n\r\n/**\r\n * Clamp value to IEEE-754 float32 range\r\n */\r\nexport function clampFloat32(input: BigValue) {\r\n let value = hasBigInt && typeof input === \"bigint\" ? bigintToNumber(input) : input as number;\r\n\r\n if (!Number.isFinite(value)) {\r\n return value;\r\n }\r\n\r\n if (value > FLOAT32_MAX) {\r\n return FLOAT32_MAX;\r\n }\r\n\r\n if (value < FLOAT32_MIN) {\r\n return FLOAT32_MIN;\r\n }\r\n\r\n return Math.fround(value);\r\n};\r\n\r\n/**\r\n * Clamp value to IEEE-754 float64 range\r\n */\r\nexport function clampFloat64(input: BigValue) {\r\n let value = hasBigInt && typeof input === \"bigint\" ? bigintToNumber(input) : input as number;\r\n\r\n if (!Number.isFinite(value)) {\r\n return value;\r\n }\r\n\r\n if (value > FLOAT64_MAX) {\r\n return FLOAT64_MAX;\r\n }\r\n\r\n if (value < FLOAT64_MIN) {\r\n return FLOAT64_MIN;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport function floatSafe<DataType extends number | bigint>(\r\n value: DataType,\r\n bits: number): DataType {\r\n var min = 0, max = 0;\r\n\r\n switch (bits) {\r\n case 16:\r\n min = 5.96e-08;\r\n\r\n max = 65504;\r\n\r\n break;\r\n case 32:\r\n return clampFloat32(value) as DataType;\r\n case 64:\r\n return clampFloat64(value) as DataType;\r\n default:\r\n break;\r\n }\r\n\r\n if (value < min) {\r\n if (typeof value == \"bigint\") {\r\n return BigInt(min) as DataType;\r\n } else {\r\n return min as DataType;\r\n }\r\n } else if (value > max) {\r\n if (typeof value == \"bigint\") {\r\n return BigInt(max) as DataType;\r\n } else {\r\n return max as DataType;\r\n }\r\n } else {\r\n return value;\r\n }\r\n};\r\n\r\nfunction safeFromCharCode(arr: Array<number>) {\r\n const chunk = 0x8000;\r\n\r\n let result = \"\";\r\n\r\n for (let i = 0; i < arr.length; i += chunk) {\r\n result += String.fromCharCode(...arr.slice(i, i + chunk));\r\n }\r\n\r\n return result;\r\n};\r\n\r\nfunction safeFromCodePoint(arr: Array<number>) {\r\n const chunk = 0x8000;\r\n\r\n let result = \"\";\r\n\r\n for (let i = 0; i < arr.length; i += chunk) {\r\n result += String.fromCodePoint(...arr.slice(i, i + chunk));\r\n }\r\n\r\n return result;\r\n};\r\n\r\nexport function textEncode(string: string, bytesPerChar = 1) {\r\n switch (bytesPerChar) {\r\n case 1:\r\n return new TextEncoder().encode(string);\r\n case 2:\r\n {\r\n const utf16Buffer = new Uint16Array(string.length);\r\n\r\n for (let i = 0; i < string.length; i++) {\r\n utf16Buffer[i] = string.charCodeAt(i);\r\n }\r\n\r\n return new Uint8Array(utf16Buffer.buffer);\r\n }\r\n case 4:\r\n {\r\n const utf32Buffer = new Uint32Array(string.length);\r\n\r\n for (let i = 0; i < string.length; i++) {\r\n utf32Buffer[i] = string.codePointAt(i);\r\n }\r\n\r\n return new Uint8Array(utf32Buffer.buffer);\r\n }\r\n default:\r\n return new Uint8Array(0);\r\n }\r\n};\r\n\r\n/**\r\n * Converts the number to a safe value\r\n */\r\nexport function numberSafe<DataType extends number | bigint>(\r\n value: DataType,\r\n bits: number,\r\n unsigned: boolean): DataType {\r\n var min: number, max: number;\r\n\r\n if (!!unsigned == true || bits == 1) {\r\n switch (bits) {\r\n case 8:\r\n max = 255;\r\n\r\n break;\r\n case 16:\r\n max = 65535;\r\n\r\n break;\r\n case 32:\r\n max = 4294967295;\r\n\r\n break;\r\n default:\r\n {\r\n if (bits <= 54) {\r\n max = Math.pow(2, bits) - 1;\r\n } else if (bits > 54 && hasBigInt) {\r\n max = Math.pow(2, bits) - 1;\r\n } else {\r\n throw new RangeError(\"System can't have BigInt support to handle large numbers.\");\r\n }\r\n }\r\n break;\r\n }\r\n\r\n min = 0;\r\n } else {\r\n switch (bits) {\r\n case 8:\r\n max = 127;\r\n\r\n break;\r\n case 16:\r\n max = 32767;\r\n\r\n break;\r\n case 32:\r\n max = 2147483647;\r\n\r\n break;\r\n default:\r\n {\r\n if (bits <= 55) {\r\n max = Math.pow(2, bits - 1) - 1;\r\n } else if (bits > 55 && hasBigInt) {\r\n max = Math.pow(2, bits - 1) - 1;\r\n } else {\r\n throw new RangeError(\"System can't have BigInt support to handle large numbers.\");\r\n }\r\n }\r\n break;\r\n }\r\n\r\n min = -max - 1;\r\n }\r\n\r\n if (value < min) {\r\n if (typeof value == \"bigint\") {\r\n return BigInt(min) as DataType;\r\n } else {\r\n return min as DataType;\r\n }\r\n } else if (value > max) {\r\n if (typeof value == \"bigint\") {\r\n return BigInt(max) as DataType;\r\n } else {\r\n return max as DataType;\r\n }\r\n } else {\r\n return value;\r\n }\r\n};\r\n\r\n/**\r\n * Creates hex dump string. Will console log or return string if set in options.\r\n * \r\n * @param {Uint8Array|Buffer} src - Uint8Array or Buffer\r\n * @param {hexdumpOptions?} options - hex dump options\r\n * @param {number?} options.length - number of bytes to log, default ``192`` or end of data\r\n * @param {number?} options.startByte - byte to start dump (default ``0``)\r\n * @param {boolean?} options.suppressUnicode - Suppress unicode character preview for even columns.\r\n * @param {boolean?} options.returnString - Returns the hex dump string instead of logging it.\r\n */\r\nexport function hexdump(\r\n src: Uint8Array | Buffer,\r\n options: hexdumpOptions = {}): void | string {\r\n if (!(src instanceof Uint8Array || isBuffer(src))) {\r\n throw new Error(\"Write data must be Uint8Array or Buffer.\");\r\n }\r\n\r\n const ctx = {\r\n data: src,\r\n size: src.length,\r\n offset: options && options.startByte || 0,\r\n errorDump: true\r\n };\r\n\r\n var length: any = options && options.length;\r\n\r\n var startByte: any = options && options.startByte;\r\n\r\n if ((startByte || 0) > ctx.size) {\r\n throw new Error(\"Hexdump start is outside of data size: \" + startByte + \" of \" + ctx.size);\r\n }\r\n\r\n const start = startByte || ctx.offset;\r\n\r\n const end = Math.min(start + (length || 192), ctx.size);\r\n\r\n if (start + (length || 0) > ctx.size) {\r\n throw new Error(\"Hexdump amount is outside of data size: \" + (start + (length || 0)) + \" of \" + end);\r\n }\r\n\r\n const data = ctx.data;\r\n\r\n return _hexDump(data, options, start, end);\r\n};\r\n\r\nexport function _hexDump(\r\n data: Buffer | Uint8Array,\r\n options: hexdumpOptions = {},\r\n start: number,\r\n end: number): string {\r\n function _hexCheck(byte: number, bits: number,): number {\r\n var value = 0;\r\n\r\n for (var i = 0; i < bits;) {\r\n const remaining = bits - i;\r\n\r\n const bitOffset = 0;\r\n\r\n const currentByte = byte;\r\n\r\n const read = Math.min(remaining, 8 - bitOffset);\r\n\r\n const mask = ~(0xFF << read);\r\n\r\n const readBits = (currentByte >> (8 - read - bitOffset)) & mask;\r\n\r\n value <<= read;\r\n\r\n value |= readBits;\r\n\r\n i += read;\r\n }\r\n\r\n value = value >>> 0;\r\n\r\n return value;\r\n }\r\n\r\n const suppressUnicode: any = options && options.suppressUnicode || false;\r\n\r\n const rows: Array<string> = [];\r\n\r\n var header = \" 0 1 2 3 4 5 6 7 8 9 A B C D E F \";\r\n\r\n const ending = \"0123456789ABCDEF\";\r\n\r\n var addr: string = \"\";\r\n\r\n for (let i = start; i < end; i += 16) {\r\n addr = i.toString(16).padStart(5, '0');\r\n\r\n var row = <unknown>data.subarray(i, i + 16) as number[] || [];\r\n\r\n var hex = Array.from(row, (byte) => byte.toString(16).padStart(2, '0')).join(' ');\r\n\r\n rows.push(`${addr} ${hex.padEnd(47)} `);\r\n }\r\n\r\n let result = '';\r\n\r\n let makeWide: boolean = false;\r\n\r\n let i = start;\r\n\r\n while (i < end) {\r\n const byte = data[i] as number;\r\n\r\n if (byte < 32 || byte == 127) {\r\n result += '.';\r\n } else if (byte < 127) {\r\n // Valid UTF-8 start byte or single-byte character\r\n // Convert the byte to a character and add it to the result\r\n result += String.fromCharCode(byte);\r\n } else if (suppressUnicode) {\r\n result += '.';\r\n } else if (_hexCheck(byte, 1) == 0) {\r\n //Byte 1\r\n result += String.fromCharCode(byte);\r\n } else if (_hexCheck(byte, 3) == 6) {\r\n //Byte 2\r\n if (i + 1 <= end) {\r\n //check second byte\r\n const byte2 = data[i + 1] as number;\r\n\r\n if (_hexCheck(byte2, 2) == 2) {\r\n const charCode = ((byte & 0x1f) << 6) | (byte2 & 0x3f);\r\n\r\n i++;\r\n\r\n makeWide = true;\r\n\r\n const read = \" \" + String.fromCharCode(charCode);\r\n\r\n result += read;\r\n } else {\r\n result += \".\";\r\n }\r\n } else {\r\n result += \".\";\r\n }\r\n } else if (_hexCheck(byte, 4) == 14) {\r\n //Byte 3\r\n if (i + 1 <= end) {\r\n //check second byte\r\n const byte2 = data[i + 1] as number;\r\n\r\n if (_hexCheck(byte2, 2) == 2) {\r\n if (i + 2 <= end) {\r\n //check third byte\r\n const byte3 = data[i + 2] as number;\r\n\r\n if (_hexCheck(byte3, 2) == 2) {\r\n const charCode =\r\n ((byte & 0x0f) << 12) |\r\n ((byte2 & 0x3f) << 6) |\r\n (byte3 & 0x3f);\r\n\r\n i += 2;\r\n\r\n makeWide = true;\r\n\r\n const read = \" \" + String.fromCharCode(charCode);\r\n\r\n result += read;\r\n } else {\r\n i++;\r\n\r\n result += \" .\";\r\n }\r\n } else {\r\n i++;\r\n\r\n result += \" .\";\r\n }\r\n } else {\r\n result += \".\";\r\n }\r\n } else {\r\n result += \".\";\r\n }\r\n } else if (_hexCheck(byte, 5) == 28) {\r\n //Byte 4\r\n if (i + 1 <= end) {\r\n //check second byte\r\n const byte2 = data[i + 1] as number;\r\n\r\n if (_hexCheck(byte2, 2) == 2) {\r\n if (i + 2 <= end) {\r\n //check third byte\r\n const byte3 = data[i + 2] as number;\r\n\r\n if (_hexCheck(byte3, 2) == 2) {\r\n if (i + 3 <= end) {\r\n //check fourth byte\r\n const byte4 = data[i + 2] as number;\r\n\r\n if (_hexCheck(byte4, 2) == 2) {\r\n const charCode = (((byte4 & 0xFF) << 24) | ((byte3 & 0xFF) << 16) | ((byte2 & 0xFF) << 8) | (byte & 0xFF));\r\n\r\n i += 3;\r\n\r\n makeWide = true;\r\n\r\n const read = \" \" + String.fromCharCode(charCode);\r\n\r\n result += read;\r\n } else {\r\n i += 2;\r\n\r\n result += \" .\";\r\n }\r\n } else {\r\n i += 2;\r\n\r\n result += \" .\";\r\n }\r\n } else {\r\n i++;\r\n\r\n result += \" .\";\r\n }\r\n } else {\r\n i++;\r\n\r\n result += \" .\";\r\n }\r\n } else {\r\n result += \".\";\r\n }\r\n } else {\r\n result += \".\";\r\n }\r\n } else {\r\n // Invalid UTF-8 byte, add a period to the result\r\n result += '.';\r\n }\r\n\r\n i++;\r\n }\r\n\r\n const chunks = result.match(new RegExp(`.{1,${16}}`, 'g'));\r\n\r\n chunks?.forEach((self, i) => {\r\n rows[i] = rows[i] + (makeWide ? \"|\" + self + \"|\" : self);\r\n })\r\n\r\n header = \"\".padStart(addr.length) + header + (makeWide ? \"\" : ending);\r\n\r\n rows.unshift(header);\r\n\r\n if (makeWide) {\r\n rows.push(\"*Removed character byte header on unicode detection\");\r\n }\r\n\r\n if (options && options.returnString) {\r\n return rows.join(\"\\n\");\r\n } else {\r\n const retVal = rows.join(\"\\n\");\r\n\r\n console.log(retVal);\r\n\r\n return retVal;\r\n }\r\n};\r\n\r\n// #region Math\r\n\r\nexport function _AND(\r\n data: Uint8Array | Buffer,\r\n start: number,\r\n end: number,\r\n andKey: number | string | Uint8Array | Buffer) {\r\n if (typeof andKey == \"string\") {\r\n andKey = Uint8Array.from(Array.from(andKey).map(letter => letter.charCodeAt(0)));\r\n }\r\n\r\n if (isBufferOrUint8Array(andKey) || typeof andKey == \"number\") {\r\n var index = -1;\r\n\r\n for (let i = start; i < end; i++) {\r\n if (typeof andKey == \"number\") {\r\n data[i] = data[i] & (andKey & 0xff);\r\n } else {\r\n if (index != andKey.length - 1) {\r\n index++;\r\n } else {\r\n index = 0;\r\n }\r\n\r\n data[i] = data[i] & andKey[index];\r\n }\r\n }\r\n\r\n return { offset: end, bitoffset: 0 };\r\n } else {\r\n throw new Error(\"AND key must be a byte value, string, Uint8Array or Buffer\");\r\n }\r\n};\r\n\r\nexport function _OR(\r\n data: Uint8Array | Buffer,\r\n start: number,\r\n end: number,\r\n orKey: number | string | Uint8Array | Buffer) {\r\n if (typeof orKey == \"string\") {\r\n orKey = Uint8Array.from(Array.from(orKey).map(letter => letter.charCodeAt(0)));\r\n }\r\n\r\n if (isBufferOrUint8Array(orKey) || typeof orKey == \"number\") {\r\n var index = -1;\r\n\r\n for (let i = start; i < end; i++) {\r\n if (typeof orKey == \"number\") {\r\n data[i] = data[i] | (orKey & 0xff);\r\n } else {\r\n if (index != orKey.length - 1) {\r\n index++;\r\n } else {\r\n index = 0;\r\n }\r\n\r\n data[i] = data[i] | orKey[index];\r\n }\r\n }\r\n\r\n return { offset: end, bitoffset: 0 };\r\n } else {\r\n throw new Error(\"OR key must be a byte value, string, Uint8Array or Buffer\");\r\n }\r\n};\r\n\r\nexport function _XOR(\r\n data: Uint8Array | Buffer,\r\n start: number,\r\n end: number,\r\n xorKey: number | string | Uint8Array | Buffer) {\r\n if (typeof xorKey == \"string\") {\r\n xorKey = Uint8Array.from(Array.from(xorKey).map(letter => letter.charCodeAt(0)));\r\n }\r\n\r\n if (isBufferOrUint8Array(xorKey) || typeof xorKey == \"number\") {\r\n let index = -1;\r\n\r\n for (let i = start; i < end; i++) {\r\n if (typeof xorKey == \"number\") {\r\n data[i] = data[i] ^ (xorKey & 0xff);\r\n } else {\r\n if (index != xorKey.length - 1) {\r\n index++;\r\n } else {\r\n index = 0;\r\n }\r\n\r\n data[i] = data[i] ^ xorKey[index];\r\n }\r\n }\r\n\r\n return { offset: end, bitoffset: 0 };\r\n } else {\r\n throw new Error(\"XOR key must be a byte value, string, Uint8Array or Buffer\");\r\n }\r\n};\r\n\r\nexport function _LSHIFT(\r\n data: Uint8Array | Buffer,\r\n start: number,\r\n end: number,\r\n shiftKey: number | string | Uint8Array | Buffer) {\r\n if (typeof shiftKey == \"string\") {\r\n shiftKey = Uint8Array.from(Array.from(shiftKey).map(letter => letter.charCodeAt(0)));\r\n }\r\n\r\n if (isBufferOrUint8Array(shiftKey) || typeof shiftKey == \"number\") {\r\n var index = -1;\r\n\r\n for (let i = start; i < end; i++) {\r\n if (typeof shiftKey == \"number\") {\r\n data[i] = data[i] << shiftKey;\r\n } else {\r\n if (index != shiftKey.length - 1) {\r\n index++;\r\n } else {\r\n index = 0;\r\n }\r\n\r\n data[i] = data[i] << shiftKey[index];\r\n }\r\n }\r\n\r\n return { offset: end, bitoffset: 0 };\r\n } else {\r\n throw new Error(\"Left Shift key must be a byte value, string, Uint8Array or Buffer\");\r\n }\r\n};\r\n\r\nexport function _RSHIFT(\r\n data: Uint8Array | Buffer,\r\n start: number,\r\n end: number,\r\n shiftKey: number | string | Uint8Array | Buffer) {\r\n if (typeof shiftKey == \"string\") {\r\n shiftKey = Uint8Array.from(Array.from(shiftKey).map(letter => letter.charCodeAt(0)));\r\n }\r\n\r\n if (isBufferOrUint8Array(shiftKey) || typeof shiftKey == \"number\") {\r\n var index = -1;\r\n\r\n for (let i = start; i < end; i++) {\r\n if (typeof shiftKey == \"number\") {\r\n data[i] = data[i] >> shiftKey;\r\n } else {\r\n if (index != shiftKey.length - 1) {\r\n index++;\r\n } else {\r\n index = 0;\r\n }\r\n\r\n data[i] = data[i] >> shiftKey[index];\r\n }\r\n }\r\n\r\n return { offset: end, bitoffset: 0 };\r\n } else {\r\n throw new Error(\"Right Shift key must be a byte value, string, Uint8Array or Buffer\");\r\n }\r\n};\r\n\r\nexport function _ADD(\r\n data: Uint8Array | Buffer,\r\n start: number,\r\n end: number,\r\n addKey: number | string | Uint8Array | Buffer) {\r\n if (typeof addKey == \"string\") {\r\n addKey = Uint8Array.from(Array.from(addKey).map(letter => letter.charCodeAt(0)));\r\n }\r\n\r\n if (isBufferOrUint8Array(addKey) || typeof addKey == \"number\") {\r\n var index = -1;\r\n\r\n for (let i = start; i < end; i++) {\r\n if (typeof addKey == \"number\") {\r\n data[i] = data[i] + addKey;\r\n } else {\r\n if (index != addKey.length - 1) {\r\n index = index + 1;\r\n } else {\r\n index = 0;\r\n }\r\n\r\n data[i] = data[i] + addKey[index];\r\n }\r\n }\r\n\r\n return { offset: end, bitoffset: 0 };\r\n } else {\r\n throw new Error(\"ADD key must be a byte value, string, Uint8Array or Buffer\");\r\n }\r\n}\r\n\r\nexport function _NOT(\r\n data: Uint8Array | Buffer,\r\n start: number,\r\n end: number) {\r\n for (let i = start; i < end; i++) {\r\n data[i] = ~data[i];\r\n }\r\n\r\n return { offset: end, bitoffset: 0 };\r\n};\r\n\r\n// #region Read / Writes\r\n\r\n/**\r\n * bit read function\r\n */\r\nexport function _rbit(\r\n data: Uint8Array | Buffer,\r\n bits: number,\r\n offset: number,\r\n endian: \"little\" | \"big\",\r\n unsigned: boolean) {\r\n var value = 0;\r\n\r\n for (var i = 0; i < bits;) {\r\n const remaining = bits - i;\r\n\r\n const bitOffset = offset & 7;\r\n\r\n const currentByte = data[offset >> 3];\r\n\r\n const read = Math.min(remaining, 8 - bitOffset);\r\n\r\n if (endian == \"big\") {\r\n let mask = ~(0xFF << read);\r\n\r\n let readBits = (currentByte >> (8 - read - bitOffset)) & mask;\r\n\r\n value <<= read;\r\n\r\n value |= readBits;\r\n } else {\r\n let mask = ~(0xFF << read);\r\n\r\n let readBits = (currentByte >> bitOffset) & mask;\r\n\r\n value |= readBits << i;\r\n }\r\n\r\n offset += read;\r\n\r\n i += read;\r\n }\r\n\r\n if (!unsigned) {\r\n const signBit = 1 << (bits - 1);\r\n\r\n if (value & signBit) {\r\n value -= (1 << bits);\r\n }\r\n }\r\n\r\n return value;\r\n};\r\n\r\n/**\r\n * Write bits\r\n */\r\nexport function _wbit(\r\n data: Uint8Array | Buffer,\r\n value: number,\r\n bits: number,\r\n offsetBit: number,\r\n endian: \"little\" | \"big\",\r\n unsigned: boolean) {\r\n // fits the value as unsigned\r\n if (unsigned == true || bits == 1) {\r\n const maxValue = Math.pow(2, bits) - 1;\r\n\r\n value = value & maxValue;\r\n }\r\n\r\n for (var i = 0; i < bits;) {\r\n const remaining = bits - i;\r\n\r\n const bitOffset = offsetBit & 7;\r\n\r\n const byteOffset = offsetBit >> 3;\r\n\r\n const written = Math.min(remaining, 8 - bitOffset);\r\n\r\n if (endian == \"big\") {\r\n let mask = ~(~0 << written);\r\n\r\n let writeBits = (value >> (bits - i - written)) & mask;\r\n\r\n var destShift = 8 - bitOffset - written;\r\n\r\n let destMask = ~(mask << destShift);\r\n\r\n data[byteOffset] = (data[byteOffset] & destMask) | (writeBits << destShift);\r\n } else {\r\n let mask = ~(0xFF << written);\r\n\r\n let writeBits = value & mask;\r\n\r\n value >>= written;\r\n\r\n let destMask = ~(mask << bitOffset);\r\n\r\n data[byteOffset] = (data[byteOffset] & destMask) | (writeBits << bitOffset);\r\n }\r\n\r\n offsetBit += written;\r\n\r\n i += written;\r\n }\r\n\r\n return;\r\n};\r\n\r\nexport function _rbyte(\r\n data: Uint8Array | Buffer,\r\n offset: number,\r\n unsigned: boolean) {\r\n const value = data[offset];\r\n\r\n if (unsigned == true) {\r\n return value & 0xFF;\r\n } else {\r\n return value > 127 ? value - 256 : value;\r\n }\r\n};\r\n\r\nexport function _wbyte(\r\n data: Uint8Array | Buffer,\r\n value: number,\r\n offset: number,\r\n unsigned: boolean) {\r\n data[offset] = unsigned ? value & 0xFF : value;\r\n\r\n return;\r\n};\r\n\r\nexport function _rint16(\r\n data: Uint8Array | Buffer,\r\n offset: number,\r\n endian: \"little\" | \"big\",\r\n unsigned: boolean) {\r\n var value: number;\r\n\r\n if (endian == \"little\") {\r\n value = ((data[offset + 1] & 0xFFFF) << 8) | (data[offset] & 0xFFFF);\r\n } else {\r\n value = ((data[offset] & 0xFFFF) << 8) | (data[offset + 1] & 0xFFFF);\r\n }\r\n\r\n if (!!unsigned == false) {\r\n const signBit = 1 << (16 - 1);\r\n\r\n if (value & signBit) {\r\n value -= (1 << 16);\r\n }\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport function _wint16(\r\n data: Uint8Array | Buffer,\r\n value: number,\r\n offset: number,\r\n endian: \"little\" | \"big\",\r\n unsigned: boolean = false) {\r\n\r\n if (endian == \"little\") {\r\n data[offset] = unsigned == false ? value : value & 0xff;\r\n\r\n data[offset + 1] = unsigned == false ? (value >> 8) : (value >> 8) & 0xff;\r\n } else {\r\n data[offset] = unsigned == false ? (value >> 8) : (value >> 8) & 0xff;\r\n\r\n data[offset + 1] = unsigned == false ? value : value & 0xff;\r\n }\r\n\r\n return;\r\n};\r\n\r\nexport function _rhalffloat(\r\n data: Uint8Array | Buffer,\r\n offset: number,\r\n endian: \"little\" | \"big\") {\r\n const value = _rint16(data, offset, endian, true);\r\n\r\n const sign = (value & 0x8000) >> 15;\r\n\r\n const exponent = (value & 0x7C00) >> 10;\r\n\r\n const fraction = value & 0x03FF;\r\n\r\n var floatValue: number;\r\n\r\n if (exponent === 0) {\r\n if (fraction === 0) {\r\n floatValue = (sign === 0) ? 0 : -0; // +/-0\r\n } else {\r\n // Denormalized number\r\n floatValue = (sign === 0 ? 1 : -1) * Math.pow(2, -14) * (fraction / 0x0400);\r\n }\r\n } else if (exponent === 0x1F) {\r\n if (fraction === 0) {\r\n floatValue = (sign === 0) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\r\n } else {\r\n floatValue = Number.NaN;\r\n }\r\n } else {\r\n // Normalized number\r\n floatValue = (sign === 0 ? 1 : -1) * Math.pow(2, exponent - 15) * (1 + fraction / 0x0400);\r\n }\r\n\r\n return floatValue;\r\n};\r\n\r\nconst float32Array = new Float32Array(1);\r\n\r\nconst float32AsInts = new Uint32Array(float32Array.buffer);\r\n\r\nexport function _whalffloat(\r\n data: Uint8Array | Buffer,\r\n value: number,\r\n offset: number,\r\n endian: \"little\" | \"big\") {\r\n float32Array[0] = value;\r\n\r\n const x = float32AsInts[0];\r\n\r\n const sign = (x >> 31) & 0x1;\r\n\r\n var exponent = (x >> 23) & 0xff;\r\n\r\n var mantissa = x & 0x7fffff;\r\n\r\n var halfFloatBits: number;\r\n\r\n if (exponent === 0xff) {\r\n // NaN or Infinity\r\n halfFloatBits = (sign << 15) | (0x1f << 10) | (mantissa ? 0x200 : 0);\r\n } else if (exponent > 142) {\r\n // Overflow → Infinity\r\n halfFloatBits = (sign << 15) | (0x1f << 10);\r\n } else if (exponent < 113) {\r\n // Subnormal or zero\r\n if (exponent < 103) {\r\n halfFloatBits = sign << 15;\r\n } else {\r\n mantissa |= 0x800000;\r\n\r\n const shift = 125 - exponent;\r\n\r\n mantissa = mantissa >> shift;\r\n\r\n halfFloatBits = (sign << 15) | (mantissa >> 13);\r\n }\r\n } else {\r\n // Normalized\r\n exponent = exponent - 112;\r\n\r\n mantissa = mantissa >> 13;\r\n\r\n halfFloatBits = (sign << 15) | (exponent << 10) | mantissa;\r\n }\r\n\r\n if (endian == \"little\") {\r\n data[offset] = halfFloatBits & 0xFF;\r\n\r\n data[offset + 1] = (halfFloatBits >> 8) & 0xFF;\r\n } else {\r\n data[offset] = (halfFloatBits >> 8) & 0xFF;\r\n\r\n data[offset + 1] = halfFloatBits & 0xFF;\r\n }\r\n\r\n return;\r\n};\r\n\r\nexport function _rint32(\r\n data: Uint8Array | Buffer,\r\n offset: number,\r\n endian: \"little\" | \"big\",\r\n unsigned: boolean) {\r\n var value: number;\r\n\r\n if (endian == \"little\") {\r\n value = ((data[offset + 3] & 0xFF) << 24) |\r\n ((data[offset + 2] & 0xFF) << 16) |\r\n ((data[offset + 1] & 0xFF) << 8) |\r\n (data[offset] & 0xFF);\r\n } else {\r\n value = ((data[offset] & 0xFF) << 24) |\r\n ((data[offset + 1] & 0xFF) << 16) |\r\n ((data[offset + 2] & 0xFF) << 8) |\r\n (data[offset + 3] & 0xFF);\r\n }\r\n\r\n if (unsigned) {\r\n return value >>> 0;\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport function _wint32(\r\n data: Uint8Array | Buffer,\r\n value: number,\r\n offset: number,\r\n endian: \"little\" | \"big\",\r\n unsigned: boolean = false) {\r\n\r\n if (endian == \"little\") {\r\n data[offset] = unsigned == false ? value : value & 0xFF;\r\n\r\n data[offset + 1] = unsigned == false ? (value >> 8) : (value >> 8) & 0xFF;\r\n\r\n data[offset + 2] = unsigned == false ? (value >> 16) : (value >> 16) & 0xFF;\r\n\r\n data[offset + 3] = unsigned == false ? (value >> 24) : (value >> 24) & 0xFF;\r\n } else {\r\n data[offset] = unsigned == false ? (value >> 24) : (value >> 24) & 0xFF;\r\n\r\n data[offset + 1] = unsigned == false ? (value >> 16) : (value >> 16) & 0xFF;\r\n\r\n data[offset + 2] = unsigned == false ? (value >> 8) : (value >> 8) & 0xFF;\r\n\r\n data[offset + 3] = unsigned == false ? value : value & 0xFF;\r\n }\r\n\r\n return;\r\n};\r\n\r\nexport function _rfloat(\r\n data: Uint8Array | Buffer,\r\n offset: number,\r\n endian: \"little\" | \"big\") {\r\n const uint32Value = _rint32(data, offset, endian, true);\r\n\r\n const isNegative = (uint32Value & 0x80000000) !== 0 ? 1 : 0;\r\n // Extract the exponent and fraction parts\r\n const exponent = (uint32Value >> 23) & 0xFF;\r\n\r\n const fraction = uint32Value & 0x7FFFFF;\r\n // Calculate the float value\r\n var floatValue: number;\r\n\r\n if (exponent === 0) {\r\n // Denormalized number (exponent is 0)\r\n floatValue = Math.pow(-1, isNegative) * Math.pow(2, -126) * (fraction / Math.pow(2, 23));\r\n } else if (exponent === 0xFF) {\r\n // Infinity or NaN (exponent is 255)\r\n floatValue = fraction === 0 ? (isNegative ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY) : Number.NaN;\r\n } else {\r\n // Normalized number\r\n floatValue = Math.pow(-1, isNegative) * Math.pow(2, exponent - 127) * (1 + fraction / Math.pow(2, 23));\r\n }\r\n\r\n return floatValue;\r\n};\r\n\r\nexport function _wfloat(\r\n data: Uint8Array | Buffer,\r\n value: number,\r\n offset: number,\r\n endian: \"little\" | \"big\") {\r\n float32Array[0] = value;\r\n\r\n _wint32(data, float32AsInts[0], offset, endian, true);\r\n\r\n return;\r\n};\r\n\r\nexport function _rint64(\r\n data: Uint8Array | Buffer,\r\n offset: number,\r\n endian: \"little\" | \"big\",\r\n unsigned: boolean) {\r\n var value = BigInt(0);\r\n\r\n for (let i = 0; i < 8; i++) {\r\n if (endian == \"little\") {\r\n value = value | BigInt((data[offset + i] & 0xFF)) << BigInt(8 * i);\r\n } else {\r\n value = (value << BigInt(8)) | BigInt((data[offset + i] & 0xFF));\r\n }\r\n }\r\n\r\n if (unsigned == false) {\r\n if (value & (BigInt(1) << BigInt(63))) {\r\n value -= BigInt(1) << BigInt(64);\r\n }\r\n }\r\n\r\n return value;\r\n};\r\n\r\nexport function _wint64(\r\n data: Uint8Array | Buffer,\r\n value: number | bigint,\r\n offset: number,\r\n endian: \"little\" | \"big\",\r\n unsigned: boolean) {\r\n const bigIntArray = unsigned ? new BigUint64Array(1) : new BigInt64Array(1);\r\n\r\n bigIntArray[0] = BigInt(value);\r\n // Use two 32-bit views to write the Int64\r\n const int32Array = unsigned ? new Uint32Array(bigIntArray.buffer) : new Int32Array(bigIntArray.buffer) ;\r\n\r\n for (let i = 0; i < 2; i++) {\r\n _wint32(data, int32Array[i], offset + (i * 4), endian, unsigned);\r\n }\r\n\r\n return;\r\n};\r\n\r\nexport function _rdfloat(\r\n data: Uint8Array | Buffer,\r\n offset: number,\r\n endian: \"little\" | \"big\") {\r\n var uint64Value = _rint64(data, offset, endian, true);\r\n\r\n const sign = (BigInt(uint64Value) & BigInt(\"9223372036854775808\")) >> BigInt(63);\r\n\r\n const exponent = Number((BigInt(uint64Value) & BigInt(\"9218868437227405312\")) >> BigInt(52)) - 1023;\r\n\r\n const fraction = Number(BigInt(uint64Value) & BigInt(\"4503599627370495\")) / Math.pow(2, 52);\r\n\r\n var floatValue: number;\r\n\r\n if (exponent == -1023) {\r\n if (fraction == 0) {\r\n floatValue = (sign == BigInt(0)) ? 0 : -0; // +/-0\r\n } else {\r\n // Denormalized number\r\n floatValue = (sign == BigInt(0) ? 1 : -1) * Math.pow(2, -1022) * fraction;\r\n }\r\n } else if (exponent == 1024) {\r\n if (fraction == 0) {\r\n floatValue = (sign == BigInt(0)) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\r\n } else {\r\n floatValue = Number.NaN;\r\n }\r\n } else {\r\n // Normalized number\r\n floatValue = (sign == BigInt(0) ? 1 : -1) * Math.pow(2, exponent) * (1 + fraction);\r\n }\r\n\r\n return floatValue;\r\n};\r\n\r\nexport function _wdfloat(\r\n data: Uint8Array | Buffer,\r\n value: number,\r\n offset: number,\r\n endian: \"little\" | \"big\") {\r\n const intArray = new Int32Array(2);\r\n\r\n const floatArray = new Float64Array(intArray.buffer);\r\n\r\n floatArray[0] = value;\r\n\r\n const bytes = new Uint8Array(intArray.buffer);\r\n\r\n for (let i = 0; i < 8; i++) {\r\n if (endian == \"little\") {\r\n data[offset + i] = bytes[i];\r\n } else {\r\n data[offset + (7 - i)] = bytes[i];\r\n }\r\n }\r\n\r\n return;\r\n};\r\n\r\nexport function _rstring(\r\n stringType: 'ascii' | 'utf-8' | 'utf-16' | 'utf-32' | 'pascal' | 'wide-pascal' | \"double-wide-pascal\",\r\n lengthReadSize: number,\r\n readLengthinBytes: number,\r\n terminateValue: number,\r\n stripNull: boolean,\r\n encoding: string,\r\n endian: \"little\" | \"big\",\r\n readUByte: () => number,\r\n readUInt16: (endian: \"little\" | \"big\") => number,\r\n readUInt32: (endian: \"little\" | \"big\") => number) {\r\n const encodedBytes: Array<number> = [];\r\n\r\n if (stringType === 'pascal' || stringType === 'wide-pascal' || stringType === \"double-wide-pascal\") {\r\n terminateValue = undefined;\r\n\r\n if (lengthReadSize == 1) {\r\n readLengthinBytes = readUByte();\r\n } else if (lengthReadSize == 2) {\r\n readLengthinBytes = readUInt16(endian);\r\n } else if (lengthReadSize == 4) {\r\n readLengthinBytes = readUInt32(endian);\r\n }\r\n }\r\n\r\n var readSize = 1;\r\n\r\n switch (stringType) {\r\n case 'utf-8':\r\n case 'ascii':\r\n case 'pascal':\r\n readSize = 1;\r\n\r\n break;\r\n case 'utf-16':\r\n case 'wide-pascal':\r\n readSize = 2;\r\n\r\n break;\r\n case 'utf-32':\r\n case 'double-wide-pascal':\r\n readSize = 4;\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n for (let i = 0; i < readLengthinBytes; i++) {\r\n var read = terminateValue;\r\n\r\n switch (readSize) {\r\n case 1:\r\n read = readUByte();\r\n\r\n break;\r\n case 2:\r\n read = readUInt16(endian); i++;\r\n\r\n break;\r\n case 4:\r\n read = readUInt32(endian); i++; i++; i++;\r\n\r\n if (stringType == 'utf-32' && read > 0x10FFFF) {\r\n read = terminateValue;\r\n }\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (read == terminateValue) {\r\n break;\r\n } else {\r\n if (!(stripNull == true && read == 0)) {\r\n encodedBytes.push(read);\r\n }\r\n }\r\n }\r\n\r\n switch (stringType) {\r\n case \"pascal\":\r\n case \"ascii\":\r\n case \"utf-16\":\r\n case \"wide-pascal\":\r\n return safeFromCharCode(encodedBytes);\r\n case \"double-wide-pascal\":\r\n case \"utf-32\":\r\n return safeFromCodePoint(encodedBytes);\r\n default:\r\n try {\r\n return new TextDecoder(encoding).decode(new Uint8Array(encodedBytes));\r\n } catch (err) {\r\n throw new Error(`Unsupported encoding: ${encoding}`);\r\n }\r\n }\r\n};\r\n\r\nexport async function _rstringAsync(\r\n stringType: 'ascii' | 'utf-8' | 'utf-16' | 'utf-32' | 'pascal' | 'wide-pascal' | \"double-wide-pascal\",\r\n lengthReadSize: number,\r\n readLengthinBytes: number,\r\n terminateValue: number,\r\n stripNull: boolean,\r\n encoding: string,\r\n endian: \"little\" | \"big\",\r\n readUByte: () => Promise<number>,\r\n readUInt16: (endian: \"little\" | \"big\") => Promise<number>,\r\n readUInt32: (endian: \"little\" | \"big\") => Promise<number>) {\r\n const encodedBytes: Array<number> = [];\r\n\r\n if (stringType === 'pascal' || stringType === 'wide-pascal' || stringType === \"double-wide-pascal\") {\r\n terminateValue = undefined;\r\n\r\n if (lengthReadSize == 1) {\r\n readLengthinBytes = await readUByte();\r\n } else if (lengthReadSize == 2) {\r\n readLengthinBytes = await readUInt16(endian);\r\n } else if (lengthReadSize == 4) {\r\n readLengthinBytes = await readUInt32(endian);\r\n }\r\n }\r\n\r\n var readSize = 1;\r\n\r\n switch (stringType) {\r\n case 'utf-8':\r\n case 'ascii':\r\n case 'pascal':\r\n readSize = 1;\r\n\r\n break;\r\n case 'utf-16':\r\n case 'wide-pascal':\r\n readSize = 2;\r\n\r\n break;\r\n case 'utf-32':\r\n case 'double-wide-pascal':\r\n readSize = 4;\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n for (let i = 0; i < readLengthinBytes; i++) {\r\n var read = terminateValue;\r\n\r\n switch (readSize) {\r\n case 1:\r\n read = await readUByte();\r\n\r\n break;\r\n case 2:\r\n read = await readUInt16(endian); i++;\r\n\r\n break;\r\n case 4:\r\n read = await readUInt32(endian); i++; i++; i++;\r\n\r\n if (stringType == 'utf-32' && read > 0x10FFFF) {\r\n read = terminateValue;\r\n }\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (read == terminateValue) {\r\n break;\r\n } else {\r\n if (!(stripNull == true && read == 0)) {\r\n encodedBytes.push(read);\r\n }\r\n }\r\n }\r\n\r\n switch (stringType) {\r\n case \"pascal\":\r\n case \"ascii\":\r\n case \"utf-16\":\r\n case \"wide-pascal\":\r\n return safeFromCharCode(encodedBytes);\r\n case \"double-wide-pascal\":\r\n case \"utf-32\":\r\n return safeFromCodePoint(encodedBytes);\r\n default:\r\n try {\r\n return new TextDecoder(encoding).decode(new Uint8Array(encodedBytes));\r\n } catch (err) {\r\n throw new Error(`Unsupported encoding: ${encoding}`);\r\n }\r\n }\r\n};\r\n\r\nexport function _wstring(\r\n encodedString: Uint8Array,\r\n stringType: 'ascii' | 'utf-8' | 'utf-16' | 'utf-32' | 'pascal' | 'wide-pascal' | \"double-wide-pascal\",\r\n endian: \"little\" | \"big\",\r\n terminateValue: number,\r\n lengthWriteSize: number,\r\n writeUByte: (number: number) => void,\r\n writeUInt16: (number: number, endian: \"little\" | \"big\") => void,\r\n writeUInt32: (number: number, endian: \"little\" | \"big\") => void) {\r\n if (stringType == \"pascal\" ||\r\n stringType == 'wide-pascal' ||\r\n stringType == 'double-wide-pascal'\r\n ) {\r\n if (lengthWriteSize == 1) {\r\n writeUByte(encodedString.byteLength);\r\n } else if (lengthWriteSize == 2) {\r\n writeUInt16(encodedString.byteLength, endian);\r\n } else if (lengthWriteSize == 4) {\r\n writeUInt32(encodedString.byteLength, endian);\r\n }\r\n }\r\n\r\n const view = new DataView(encodedString.buffer, encodedString.byteOffset, encodedString.byteLength);\r\n\r\n for (let i = 0; i < view.byteLength; i++) {\r\n switch (stringType) {\r\n case 'ascii':\r\n case 'utf-8':\r\n case 'pascal':\r\n writeUByte(view.getUint8(i));\r\n break;\r\n case 'utf-16':\r\n case 'wide-pascal':\r\n writeUInt16(view.getUint16(i, true), endian); i++;\r\n break;\r\n case 'utf-32':\r\n case 'double-wide-pascal':\r\n writeUInt32(view.getUint32(i, true), endian); i++; i++; i++;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (stringType == \"ascii\" || stringType == 'utf-8') {\r\n writeUByte(terminateValue);\r\n } else if (stringType == 'utf-16') {\r\n writeUInt16(terminateValue, endian);\r\n } else if (stringType == 'utf-32') {\r\n writeUInt32(terminateValue, endian);\r\n }\r\n};\r\n\r\nexport async function _wstringAsync(\r\n encodedString: Uint8Array,\r\n stringType: 'ascii' | 'utf-8' | 'utf-16' | 'utf-32' | 'pascal' | 'wide-pascal' | \"double-wide-pascal\",\r\n endian: \"little\" | \"big\",\r\n terminateValue: number,\r\n lengthWriteSize: number,\r\n writeUByte: (number: number) => Promise<void>,\r\n writeUInt16: (number: number, endian: \"little\" | \"big\") => Promise<void>,\r\n writeUInt32: (number: number, endian: \"little\" | \"big\") => Promise<void>) {\r\n if (stringType == \"pascal\" ||\r\n stringType == 'wide-pascal' ||\r\n stringType == 'double-wide-pascal'\r\n ) {\r\n if (lengthWriteSize == 1) {\r\n await writeUByte(encodedString.byteLength);\r\n } else if (lengthWriteSize == 2) {\r\n await writeUInt16(encodedString.byteLength, endian);\r\n } else if (lengthWriteSize == 4) {\r\n await writeUInt32(encodedString.byteLength, endian);\r\n }\r\n }\r\n\r\n const view = new DataView(encodedString.buffer, encodedString.byteOffset, encodedString.byteLength);\r\n\r\n for (let i = 0; i < view.byteLength; i++) {\r\n switch (stringType) {\r\n case 'ascii':\r\n case 'utf-8':\r\n case 'pascal':\r\n await writeUByte(view.getUint8(i));\r\n break;\r\n case 'utf-16':\r\n case 'wide-pascal':\r\n await writeUInt16(view.getUint16(i, true), endian); i++;\r\n break;\r\n case 'utf-32':\r\n case 'double-wide-pascal':\r\n await writeUInt32(view.getUint32(i, true), endian); i++; i++; i++;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n if (stringType == \"ascii\" || stringType == 'utf-8') {\r\n await writeUByte(terminateValue);\r\n } else if (stringType == 'utf-16') {\r\n await writeUInt16(terminateValue, endian);\r\n } else if (stringType == 'utf-32') {\r\n await writeUInt32(terminateValue, endian);\r\n }\r\n};","/**\r\n * @file BiReader / Writer base for working in sync Buffers or full file reads. Node and Browser.\r\n */\r\n\r\n// #region Imports\r\nvar fs: typeof import(\"fs\");\r\nimport {\r\n // types\r\n BiOptions,\r\n BigValue,\r\n endian,\r\n // options\r\n hexdumpOptions,\r\n stringOptions,\r\n // checks\r\n hasBigInt,\r\n canInt8,\r\n canInt16,\r\n canFloat16,\r\n canInt32,\r\n canFloat32,\r\n canBigInt64,\r\n canFloat64,\r\n isSafeInt64,\r\n isBuffer,\r\n isUint8Array,\r\n isBufferOrUint8Array,\r\n // helpers\r\n numberSafe,\r\n normalizeBitOffset,\r\n textEncode,\r\n _hexDump,\r\n _AND,\r\n _OR,\r\n _XOR,\r\n _NOT,\r\n _RSHIFT,\r\n _LSHIFT,\r\n _ADD,\r\n _rbit,\r\n _wbit,\r\n _rbyte,\r\n _wbyte,\r\n _rint16,\r\n _wint16,\r\n _rhalffloat,\r\n _whalffloat,\r\n _wint32,\r\n _rint32,\r\n _rfloat,\r\n _wfloat,\r\n _rint64,\r\n _wint64,\r\n _rdfloat,\r\n _wdfloat,\r\n _rstring,\r\n _wstring,\r\n} from '../common.js';\r\n\r\n(async function () {\r\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\r\n // We are in Node.js\r\n try {\r\n if (typeof require !== 'undefined') {\r\n if (typeof fs === \"undefined\") {\r\n fs = require('fs');\r\n }\r\n } else {\r\n if (typeof fs === \"undefined\") {\r\n fs = await import('fs');\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Failed to load fs module:', error);\r\n }\r\n }\r\n})();\r\n\r\nfunction _fileExists(filePath: string) {\r\n try {\r\n fs.accessSync(filePath, fs.constants.F_OK);\r\n\r\n return true; // File exists\r\n } catch (error) {\r\n // @ts-ignore\r\n return false;\r\n }\r\n};\r\n\r\n// #region Class\r\n\r\n/**\r\n * Base class for BiReader and BiWriter\r\n */\r\nexport class BiBase<DataType extends Buffer | Uint8Array, alwaysBigInt extends boolean> {\r\n /**\r\n * Endianness of default read. \r\n * @type {endian}\r\n */\r\n endian: endian = \"little\";\r\n /**\r\n * Current read byte location.\r\n */\r\n #offset: number = 0;\r\n /**\r\n * Current read byte's bit location. 0 - 7\r\n */\r\n #insetBit: number = 0;\r\n /**\r\n * Size in bytes of the current buffer.\r\n */\r\n size: number = 0;\r\n /**\r\n * Size in bits of the current buffer.\r\n */\r\n bitSize: number = 0;\r\n /**\r\n * Stops the buffer extending on reading or writing outside of current size\r\n */\r\n strict: boolean = false;\r\n /**\r\n * Console log a hexdump on error.\r\n */\r\n errorDump: boolean = false;\r\n /**\r\n * Master Buffer\r\n */\r\n #data: DataType | null = null;\r\n /**\r\n * DataView of master Buffer\r\n */\r\n #view: DataView;\r\n /**\r\n * When the data buffer needs to be extended while strict mode is ``false``, this will be the amount it extends.\r\n * \r\n * Otherwise it extends just the amount of the next written value.\r\n * \r\n * This can greatly speed up data writes when large files are being written.\r\n * \r\n * NOTE: Using ``BiWriter.get`` or ``BiWriter.return`` will now remove all data after the current write position. Use ``BiWriter.data`` to get the full buffer instead.\r\n */\r\n growthIncrement: number = 1048576;\r\n /**\r\n * Open file description\r\n */\r\n fd: number = null;\r\n /**\r\n * Current file path\r\n */\r\n filePath: string = null;\r\n /**\r\n * File write mode\r\n */\r\n fsMode: \"r+\" | \"r\" = \"r\";\r\n /**\r\n * The settings that used when using the .str getter / setter\r\n */\r\n strDefaults: stringOptions = { stringType: \"utf-8\", terminateValue: 0x0 };\r\n /**\r\n * All int64 reads will return as bigint type\r\n */\r\n enforceBigInt: alwaysBigInt = null;\r\n /**\r\n * Not using a file reader.\r\n */\r\n isMemoryMode: boolean;\r\n /**\r\n * If data can not be written to the buffer.\r\n */\r\n readOnly: boolean;\r\n /**\r\n * Get the current buffer data.\r\n * \r\n * @type {DataType}\r\n */\r\n get data(): DataType {\r\n return this.#data;\r\n };\r\n\r\n /**\r\n * Set the current buffer data.\r\n * \r\n * @param {DataType} data\r\n */\r\n set data(data: DataType) {\r\n if (this.isBufferOrUint8Array(data)) {\r\n this.#data = data;\r\n\r\n this.#updateView();\r\n\r\n this.size = this.#data.length;\r\n\r\n this.bitSize = this.size * 8;\r\n }\r\n };\r\n\r\n wasExpanded: boolean = false;\r\n\r\n /**\r\n * Get the DataView of current buffer data.\r\n */\r\n get view() {\r\n return this.#view;\r\n };\r\n\r\n constructor(input?: string | DataType, options: BiOptions = {}) {\r\n const {\r\n byteOffset,\r\n bitOffset,\r\n endianness,\r\n strict,\r\n growthIncrement,\r\n enforceBigInt,\r\n readOnly\r\n } = options;\r\n\r\n if (typeof strict != \"boolean\") {\r\n throw new Error(\"Strict mode must be true or false\");\r\n }\r\n\r\n this.readOnly = !!readOnly;\r\n\r\n this.strict = readOnly ? true : strict;\r\n\r\n this.fsMode = this.readOnly ? 'r' : 'r+'\r\n\r\n this.enforceBigInt = !!enforceBigInt as alwaysBigInt;\r\n\r\n if (this.enforceBigInt && !hasBigInt) {\r\n this.enforceBigInt = false as alwaysBigInt;\r\n }\r\n\r\n this.growthIncrement = growthIncrement;\r\n\r\n if (typeof endianness != \"string\" || !(endianness == \"big\" || endianness == \"little\")) {\r\n throw new TypeError(\"Endian must be big or little\");\r\n }\r\n\r\n this.endian = endianness;\r\n\r\n if (typeof input == \"string\") {\r\n if (typeof Buffer === 'undefined' || typeof fs === \"undefined\") {\r\n throw new Error(\"Can't load file outside of Node.\");\r\n }\r\n\r\n this.filePath = input;\r\n\r\n this.isMemoryMode = false;\r\n } else if (this.isBufferOrUint8Array(input)) {\r\n this.data = input as DataType;\r\n\r\n this.isMemoryMode = true;\r\n\r\n this.size = this.#data.length;\r\n\r\n this.bitSize = this.#data.length * 8;\r\n } else {\r\n throw new Error(\"Write data must be Uint8Array or Buffer\");\r\n }\r\n\r\n this.#offset = byteOffset ?? 0;\r\n\r\n if((bitOffset ?? 0) != 0){\r\n this.#offset = Math.floor(byteOffset / 8);\r\n\r\n this.#insetBit = byteOffset % 8;\r\n }\r\n \r\n this.#offset = ((Math.abs(this.#offset)) + Math.ceil((Math.abs(this.#insetBit)) / 8))\r\n // Adjust byte offset based on bit overflow\r\n this.#offset += Math.floor((Math.abs(this.#insetBit)) / 8);\r\n // Adjust bit offset\r\n this.#insetBit = Math.abs(normalizeBitOffset(this.#insetBit)) % 8;\r\n // Ensure bit offset stays between 0-7\r\n this.#insetBit = Math.min(Math.max(this.#insetBit, 0), 7);\r\n // Ensure offset doesn't go negative\r\n this.#offset = Math.max(this.#offset, 0);\r\n\r\n this.#confrimSize(this.#offset);\r\n };\r\n\r\n /**\r\n * Settings for when using .str\r\n * \r\n * @param {stringOptions} settings options to use with .str\r\n */\r\n set strSettings(settings: stringOptions) {\r\n this.strDefaults.encoding = settings.encoding;\r\n\r\n this.strDefaults.endian = settings.endian;\r\n\r\n this.strDefaults.length = settings.length;\r\n\r\n this.strDefaults.lengthReadSize = settings.lengthReadSize;\r\n\r\n this.strDefaults.lengthWriteSize = settings.lengthWriteSize;\r\n\r\n this.strDefaults.stringType = settings.stringType;\r\n\r\n this.strDefaults.stripNull = settings.stripNull;\r\n\r\n this.strDefaults.terminateValue = settings.terminateValue;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INTERNALS\r\n ///////////////////////////////\r\n\r\n /**\r\n * Checks if obj is an Uint8Array or a Buffer\r\n */\r\n isBufferOrUint8Array(obj: any): obj is Buffer | Uint8Array {\r\n return isBufferOrUint8Array(obj);\r\n };\r\n\r\n /**\r\n * Checks if obj is a Buffer\r\n */\r\n isBuffer(obj: any): obj is Buffer {\r\n return isBuffer(obj);\r\n };\r\n\r\n /**\r\n * Checks if obj is an Uint8Array\r\n */\r\n isUint8Array(obj: any): obj is Uint8Array {\r\n return isUint8Array(obj);\r\n }\r\n\r\n /**\r\n * Internal update size\r\n * \r\n * run after setting data\r\n */\r\n #updateSize(): void {\r\n if (this.isMemoryMode) {\r\n this.size = this.#data.length;\r\n\r\n this.bitSize = this.size * 8;\r\n\r\n return;\r\n }\r\n\r\n if (typeof fs === \"undefined\") {\r\n throw new Error(\"Can't load file outside of Node.\");\r\n }\r\n\r\n if (this.fd != null) {\r\n try {\r\n const stat = fs.fstatSync(this.fd);\r\n\r\n this.size = stat.size;\r\n\r\n this.bitSize = this.size * 8;\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Internal update buffer.\r\n * \r\n * Should come after updateSize\r\n */\r\n #updateBuffer() {\r\n if (!this.isMemoryMode) {\r\n if (this.fd == null) {\r\n try {\r\n this.fd = fs.openSync(this.filePath, this.fsMode);\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n }\r\n\r\n const data = Buffer.alloc(this.size) as DataType;\r\n\r\n try {\r\n const bytesRead = fs.readSync(this.fd, data, 0, data.length, 0);\r\n\r\n if (bytesRead != this.size) {\r\n throw new Error(\"Didn't update file buffer size. Expecting \" + this.size + \" but got \" + bytesRead);\r\n }\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n\r\n this.data = data;\r\n\r\n this.#updateSize();\r\n }\r\n\r\n this.#offset = this.#offset ?? 0;\r\n\r\n this.#insetBit = this.#insetBit ?? 0;\r\n\r\n this.#offset = ((Math.abs(this.#offset)) + Math.ceil((Math.abs(this.#insetBit)) / 8));\r\n // Adjust byte offset based on bit overflow\r\n this.#offset += Math.floor((Math.abs(this.#insetBit)) / 8);\r\n // Adjust bit offset\r\n this.#insetBit = Math.abs(normalizeBitOffset(this.#insetBit)) % 8;\r\n // Ensure bit offset stays between 0-7\r\n this.#insetBit = Math.min(Math.max(this.#insetBit, 0), 7);\r\n // Ensure offset doesn't go negative\r\n this.#offset = Math.max(this.#offset, 0);\r\n\r\n this.#confrimSize(this.#offset);\r\n };\r\n\r\n /**\r\n * Call this after everytime we set/replace `this.data`\r\n */\r\n #updateView(): void {\r\n if (this.#data) {\r\n this.#view = new DataView(\r\n this.#data.buffer,\r\n this.#data.byteOffset ?? 0,\r\n this.#data.byteLength\r\n );\r\n }\r\n };\r\n\r\n /**\r\n * Calls to check if expanding the buffer needs to happen\r\n */\r\n #checkSize(writeBytes: number = 0, writeBit: number = 0, offset: number = this.#offset): number {\r\n this.open();\r\n\r\n const bits = writeBit + this.#insetBit;\r\n\r\n if (bits != 0) {\r\n //add bits\r\n writeBytes += Math.ceil(bits / 8);\r\n }\r\n //if bigger extend\r\n this.#confrimSize(offset + writeBytes);\r\n //start read location\r\n return offset;\r\n };\r\n\r\n /**\r\n * Checks if input requires expanding the buffer\r\n */\r\n #confrimSize(neededSize: number) {\r\n if (neededSize <= this.size) {\r\n return;\r\n }\r\n\r\n var targetSize = neededSize;\r\n\r\n if (targetSize > this.size) {\r\n if (this.strict || this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(`\\x1b[33m[Strict mode]\\x1b[0m: Reached end of data: ` + neededSize + \" at \" + this.#offset + \" of \" + this.size);\r\n }\r\n\r\n if (this.growthIncrement != 0) {\r\n this.wasExpanded = true;\r\n\r\n targetSize = Math.ceil(neededSize / this.growthIncrement) * this.growthIncrement;\r\n }\r\n\r\n this.#extendArray(targetSize);\r\n }\r\n };\r\n\r\n /**\r\n * Expends the buffer\r\n */\r\n #extendArray(targetSize: number): void {\r\n this.open();\r\n\r\n if (targetSize <= this.size) {\r\n return;\r\n }\r\n\r\n const toPadd = targetSize - this.size;\r\n\r\n if (this.isBuffer(this.#data)) {\r\n var paddbuffer = Buffer.alloc(toPadd);\r\n\r\n this.data = Buffer.concat([this.#data, paddbuffer]) as DataType;\r\n } else {\r\n const newBuf = new Uint8Array(this.size + toPadd) as DataType;\r\n\r\n newBuf.set(this.#data);\r\n\r\n this.data = newBuf;\r\n }\r\n\r\n this.size = this.#data.length;\r\n\r\n this.bitSize = this.#data.length * 8;\r\n\r\n return;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FILE MODE\r\n ///////////////////////////////\r\n\r\n /**\r\n * Enables writing and expanding (changes strict AND readonly)\r\n * \r\n * @param {boolean} mode - True to enable writing and expanding (changes strict AND readonly)\r\n */\r\n writeMode(mode: boolean = true) {\r\n if (mode) {\r\n this.strict = false;\r\n\r\n this.readOnly = false;\r\n\r\n this.fsMode = \"r+\";\r\n } else {\r\n this.strict = true;\r\n\r\n this.readOnly = true;\r\n\r\n this.fsMode = \"r\";\r\n }\r\n\r\n if (!this.isMemoryMode) {\r\n this.close();\r\n\r\n this.open();\r\n }\r\n };\r\n\r\n /**\r\n * Opens the file in `file` mode. Must be run before reading or writing.\r\n * \r\n * Can be used to pass new data to a loaded class, shifting to memory mode.\r\n */\r\n open(data?: DataType) {\r\n if (this.isBufferOrUint8Array(data)) {\r\n this.close();\r\n\r\n this.filePath = null;\r\n\r\n this.fd == null;\r\n\r\n this.isMemoryMode = true;\r\n\r\n this.data = data;\r\n\r\n this.#updateSize();\r\n\r\n this.#updateBuffer();\r\n\r\n return;\r\n }\r\n\r\n if (this.isMemoryMode) {\r\n return;\r\n }\r\n\r\n if (this.fd != null) {\r\n return;\r\n }\r\n\r\n if (typeof fs === \"undefined\") {\r\n throw new Error(\"Can't load file outside of Node.\");\r\n }\r\n\r\n if (!_fileExists(this.filePath)) {\r\n fs.writeFileSync(this.filePath, \"\");\r\n }\r\n\r\n try {\r\n this.fd = fs.openSync(this.filePath, this.fsMode);\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n\r\n this.#updateSize();\r\n\r\n this.#updateBuffer();\r\n };\r\n\r\n /**\r\n * commit data and removes it.\r\n */\r\n close(): DataType {\r\n if (this.isMemoryMode) {\r\n const data = this.#data;\r\n\r\n this.#data = null;\r\n\r\n this.#view = null;\r\n\r\n return data;\r\n }\r\n\r\n if (this.fd === null) {\r\n return; // Already closed / or not open\r\n }\r\n\r\n if (typeof fs === \"undefined\") {\r\n throw new Error(\"Can't load file outside of Node.\");\r\n }\r\n\r\n this.commit();\r\n\r\n try {\r\n fs.closeSync(this.fd);\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n\r\n this.fd = null;\r\n\r\n const data = this.#data;\r\n\r\n this.#data = null;\r\n\r\n this.#view = null;\r\n\r\n return data;\r\n };\r\n\r\n /**\r\n * Write data buffer back to file\r\n */\r\n commit() {\r\n if (this.isMemoryMode || this.readOnly) {\r\n return this.#data;\r\n }\r\n // this.mode == \"file\"\r\n this.open();\r\n\r\n try {\r\n fs.writeSync(this.fd, this.#data, 0, this.#data.length);\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n\r\n this.#updateSize();\r\n };\r\n\r\n /**\r\n * syncs the data to file\r\n */\r\n flush(): void {\r\n if (this.fd) {\r\n this.commit();\r\n }\r\n };\r\n\r\n /**\r\n * Renames the file you are working on.\r\n * \r\n * Must be full file path and file name.\r\n * \r\n * Keeps write / read position.\r\n * \r\n * Note: This is permanent and can't be undone.\r\n * \r\n * @param {string} newFilePath - New full file path and name.\r\n */\r\n renameFile(newFilePath: string) {\r\n if (this.isMemoryMode) {\r\n return;\r\n }\r\n\r\n try {\r\n this.close();\r\n\r\n fs.renameSync(this.filePath, newFilePath);\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n\r\n this.filePath = newFilePath;\r\n\r\n this.open();\r\n };\r\n\r\n /**\r\n * Deletes the working file.\r\n * \r\n * Note: This is permanent and can't be undone. \r\n * \r\n * It doesn't send the file to the recycling bin for recovery.\r\n */\r\n deleteFile() {\r\n if (this.isMemoryMode) {\r\n return;\r\n }\r\n\r\n if (this.readOnly) {\r\n throw new Error(\"Can't delete file in readonly mode!\");\r\n }\r\n\r\n try {\r\n this.close();\r\n\r\n fs.unlinkSync(this.filePath);\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n\r\n this.filePath = null;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region ENDIANNESS\r\n ///////////////////////////////\r\n\r\n /**\r\n *\r\n * Change endian, defaults to little.\r\n * \r\n * Can be changed at any time, doesn't loose position.\r\n *\r\n * @param {endian} endian - endianness ``big`` or ``little``\r\n */\r\n endianness(endian: endian): void {\r\n if (endian == undefined || typeof endian != \"string\") {\r\n throw new TypeError(\"Endian must be big or little\");\r\n }\r\n\r\n if (endian != undefined && !(endian == \"big\" || endian == \"little\")) {\r\n throw new TypeError(\"Endian must be big or little\");\r\n }\r\n\r\n this.endian = endian;\r\n };\r\n\r\n /**\r\n * Sets endian to big.\r\n */\r\n bigEndian(): void {\r\n this.endianness(\"big\");\r\n };\r\n\r\n /**\r\n * Sets endian to big.\r\n */\r\n big(): void {\r\n this.endianness(\"big\");\r\n };\r\n\r\n /**\r\n * Sets endian to big.\r\n */\r\n be(): void {\r\n this.endianness(\"big\");\r\n };\r\n\r\n /**\r\n * Sets endian to little.\r\n */\r\n littleEndian(): void {\r\n this.endianness(\"little\");\r\n };\r\n\r\n /**\r\n * Sets endian to little.\r\n */\r\n little(): void {\r\n this.endianness(\"little\");\r\n };\r\n\r\n /**\r\n * Sets endian to little.\r\n */\r\n le(): void {\r\n this.endianness(\"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region SIZE\r\n ///////////////////////////////\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get length(): number {\r\n return this.size;\r\n };\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get len(): number {\r\n return this.size;\r\n };\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get fileSize(): number {\r\n return this.size;\r\n };\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get FileSize(): number {\r\n return this.size;\r\n };\r\n\r\n /**\r\n * Size in bits of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get lengthBits(): number {\r\n return this.bitSize;\r\n };\r\n\r\n /**\r\n * Size in bits of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get sizeBits(): number {\r\n return this.bitSize;\r\n };\r\n\r\n /**\r\n * Size in bits of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get fileBitSize(): number {\r\n return this.bitSize;\r\n };\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get fileSizeBits(): number {\r\n return this.bitSize;\r\n };\r\n\r\n /**\r\n * Size in bits of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get lenBits(): number {\r\n return this.bitSize;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region POSITION\r\n ///////////////////////////////\r\n\r\n /**\r\n * Get the current byte position.\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get offset(): number {\r\n return this.#offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position;\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get off(): number {\r\n return this.offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position.\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get getOffset(): number {\r\n return this.offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position.\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get tell(): number {\r\n return this.offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position.\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get FTell(): number {\r\n return this.offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position;\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get saveOffset(): number {\r\n return this.offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position;\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get byteOffset(): number {\r\n return this.offset;\r\n };\r\n\r\n /**\r\n * Set the current byte position.\r\n * \r\n * Same as {@link goto}\r\n */\r\n set offset(value: number) {\r\n this.goto(value);\r\n };\r\n\r\n /**\r\n * Set the current byte position.\r\n * \r\n * Same as {@link goto}\r\n */\r\n set setOffset(value: number) {\r\n this.offset = value;\r\n };\r\n\r\n /**\r\n * Set the current byte position.\r\n * \r\n * Same as {@link goto}\r\n */\r\n set setByteOffset(value: number) {\r\n this.offset = value;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get bitOffset(): number {\r\n return (this.#offset * 8) + this.#insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get offsetBits(): number {\r\n return this.bitOffset;\r\n }\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get getBitOffset(): number {\r\n return this.bitOffset;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get saveBitOffset(): number {\r\n return this.bitOffset;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get FTellBits(): number {\r\n return this.bitOffset;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get tellBits(): number {\r\n return this.bitOffset;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get offBits(): number {\r\n return this.bitOffset;\r\n };\r\n\r\n /**\r\n * Set the current bit position.\r\n * \r\n * Same as {@link goto}\r\n */\r\n set bitOffset(value: number) {\r\n this.goto(value - (value % 8), value % 8);\r\n };\r\n\r\n /**\r\n * Set the current bit position.\r\n */\r\n set setOffsetBits(value: number) {\r\n this.bitOffset = value;\r\n };\r\n\r\n /**\r\n * Set the current bit position.\r\n */\r\n set setBitOffset(value: number) {\r\n this.setOffsetBits = value;\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get insetBit(): number {\r\n return this.#insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get getInsetBit(): number {\r\n return this.insetBit;\r\n };\r\n\r\n /**\r\n * Set the current bit position with in the current byte (0-7).\r\n */\r\n set insetBit(value: number) {\r\n this.goto(this.offset, value % 8);\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get saveInsetBit(): number {\r\n return this.insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get inBit(): number {\r\n return this.insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get bitTell(): number {\r\n return this.insetBit;\r\n };\r\n\r\n /**\r\n * Set the current bit position with in the byte (0-7).\r\n */\r\n set setInsetBit(value: number) {\r\n this.insetBit = value;\r\n };\r\n\r\n /**\r\n * Size in bytes of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get remain(): number {\r\n return this.size - this.#offset;\r\n };\r\n\r\n /**\r\n * Size in bytes of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get remainBytes(): number {\r\n return this.remain;\r\n };\r\n\r\n /**\r\n * Size in bytes of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get FEoF(): number {\r\n return this.remainBytes;\r\n };\r\n\r\n /**\r\n * Size in bits of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get remainBits(): number {\r\n return (this.size * 8) - this.bitOffset;\r\n };\r\n\r\n /**\r\n * Size in bits of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get FEoFBits(): number {\r\n return this.remainBits;\r\n };\r\n\r\n /**\r\n * Row line of the file (16 bytes per row).\r\n * \r\n * @returns {number} size\r\n */\r\n get getLine(): number {\r\n return Math.abs(Math.floor((this.#offset - 1) / 16));\r\n };\r\n\r\n /**\r\n * Row line of the file (16 bytes per row).\r\n * \r\n * @returns {number} size\r\n */\r\n get row(): number {\r\n return this.getLine;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FINISHING\r\n ///////////////////////////////\r\n\r\n /**\r\n * Returns current data.\r\n * \r\n * Note: Will remove all data after current position if ``growthIncrement`` was set and you expanded data past the end once.\r\n * \r\n * Use ``.data`` instead if you want the full buffer data.\r\n * \r\n * @returns {DataType} ``Buffer`` or ``Uint8Array``\r\n */\r\n get(): DataType {\r\n if (this.growthIncrement != 0 && this.wasExpanded) {\r\n this.trim();\r\n }\r\n\r\n return this.#data;\r\n };\r\n\r\n /**\r\n * Returns current data.\r\n * \r\n * Note: Will remove all data after current position if ``growthIncrement`` was set and you expanded data past the end once.\r\n * \r\n * Use ``.data`` instead if you want the full buffer data.\r\n * \r\n * @returns {DataType} ``Buffer`` or ``Uint8Array``\r\n */\r\n getFullBuffer(): DataType {\r\n return this.get();\r\n };\r\n\r\n /**\r\n * Returns current data.\r\n * \r\n * Note: Will remove all data after current position if ``growthIncrement`` was set and you expanded data past the end once.\r\n * \r\n * Use ``.data`` instead if you want the full buffer data.\r\n * \r\n * @returns {DataType} ``Buffer`` or ``Uint8Array``\r\n */\r\n return(): DataType {\r\n return this.get();\r\n };\r\n\r\n /**\r\n * Returns and remove data.\r\n * \r\n * Commits any changes to file when editing a file.\r\n */\r\n end(): DataType {\r\n return this.close();\r\n };\r\n\r\n /**\r\n * removes data.\r\n * \r\n * Commits any changes to file when editing a file.\r\n */\r\n done(): DataType {\r\n return this.end();\r\n };\r\n\r\n /**\r\n * removes data.\r\n * \r\n * Commits any changes to file when editing a file.\r\n */\r\n finished(): DataType {\r\n return this.end();\r\n };\r\n\r\n ///////////////////////////////\r\n // #region HEX DUMP\r\n ///////////////////////////////\r\n\r\n /**\r\n * Creates hex dump string. Will console log or return string if set in options.\r\n * \r\n * @param {object} options \r\n * @param {hexdumpOptions?} options - hex dump options\r\n * @param {number?} options.length - number of bytes to log, default ``192`` or end of data\r\n * @param {number?} options.startByte - byte to start dump (default ``0``)\r\n * @param {boolean?} options.suppressUnicode - Suppress unicode character preview for even columns.\r\n * @param {boolean?} options.returnString - Returns the hex dump string instead of logging it.\r\n */\r\n hexdump(options: hexdumpOptions = {}): void | string {\r\n const length: any = options?.length ?? 192;\r\n\r\n const startByte: any = options?.startByte ?? this.#offset;\r\n\r\n const endByte = Math.min(startByte + length, this.size);\r\n\r\n const newSize = endByte - startByte;\r\n\r\n if (startByte > this.size || endByte > this.size) {\r\n throw new RangeError(\"Hexdump amount is outside of data size: \" + newSize + \" of \" + endByte);\r\n }\r\n\r\n return _hexDump(this.data, options, startByte, endByte);\r\n };\r\n\r\n /**\r\n * Turn hexdump on error off (default on).\r\n */\r\n errorDumpOff(): void {\r\n this.errorDump = false;\r\n };\r\n\r\n /**\r\n * Turn hexdump on error on (default on).\r\n */\r\n errorDumpOn(): void {\r\n this.errorDump = true;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region STRICT MODE\r\n ///////////////////////////////\r\n\r\n /**\r\n * Disallows extending data if position is outside of max size.\r\n */\r\n restrict(): void {\r\n this.strict = true;\r\n };\r\n\r\n /**\r\n * Allows extending data if position is outside of max size.\r\n */\r\n unrestrict(): void {\r\n this.strict = false;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FIND \r\n ///////////////////////////////\r\n\r\n /**\r\n * Searches for position of array of byte values from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {Uint8Array | Buffer | Array<number>} bytesToFind \r\n */\r\n findBytes(bytesToFind: Uint8Array | Buffer | Array<number>): number {\r\n if (Array.isArray(bytesToFind)) {\r\n bytesToFind = new Uint8Array(bytesToFind);\r\n }\r\n\r\n this.open();\r\n\r\n if (this.isBuffer(this.data)) {\r\n var offset = (this.data as Buffer).subarray(this.#offset, this.size).indexOf(bytesToFind as Uint8Array | Buffer);\r\n\r\n if (offset == -1) {\r\n return -1;\r\n }\r\n\r\n return offset + this.#offset;\r\n }\r\n // this.data == Uint8Array\r\n for (let i = this.#offset; i <= this.size - bytesToFind.length; i++) {\r\n var match = true;\r\n\r\n for (let j = 0; j < bytesToFind.length; j++) {\r\n if (this.data[i + j] !== bytesToFind[j]) {\r\n match = false;\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (match) {\r\n return i; // Found the string, return the index\r\n }\r\n }\r\n\r\n return -1;\r\n };\r\n\r\n /**\r\n * Searches for byte position of string from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {string} string - String to search for.\r\n * @param {1|2|4} bytesPerChar - how many bytes each character should take up\r\n */\r\n findString(string: string, bytesPerChar: number = 1): number {\r\n const encoded = textEncode(string, bytesPerChar);\r\n\r\n return this.findBytes(encoded);\r\n };\r\n\r\n #findNumber(value: number, bits: number, unsigned: boolean, endian: endian = this.endian): number {\r\n this.#checkSize(Math.floor(bits / 8), 0, this.#offset);\r\n\r\n for (let z = this.#offset; z <= (this.size - (bits / 8)); z++) {\r\n var offsetInBits = 0;\r\n\r\n var value = 0;\r\n\r\n for (var i = 0; i < bits;) {\r\n const remaining = bits - i;\r\n\r\n const bitOffset = offsetInBits & 7;\r\n\r\n const currentByte = this.data[z + (offsetInBits >> 3)];\r\n\r\n const read = Math.min(remaining, 8 - bitOffset);\r\n\r\n if (endian == \"big\") {\r\n let mask = ~(0xFF << read);\r\n\r\n let readBits = (currentByte >> (8 - read - bitOffset)) & mask;\r\n\r\n value <<= read;\r\n\r\n value |= readBits;\r\n } else {\r\n let mask = ~(0xFF << read);\r\n\r\n let readBits = (currentByte >> bitOffset) & mask;\r\n\r\n value |= readBits << i;\r\n }\r\n\r\n offsetInBits += read;\r\n\r\n i += read;\r\n }\r\n\r\n if (unsigned || bits <= 7) {\r\n value = value >>> 0;\r\n } else {\r\n if (bits !== 32 && value & (1 << (bits - 1))) {\r\n value |= -1 ^ ((1 << bits) - 1);\r\n }\r\n }\r\n\r\n if (value === value) {\r\n return z - this.#offset; // Found the byte, return the index from current\r\n }\r\n }\r\n\r\n return -1; // number not found\r\n };\r\n\r\n /**\r\n * Searches for byte value (can be signed or unsigned) position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {boolean} unsigned - If the number is unsigned (default true)\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n findByte(value: number, unsigned: boolean = true, endian: endian = this.endian): number {\r\n return this.#findNumber(value, 8, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Searches for short value (can be signed or unsigned) position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {boolean} unsigned - If the number is unsigned (default true)\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n findShort(value: number, unsigned: boolean = true, endian: endian = this.endian): number {\r\n return this.#findNumber(value, 16, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Searches for integer value (can be signed or unsigned) position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {boolean} unsigned - If the number is unsigned (default true)\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n findInt(value: number, unsigned: boolean = true, endian: endian = this.endian): number {\r\n return this.#findNumber(value, 32, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Searches for 64 bit value (can be signed or unsigned) position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {BigValue} value - Number to search for.\r\n * @param {boolean} unsigned - If the number is unsigned (default true)\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n findInt64(value: BigValue, unsigned: boolean = true, endian: endian = this.endian): number {\r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n\r\n this.#checkSize(8, 0, this.#offset);\r\n\r\n for (let z = this.#offset; z <= (this.size - 8); z++) {\r\n var startingValue = BigInt(0);\r\n\r\n if (endian == \"little\") {\r\n for (let i = 0; i < 8; i++) {\r\n startingValue = startingValue | BigInt((this.data[z + i] & 0xFF)) << BigInt(8 * i);\r\n }\r\n\r\n if (!unsigned) {\r\n if (startingValue & (BigInt(1) << BigInt(63))) {\r\n startingValue -= BigInt(1) << BigInt(64);\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < 8; i++) {\r\n startingValue = (startingValue << BigInt(8)) | BigInt((this.data[z + i] & 0xFF));\r\n }\r\n\r\n if (!unsigned) {\r\n if (startingValue & (BigInt(1) << BigInt(63))) {\r\n startingValue -= BigInt(1) << BigInt(64);\r\n }\r\n }\r\n }\r\n\r\n if (startingValue == BigInt(value)) {\r\n return z;\r\n }\r\n }\r\n\r\n return -1;// number not found\r\n };\r\n\r\n /**\r\n * Searches for half float value position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n findHalfFloat(value: number, endian: endian = this.endian): number {\r\n this.#checkSize(2, 0, this.#offset);\r\n\r\n for (let z = this.#offset; z <= (this.size - 2); z++) {\r\n var startingValue = 0;\r\n\r\n if (endian == \"little\") {\r\n startingValue = ((this.data[z + 1] & 0xFFFF) << 8) | (this.data[z] & 0xFFFF);\r\n } else {\r\n startingValue = ((this.data[z] & 0xFFFF) << 8) | (this.data[z + 1] & 0xFFFF);\r\n }\r\n\r\n const sign = (startingValue & 0x8000) >> 15;\r\n\r\n const exponent = (startingValue & 0x7C00) >> 10;\r\n\r\n const fraction = startingValue & 0x03FF;\r\n\r\n var floatValue: number;\r\n\r\n if (exponent === 0) {\r\n if (fraction === 0) {\r\n floatValue = (sign === 0) ? 0 : -0; // +/-0\r\n } else {\r\n // Denormalized number\r\n floatValue = (sign === 0 ? 1 : -1) * Math.pow(2, -14) * (fraction / 0x0400);\r\n }\r\n } else if (exponent === 0x1F) {\r\n if (fraction === 0) {\r\n floatValue = (sign === 0) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\r\n } else {\r\n floatValue = Number.NaN;\r\n }\r\n } else {\r\n // Normalized number\r\n floatValue = (sign === 0 ? 1 : -1) * Math.pow(2, exponent - 15) * (1 + fraction / 0x0400);\r\n }\r\n\r\n if (floatValue === value) {\r\n return z; // Found the number, return the index\r\n }\r\n }\r\n\r\n return -1; // number not found\r\n };\r\n\r\n /**\r\n * Searches for float value position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n findFloat(value: number, endian: endian = this.endian): number {\r\n this.#checkSize(4, 0, this.#offset);\r\n\r\n for (let z = this.#offset; z <= (this.size - 4); z++) {\r\n var startingValue = 0;\r\n\r\n if (endian == \"little\") {\r\n startingValue = ((this.data[z + 3] & 0xFF) << 24) |\r\n ((this.data[z + 2] & 0xFF) << 16) |\r\n ((this.data[z + 1] & 0xFF) << 8) |\r\n (this.data[z] & 0xFF);\r\n } else {\r\n startingValue = ((this.data[z] & 0xFF) << 24) |\r\n ((this.data[z + 1] & 0xFF) << 16) |\r\n ((this.data[z + 2] & 0xFF) << 8) |\r\n (this.data[z + 3] & 0xFF);\r\n }\r\n\r\n const isNegative = (startingValue & 0x80000000) !== 0 ? 1 : 0;\r\n // Extract the exponent and fraction parts\r\n const exponent = (startingValue >> 23) & 0xFF;\r\n\r\n const fraction = startingValue & 0x7FFFFF;\r\n // Calculate the float value\r\n var floatValue: number;\r\n\r\n if (exponent === 0) {\r\n // Denormalized number (exponent is 0)\r\n floatValue = Math.pow(-1, isNegative) * Math.pow(2, -126) * (fraction / Math.pow(2, 23));\r\n } else if (exponent === 0xFF) {\r\n // Infinity or NaN (exponent is 255)\r\n floatValue = fraction === 0 ? (isNegative ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY) : Number.NaN;\r\n } else {\r\n // Normalized number\r\n floatValue = Math.pow(-1, isNegative) * Math.pow(2, exponent - 127) * (1 + fraction / Math.pow(2, 23));\r\n }\r\n\r\n if (floatValue === value) {\r\n return z; // Found the number, return the index\r\n }\r\n }\r\n\r\n return -1; // number not found\r\n };\r\n\r\n /**\r\n * Searches for double float value position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n findDoubleFloat(value: number, endian: endian = this.endian): number {\r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n\r\n this.#checkSize(8, 0, this.#offset);\r\n\r\n for (let z = this.#offset; z <= (this.size - 8); z++) {\r\n var startingValue = BigInt(0);\r\n\r\n if (endian == \"little\") {\r\n for (let i = 0; i < 8; i++) {\r\n startingValue = startingValue | BigInt((this.data[z + i] & 0xFF)) << BigInt(8 * i);\r\n }\r\n } else {\r\n for (let i = 0; i < 8; i++) {\r\n startingValue = (startingValue << BigInt(8)) | BigInt((this.data[z + i] & 0xFF));\r\n }\r\n }\r\n\r\n const sign = (startingValue & BigInt(\"9223372036854775808\")) >> BigInt(63);\r\n\r\n const exponent = Number((startingValue & BigInt(\"9218868437227405312\")) >> BigInt(52)) - 1023;\r\n\r\n const fraction = Number(startingValue & BigInt(\"4503599627370495\")) / Math.pow(2, 52);\r\n\r\n var floatValue: number;\r\n\r\n if (exponent == -1023) {\r\n if (fraction == 0) {\r\n floatValue = (sign == BigInt(0)) ? 0 : -0; // +/-0\r\n } else {\r\n // Denormalized number\r\n floatValue = (sign == BigInt(0) ? 1 : -1) * Math.pow(2, -1022) * fraction;\r\n }\r\n } else if (exponent == 1024) {\r\n if (fraction == 0) {\r\n floatValue = (sign == BigInt(0)) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\r\n } else {\r\n floatValue = Number.NaN;\r\n }\r\n } else {\r\n // Normalized number\r\n floatValue = (sign == BigInt(0) ? 1 : -1) * Math.pow(2, exponent) * (1 + fraction);\r\n }\r\n\r\n if (floatValue == value) {\r\n return z;\r\n }\r\n }\r\n\r\n return -1; // number not found\r\n };\r\n\r\n ///////////////////////////////\r\n // #region MOVE TO\r\n ///////////////////////////////\r\n\r\n /**\r\n * Aligns current byte position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} number - Byte to align\r\n */\r\n align(number: number): void {\r\n const a = this.#offset % number;\r\n\r\n if (a) {\r\n this.skip(number - a);\r\n }\r\n };\r\n\r\n /**\r\n * Reverse aligns current byte position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} number - Byte to align\r\n */\r\n alignRev(number: number): void {\r\n const a = this.#offset % number;\r\n\r\n if (a) {\r\n this.skip(a * -1);\r\n }\r\n };\r\n\r\n /**\r\n * Offset current byte or bit position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} bytes - Bytes to skip\r\n * @param {number} bits - Bits to skip\r\n */\r\n skip(bytes: number, bits?: number): void {\r\n var newOffset = ((bytes + this.#offset) + Math.ceil((this.#insetBit + bits) / 8));\r\n\r\n if (bits && bits < 0) {\r\n newOffset = Math.floor((((bytes + this.#offset) * 8) + this.#insetBit + bits) / 8);\r\n }\r\n\r\n this.#confrimSize(newOffset);\r\n // Adjust byte offset based on bit overflow\r\n this.#offset += Math.floor((this.#insetBit + bits) / 8);\r\n // Adjust bit offset\r\n this.#insetBit = (this.#insetBit + normalizeBitOffset(bits)) % 8;\r\n // Adjust byte offset based on byte overflow\r\n this.#offset += bytes;\r\n // Ensure bit offset stays between 0-7\r\n this.#insetBit = Math.min(Math.max(this.#insetBit, 0), 7);\r\n // Ensure offset doesn't go negative\r\n this.#offset = Math.max(this.#offset, 0);\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Offset current byte or bit position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} bytes - Bytes to skip\r\n * @param {number} bits - Bits to skip\r\n */\r\n jump(bytes: number, bits?: number): void {\r\n this.skip(bytes, bits);\r\n };\r\n\r\n /**\r\n * Offset current byte or bit position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} bytes - Bytes to skip\r\n * @param {number} bits - Bits to skip\r\n */\r\n seek(bytes: number, bits?: number): void {\r\n return this.skip(bytes, bits)\r\n };\r\n\r\n /**\r\n * Change position directly to address.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} byte - byte to set to\r\n * @param {number} bit - bit to set to\r\n */\r\n goto(byte: number = 0, bit: number = 0): void {\r\n var newOffset = byte + Math.ceil(bit / 8);\r\n\r\n if (bit && bit < 0) {\r\n newOffset = Math.floor(((byte * 8) + bit) / 8);\r\n }\r\n\r\n this.#confrimSize(newOffset);\r\n\r\n this.#offset = byte;\r\n // Adjust byte offset based on bit overflow\r\n this.#offset += Math.floor(bit / 8);\r\n // Adjust bit offset\r\n this.#insetBit = normalizeBitOffset(bit) % 8;\r\n // Ensure bit offset stays between 0-7\r\n this.#insetBit = Math.min(Math.max(this.#insetBit, 0), 7);\r\n // Ensure offset doesn't go negative\r\n this.#offset = Math.max(this.#offset, 0);\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Change position directly to address.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} byte - byte to set to\r\n * @param {number} bit - bit to set to\r\n */\r\n FSeek(byte: number, bit?: number): void {\r\n return this.goto(byte, bit)\r\n };\r\n\r\n /**\r\n * Change position directly to address.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} byte - byte to set to\r\n * @param {number} bit - bit to set to\r\n */\r\n pointer(byte: number, bit?: number): void {\r\n return this.goto(byte, bit)\r\n };\r\n\r\n /**\r\n * Change position directly to address.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} byte - byte to set to\r\n * @param {number} bit - bit to set to\r\n */\r\n warp(byte: number, bit?: number): void {\r\n return this.goto(byte, bit)\r\n };\r\n\r\n /**\r\n * Set byte and bit position to start of data.\r\n */\r\n rewind(): void {\r\n this.#offset = 0;\r\n\r\n this.#insetBit = 0;\r\n };\r\n\r\n /**\r\n * Set byte and bit position to start of data.\r\n */\r\n gotoStart(): void {\r\n return this.rewind();\r\n };\r\n\r\n /**\r\n * Set current byte and bit position to end of data.\r\n */\r\n last(): void {\r\n this.#offset = this.size;\r\n\r\n this.#insetBit = 0;\r\n };\r\n\r\n /**\r\n * Set current byte and bit position to end of data.\r\n */\r\n gotoEnd(): void {\r\n this.last();\r\n };\r\n\r\n /**\r\n * Set byte and bit position to start of data.\r\n */\r\n EoF(): void {\r\n this.last();\r\n };\r\n\r\n ///////////////////////////////\r\n // #region REMOVE\r\n ///////////////////////////////\r\n\r\n /**\r\n * Deletes part of data from start to current byte position unless supplied, returns removed.\r\n * \r\n * Note: Errors in strict mode.\r\n * \r\n * @param {number} startOffset - Start location (default 0)\r\n * @param {number} endOffset - End location (default current position)\r\n * @param {boolean} consume - Move position to end of removed data (default false)\r\n * @returns {DataType} Removed data as ``Buffer`` or ``Uint8Array``\r\n */\r\n delete(startOffset: number = 0, endOffset: number = this.#offset, consume: boolean = false): DataType {\r\n if (this.readOnly || this.strict) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"\\x1b[33m[Strict mode]\\x1b[0m: Can not remove data in strict mode: endOffset \" + endOffset + \" of \" + this.size);\r\n }\r\n\r\n this.open();\r\n\r\n startOffset = Math.abs(startOffset);\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const dataRemoved = this.data.subarray(startOffset, endOffset) as DataType;\r\n\r\n const part1 = this.data.subarray(0, startOffset);\r\n\r\n const part2 = this.data.subarray(endOffset, this.size);\r\n\r\n if (this.isBuffer(this.data)) {\r\n this.data = Buffer.concat([part1, part2]) as DataType;\r\n } else {\r\n const newBuf = new Uint8Array(part1.byteLength + part2.byteLength);\r\n\r\n newBuf.set(part1, 0);\r\n\r\n newBuf.set(part2, part1.byteLength);\r\n\r\n this.data = newBuf as DataType;\r\n }\r\n\r\n this.size = this.data.length;\r\n\r\n this.bitSize = this.data.length * 8;\r\n\r\n if (consume) {\r\n this.#offset = startOffset;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return dataRemoved;\r\n };\r\n\r\n /**\r\n * Deletes part of data from current byte position to end, returns removed.\r\n * \r\n * Note: Errors in strict mode.\r\n * \r\n * @returns {DataType} Removed data as ``Buffer`` or ``Uint8Array``\r\n */\r\n clip(): DataType {\r\n return this.delete(this.#offset, this.size, false);\r\n };\r\n\r\n /**\r\n * Deletes part of data from current byte position to end, returns removed.\r\n * \r\n * Note: Errors in strict mode.\r\n * \r\n * @returns {DataType} Removed data as ``Buffer`` or ``Uint8Array``\r\n */\r\n trim(): DataType {\r\n return this.delete(this.#offset, this.size, false);\r\n };\r\n\r\n /**\r\n * Deletes part of data from current byte position to supplied length, returns removed.\r\n * \r\n * Note: Errors in strict mode.\r\n * \r\n * @param {number} length - Length of data in bytes to remove\r\n * @param {boolean} consume - Move position to end of removed data (default false)\r\n * @returns {DataType} Removed data as ``Buffer`` or ``Uint8Array``\r\n */\r\n crop(length: number = 0, consume: boolean = false): DataType {\r\n return this.delete(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Deletes part of data from current position to supplied length, returns removed.\r\n * \r\n * Note: Only works in strict mode.\r\n * \r\n * @param {number} length - Length of data in bytes to remove\r\n * @param {boolean} consume - Move position to end of removed data (default false)\r\n * @returns {DataType} Removed data as ``Buffer`` or ``Uint8Array``\r\n */\r\n drop(length: number = 0, consume: boolean = false): DataType {\r\n return this.delete(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region REPLACE\r\n ///////////////////////////////\r\n\r\n /**\r\n * Replaces data in data.\r\n * \r\n * Note: Errors on strict mode if past end of data.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to replace in data\r\n * @param {number} offset - Offset to add it at (defaults to current position)\r\n * @param {boolean} consume - Move current byte position to end of data (default false)\r\n */\r\n replace(data: DataType, offset: number = this.#offset, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't replace data in readOnly mode!\");\r\n }\r\n\r\n this.open();\r\n // input is Buffer\r\n if (this.isBuffer(data)) {\r\n if (this.isUint8Array(this.data)) {\r\n // source is Uint8Array\r\n data = new Uint8Array(data) as DataType;\r\n }\r\n } else {\r\n // input is Uint8Array\r\n if (this.isBuffer(this.data)) {\r\n // source is Buffer\r\n data = Buffer.from(data) as DataType;\r\n }\r\n }\r\n\r\n const neededSize = offset + data.length;\r\n\r\n this.#confrimSize(neededSize);\r\n\r\n const part1 = this.data.subarray(0, neededSize - data.length);\r\n\r\n const part2 = this.data.subarray(neededSize, this.size);\r\n\r\n if (this.isBuffer(this.data)) {\r\n this.data = Buffer.concat([part1, data, part2]) as DataType;\r\n } else {\r\n const newBuf = new Uint8Array(part1.byteLength + data.byteLength + part2.byteLength);\r\n\r\n newBuf.set(part1, 0);\r\n\r\n newBuf.set(data, part1.byteLength);\r\n\r\n newBuf.set(part2, part1.byteLength + data.byteLength);\r\n\r\n this.data = newBuf as DataType;\r\n }\r\n\r\n this.size = this.data.length;\r\n\r\n this.bitSize = this.data.length * 8;\r\n\r\n if (consume) {\r\n this.#offset = offset + data.length;\r\n\r\n this.#insetBit = 0;\r\n }\r\n };\r\n\r\n /**\r\n * Replaces data in data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to replace in data\r\n * @param {number} offset - Offset to add it at (defaults to current position)\r\n * @param {boolean} consume - Move current byte position to end of data (default false)\r\n */\r\n overwrite(data: DataType, offset: number = this.#offset, consume: boolean = false): void {\r\n return this.replace(data, offset, consume);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region COPY OUT\r\n ///////////////////////////////\r\n\r\n /**\r\n * Returns part of data from current byte position to end of data unless supplied.\r\n * \r\n * @param {number} startOffset - Start location (default current position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move position to end of lifted data (default false)\r\n * @param {number} fillValue - Byte value to to fill returned data (does NOT fill unless supplied)\r\n * @returns {DataType} Selected data as ``Uint8Array`` or ``Buffer``\r\n */\r\n fill(startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false, fillValue?: number): DataType {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't remove data in readonly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n if (startOffset < 0 || endOffset > this.size) {\r\n throw new RangeError('Remove range out of bounds');\r\n }\r\n\r\n const removeLen = endOffset - startOffset;\r\n\r\n if (removeLen <= 0) {\r\n if (this.isMemoryMode) {\r\n if (this.isBuffer(this.data)) {\r\n return Buffer.alloc(0) as DataType;\r\n } else {\r\n return new Uint8Array(0) as DataType;\r\n }\r\n } else {\r\n return Buffer.alloc(0) as DataType;\r\n }\r\n }\r\n\r\n if (endOffset > this.size && this.strict) {\r\n throw new Error('Cannot extend data while in strict mode. Use unrestrict() to enable.');\r\n }\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const dataRemoved = this.data.subarray(startOffset, endOffset);\r\n // without a fill value it's a basic lift\r\n if (fillValue != undefined) {\r\n const part1 = this.data.subarray(0, startOffset);\r\n\r\n const part2 = this.data.subarray(endOffset, this.size);\r\n\r\n const replacement = new Array(dataRemoved.length).fill(fillValue & 0xff);\r\n\r\n if (isBuffer(this.data)) {\r\n const buffReplacement = Buffer.from(replacement);\r\n\r\n this.data = Buffer.concat([part1, buffReplacement, part2]) as DataType;\r\n } else {\r\n const newBuf = new Uint8Array(part1.byteLength + replacement.length + part2.byteLength);\r\n\r\n newBuf.set(part1, 0);\r\n\r\n newBuf.set(replacement, part1.byteLength);\r\n\r\n newBuf.set(part2, part1.byteLength + replacement.length);\r\n\r\n this.data = newBuf as DataType;\r\n }\r\n\r\n this.size = this.data.length;\r\n\r\n this.bitSize = this.data.length * 8;\r\n }\r\n\r\n if (consume) {\r\n this.#offset = endOffset;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return dataRemoved as DataType;\r\n };\r\n\r\n /**\r\n * Returns part of data from current byte position to end of data unless supplied.\r\n * \r\n * @param {number} startOffset - Start location (default current position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move position to end of lifted data (default false)\r\n * @param {number} fillValue - Byte value to to fill returned data (does NOT fill unless supplied)\r\n * @returns {DataType} Selected data as ``Uint8Array`` or ``Buffer``\r\n */\r\n lift(startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false, fillValue?: number): DataType {\r\n return this.fill(startOffset, endOffset, consume, fillValue) as DataType;\r\n };\r\n\r\n /**\r\n * Extract data from current position to length supplied.\r\n * \r\n * Note: Does not affect supplied data.\r\n * \r\n * @param {number} length - Length of data in bytes to copy from current offset\r\n * @param {number} consume - Moves offset to end of length (default false)\r\n * @returns {DataType} Selected data as ``Uint8Array`` or ``Buffer``\r\n */\r\n extract(length: number = 0, consume: boolean = false): DataType {\r\n return this.fill(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Extract data from current position to length supplied.\r\n * \r\n * Note: Does not affect supplied data.\r\n * \r\n * @param {number} length - Length of data in bytes to copy from current offset\r\n * @param {number} consume - Moves offset to end of length (default false)\r\n * @returns {DataType} Selected data as ``Uint8Array`` or ``Buffer``\r\n */\r\n slice(length: number = 0, consume: boolean = false): DataType {\r\n return this.fill(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Extract data from current position to length supplied.\r\n * \r\n * Note: Does not affect supplied data.\r\n * \r\n * @param {number} length - Length of data in bytes to copy from current offset\r\n * @param {number} consume - Moves offset to end of length (default false)\r\n * @returns {DataType} Selected data as ``Uint8Array`` or ``Buffer``\r\n */\r\n wrap(length: number = 0, consume: boolean = false): DataType {\r\n return this.fill(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INSERT\r\n ///////////////////////////////\r\n\r\n /**\r\n * Inserts data into data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {number} offset - Byte position to add at (defaults to current position)\r\n * @param {boolean} consume - Move current byte position to end of data (default true)\r\n */\r\n insert(data: DataType, offset: number = this.#offset, consume: boolean = true): void {\r\n if (this.strict == true || this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(`\\x1b[33m[Strict mode]\\x1b[0m: Can not insert data in strict mode. Use unrestrict() to enable.`);\r\n }\r\n\r\n if (!this.strict) {\r\n if (offset < 0 || offset > this.size) {\r\n throw new RangeError('Insert offset out of bounds');\r\n }\r\n }\r\n\r\n this.open();\r\n // input is Buffer\r\n if (this.isBuffer(data)) {\r\n if (this.isUint8Array(this.data)) {\r\n // source is Uint8Array\r\n data = new Uint8Array(data) as DataType;\r\n }\r\n } else {\r\n // input is Uint8Array\r\n if (this.isBuffer(this.data)) {\r\n // source is Buffer\r\n data = Buffer.from(data) as DataType;\r\n }\r\n }\r\n\r\n const insertLen = data?.length ?? 0;\r\n\r\n if (insertLen === 0) {\r\n return;\r\n }\r\n\r\n const part1 = this.data.subarray(0, offset);\r\n\r\n const part2 = this.data.subarray(offset, this.size);\r\n\r\n if (this.isBuffer(this.data)) {\r\n this.data = Buffer.concat([part1, data, part2]) as DataType;\r\n } else {\r\n const newBuf = new Uint8Array(part1.byteLength + data.byteLength + part2.byteLength);\r\n\r\n newBuf.set(part1, 0);\r\n\r\n newBuf.set(data, part1.byteLength);\r\n\r\n newBuf.set(part2, part1.byteLength + data.byteLength);\r\n\r\n this.data = newBuf as DataType;\r\n }\r\n\r\n this.size = this.data.length;\r\n\r\n this.bitSize = this.data.length * 8;\r\n\r\n if (consume) {\r\n this.#offset = offset + data.length;\r\n\r\n this.#insetBit = 0;\r\n }\r\n };\r\n\r\n /**\r\n * Inserts data into data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {number} offset - Byte position to add at (defaults to current position)\r\n * @param {boolean} consume - Move current byte position to end of data (default true)\r\n */\r\n place(data: DataType, offset: number = this.#offset, consume: boolean = true): void {\r\n return this.insert(data, offset, consume);\r\n };\r\n\r\n /**\r\n * Adds data to start of supplied data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {boolean} consume - Move current write position to end of data (default false)\r\n */\r\n unshift(data: DataType, consume: boolean = false): void {\r\n return this.insert(data, 0, consume);\r\n };\r\n\r\n /**\r\n * Adds data to start of supplied data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {boolean} consume - Move current write position to end of data (default false)\r\n */\r\n prepend(data: DataType, consume: boolean = false): void {\r\n return this.insert(data, 0, consume);\r\n };\r\n\r\n /**\r\n * Adds data to end of supplied data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {boolean} consume - Move current write position to end of data (default false)\r\n */\r\n push(data: DataType, consume: boolean = false): void {\r\n return this.insert(data, this.size, consume);\r\n };\r\n\r\n /**\r\n * Adds data to end of supplied data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {boolean} consume - Move current write position to end of data (default false)\r\n */\r\n append(data: DataType, consume: boolean = false): void {\r\n return this.push(data, consume);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region MATH \r\n ///////////////////////////////\r\n\r\n /**\r\n * XOR data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} xorKey - Value, string or array to XOR\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n xor(xorKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof xorKey == \"string\") {\r\n xorKey = new TextEncoder().encode(xorKey);\r\n } else if (!(this.isBufferOrUint8Array(xorKey) || typeof xorKey == \"number\")) {\r\n throw new Error(\"XOR must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n this.open();\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const returnData = _XOR(this.data, startOffset, Math.min(endOffset, this.size), xorKey);\r\n\r\n if (consume) {\r\n this.#offset = returnData.offset;\r\n\r\n this.#insetBit = returnData.bitoffset;\r\n }\r\n };\r\n\r\n /**\r\n * XOR data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} xorKey - Value, string or array to XOR\r\n * @param {number} length - Length in bytes to XOR from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n xorThis(xorKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof xorKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof xorKey == \"string\") {\r\n xorKey = new TextEncoder().encode(xorKey)\r\n\r\n length = length ?? xorKey.length;\r\n } else if (this.isBufferOrUint8Array(xorKey)) {\r\n length = length ?? xorKey.length;\r\n } else {\r\n throw new Error(\"XOR must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return this.xor(xorKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * OR data\r\n * \r\n * @param {number|string|Uint8Array|Buffer} orKey - Value, string or array to OR\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n or(orKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof orKey == \"string\") {\r\n orKey = new TextEncoder().encode(orKey);\r\n } else if (!(this.isBufferOrUint8Array(orKey) || typeof orKey == \"number\")) {\r\n throw new Error(\"OR must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n this.open();\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const returnData = _OR(this.data, startOffset, Math.min(endOffset, this.size), orKey);\r\n\r\n if (consume) {\r\n this.#offset = returnData.offset;\r\n\r\n this.#insetBit = returnData.bitoffset;\r\n }\r\n };\r\n\r\n /**\r\n * OR data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} orKey - Value, string or array to OR\r\n * @param {number} length - Length in bytes to OR from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n orThis(orKey: number | string | Uint8Array | Buffer, length?: number, consume?: boolean): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof orKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof orKey == \"string\") {\r\n orKey = new TextEncoder().encode(orKey);\r\n\r\n length = length ?? orKey.length;\r\n } else if (this.isBufferOrUint8Array(orKey)) {\r\n length = length ?? orKey.length;\r\n } else {\r\n throw new Error(\"OR must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return this.or(orKey, this.#offset, this.#offset + length, consume || false);\r\n };\r\n\r\n /**\r\n * AND data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} andKey - Value, string or array to AND\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n and(andKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof andKey == \"string\") {\r\n andKey = new TextEncoder().encode(andKey);\r\n } else if (!(typeof andKey == \"object\" || typeof andKey == \"number\")) {\r\n throw new Error(\"AND must be a number, string, number array or Buffer\");\r\n }\r\n\r\n this.open();\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const returnData = _AND(this.data, startOffset, Math.min(endOffset, this.size), andKey);\r\n\r\n if (consume) {\r\n this.#offset = returnData.offset;\r\n\r\n this.#insetBit = returnData.bitoffset;\r\n }\r\n };\r\n\r\n /**\r\n * AND data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} andKey - Value, string or array to AND\r\n * @param {number} length - Length in bytes to AND from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n andThis(andKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof andKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof andKey == \"string\") {\r\n andKey = new TextEncoder().encode(andKey);\r\n\r\n length = length ?? andKey.length;\r\n } else if (this.isBufferOrUint8Array(andKey)) {\r\n length = length ?? andKey.length;\r\n } else {\r\n throw new Error(\"AND must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return this.and(andKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Add value to data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} addKey - Value, string or array to add to data\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n add(addKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof addKey == \"string\") {\r\n addKey = new TextEncoder().encode(addKey);\r\n } else if (!(typeof addKey == \"object\" || typeof addKey == \"number\")) {\r\n throw new Error(\"Add key must be a number, string, number array or Buffer\");\r\n }\r\n\r\n this.open();\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const returnData = _ADD(this.data, startOffset, Math.min(endOffset, this.size), addKey);\r\n\r\n if (consume) {\r\n this.#offset = returnData.offset;\r\n\r\n this.#insetBit = returnData.bitoffset;\r\n }\r\n };\r\n\r\n /**\r\n * Add value to data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} addKey - Value, string or array to add to data\r\n * @param {number} length - Length in bytes to add from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n addThis(addKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof addKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof addKey == \"string\") {\r\n addKey = new TextEncoder().encode(addKey);\r\n\r\n length = length ?? addKey.length;\r\n } else if (this.isBufferOrUint8Array(addKey)) {\r\n length = length ?? addKey.length;\r\n } else {\r\n throw new Error(\"ADD must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return this.add(addKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Not data.\r\n * \r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n not(startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const returnData = _NOT(this.data, startOffset, Math.min(endOffset, this.size));\r\n\r\n if (consume) {\r\n this.#offset = returnData.offset;\r\n\r\n this.#insetBit = returnData.bitoffset;\r\n }\r\n };\r\n\r\n /**\r\n * Not data.\r\n * \r\n * @param {number} length - Length in bytes to NOT from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n notThis(length: number = 1, consume: boolean = false): void {\r\n return this.not(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Left shift data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} shiftKey - Value, string or array to left shift data\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n lShift(shiftKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof shiftKey == \"string\") {\r\n shiftKey = new TextEncoder().encode(shiftKey);\r\n } else if (!(typeof shiftKey == \"object\" || typeof shiftKey == \"number\")) {\r\n throw new Error(\"Left shift must be a number, string, number array or Buffer\");\r\n }\r\n\r\n this.open();\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const returnData = _LSHIFT(this.data, startOffset, Math.min(endOffset, this.size), shiftKey);\r\n\r\n if (consume) {\r\n this.#offset = returnData.offset;\r\n\r\n this.#insetBit = returnData.bitoffset;\r\n }\r\n };\r\n\r\n /**\r\n * Left shift data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} shiftKey - Value, string or array to left shift data\r\n * @param {number} length - Length in bytes to left shift from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n lShiftThis(shiftKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof shiftKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof shiftKey == \"string\") {\r\n shiftKey = new TextEncoder().encode(shiftKey);\r\n\r\n length = length ?? shiftKey.length;\r\n } else if (this.isBufferOrUint8Array(shiftKey)) {\r\n length = length ?? shiftKey.length;\r\n } else {\r\n throw new Error(\"Left shift must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return this.lShift(shiftKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Right shift data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} shiftKey - Value, string or array to right shift data\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n rShift(shiftKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof shiftKey == \"string\") {\r\n shiftKey = new TextEncoder().encode(shiftKey);\r\n } else if (!(typeof shiftKey == \"object\" || typeof shiftKey == \"number\")) {\r\n throw new Error(\"Right shift must be a number, string, number array or Buffer\");\r\n }\r\n\r\n this.open();\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const returnData = _RSHIFT(this.data, startOffset, Math.min(endOffset, this.size), shiftKey);\r\n\r\n if (consume) {\r\n this.#offset = returnData.offset;\r\n\r\n this.#insetBit = returnData.bitoffset;\r\n }\r\n };\r\n\r\n /**\r\n * Right shift data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} shiftKey - Value, string or array to right shift data\r\n * @param {number} length - Length in bytes to right shift from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n rShiftThis(shiftKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (typeof shiftKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof shiftKey == \"string\") {\r\n shiftKey = new TextEncoder().encode(shiftKey);\r\n\r\n length = length ?? shiftKey.length;\r\n } else if (this.isBufferOrUint8Array(shiftKey)) {\r\n length = length ?? shiftKey.length;\r\n } else {\r\n throw new Error(\"right shift must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return this.rShift(shiftKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region BIT READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number}\r\n */\r\n readBit(bits?: number, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true): number {\r\n this.open();\r\n\r\n if (typeof bits != \"number\") {\r\n throw new TypeError(\"Enter number of bits to read\");\r\n }\r\n\r\n if (bits == 0) {\r\n return 0;\r\n }\r\n\r\n if (bits <= 0 || bits > 32) {\r\n throw new Error('Bit length must be between 1 and 32. Got ' + bits);\r\n }\r\n\r\n const sizeNeeded = Math.floor(((bits - 1) + this.#insetBit) / 8) + this.#offset;\r\n\r\n this.#confrimSize(sizeNeeded);\r\n\r\n const bitStart = (this.#offset * 8) + this.#insetBit;\r\n\r\n const value = _rbit(this.data, bits, bitStart, endian, unsigned);\r\n\r\n if (consume) {\r\n this.#offset += Math.floor((bits + this.#insetBit) / 8);\r\n\r\n this.#insetBit = (bits + this.#insetBit) % 8;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @returns {number}\r\n */\r\n readUBitBE(bits: number): number {\r\n return this.readBit(bits, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @returns {number}\r\n */\r\n readUBitLE(bits: number): number {\r\n return this.readBit(bits, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns {number}\r\n */\r\n readBitBE(bits: number, unsigned?: boolean): number {\r\n return this.readBit(bits, unsigned, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns {number}\r\n */\r\n readBitLE(bits: number, unsigned?: boolean): number {\r\n return this.readBit(bits, unsigned, \"little\");\r\n };\r\n\r\n /**\r\n *\r\n * Write bits, must have at least value and number of bits.\r\n * \r\n * ``Note``: When returning to a byte write, remaining bits are skipped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - number of bits to write\r\n * @param {boolean} unsigned - if value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeBit(value: number, bits: number, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n if (bits == 0) {\r\n return;\r\n }\r\n\r\n if (bits <= 0 || bits > 32) {\r\n throw new Error('Bit length must be between 1 and 32. Got ' + bits);\r\n }\r\n\r\n value = numberSafe(value, bits, unsigned);\r\n\r\n const endOffset = Math.ceil(((bits - 1) + this.#insetBit) / 8) + this.#offset;\r\n\r\n this.#confrimSize(endOffset);\r\n\r\n const offset = (this.#offset * 8) + this.#insetBit;\r\n\r\n _wbit(this.data, value, bits, offset, endian, unsigned);\r\n\r\n if (consume) {\r\n this.#offset += Math.floor((bits + this.#insetBit) / 8);\r\n\r\n this.#insetBit = (bits + this.#insetBit) % 8;\r\n }\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n * @returns number\r\n */\r\n writeUBitBE(value: number, bits: number): void {\r\n return this.writeBit(value, bits, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n * @returns number\r\n */\r\n writeUBitLE(value: number, bits: number): void {\r\n return this.writeBit(value, bits, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns number\r\n */\r\n writeBitBE(value: number, bits: number, unsigned?: boolean): void {\r\n return this.writeBit(value, bits, unsigned, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns number\r\n */\r\n writeBitLE(value: number, bits: number, unsigned?: boolean): void {\r\n return this.writeBit(value, bits, unsigned, \"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region BYTE READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read byte.\r\n * \r\n * @param {boolean} unsigned - if the value is unsigned or not\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number}\r\n */\r\n readByte(unsigned: boolean = false, consume: boolean = true): number {\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(1, 0, trueByte);\r\n\r\n var value: number;\r\n\r\n if (canInt8) {\r\n value = unsigned ? this.view.getUint8(trueByte) : this.view.getInt8(trueByte);\r\n } else {\r\n value = _rbyte(this.data, trueByte, unsigned);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 1;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n /**\r\n * Read unsigned byte.\r\n * \r\n * @returns {number}\r\n */\r\n readUByte(): number {\r\n return this.readByte(true);\r\n };\r\n\r\n /**\r\n * Read multiple bytes.\r\n * \r\n * @param {number} amount - amount of bytes to read\r\n * @param {boolean} unsigned - if value is unsigned or not\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number[]}\r\n */\r\n readBytes(amount: number, unsigned?: boolean, consume: boolean = true): number[] {\r\n return Array.from({ length: amount }, () => this.readByte(unsigned, consume));\r\n };\r\n\r\n /**\r\n * Read multiple unsigned bytes.\r\n * \r\n * @param {number} amount - amount of bytes to read\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number[]}\r\n */\r\n readUBytes(amount: number, consume: boolean = true): number[] {\r\n return this.readBytes(amount, true, consume);\r\n };\r\n\r\n /**\r\n * Write byte.\r\n *\r\n * @param {number} value - value as int \r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeByte(value: number, unsigned: boolean = false, consume: boolean = true): void {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(1, 0, trueByte);\r\n\r\n if (canInt8) {\r\n if (unsigned) {\r\n this.view.setUint8(trueByte, value);\r\n } else {\r\n this.view.setInt8(trueByte, value);\r\n }\r\n } else {\r\n _wbyte(this.data, numberSafe(value, 8, unsigned), trueByte, unsigned);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 1;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Write multiple bytes.\r\n * \r\n * @param {number[]} values - array of values as int\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeBytes(values: number[], unsigned?: boolean, consume: boolean = true): void {\r\n for (let i = 0; i < values.length; i++) {\r\n this.writeByte(values[i], unsigned, consume);\r\n }\r\n };\r\n\r\n /**\r\n * Write multiple unsigned bytes.\r\n * \r\n * @param {number[]} values - array of values as int\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeUBytes(values: number[], consume: boolean = true): void {\r\n return this.writeBytes(values, true, consume);\r\n };\r\n\r\n /**\r\n * Write unsigned byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n writeUByte(value: number): void {\r\n return this.writeByte(value, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INT16 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read short.\r\n * \r\n * @param {boolean} unsigned - if value is unsigned or not\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number}\r\n */\r\n readInt16(unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true): number {\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(2, 0, trueByte);\r\n\r\n var value: number;\r\n\r\n if (canInt16) {\r\n if (unsigned) {\r\n value = this.view.getUint16(trueByte, endian == \"little\");\r\n } else {\r\n value = this.view.getInt16(trueByte, endian == \"little\");\r\n }\r\n } else {\r\n value = _rint16(this.data, trueByte, endian, unsigned);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 2;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n /**\r\n * Read unsigned short.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * \r\n * @returns {number}\r\n */\r\n readUInt16(endian: endian = this.endian): number {\r\n return this.readInt16(true, endian);\r\n };\r\n\r\n /**\r\n * Read unsigned short in little endian.\r\n * \r\n * @returns {number}\r\n */\r\n readUInt16LE(): number {\r\n return this.readUInt16(\"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in big endian.\r\n * \r\n * @returns {number}\r\n */\r\n readUInt16BE(): number {\r\n return this.readUInt16(\"big\");\r\n };\r\n\r\n /**\r\n * Read signed short in little endian.\r\n * \r\n * @returns {number}\r\n */\r\n readInt16LE(): number {\r\n return this.readInt16(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed short in big endian.\r\n * \r\n * @returns {number}\r\n */\r\n readInt16BE(): number {\r\n return this.readInt16(false, \"big\");\r\n };\r\n\r\n /**\r\n * Write int16.\r\n *\r\n * @param {number} value - value as int \r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeInt16(value: number, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(2, 0, trueByte);\r\n\r\n if (canInt16) {\r\n if (unsigned) {\r\n this.view.setUint16(trueByte, value, endian == \"little\");\r\n } else {\r\n this.view.setInt16(trueByte, value, endian == \"little\");\r\n }\r\n } else {\r\n _wint16(this.data, numberSafe(value, 16, unsigned), trueByte, endian, unsigned);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 2;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n writeUInt16(value: number, endian: endian = this.endian): void {\r\n return this.writeInt16(value, true, endian);\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n writeUInt16BE(value: number): void {\r\n return this.writeUInt16(value, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n writeUInt16LE(value: number): void {\r\n return this.writeUInt16(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n writeInt16LE(value: number): void {\r\n return this.writeInt16(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n writeInt16BE(value: number): void {\r\n return this.writeInt16(value, false, \"big\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region HALF FLOAT\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read 16 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number}\r\n */\r\n readHalfFloat(endian: endian = this.endian, consume: boolean = true): number {\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(2, 0, trueByte);\r\n\r\n var value: number;\r\n\r\n if (canFloat16) {\r\n value = this.view.getFloat16(trueByte, endian == \"little\");\r\n } else {\r\n value = _rhalffloat(this.data, trueByte, endian);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 2;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number}\r\n */\r\n readFloat16(endian: endian = this.endian, consume: boolean = true): number {\r\n return this.readHalfFloat(endian, consume);\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readHalfFloatBE(): number {\r\n return this.readHalfFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readFloat16BE(): number {\r\n return this.readHalfFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readHalfFloatLE(): number {\r\n return this.readHalfFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readFloat16LE(): number {\r\n return this.readHalfFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeHalfFloat(value: number, endian: endian = this.endian, consume: boolean = true): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(2, 0, trueByte);\r\n\r\n if (canFloat16) {\r\n this.view.setFloat16(trueByte, value, endian == \"little\");\r\n } else {\r\n _whalffloat(this.data, value, trueByte, endian);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 2;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeFloat16(value: number, endian: endian = this.endian, consume: boolean = true): void {\r\n return this.writeHalfFloat(value, endian, consume);\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeHalfFloatBE(value: number): void {\r\n return this.writeHalfFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeFloat16BE(value: number): void {\r\n return this.writeHalfFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeHalfFloatLE(value: number): void {\r\n return this.writeHalfFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeFloat16LE(value: number): void {\r\n return this.writeHalfFloat(value, \"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INT32 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read 32 bit integer.\r\n * \r\n * @param {boolean} unsigned - if value is unsigned or not\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number}\r\n */\r\n readInt32(unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true): number {\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(4, 0, trueByte);\r\n\r\n var value: number;\r\n\r\n if (canInt32) {\r\n if (unsigned) {\r\n value = this.view.getUint32(trueByte, endian == \"little\");\r\n } else {\r\n value = this.view.getInt32(trueByte, endian == \"little\");\r\n }\r\n } else {\r\n value = _rint32(this.data, trueByte, endian, unsigned);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 4;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {number}\r\n */\r\n readInt(endian: endian = this.endian): number {\r\n return this.readInt32(false, endian);\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n readInt32BE(): number {\r\n return this.readInt(\"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n readInt32LE(): number {\r\n return this.readInt(\"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {number}\r\n */\r\n readUInt32(endian: endian = this.endian): number {\r\n return this.readInt32(true, endian);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {number}\r\n */\r\n readUInt(endian: endian = this.endian): number {\r\n return this.readInt32(true, endian);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n readUInt32BE(): number {\r\n return this.readUInt(\"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n readUInt32LE(): number {\r\n return this.readUInt(\"little\");\r\n };\r\n\r\n /**\r\n * Write 32 bit integer.\r\n *\r\n * @param {number} value - value as int \r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeInt32(value: number, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(4, 0, trueByte);\r\n\r\n if (canInt32) {\r\n if (unsigned) {\r\n this.view.setUint32(trueByte, value, endian == \"little\");\r\n } else {\r\n this.view.setInt32(trueByte, value, endian == \"little\");\r\n }\r\n } else {\r\n _wint32(this.data, numberSafe(value, 32, unsigned), trueByte, endian, unsigned);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 4;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Write signed 32 bit integer.\r\n *\r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n writeInt(value: number, endian: endian = this.endian): void {\r\n return this.writeInt32(value, false, endian);\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n writeInt32LE(value: number): void {\r\n return this.writeInt(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n writeInt32BE(value: number): void {\r\n return this.writeInt(value, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 32 bit integer.\r\n *\r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n writeUInt(value: number, endian: endian = this.endian): void {\r\n return this.writeInt32(value, true, endian);\r\n };\r\n\r\n /**\r\n * Write unsigned 32 bit integer.\r\n *\r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n writeUInt32(value: number, endian: endian = this.endian): void {\r\n return this.writeUInt(value, endian);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n writeUInt32BE(value: number): void {\r\n return this.writeUInt32(value, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n writeUInt32LE(value: number): void {\r\n return this.writeUInt32(value, \"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FLOAT32 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read 32 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number}\r\n */\r\n readFloat(endian: endian = this.endian, consume: boolean = true): number {\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(4, 0, trueByte);\r\n\r\n var value: number;\r\n\r\n if (canFloat32) {\r\n value = this.view.getFloat32(trueByte, endian == \"little\");\r\n } else {\r\n value = _rfloat(this.data, trueByte, endian);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 4;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n * @returns {number}\r\n */\r\n readFloat32(endian: endian = this.endian, consume: boolean = true): number {\r\n return this.readFloat(endian, consume);\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readFloatBE(): number {\r\n return this.readFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readFloat32BE(): number {\r\n return this.readFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readFloatLE(): number {\r\n return this.readFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readFloat32LE(): number {\r\n return this.readFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeFloat(value: number, endian: endian = this.endian, consume: boolean = true): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(4, 0, trueByte);\r\n\r\n if (canFloat32) {\r\n this.view.setFloat32(trueByte, value, endian == \"little\");\r\n } else {\r\n _wfloat(this.data, value, trueByte, endian);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 4;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeFloatLE(value: number): void {\r\n return this.writeFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeFloat32LE(value: number): void {\r\n return this.writeFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeFloat32BE(value: number): void {\r\n return this.writeFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeFloatBE(value: number): void {\r\n return this.writeFloat(value, \"big\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INT64 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n * \r\n * @param {boolean} unsigned - if value is unsigned or not\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n */\r\n readInt64(unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true): alwaysBigInt extends true ? bigint : number {\r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(8, 0, trueByte);\r\n\r\n var value: bigint;\r\n\r\n if (canBigInt64) {\r\n if (unsigned) {\r\n value = this.view.getBigUint64(trueByte, endian == \"little\");\r\n } else {\r\n value = this.view.getBigInt64(trueByte, endian == \"little\");\r\n }\r\n } else {\r\n value = _rint64(this.data, trueByte, endian, unsigned);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 8;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n if (this.enforceBigInt == true || (typeof value == \"bigint\" && !isSafeInt64(value))) {\r\n return value as alwaysBigInt extends true ? bigint : number;\r\n } else {\r\n if (isSafeInt64(value)) {\r\n return Number(value) as alwaysBigInt extends true ? bigint : number;\r\n } else {\r\n throw new Error(\"Value is outside of number range and enforceBigInt is set to false. \" + value);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n * \r\n * @returns {BigValue}\r\n */\r\n readUInt64(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true);\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n * \r\n * @returns {BigValue}\r\n */\r\n readInt64BE(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n * \r\n * @returns {BigValue}\r\n */\r\n readInt64LE(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n * \r\n * @returns {BigValue}\r\n */\r\n readUInt64BE(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n * \r\n * @returns {BigValue}\r\n */\r\n readUInt64LE(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true, \"little\");\r\n };\r\n\r\n /**\r\n * Write 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeInt64(value: BigValue, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(8, 0, trueByte);\r\n\r\n if (canBigInt64) {\r\n if (unsigned) {\r\n this.view.setBigInt64(trueByte, BigInt(value), endian == \"little\");\r\n } else {\r\n this.view.setBigUint64(trueByte, BigInt(value), endian == \"little\");\r\n }\r\n } else {\r\n _wint64(this.data, numberSafe(value, 64, unsigned), trueByte, endian, unsigned);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 8;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n writeUInt64(value: BigValue, endian: endian = this.endian) {\r\n return this.writeInt64(value, true, endian);\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n writeInt64LE(value: BigValue): void {\r\n return this.writeInt64(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n writeInt64BE(value: BigValue): void {\r\n return this.writeInt64(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n writeUInt64LE(value: BigValue): void {\r\n return this.writeInt64(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n writeUInt64BE(value: BigValue): void {\r\n return this.writeInt64(value, true, \"big\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FLOAT64 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read 64 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {number}\r\n */\r\n readDoubleFloat(endian: endian = this.endian, consume: boolean = true): number {\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(8, 0, trueByte);\r\n\r\n var value: number;\r\n\r\n if (canFloat64) {\r\n value = this.view.getFloat64(trueByte, endian == \"little\");\r\n } else {\r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n\r\n value = _rdfloat(this.data, trueByte, endian);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 8;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {number}\r\n */\r\n readFloat64(endian: endian = this.endian): number {\r\n return this.readDoubleFloat(endian);\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readDoubleFloatBE(): number {\r\n return this.readDoubleFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readFloat64BE(): number {\r\n return this.readDoubleFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readDoubleFloatLE(): number {\r\n return this.readDoubleFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n * \r\n * @returns {number}\r\n */\r\n readFloat64LE(): number {\r\n return this.readDoubleFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n writeDoubleFloat(value: number, endian: endian = this.endian, consume: boolean = true): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n var trueByte = this.#offset;\r\n\r\n var trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#checkSize(8, 0, trueByte);\r\n\r\n if (canFloat64) {\r\n this.view.setFloat64(trueByte, value, endian == \"little\");\r\n } else {\r\n _wdfloat(this.data, value, trueByte, endian);\r\n }\r\n\r\n if (consume) {\r\n this.#offset += 8;\r\n\r\n this.#insetBit = 0;\r\n }\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n writeFloat64(value: number, endian: endian = this.endian): void {\r\n return this.writeDoubleFloat(value, endian);\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeDoubleFloatBE(value: number): void {\r\n return this.writeDoubleFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeFloat64BE(value: number): void {\r\n return this.writeDoubleFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeDoubleFloatLE(value: number): void {\r\n return this.writeDoubleFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n writeFloat64LE(value: number): void {\r\n return this.writeDoubleFloat(value, \"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region STRING READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Reads string, use options object for different types.\r\n * \r\n * @param {stringOptions} options \r\n * @param {stringOptions[\"length\"]?} options.length - for fixed length, non-terminate value utf strings (in units NOT bytes)\r\n * @param {stringOptions[\"stringType\"]?} options.stringType - utf-8, utf-16, utf-32, pascal, wide-pascal or double-wide-pascal\r\n * @param {stringOptions[\"terminateValue\"]?} options.terminateValue - only with stringType: \"utf\"\r\n * @param {stringOptions[\"lengthReadSize\"]?} options.lengthReadSize - for pascal strings. 1, 2 or 4 byte length read size\r\n * @param {stringOptions[\"encoding\"]?} options.encoding - TextEncoder accepted types \r\n * @param {stringOptions[\"endian\"]?} options.endian - for wide-pascal, double-wide-pascal and utf-16, utf-32\r\n * @param {boolean} consume - move offset after read\r\n * @returns {string}\r\n */\r\n readString(options: stringOptions = this.strDefaults, consume: boolean = true): string {\r\n this.open();\r\n\r\n var length: number = options.length;\r\n\r\n var stringType: stringOptions[\"stringType\"] = options.stringType ?? 'utf-8';\r\n\r\n var terminateValue: number = options.terminateValue;\r\n\r\n var lengthReadSize: number = options.lengthReadSize ?? 1;\r\n\r\n var stripNull: boolean = options.stripNull ?? true;\r\n\r\n var endian: \"little\" | \"big\" = options.endian ?? this.endian;\r\n\r\n var encoding: stringOptions[\"encoding\"] = options.encoding ?? 'utf-8';\r\n\r\n var terminate = terminateValue;\r\n\r\n var readLengthinBytes = 0;\r\n\r\n if (length != undefined) {\r\n switch (stringType) {\r\n case \"utf-8\":\r\n readLengthinBytes = length;\r\n break;\r\n case \"utf-16\":\r\n readLengthinBytes = length * 2;\r\n break;\r\n case \"utf-32\":\r\n readLengthinBytes = length * 4;\r\n break;\r\n default:\r\n readLengthinBytes = length;\r\n break;\r\n }\r\n\r\n this.#checkSize(readLengthinBytes);\r\n } else {\r\n readLengthinBytes = this.data.length - this.#offset;\r\n }\r\n\r\n if (terminateValue != undefined && typeof terminateValue == \"number\") {\r\n terminate = terminateValue & 0xFF;\r\n } else {\r\n terminate = 0;\r\n }\r\n\r\n const saved_offset = this.#offset;\r\n\r\n const saved_bitoffset = this.#insetBit;\r\n\r\n const str = _rstring(stringType, lengthReadSize, readLengthinBytes, terminate, stripNull, encoding, endian, this.readUByte.bind(this), this.readUInt16.bind(this), this.readUInt32.bind(this));\r\n\r\n if (!consume) {\r\n this.#offset = saved_offset;\r\n\r\n this.#insetBit = saved_bitoffset\r\n }\r\n\r\n return str;\r\n };\r\n\r\n /**\r\n * Writes string, use options object for different types.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions?} options\r\n * @param {stringOptions[\"length\"]?} options.length - for fixed length, non-terminate value utf strings\r\n * @param {stringOptions[\"stringType\"]?} options.stringType - utf-8, utf-16, utf-32, pascal, wide-pascal or double-wide-pascal\r\n * @param {stringOptions[\"terminateValue\"]?} options.terminateValue - only with stringType: \"utf\"\r\n * @param {stringOptions[\"lengthWriteSize\"]?} options.lengthWriteSize - for pascal strings. 1, 2 or 4 byte length write size\r\n * @param {stringOptions[\"encoding\"]?} options.encoding - TextEncoder accepted types \r\n * @param {stringOptions[\"endian\"]?} options.endian - for wide-pascal, double-wide-pascal and utf-16, utf-32\r\n * @param {boolean} consume - move offset after write\r\n */\r\n writeString(string: string, options: stringOptions = this.strDefaults, consume: boolean = true): void {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't write data in readonly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n var length: number = options.length;\r\n\r\n var stringType: stringOptions[\"stringType\"] = options.stringType ?? 'utf-8';\r\n\r\n var terminateValue: number = options.terminateValue;\r\n\r\n var lengthWriteSize: number = options.lengthWriteSize ?? 1;\r\n\r\n var endian: \"little\" | \"big\" = options.endian ?? this.endian;\r\n\r\n var maxLengthValue = length ?? string.length;\r\n\r\n var strUnits = string.length;\r\n\r\n var maxBytes: number;\r\n\r\n switch (stringType) {\r\n case 'pascal':\r\n maxLengthValue = 255;\r\n\r\n if (length != undefined) {\r\n maxLengthValue = length;\r\n }\r\n\r\n break;\r\n case 'wide-pascal':\r\n strUnits *= 2;\r\n\r\n maxLengthValue = 65535;\r\n\r\n if (length != undefined) {\r\n maxLengthValue = length / 2;\r\n }\r\n\r\n break;\r\n case 'double-wide-pascal':\r\n strUnits *= 4;\r\n\r\n maxLengthValue = 4294967295;\r\n\r\n if (length != undefined) {\r\n maxLengthValue = length / 4;\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (terminateValue == undefined) {\r\n if (stringType == \"ascii\" || stringType == 'utf-8' ||\r\n stringType == 'utf-16' ||\r\n stringType == 'utf-32'\r\n ) {\r\n terminateValue = 0;\r\n }\r\n }\r\n\r\n var maxBytes = Math.min(strUnits, maxLengthValue);\r\n\r\n string = string.substring(0, maxBytes);\r\n\r\n var encodedString: Uint8Array<ArrayBufferLike>;\r\n\r\n var totalLength = string.length;\r\n\r\n switch (stringType) {\r\n case 'ascii':\r\n case 'utf-8':\r\n case 'pascal':\r\n {\r\n encodedString = new TextEncoder().encode(string);\r\n\r\n totalLength = encodedString.byteLength + 1;\r\n }\r\n break;\r\n case 'utf-16':\r\n case 'wide-pascal':\r\n {\r\n const utf16Buffer = new Uint16Array(string.length);\r\n\r\n for (let i = 0; i < string.length; i++) {\r\n utf16Buffer[i] = string.charCodeAt(i);\r\n }\r\n\r\n encodedString = new Uint8Array(utf16Buffer.buffer);\r\n\r\n totalLength = encodedString.byteLength + 2;\r\n }\r\n break;\r\n case 'utf-32':\r\n case 'double-wide-pascal':\r\n {\r\n const utf32Buffer = new Uint32Array(string.length);\r\n\r\n for (let i = 0; i < string.length; i++) {\r\n utf32Buffer[i] = string.codePointAt(i);\r\n }\r\n\r\n encodedString = new Uint8Array(utf32Buffer.buffer);\r\n\r\n totalLength = encodedString.byteLength + 4;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.#checkSize(totalLength, 0, this.#offset);\r\n\r\n const savedOffset = this.#offset;\r\n\r\n const savedBitOffset = this.#insetBit;\r\n\r\n _wstring(encodedString, stringType, endian, terminateValue, lengthWriteSize, this.writeUByte.bind(this), this.writeUInt16.bind(this), this.writeUInt32.bind(this));\r\n\r\n if (!consume) {\r\n this.#offset = savedOffset;\r\n\r\n this.#insetBit = savedBitOffset;\r\n }\r\n\r\n return;\r\n };\r\n};","import {\r\n BiOptions,\r\n endian,\r\n stringOptions,\r\n} from \"./common.js\";\r\nimport { BiBase } from './core/BiBase.js';\r\n\r\n/**\r\n * Binary reader, includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - File path or a ``Buffer`` or ``Uint8Array``. Always found in ``BiReader.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start reader (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start reader (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``true``)\r\n * @param {BiOptions[\"growthIncrement\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false. Note: Changes logic in ``.get`` and ``.return``.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always be ``BigInt``.\r\n * @param {BiOptions[\"writeable\"]} options.writeable - Allow data writes when reading a file (default ``true`` in reader)\r\n * \r\n * @since 2.0\r\n */\r\nexport class BiReader<DataType extends Buffer | Uint8Array, alwaysBigInt extends boolean> extends BiBase<DataType, alwaysBigInt> {\r\n\r\n /**\r\n * Binary reader, includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - File path or a ``Buffer`` or ``Uint8Array``. Always found in ``BiReader.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start reader (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start reader (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``true`` in reader)\r\n * @param {BiOptions[\"growthIncrement\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false. Note: Changes logic in ``.get`` and ``.return``.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always be ``BigInt``.\r\n * @param {BiOptions[\"readOnly\"]} options.readOnly - If you want to prevent write operations (default ``true`` in reader)\r\n */\r\n constructor(input: string | DataType, options: BiOptions = {}) {\r\n options.byteOffset = options.byteOffset ?? 0;\r\n\r\n options.bitOffset = options.bitOffset ?? 0;\r\n\r\n options.endianness = options.endianness ?? \"little\";\r\n\r\n options.strict = options.strict ?? true;\r\n\r\n options.growthIncrement = options.growthIncrement ?? 1048576;\r\n\r\n options.enforceBigInt = options.enforceBigInt ?? false;\r\n\r\n options.readOnly = options.readOnly ?? true;\r\n\r\n if (input == undefined) {\r\n throw new Error(\"Can not start BiReader without data.\");\r\n }\r\n\r\n super(input, options);\r\n };\r\n\r\n //\r\n // #region Bit Aliases\r\n //\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {number}\r\n */\r\n bit(bits: number, unsigned?: boolean, endian?: endian): number {\r\n return this.readBit(bits, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Bit field reader. Unsigned read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {number}\r\n */\r\n ubit(bits: number, endian?: endian): number {\r\n return this.readBit(bits, true, endian);\r\n };\r\n\r\n /**\r\n * Bit field reader. Unsigned big endian read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @returns {number}\r\n */\r\n ubitbe(bits: number): number {\r\n return this.bit(bits, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Big endian read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns {number}\r\n */\r\n bitbe(bits: number, unsigned?: boolean): number {\r\n return this.bit(bits, unsigned, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Unsigned little endian read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @returns {number}\r\n */\r\n ubitle(bits: number): number {\r\n return this.bit(bits, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Little endian read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns {number}\r\n */\r\n bitle(bits: number, unsigned?: boolean): number {\r\n return this.bit(bits, unsigned, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit1(): number {\r\n return this.bit(1);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit1le(): number {\r\n return this.bit(1, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit1be(): number {\r\n return this.bit(1, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit1(): number {\r\n return this.bit(1, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit1le(): number {\r\n return this.bit(1, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit1be(): number {\r\n return this.bit(1, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit2(): number {\r\n return this.bit(2);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit2le(): number {\r\n return this.bit(2, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit2be(): number {\r\n return this.bit(2, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit2(): number {\r\n return this.bit(2, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit2le(): number {\r\n return this.bit(2, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit2be(): number {\r\n return this.bit(2, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit3(): number {\r\n return this.bit(3);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit3le(): number {\r\n return this.bit(3, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit3be(): number {\r\n return this.bit(3, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit3(): number {\r\n return this.bit(3, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit3le(): number {\r\n return this.bit(3, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit3be(): number {\r\n return this.bit(3, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit4(): number {\r\n return this.bit(4);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit4le(): number {\r\n return this.bit(4, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit4be(): number {\r\n return this.bit(4, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit4(): number {\r\n return this.bit(4, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit4le(): number {\r\n return this.bit(4, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit4be(): number {\r\n return this.bit(4, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit5(): number {\r\n return this.bit(5);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit5le(): number {\r\n return this.bit(5, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit5be(): number {\r\n return this.bit(5, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit5(): number {\r\n return this.bit(5, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit5le(): number {\r\n return this.bit(5, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit5be(): number {\r\n return this.bit(5, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit6(): number {\r\n return this.bit(6);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit6le(): number {\r\n return this.bit(6, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit6be(): number {\r\n return this.bit(6, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit6(): number {\r\n return this.bit(6, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit6le(): number {\r\n return this.bit(6, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit6be(): number {\r\n return this.bit(6, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit7(): number {\r\n return this.bit(7);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit7le(): number {\r\n return this.bit(7, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit7be(): number {\r\n return this.bit(7, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit7(): number {\r\n return this.bit(7, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit7le(): number {\r\n return this.bit(7, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit7be(): number {\r\n return this.bit(7, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit8(): number {\r\n return this.bit(8);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit8le(): number {\r\n return this.bit(8, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit8be(): number {\r\n return this.bit(8, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit8(): number {\r\n return this.bit(8, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit8le(): number {\r\n return this.bit(8, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit8be(): number {\r\n return this.bit(8, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit9(): number {\r\n return this.bit(9);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit9le(): number {\r\n return this.bit(9, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit9be(): number {\r\n return this.bit(9, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit9(): number {\r\n return this.bit(9, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit9le(): number {\r\n return this.bit(9, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit9be(): number {\r\n return this.bit(9, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit10(): number {\r\n return this.bit(10);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit10le(): number {\r\n return this.bit(10, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit10be(): number {\r\n return this.bit(10, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit10(): number {\r\n return this.bit(10, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit10le(): number {\r\n return this.bit(10, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit10be(): number {\r\n return this.bit(10, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit11(): number {\r\n return this.bit(11);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit11le(): number {\r\n return this.bit(11, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit11be(): number {\r\n return this.bit(11, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit11(): number {\r\n return this.bit(11, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit11le(): number {\r\n return this.bit(11, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit11be(): number {\r\n return this.bit(11, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit12(): number {\r\n return this.bit(12);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit12le(): number {\r\n return this.bit(12, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit12be(): number {\r\n return this.bit(12, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit12(): number {\r\n return this.bit(12, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit12le(): number {\r\n return this.bit(12, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit12be(): number {\r\n return this.bit(12, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit13(): number {\r\n return this.bit(13);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit13le(): number {\r\n return this.bit(13, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit13be(): number {\r\n return this.bit(13, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit13(): number {\r\n return this.bit(13, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit13le(): number {\r\n return this.bit(13, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit13be(): number {\r\n return this.bit(13, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit14(): number {\r\n return this.bit(14);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit14le(): number {\r\n return this.bit(14, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit14be(): number {\r\n return this.bit(14, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit14(): number {\r\n return this.bit(14, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit14le(): number {\r\n return this.bit(14, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit14be(): number {\r\n return this.bit(14, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit15(): number {\r\n return this.bit(15);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit15le(): number {\r\n return this.bit(15, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit15be(): number {\r\n return this.bit(15, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit15(): number {\r\n return this.bit(15, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit15le(): number {\r\n return this.bit(15, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit15be(): number {\r\n return this.bit(15, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit16(): number {\r\n return this.bit(16);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit16le(): number {\r\n return this.bit(16, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit16be(): number {\r\n return this.bit(16, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit16(): number {\r\n return this.bit(16, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit16le(): number {\r\n return this.bit(16, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit16be(): number {\r\n return this.bit(16, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit17(): number {\r\n return this.bit(17);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit17le(): number {\r\n return this.bit(17, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit17be(): number {\r\n return this.bit(17, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit17(): number {\r\n return this.bit(17, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit17le(): number {\r\n return this.bit(17, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit17be(): number {\r\n return this.bit(17, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit18(): number {\r\n return this.bit(18);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit18le(): number {\r\n return this.bit(18, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit18be(): number {\r\n return this.bit(18, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit18(): number {\r\n return this.bit(18, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit18le(): number {\r\n return this.bit(18, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit18be(): number {\r\n return this.bit(18, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit19(): number {\r\n return this.bit(19);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit19le(): number {\r\n return this.bit(19, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit19be(): number {\r\n return this.bit(19, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit19(): number {\r\n return this.bit(19, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit19le(): number {\r\n return this.bit(19, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit19be(): number {\r\n return this.bit(19, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit20(): number {\r\n return this.bit(20);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit20le(): number {\r\n return this.bit(20, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit20be(): number {\r\n return this.bit(20, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit20(): number {\r\n return this.bit(20, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit20le(): number {\r\n return this.bit(20, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit20be(): number {\r\n return this.bit(20, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit21(): number {\r\n return this.bit(21);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit21le(): number {\r\n return this.bit(21, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit21be(): number {\r\n return this.bit(21, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit21(): number {\r\n return this.bit(21, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit21le(): number {\r\n return this.bit(21, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit21be(): number {\r\n return this.bit(21, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit22(): number {\r\n return this.bit(22);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit22le(): number {\r\n return this.bit(22, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit22be(): number {\r\n return this.bit(22, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit22(): number {\r\n return this.bit(22, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit22le(): number {\r\n return this.bit(22, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit22be(): number {\r\n return this.bit(22, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit23(): number {\r\n return this.bit(23);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit23le(): number {\r\n return this.bit(23, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit23be(): number {\r\n return this.bit(23, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit23(): number {\r\n return this.bit(23, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit23le(): number {\r\n return this.bit(23, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit23be(): number {\r\n return this.bit(23, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit24(): number {\r\n return this.bit(24);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit24le(): number {\r\n return this.bit(24, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit24be(): number {\r\n return this.bit(24, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit24(): number {\r\n return this.bit(24, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit24le(): number {\r\n return this.bit(24, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit24be(): number {\r\n return this.bit(24, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit25(): number {\r\n return this.bit(25);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit25le(): number {\r\n return this.bit(25, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit25be(): number {\r\n return this.bit(25, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit25(): number {\r\n return this.bit(25, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit25le(): number {\r\n return this.bit(25, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit25be(): number {\r\n return this.bit(25, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit26(): number {\r\n return this.bit(26);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit26le(): number {\r\n return this.bit(26, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit26be(): number {\r\n return this.bit(26, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit26(): number {\r\n return this.bit(26, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit26le(): number {\r\n return this.bit(26, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit26be(): number {\r\n return this.bit(26, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit27(): number {\r\n return this.bit(27);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit27le(): number {\r\n return this.bit(27, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit27be(): number {\r\n return this.bit(27, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit27(): number {\r\n return this.bit(27, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit27le(): number {\r\n return this.bit(27, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit27be(): number {\r\n return this.bit(27, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit28(): number {\r\n return this.bit(28);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit28le(): number {\r\n return this.bit(28, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit28be(): number {\r\n return this.bit(28, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit28(): number {\r\n return this.bit(28, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit28le(): number {\r\n return this.bit(28, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit28be(): number {\r\n return this.bit(28, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit29(): number {\r\n return this.bit(29);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit29le(): number {\r\n return this.bit(29, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit29be(): number {\r\n return this.bit(29, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit29(): number {\r\n return this.bit(29, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit29le(): number {\r\n return this.bit(29, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit29be(): number {\r\n return this.bit(29, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit30(): number {\r\n return this.bit(30);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit30le(): number {\r\n return this.bit(30, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit30be(): number {\r\n return this.bit(30, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit30(): number {\r\n return this.bit(30, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit30le(): number {\r\n return this.bit(30, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit30be(): number {\r\n return this.bit(30, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit31(): number {\r\n return this.bit(31);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit31le(): number {\r\n return this.bit(31, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit31be(): number {\r\n return this.bit(31, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit31(): number {\r\n return this.bit(31, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit31le(): number {\r\n return this.bit(31, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit31be(): number {\r\n return this.bit(31, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit32(): number {\r\n return this.bit(32);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit32le(): number {\r\n return this.bit(32, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get bit32be(): number {\r\n return this.bit(32, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit32(): number {\r\n return this.bit(32, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit32le(): number {\r\n return this.bit(32, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {number}\r\n */\r\n get ubit32be(): number {\r\n return this.bit(32, true, \"big\");\r\n };\r\n\r\n //\r\n // #region byte read\r\n //\r\n\r\n /**\r\n * Read byte.\r\n * \r\n * @returns {number}\r\n */\r\n get byte(): number {\r\n return this.readByte();\r\n };\r\n\r\n /**\r\n * Read byte.\r\n * \r\n * @returns {number}\r\n */\r\n get int8(): number {\r\n return this.readByte();\r\n };\r\n\r\n /**\r\n * Read unsigned byte.\r\n * \r\n * @returns {number}\r\n */\r\n get uint8(): number {\r\n return this.readByte(true);\r\n };\r\n\r\n /**\r\n * Read unsigned byte.\r\n * \r\n * @returns {number}\r\n */\r\n get ubyte(): number {\r\n return this.readByte(true);\r\n };\r\n\r\n //\r\n // #region short16 read\r\n //\r\n\r\n /**\r\n * Read short.\r\n * \r\n * @returns {number}\r\n */\r\n get int16(): number {\r\n return this.readInt16();\r\n };\r\n\r\n /**\r\n * Read short.\r\n * \r\n * @returns {number}\r\n */\r\n get short(): number {\r\n return this.readInt16();\r\n };\r\n\r\n /**\r\n * Read short.\r\n * \r\n * @returns {number}\r\n */\r\n get word(): number {\r\n return this.readInt16();\r\n };\r\n\r\n /**\r\n * Read unsigned short.\r\n * \r\n * @returns {number}\r\n */\r\n get uint16(): number {\r\n return this.readInt16(true);\r\n };\r\n\r\n /**\r\n * Read unsigned short.\r\n * \r\n * @returns {number}\r\n */\r\n get ushort(): number {\r\n return this.readInt16(true);\r\n };\r\n\r\n /**\r\n * Read unsigned short.\r\n * \r\n * @returns {number}\r\n */\r\n get uword(): number {\r\n return this.readInt16(true);\r\n };\r\n\r\n /**\r\n * Read unsigned short in little endian.\r\n * \r\n * @returns {number}\r\n */\r\n get uint16le(): number {\r\n return this.readInt16(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in little endian.\r\n * \r\n * @returns {number}\r\n */\r\n get ushortle(): number {\r\n return this.readInt16(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in little endian.\r\n * \r\n * @returns {number}\r\n */\r\n get uwordle(): number {\r\n return this.readInt16(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed short in little endian.\r\n * \r\n * @returns {number}\r\n */\r\n get int16le(): number {\r\n return this.readInt16(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed short in little endian.\r\n * \r\n * @returns {number}\r\n */\r\n get shortle(): number {\r\n return this.readInt16(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed short in little endian.\r\n * \r\n * @returns {number}\r\n */\r\n get wordle(): number {\r\n return this.readInt16(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in big endian.\r\n * \r\n * @returns {number}\r\n */\r\n get uint16be(): number {\r\n return this.readInt16(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in big endian.\r\n * \r\n * @returns {number}\r\n */\r\n get ushortbe(): number {\r\n return this.readInt16(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in big endian.\r\n * \r\n * @returns {number}\r\n */\r\n get uwordbe(): number {\r\n return this.readInt16(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed short in big endian.\r\n * \r\n * @returns {number}\r\n */\r\n get int16be(): number {\r\n return this.readInt16(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed short in big endian.\r\n * \r\n * @returns {number}\r\n */\r\n get shortbe(): number {\r\n return this.readInt16(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed short in big endian.\r\n * \r\n * @returns {number}\r\n */\r\n get wordbe(): number {\r\n return this.readInt16(false, \"big\");\r\n };\r\n\r\n //\r\n // #region half float read\r\n //\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {number}\r\n */\r\n get halffloat(): number {\r\n return this.readHalfFloat();\r\n };\r\n\r\n /**\r\n * Read half float\r\n * \r\n * @returns {number}\r\n */\r\n get half(): number {\r\n return this.readHalfFloat();\r\n };\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {number}\r\n */\r\n get halffloatbe(): number {\r\n return this.readHalfFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {number}\r\n */\r\n get halfbe(): number {\r\n return this.readHalfFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {number}\r\n */\r\n get halffloatle(): number {\r\n return this.readHalfFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {number}\r\n */\r\n get halfle(): number {\r\n return this.readHalfFloat(\"little\");\r\n };\r\n\r\n //\r\n // #region int read\r\n //\r\n\r\n /**\r\n * Read 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get int(): number {\r\n return this.readInt32();\r\n };\r\n\r\n /**\r\n * Read 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get double(): number {\r\n return this.readInt32();\r\n };\r\n\r\n /**\r\n * Read 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get int32(): number {\r\n return this.readInt32();\r\n };\r\n\r\n /**\r\n * Read 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get long(): number {\r\n return this.readInt32();\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get uint(): number {\r\n return this.readInt32(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get udouble(): number {\r\n return this.readInt32(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get uint32(): number {\r\n return this.readInt32(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get ulong(): number {\r\n return this.readInt32(true);\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get intbe(): number {\r\n return this.readInt32(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get doublebe(): number {\r\n return this.readInt32(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get int32be(): number {\r\n return this.readInt32(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get longbe(): number {\r\n return this.readInt32(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get uintbe(): number {\r\n return this.readInt32(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get udoublebe(): number {\r\n return this.readInt32(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get uint32be(): number {\r\n return this.readInt32(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get ulongbe(): number {\r\n return this.readInt32(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get intle(): number {\r\n return this.readInt32(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get doublele(): number {\r\n return this.readInt32(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get int32le(): number {\r\n return this.readInt32(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get longle(): number {\r\n return this.readInt32(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get uintle(): number {\r\n return this.readInt32(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get udoublele(): number {\r\n return this.readInt32(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get uint32le(): number {\r\n return this.readInt32(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {number}\r\n */\r\n get ulongle(): number {\r\n return this.readInt32(true, \"little\");\r\n };\r\n\r\n //\r\n // #region float read\r\n //\r\n\r\n /**\r\n * Read float.\r\n * \r\n * @returns {number}\r\n */\r\n get float(): number {\r\n return this.readFloat();\r\n };\r\n\r\n /**\r\n * Read float.\r\n * \r\n * @returns {number}\r\n */\r\n get floatbe(): number {\r\n return this.readFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read float.\r\n * \r\n * @returns {number}\r\n */\r\n get floatle(): number {\r\n return this.readFloat(\"little\");\r\n };\r\n\r\n //\r\n // #region int64 reader\r\n //\r\n\r\n /**\r\n * Read signed 64 bit integer\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get int64(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64();\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get bigint(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64();\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get quad(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64();\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get uint64(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get ubigint(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get uquad(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true);\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get int64be(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get bigintbe(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get quadbe(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get uint64be(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get ubigintbe(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get uquadbe(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get int64le(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get bigintle(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get quadle(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get uint64le(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get ubigintle(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n get uquadle(): alwaysBigInt extends true ? bigint : number {\r\n return this.readInt64(true, \"little\");\r\n };\r\n\r\n //\r\n // #region doublefloat reader\r\n //\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {number}\r\n */\r\n get doublefloat(): number {\r\n return this.readDoubleFloat();\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {number}\r\n */\r\n get dfloat(): number {\r\n return this.readDoubleFloat();\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {number}\r\n */\r\n get dfloatbe(): number {\r\n return this.readDoubleFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {number}\r\n */\r\n get doublefloatbe(): number {\r\n return this.readDoubleFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {number}\r\n */\r\n get dfloatle(): number {\r\n return this.readDoubleFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {number}\r\n */\r\n get doublefloatle(): number {\r\n return this.readDoubleFloat(\"little\");\r\n };\r\n\r\n //\r\n // #region string reader\r\n //\r\n\r\n /**\r\n * Reads string, use options object for different types.\r\n * \r\n * @param {stringOptions} options \r\n * @param {stringOptions[\"length\"]?} options.length - for fixed length, non-terminate value utf strings\r\n * @param {stringOptions[\"stringType\"]?} options.stringType - ascii, utf-8, utf-16, utf-32, pascal, wide-pascal or double-wide-pascal\r\n * @param {stringOptions[\"terminateValue\"]?} options.terminateValue - only with stringType: \"utf\"\r\n * @param {stringOptions[\"lengthReadSize\"]?} options.lengthReadSize - for pascal strings. 1, 2 or 4 byte length read size\r\n * @param {stringOptions[\"stripNull\"]?} options.stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"encoding\"]?} options.encoding - TextEncoder accepted types \r\n * @param {stringOptions[\"endian\"]?} options.endian - for utf-16, utf-32, wide-pascal or double-wide-pascal\r\n * @returns {string}\r\n */\r\n string(options: stringOptions = this.strDefaults): string {\r\n return this.readString(options);\r\n };\r\n\r\n /**\r\n * Reads string using setting from .strDefaults\r\n * \r\n * Default is ``utf-8``\r\n * \r\n * @returns {string}\r\n */\r\n get str(): string {\r\n return this.readString(this.strDefaults);\r\n };\r\n\r\n /**\r\n * Reads UTF-8 (C) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n utf8string(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.string({ stringType: \"utf-8\", encoding: \"utf-8\", length: length, terminateValue: terminateValue, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads UTF-8 (C) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n cstring(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.utf8string(length, terminateValue, stripNull);\r\n };\r\n\r\n /**\r\n * Reads ANSI string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n ansistring(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.string({ stringType: \"utf-8\", encoding: \"windows-1252\", length: length, terminateValue: terminateValue, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads latin1 string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n latin1tring(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.string({ stringType: \"utf-8\", encoding: \"iso-8859-1\", length: length, terminateValue: terminateValue, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n utf16string(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.string({ stringType: \"utf-16\", encoding: \"utf-16\", length: length, terminateValue: terminateValue, endian: endian, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n unistring(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.utf16string(length, terminateValue, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string in little endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n utf16stringle(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.utf16string(length, terminateValue, stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string in little endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n unistringle(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.utf16stringle(length, terminateValue, stripNull);\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string in big endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n utf16stringbe(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.utf16string(length, terminateValue, stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string in big endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n unistringbe(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.utf16stringbe(length, terminateValue, stripNull);\r\n };\r\n\r\n /**\r\n * Reads UTF-32 (Unicode) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n utf32string(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.string({ stringType: \"utf-32\", encoding: \"utf-32\", length: length, terminateValue: terminateValue, endian: endian, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads UTF-32 (Unicode) string in little endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n utf32stringle(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.utf32string(length, terminateValue, stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads UTF-32 (Unicode) string in big endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n utf32stringbe(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.utf32string(length, terminateValue, stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string.\r\n * \r\n * @param {stringOptions[\"lengthReadSize\"]} lengthReadSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n pstring(lengthReadSize?: stringOptions[\"lengthReadSize\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.string({ stringType: \"pascal\", encoding: \"utf-8\", lengthReadSize: lengthReadSize, stripNull: stripNull, endian: endian });\r\n };\r\n\r\n /**\r\n * Reads Pascal string 1 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n pstring1(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.pstring(1, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n pstring1le(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.pstring1(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n pstring1be(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.pstring1(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 2 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n pstring2(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.pstring(2, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n pstring2le(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.pstring2(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n pstring2be(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.pstring2(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 4 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n pstring4(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.pstring(4, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n pstring4le(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.pstring4(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n pstring4be(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.pstring4(stripNull, \"big\" );\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string.\r\n * \r\n * @param {stringOptions[\"lengthReadSize\"]} lengthReadSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n wpstring(lengthReadSize?: stringOptions[\"lengthReadSize\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.string({ stringType: \"wide-pascal\", encoding: \"utf-16\", lengthReadSize: lengthReadSize, endian: endian, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string 1 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n wpstring1(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.wpstring(1, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n wpstring1le(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.wpstring1(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n wpstring1be(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.wpstring1(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string 2 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n wpstring2(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.wpstring(2, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n wpstring2le(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.wpstring2(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n wpstring2be(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.wpstring2(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string 4 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n wpstring4(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.wpstring(4, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n wpstring4le(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.wpstring4(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Wide Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n wpstring4be(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.wpstring4(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string.\r\n * \r\n * @param {stringOptions[\"lengthReadSize\"]} lengthReadSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring(lengthReadSize?: stringOptions[\"lengthReadSize\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.string({ stringType: \"double-wide-pascal\", encoding: \"utf-32\", lengthReadSize: lengthReadSize, stripNull: stripNull, endian: endian });\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 1 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring1(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.dwpstring(1, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring1le(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.dwpstring1(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Double WidePascal string 1 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring1be(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.dwpstring1(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 2 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring2(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.dwpstring(2, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring2le(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.dwpstring2(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring2be(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.dwpstring2(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 4 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring4(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): string {\r\n return this.dwpstring(4, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring4le(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.dwpstring4(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {string}\r\n */\r\n dwpstring4be(stripNull?: stringOptions[\"stripNull\"]): string {\r\n return this.dwpstring4(stripNull, \"big\");\r\n };\r\n};","import {\r\n BigValue,\r\n BiOptions,\r\n endian,\r\n stringOptions,\r\n} from \"./common.js\";\r\nimport { BiBase } from './core/BiBase.js';\r\n\r\n/**\r\n * Binary writer, includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - File path or a ``Buffer`` or ``Uint8Array``. Always found in ``BiWriter.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start writer (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start writer (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``false`` in writer)\r\n * @param {BiOptions[\"growthIncrement\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false. Note: Changes logic in ``.get`` and ``.return``.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always be ``BigInt``.\r\n * \r\n * @since 2.0\r\n */\r\nexport class BiWriter<DataType extends Buffer | Uint8Array, alwaysBigInt extends boolean> extends BiBase<DataType, alwaysBigInt> {\r\n\r\n /**\r\n * Binary writer, includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - ``Buffer`` or ``Uint8Array``. Always found in ``BiWriter.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start writer (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start writer (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``false`` in writer)\r\n * @param {BiOptions[\"windowSize\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false. Note: Changes logic in ``.get`` and ``.return``.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always be ``BigInt``.\r\n */\r\n constructor(input?: string | DataType, options: BiOptions = {\r\n byteOffset: 0,\r\n bitOffset: 0,\r\n endianness: \"little\",\r\n strict: false,\r\n growthIncrement: 0,\r\n enforceBigInt: false,\r\n readOnly: false\r\n }) {\r\n options.byteOffset = options.byteOffset ?? 0;\r\n\r\n options.bitOffset = options.bitOffset ?? 0;\r\n\r\n options.endianness = options.endianness ?? \"little\";\r\n\r\n options.strict = options.strict ?? false;\r\n\r\n options.growthIncrement = options.growthIncrement ?? 1048576;\r\n\r\n options.enforceBigInt = options.enforceBigInt ?? false;\r\n\r\n options.readOnly = options.readOnly ?? false;\r\n\r\n const {\r\n growthIncrement,\r\n } = options;\r\n\r\n if (input == undefined) {\r\n input = new Uint8Array(growthIncrement) as DataType;\r\n\r\n console.warn(`BiWriter started without data. Creating Uint8Array with growthIncrement.`);\r\n }\r\n\r\n super(input, options);\r\n };\r\n\r\n //\r\n // #region Bit Aliases\r\n //\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {number}\r\n */\r\n bit(value: number, bits: number, unsigned?: boolean, endian?: endian): void {\r\n return this.writeBit(value, bits, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {number}\r\n */\r\n ubit(value: number, bits: number, endian?: endian): void {\r\n return this.writeBit(value, bits, true, endian);\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns {number}\r\n */\r\n bitbe(value: number, bits: number, unsigned?: boolean): void {\r\n return this.bit(value, bits, unsigned, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n * @returns {number}\r\n */\r\n ubitbe(value: number, bits: number): void {\r\n return this.bit(value, bits, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n * @returns {number}\r\n */\r\n ubitle(value: number, bits: number): void {\r\n return this.bit(value, bits, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns {number}\r\n */\r\n bitle(value: number, bits: number, unsigned?: boolean): void {\r\n return this.bit(value, bits, unsigned, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit1(value: number) {\r\n this.bit(value, 1);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit1le(value: number) {\r\n this.bit(value, 1, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit1be(value: number) {\r\n this.bit(value, 1, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit1(value: number) {\r\n this.bit(value, 1, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit1le(value: number) {\r\n this.bit(value, 1, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit1be(value: number) {\r\n this.bit(value, 1, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit2(value: number) {\r\n this.bit(value, 2);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit2le(value: number) {\r\n this.bit(value, 2, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit2be(value: number) {\r\n this.bit(value, 2, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit2(value: number) {\r\n this.bit(value, 2, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit2le(value: number) {\r\n this.bit(value, 2, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit2be(value: number) {\r\n this.bit(value, 2, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit3(value: number) {\r\n this.bit(value, 3);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit3le(value: number) {\r\n this.bit(value, 3, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit3be(value: number) {\r\n this.bit(value, 3, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit3(value: number) {\r\n this.bit(value, 3, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit3le(value: number) {\r\n this.bit(value, 3, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit3be(value: number) {\r\n this.bit(value, 3, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit4(value: number) {\r\n this.bit(value, 4);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit4le(value: number) {\r\n this.bit(value, 4, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit4be(value: number) {\r\n this.bit(value, 4, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit4(value: number) {\r\n this.bit(value, 4, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit4le(value: number) {\r\n this.bit(value, 4, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit4be(value: number) {\r\n this.bit(value, 4, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit5(value: number) {\r\n this.bit(value, 5);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit5le(value: number) {\r\n this.bit(value, 5, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit5be(value: number) {\r\n this.bit(value, 5, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit5(value: number) {\r\n this.bit(value, 5, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit5le(value: number) {\r\n this.bit(value, 5, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit5be(value: number) {\r\n this.bit(value, 5, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit6(value: number) {\r\n this.bit(value, 6);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit6le(value: number) {\r\n this.bit(value, 6, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit6be(value: number) {\r\n this.bit(value, 6, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit6(value: number) {\r\n this.bit(value, 6, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit6le(value: number) {\r\n this.bit(value, 6, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit6be(value: number) {\r\n this.bit(value, 6, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit7(value: number) {\r\n this.bit(value, 7);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit7le(value: number) {\r\n this.bit(value, 7, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit7be(value: number) {\r\n this.bit(value, 7, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit7(value: number) {\r\n this.bit(value, 7, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit7le(value: number) {\r\n this.bit(value, 7, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit7be(value: number) {\r\n this.bit(value, 7, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit8(value: number) {\r\n this.bit(value, 8);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit8le(value: number) {\r\n this.bit(value, 8, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit8be(value: number) {\r\n this.bit(value, 8, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit8(value: number) {\r\n this.bit(value, 8, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit8le(value: number) {\r\n this.bit(value, 8, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit8be(value: number) {\r\n this.bit(value, 8, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit9(value: number) {\r\n this.bit(value, 9);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit9le(value: number) {\r\n this.bit(value, 9, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit9be(value: number) {\r\n this.bit(value, 9, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit9(value: number) {\r\n this.bit(value, 9, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit9le(value: number) {\r\n this.bit(value, 9, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit9be(value: number) {\r\n this.bit(value, 9, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit10(value: number) {\r\n this.bit(value, 10);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit10le(value: number) {\r\n this.bit(value, 10, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit10be(value: number) {\r\n this.bit(value, 10, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit10(value: number) {\r\n this.bit(value, 10, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit10le(value: number) {\r\n this.bit(value, 10, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit10be(value: number) {\r\n this.bit(value, 10, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit11(value: number) {\r\n this.bit(value, 11);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit11le(value: number) {\r\n this.bit(value, 11, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit11be(value: number) {\r\n this.bit(value, 11, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit11(value: number) {\r\n this.bit(value, 11, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit11le(value: number) {\r\n this.bit(value, 11, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit11be(value: number) {\r\n this.bit(value, 11, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit12(value: number) {\r\n this.bit(value, 12);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit12le(value: number) {\r\n this.bit(value, 12, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit12be(value: number) {\r\n this.bit(value, 12, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit12(value: number) {\r\n this.bit(value, 12, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit12le(value: number) {\r\n this.bit(value, 12, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit12be(value: number) {\r\n this.bit(value, 12, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit13(value: number) {\r\n this.bit(value, 13);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit13le(value: number) {\r\n this.bit(value, 13, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit13be(value: number) {\r\n this.bit(value, 13, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit13(value: number) {\r\n this.bit(value, 13, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit13le(value: number) {\r\n this.bit(value, 13, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit13be(value: number) {\r\n this.bit(value, 13, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit14(value: number) {\r\n this.bit(value, 14);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit14le(value: number) {\r\n this.bit(value, 14, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit14be(value: number) {\r\n this.bit(value, 14, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit14(value: number) {\r\n this.bit(value, 14, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit14le(value: number) {\r\n this.bit(value, 14, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit14be(value: number) {\r\n this.bit(value, 14, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit15(value: number) {\r\n this.bit(value, 15);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit15le(value: number) {\r\n this.bit(value, 15, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit15be(value: number) {\r\n this.bit(value, 15, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit15(value: number) {\r\n this.bit(value, 15, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit15le(value: number) {\r\n this.bit(value, 15, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit15be(value: number) {\r\n this.bit(value, 15, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit16(value: number) {\r\n this.bit(value, 16);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit16le(value: number) {\r\n this.bit(value, 16, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit16be(value: number) {\r\n this.bit(value, 16, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit16(value: number) {\r\n this.bit(value, 16, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit16le(value: number) {\r\n this.bit(value, 16, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit16be(value: number) {\r\n this.bit(value, 16, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit17(value: number) {\r\n this.bit(value, 17);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit17le(value: number) {\r\n this.bit(value, 17, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit17be(value: number) {\r\n this.bit(value, 17, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit17(value: number) {\r\n this.bit(value, 17, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit17le(value: number) {\r\n this.bit(value, 17, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit17be(value: number) {\r\n this.bit(value, 17, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit18(value: number) {\r\n this.bit(value, 18);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit18le(value: number) {\r\n this.bit(value, 18, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit18be(value: number) {\r\n this.bit(value, 18, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit18(value: number) {\r\n this.bit(value, 18, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit18le(value: number) {\r\n this.bit(value, 18, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit18be(value: number) {\r\n this.bit(value, 18, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit19(value: number) {\r\n this.bit(value, 19);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit19le(value: number) {\r\n this.bit(value, 19, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit19be(value: number) {\r\n this.bit(value, 19, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit19(value: number) {\r\n this.bit(value, 19, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit19le(value: number) {\r\n this.bit(value, 19, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit19be(value: number) {\r\n this.bit(value, 19, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit20(value: number) {\r\n this.bit(value, 20);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit20le(value: number) {\r\n this.bit(value, 20, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit20be(value: number) {\r\n this.bit(value, 20, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit20(value: number) {\r\n this.bit(value, 20, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit20le(value: number) {\r\n this.bit(value, 20, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit20be(value: number) {\r\n this.bit(value, 20, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit21(value: number) {\r\n this.bit(value, 21);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit21le(value: number) {\r\n this.bit(value, 21, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit21be(value: number) {\r\n this.bit(value, 21, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit21(value: number) {\r\n this.bit(value, 21, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit21le(value: number) {\r\n this.bit(value, 21, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit21be(value: number) {\r\n this.bit(value, 21, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit22(value: number) {\r\n this.bit(value, 22);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit22le(value: number) {\r\n this.bit(value, 22, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit22be(value: number) {\r\n this.bit(value, 22, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit22(value: number) {\r\n this.bit(value, 22, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit22le(value: number) {\r\n this.bit(value, 22, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit22be(value: number) {\r\n this.bit(value, 22, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit23(value: number) {\r\n this.bit(value, 23);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit23le(value: number) {\r\n this.bit(value, 23, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit23be(value: number) {\r\n this.bit(value, 23, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit23(value: number) {\r\n this.bit(value, 23, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit23le(value: number) {\r\n this.bit(value, 23, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit23be(value: number) {\r\n this.bit(value, 23, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit24(value: number) {\r\n this.bit(value, 24);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit24le(value: number) {\r\n this.bit(value, 24, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit24be(value: number) {\r\n this.bit(value, 24, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit24(value: number) {\r\n this.bit(value, 24, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit24le(value: number) {\r\n this.bit(value, 24, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit24be(value: number) {\r\n this.bit(value, 24, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit25(value: number) {\r\n this.bit(value, 25);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit25le(value: number) {\r\n this.bit(value, 25, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit25be(value: number) {\r\n this.bit(value, 25, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit25(value: number) {\r\n this.bit(value, 25, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit25le(value: number) {\r\n this.bit(value, 25, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit25be(value: number) {\r\n this.bit(value, 25, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit26(value: number) {\r\n this.bit(value, 26);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit26le(value: number) {\r\n this.bit(value, 26, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit26be(value: number) {\r\n this.bit(value, 26, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit26(value: number) {\r\n this.bit(value, 26, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit26le(value: number) {\r\n this.bit(value, 26, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit26be(value: number) {\r\n this.bit(value, 26, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit27(value: number) {\r\n this.bit(value, 27);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit27le(value: number) {\r\n this.bit(value, 27, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit27be(value: number) {\r\n this.bit(value, 27, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit27(value: number) {\r\n this.bit(value, 27, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit27le(value: number) {\r\n this.bit(value, 27, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit27be(value: number) {\r\n this.bit(value, 27, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit28(value: number) {\r\n this.bit(value, 28);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit28le(value: number) {\r\n this.bit(value, 28, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit28be(value: number) {\r\n this.bit(value, 28, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit28(value: number) {\r\n this.bit(value, 28, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit28le(value: number) {\r\n this.bit(value, 28, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit28be(value: number) {\r\n this.bit(value, 28, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit29(value: number) {\r\n this.bit(value, 29);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit29le(value: number) {\r\n this.bit(value, 29, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit29be(value: number) {\r\n this.bit(value, 29, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit29(value: number) {\r\n this.bit(value, 29, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit29le(value: number) {\r\n this.bit(value, 29, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit29be(value: number) {\r\n this.bit(value, 29, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit30(value: number) {\r\n this.bit(value, 30);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit30le(value: number) {\r\n this.bit(value, 30, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit30be(value: number) {\r\n this.bit(value, 30, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit30(value: number) {\r\n this.bit(value, 30, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit30le(value: number) {\r\n this.bit(value, 30, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit30be(value: number) {\r\n this.bit(value, 30, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit31(value: number) {\r\n this.bit(value, 31);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit31le(value: number) {\r\n this.bit(value, 31, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit31be(value: number) {\r\n this.bit(value, 31, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit31(value: number) {\r\n this.bit(value, 31, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit31le(value: number) {\r\n this.bit(value, 31, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit31be(value: number) {\r\n this.bit(value, 31, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit32(value: number) {\r\n this.bit(value, 32);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit32le(value: number) {\r\n this.bit(value, 32, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set bit32be(value: number) {\r\n this.bit(value, 32, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit32(value: number) {\r\n this.bit(value, 32, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit32le(value: number) {\r\n this.bit(value, 32, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set ubit32be(value: number) {\r\n this.bit(value, 32, true, \"big\");\r\n };\r\n\r\n //\r\n // #region byte write\r\n //\r\n\r\n /**\r\n * Write byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set byte(value: number) {\r\n this.writeByte(value);\r\n };\r\n\r\n /**\r\n * Write byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set int8(value: number) {\r\n this.writeByte(value);\r\n };\r\n\r\n /**\r\n * Write unsigned byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uint8(value: number) {\r\n this.writeByte(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set ubyte(value: number) {\r\n this.writeByte(value, true);\r\n };\r\n\r\n //\r\n // #region short writes\r\n //\r\n\r\n /**\r\n * Write int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set int16(value: number) {\r\n this.writeInt16(value);\r\n };\r\n\r\n /**\r\n * Write int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set short(value: number) {\r\n this.writeInt16(value);\r\n };\r\n\r\n /**\r\n * Write int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set word(value: number) {\r\n this.writeInt16(value);\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uint16(value: number) {\r\n this.writeInt16(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set ushort(value: number) {\r\n this.writeInt16(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uword(value: number) {\r\n this.writeInt16(value, true);\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set int16be(value: number) {\r\n this.writeInt16(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set shortbe(value: number) {\r\n this.writeInt16(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set wordbe(value: number) {\r\n this.writeInt16(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uint16be(value: number) {\r\n this.writeInt16(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set ushortbe(value: number) {\r\n this.writeInt16(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uwordbe(value: number) {\r\n this.writeInt16(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set int16le(value: number) {\r\n this.writeInt16(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set shortle(value: number) {\r\n this.writeInt16(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set wordle(value: number) {\r\n this.writeInt16(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uint16le(value: number) {\r\n this.writeInt16(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set ushortle(value: number) {\r\n this.writeInt16(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uwordle(value: number) {\r\n this.writeInt16(value, true, \"little\");\r\n };\r\n\r\n //\r\n // #region half float\r\n //\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set half(value: number) {\r\n this.writeHalfFloat(value);\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set halffloat(value: number) {\r\n this.writeHalfFloat(value);\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set halffloatbe(value: number) {\r\n this.writeHalfFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set halfbe(value: number) {\r\n this.writeHalfFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set halffloatle(value: number) {\r\n this.writeHalfFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set halfle(value: number) {\r\n this.writeHalfFloat(value, \"little\");\r\n };\r\n\r\n //\r\n // #region int32 write\r\n //\r\n\r\n /**\r\n * Write int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set int(value: number) {\r\n this.writeInt32(value);\r\n };\r\n\r\n /**\r\n * Write int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set int32(value: number) {\r\n this.writeInt32(value);\r\n };\r\n\r\n /**\r\n * Write int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set double(value: number) {\r\n this.writeInt32(value);\r\n };\r\n\r\n /**\r\n * Write int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set long(value: number) {\r\n this.writeInt32(value);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uint32(value: number) {\r\n this.writeInt32(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uint(value: number) {\r\n this.writeInt32(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set udouble(value: number) {\r\n this.writeInt32(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set ulong(value: number) {\r\n this.writeInt32(value, true);\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set int32le(value: number) {\r\n this.writeInt32(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set intle(value: number) {\r\n this.writeInt32(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set doublele(value: number) {\r\n this.writeInt32(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set longle(value: number) {\r\n this.writeInt32(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uint32le(value: number) {\r\n this.writeInt32(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uintle(value: number) {\r\n this.writeInt32(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set udoublele(value: number) {\r\n this.writeInt32(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set ulongle(value: number) {\r\n this.writeInt32(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set intbe(value: number) {\r\n this.writeInt32(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set int32be(value: number) {\r\n this.writeInt32(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set doublebe(value: number) {\r\n this.writeInt32(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set longbe(value: number) {\r\n this.writeInt32(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uint32be(value: number) {\r\n this.writeInt32(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set uintbe(value: number) {\r\n this.writeInt32(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n set udoublebe(value: number) {\r\n this.writeInt32(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int\r\n */\r\n set ulongbe(value: number) {\r\n this.writeInt32(value, true, \"big\");\r\n };\r\n\r\n //\r\n // #region float write\r\n //\r\n\r\n /**\r\n * Write float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set float(value: number) {\r\n this.writeFloat(value);\r\n };\r\n\r\n /**\r\n * Write float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set floatle(value: number) {\r\n this.writeFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set floatbe(value: number) {\r\n this.writeFloat(value, \"big\");\r\n };\r\n\r\n //\r\n // #region int64 write\r\n //\r\n\r\n /**\r\n * Write 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set int64(value: BigValue) {\r\n this.writeInt64(value);\r\n };\r\n\r\n /**\r\n * Write 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set quad(value: BigValue) {\r\n this.writeInt64(value);\r\n };\r\n\r\n /**\r\n * Write 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set bigint(value: BigValue) {\r\n this.writeInt64(value);\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set uint64(value: BigValue) {\r\n this.writeInt64(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set ubigint(value: BigValue) {\r\n this.writeInt64(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set uquad(value: BigValue) {\r\n this.writeInt64(value, true,);\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set int64le(value: BigValue) {\r\n this.writeInt64(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set bigintle(value: BigValue) {\r\n this.writeInt64(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set quadle(value: BigValue) {\r\n this.writeInt64(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set uint64le(value: BigValue) {\r\n this.writeInt64(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set ubigintle(value: BigValue) {\r\n this.writeInt64(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set uquadle(value: BigValue) {\r\n this.writeInt64(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set int64be(value: BigValue) {\r\n this.writeInt64(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set bigintbe(value: BigValue) {\r\n this.writeInt64(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set quadbe(value: BigValue) {\r\n this.writeInt64(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set uint64be(value: BigValue) {\r\n this.writeInt64(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set ubigintbe(value: BigValue) {\r\n this.writeInt64(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n set uquadbe(value: BigValue) {\r\n this.writeInt64(value, true, \"big\");\r\n };\r\n\r\n //\r\n // #region doublefloat\r\n //\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set doublefloat(value: number) {\r\n this.writeDoubleFloat(value);\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set dfloat(value: number) {\r\n this.writeDoubleFloat(value);\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set dfloatbe(value: number) {\r\n this.writeDoubleFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set doublefloatbe(value: number) {\r\n this.writeDoubleFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set dfloatle(value: number) {\r\n this.writeDoubleFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n set doublefloatle(value: number) {\r\n this.writeDoubleFloat(value, \"little\");\r\n };\r\n\r\n //\r\n // #region string\r\n //\r\n\r\n /**\r\n * Writes string, use options object for different types.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions?} options\r\n * @param {stringOptions[\"length\"]?} options.length - for fixed length, non-terminate value utf strings\r\n * @param {stringOptions[\"stringType\"]?} options.stringType - ascii, utf-8, utf-16, utf-32, pascal, wide-pascal or double-wide-pascal\r\n * @param {stringOptions[\"terminateValue\"]?} options.terminateValue - only with stringType: \"utf\"\r\n * @param {stringOptions[\"lengthWriteSize\"]?} options.lengthWriteSize - for pascal strings. 1, 2 or 4 byte length write size\r\n * @param {stringOptions[\"encoding\"]?} options.encoding - TextEncoder accepted types \r\n * @param {stringOptions[\"endian\"]?} options.endian - for utf-16, utf-32, wide-pascal or double-wide-pascal\r\n */\r\n string(string: string, options: stringOptions = this.strDefaults): void {\r\n return this.writeString(string, options);\r\n };\r\n\r\n /**\r\n * Writes string using setting from .strDefaults\r\n * \r\n * Default is ``utf-8``\r\n * \r\n * @param {string} string - text string\r\n */\r\n set str(string: string) {\r\n this.writeString(string, this.strDefaults);\r\n };\r\n\r\n /**\r\n * Writes UTF-8 (C) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n utf8string(string: string, length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.string(string, { stringType: \"utf-8\", encoding: \"utf-8\", length: length, terminateValue: terminateValue });\r\n };\r\n\r\n /**\r\n * Writes UTF-8 (C) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n cstring(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.utf8string(string, length, terminateValue);\r\n };\r\n\r\n /**\r\n * Writes ANSI string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n ansistring(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.string(string, { stringType: \"utf-8\", encoding: \"windows-1252\", length: length, terminateValue: terminateValue });\r\n };\r\n\r\n /**\r\n * Writes latin1 string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n latin1string(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.string(string, { stringType: \"utf-8\", encoding: \"iso-8859-1\", length: length, terminateValue: terminateValue });\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"endian\"]} endian - for wide-pascal and utf-16\r\n */\r\n utf16string(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"], endian?: stringOptions[\"endian\"]): void {\r\n return this.string(string, { stringType: \"utf-16\", encoding: \"utf-16\", length: length, terminateValue: terminateValue, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"endian\"]} endian - for wide-pascal and utf-16\r\n */\r\n unistring(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"], endian?: stringOptions[\"endian\"]): void {\r\n return this.utf16string(string, length, terminateValue, endian);\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n utf16stringle(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.unistring(string, length, terminateValue, \"little\");\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n unistringle(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.utf16stringle(string, length, terminateValue);\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n utf16stringbe(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.unistring(string, length, terminateValue, \"big\");\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n unistringbe(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.utf16stringbe(string, length, terminateValue);\r\n };\r\n\r\n /**\r\n * Writes UTF-32 (Unicode) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"endian\"]} endian - for wide-pascal and utf-16\r\n */\r\n utf32string(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"], endian?: stringOptions[\"endian\"]): void {\r\n return this.string(string, { stringType: \"utf-32\", encoding: \"utf-32\", length: length, terminateValue: terminateValue, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes UTF-32 (Unicode) string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n utf32stringle(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.utf32string(string, length, terminateValue, \"little\");\r\n };\r\n\r\n /**\r\n * Writes UTF-32 (Unicode) string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n utf32stringbe(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]): void {\r\n return this.utf32string(string, length, terminateValue, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little`` for 2 or 4 byte length write size\r\n */\r\n pstring(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"], endian?: stringOptions[\"endian\"]): void {\r\n return this.string(string, { stringType: \"pascal\", encoding: \"utf-8\", lengthWriteSize: lengthWriteSize, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes Pascal string 1 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little`` for 2 or 4 byte length write size\r\n */\r\n pstring1(string: string, endian?: stringOptions[\"endian\"]): void {\r\n return this.pstring(string, 1, endian);\r\n };\r\n\r\n /**\r\n * Writes Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n pstring1le(string: string): void {\r\n return this.pstring1(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n pstring1be(string: string): void {\r\n return this.pstring1(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 2 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n pstring2(string: string, endian?: stringOptions[\"endian\"]): void {\r\n return this.pstring(string, 2, endian);\r\n };\r\n\r\n /**\r\n * Writes Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n pstring2le(string: string): void {\r\n return this.pstring2(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n pstring2be(string: string): void {\r\n return this.pstring2(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 4 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n pstring4(string: string, endian?: stringOptions[\"endian\"]): void {\r\n return this.pstring(string, 4, endian);\r\n };\r\n\r\n /**\r\n * Writes Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n pstring4le(string: string): void {\r\n return this.pstring4(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n pstring4be(string: string): void {\r\n return this.pstring4(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n wpstring(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"], endian?: stringOptions[\"endian\"]): void {\r\n return this.string(string, { stringType: \"wide-pascal\", encoding: \"utf-16\", lengthWriteSize: lengthWriteSize, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n */\r\n wpstringle(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"]): void {\r\n return this.wpstring(string, lengthWriteSize, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n */\r\n wpstringbe(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"]): void {\r\n return this.wpstring(string, lengthWriteSize, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n wpstring1(string: string, endian?: stringOptions[\"endian\"]): void {\r\n return this.wpstring(string, 1, endian);\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n wpstring1le(string: string): void {\r\n return this.wpstring1(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n wpstring1be(string: string): void {\r\n return this.wpstring1(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 2 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n wpstring2(string: string, endian?: stringOptions[\"endian\"]): void {\r\n return this.wpstring(string, 2, endian);\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n wpstring2le(string: string): void {\r\n return this.wpstring2(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n wpstring2be(string: string): void {\r\n return this.wpstring2(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 4 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n wpstring4(string: string, endian?: stringOptions[\"endian\"]): void {\r\n return this.wpstring(string, 4, endian);\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n wpstring4le(string: string): void {\r\n return this.wpstring4(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n wpstring4be(string: string): void {\r\n return this.wpstring4(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n dwpstring(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"], endian?: stringOptions[\"endian\"]): void {\r\n return this.string(string, { stringType: \"double-wide-pascal\", encoding: \"utf-32\", lengthWriteSize: lengthWriteSize, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n */\r\n dwpstringle(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"]): void {\r\n return this.dwpstring(string, lengthWriteSize, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n */\r\n dwpstringbe(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"]): void {\r\n return this.dwpstring(string, lengthWriteSize, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n dwpstring1(string: string, endian?: stringOptions[\"endian\"]): void {\r\n return this.dwpstring(string, 1, endian);\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n dwpstring1le(string: string): void {\r\n return this.dwpstring1(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n dwpstring1be(string: string): void {\r\n return this.dwpstring1(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 2 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n dwpstring2(string: string, endian?: stringOptions[\"endian\"]): void {\r\n return this.dwpstring(string, 2, endian);\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n dwpstring2le(string: string): void {\r\n return this.dwpstring2(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n dwpstring2be(string: string): void {\r\n return this.dwpstring2(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 4 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n dwpstring4(string: string, endian?: stringOptions[\"endian\"]): void {\r\n return this.dwpstring(string, 4, endian);\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n dwpstring4le(string: string): void {\r\n return this.dwpstring4(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n dwpstring4be(string: string): void {\r\n return this.dwpstring4(string, \"big\");\r\n };\r\n};","/**\r\n * @file BiReaderAsync / Writer base for working in sync Buffers or full file reads. Node and Browser.\r\n */\r\n\r\n\r\n// #region Imports\r\n\r\nvar fs: typeof import('fs/promises');\r\nimport {\r\n // types\r\n BiOptions,\r\n BigValue,\r\n endian,\r\n // options\r\n hexdumpOptions,\r\n stringOptions,\r\n // checks\r\n hasBigInt,\r\n canInt16,\r\n canFloat16,\r\n canInt32,\r\n canFloat32,\r\n canBigInt64,\r\n canFloat64,\r\n isSafeInt64,\r\n isBuffer,\r\n isUint8Array,\r\n isBufferOrUint8Array,\r\n // helpers\r\n numberSafe,\r\n normalizeBitOffset,\r\n textEncode,\r\n _hexDump,\r\n _AND,\r\n _OR,\r\n _XOR,\r\n _NOT,\r\n _RSHIFT,\r\n _LSHIFT,\r\n _ADD,\r\n _rbit,\r\n _wbit,\r\n _rint16,\r\n _wint16,\r\n _rhalffloat,\r\n _whalffloat,\r\n _wint32,\r\n _rint32,\r\n _rfloat,\r\n _wfloat,\r\n _rint64,\r\n _wint64,\r\n _rdfloat,\r\n _wdfloat,\r\n _rstringAsync,\r\n _wstringAsync\r\n} from '../common.js';\r\n\r\n(async function () {\r\n if (typeof process !== 'undefined' && process.versions && process.versions.node) {\r\n // We are in Node.js\r\n try {\r\n if (typeof require !== 'undefined') {\r\n if (typeof fs === \"undefined\") {\r\n fs = require('fs/promises');\r\n }\r\n } else {\r\n if (typeof fs === \"undefined\") {\r\n fs = await import('fs/promises');\r\n }\r\n }\r\n } catch (error) {\r\n console.error('Failed to load fs module:', error);\r\n }\r\n }\r\n})();\r\n\r\nasync function _fileExists(filePath: string) {\r\n try {\r\n await fs.access(filePath, fs.constants.F_OK);\r\n\r\n return true; // File exists\r\n } catch (error) {\r\n // @ts-ignore\r\n return false;\r\n }\r\n};\r\n\r\n// #region Buffer Dummies\r\n\r\nconst buff2ByteDummy = new Uint8Array(2);\r\n\r\nconst view2ByteDummy = new DataView(buff2ByteDummy.buffer, buff2ByteDummy.byteOffset, buff2ByteDummy.byteLength);\r\n\r\nconst buff4ByteDummy = new Uint8Array(4);\r\n\r\nconst view4ByteDummy = new DataView(buff4ByteDummy.buffer, buff4ByteDummy.byteOffset, buff4ByteDummy.byteLength);\r\n\r\nconst buff8ByteDummy = new Uint8Array(8);\r\n\r\nconst view8ByteDummy = new DataView(buff8ByteDummy.buffer, buff8ByteDummy.byteOffset, buff8ByteDummy.byteLength);\r\n\r\n/**\r\n * Base class for BiReader and BiWriter\r\n */\r\nexport class BiBaseAsync<DataType extends Buffer | Uint8Array, alwaysBigInt extends boolean> {\r\n /**\r\n * Endianness of default read. \r\n * @type {endian}\r\n */\r\n endian: endian = \"little\";\r\n /**\r\n * Current read byte location.\r\n */\r\n #offset: number = 0;\r\n /**\r\n * Current read byte's bit location. 0 - 7\r\n */\r\n #insetBit: number = 0;\r\n /**\r\n * Size in bytes of the current buffer.\r\n */\r\n size: number = 0;\r\n /**\r\n * Size in bits of the current buffer.\r\n */\r\n bitSize: number = 0;\r\n /**\r\n * Allows the buffer to extend reading or writing outside of current size\r\n */\r\n strict: boolean = false;\r\n /**\r\n * Console log a hexdump on error.\r\n */\r\n errorDump: boolean = false;\r\n /**\r\n * Master Buffer\r\n */\r\n #data: DataType = null;\r\n /**\r\n * DataView of master Buffer\r\n */\r\n #view: DataView = null;\r\n /**\r\n * When the data buffer needs to be extended while strict mode is ``false``, this will be the amount it extends.\r\n * \r\n * Otherwise it extends just the amount of the next written value.\r\n * \r\n * This can greatly speed up data writes when large files are being written.\r\n * \r\n * NOTE: Using ``BiWriterAsync.get`` or ``BiWriterAsync.return`` will now remove all data after the current write position. Use ``BiWriterAsync.data`` to get the full buffer instead.\r\n */\r\n growthIncrement: number = 1048576;\r\n /**\r\n * Open file handle\r\n */\r\n fd: import('fs/promises').FileHandle = null;\r\n /**\r\n * Current file path\r\n */\r\n filePath: string;\r\n /**\r\n * File write mode\r\n */\r\n fsMode: \"r+\" | \"r\" = \"r\";\r\n /**\r\n * The settings that used when using the .str getter / setter\r\n */\r\n strDefaults: stringOptions = { stringType: \"utf-8\", terminateValue: 0x0 };\r\n /**\r\n * All int64 reads will return as bigint type\r\n */\r\n enforceBigInt: alwaysBigInt = null;\r\n /**\r\n * Not using a file reader.\r\n */\r\n isMemoryMode: boolean = false;\r\n /**\r\n * If data can not be written to the buffer.\r\n */\r\n readOnly: boolean;\r\n\r\n /**\r\n * Get the current buffer data.\r\n * \r\n * Use async {@link getData} while in file mode!\r\n */\r\n get data() {\r\n return this.#data;\r\n };\r\n\r\n /**\r\n * Get the current buffer data.\r\n */\r\n async getData(){\r\n return await this.get();\r\n };\r\n\r\n set setData(data: DataType) {\r\n if (this.isBufferOrUint8Array(data)) {\r\n this.#data = data;\r\n\r\n this.#updateView();\r\n\r\n this.size = this.#data.length;\r\n\r\n this.bitSize = this.size * 8;\r\n }\r\n };\r\n\r\n wasExpanded: boolean = false;\r\n\r\n /**\r\n * Get the DataView of current buffer data.\r\n */\r\n get view() {\r\n return this.#view;\r\n }; \r\n\r\n // ASYNC ONLY\r\n\r\n /**\r\n * array of loaded data chunks\r\n */\r\n chunks: DataType[] = [];\r\n /**\r\n * Promises for data chunks\r\n */\r\n chunkPromises: Promise<DataType>[] = [];\r\n /**\r\n * Edited data chunks\r\n */\r\n dirtyChunks: Set<number> = new Set();\r\n /**\r\n * The amount of data to \"chunk\" and read a time from the file\r\n * \r\n * When set to 0, reads whole file at once.\r\n */\r\n windowSize: number = 4096;\r\n /**\r\n * Data is finished loading\r\n */\r\n isFullyLoaded: boolean = false;\r\n /**\r\n * Array of all chunks to quickly load all parts\r\n */\r\n loadAllPromise: Promise<void> = null;\r\n\r\n constructor(input: string | DataType, options: BiOptions = {}) {\r\n const {\r\n byteOffset,\r\n bitOffset,\r\n endianness,\r\n strict,\r\n growthIncrement,\r\n enforceBigInt,\r\n readOnly,\r\n windowSize,\r\n } = options;\r\n\r\n if (typeof strict != \"boolean\") {\r\n throw new TypeError(\"Strict mode must be true or false\");\r\n }\r\n\r\n this.#offset = byteOffset;\r\n\r\n if((bitOffset ?? 0) != 0){\r\n this.#offset = Math.floor(byteOffset / 8);\r\n\r\n this.#insetBit = byteOffset % 8;\r\n }\r\n\r\n this.windowSize = windowSize;\r\n\r\n this.readOnly = !!readOnly;\r\n\r\n this.strict = this.readOnly ? true : strict;\r\n\r\n this.fsMode = this.readOnly ? 'r' : 'r+';\r\n\r\n this.enforceBigInt = !!enforceBigInt as alwaysBigInt;\r\n\r\n if (this.enforceBigInt && !hasBigInt) {\r\n this.enforceBigInt = false as alwaysBigInt;\r\n }\r\n\r\n this.growthIncrement = growthIncrement;\r\n\r\n if (typeof endianness != \"string\" || !(endianness == \"big\" || endianness == \"little\")) {\r\n throw new TypeError(\"Endian must be big or little\");\r\n }\r\n\r\n this.endian = endianness as endian;\r\n\r\n if (typeof input === 'string') {\r\n if (typeof Buffer === 'undefined' || typeof fs === \"undefined\") {\r\n throw new Error(\"Can't load file outside of Node.\");\r\n }\r\n\r\n this.filePath = input;\r\n\r\n this.isMemoryMode = false;\r\n } else if (this.isBufferOrUint8Array(input)) {\r\n this.setData = input as DataType;\r\n\r\n this.isMemoryMode = true;\r\n\r\n this.filePath = null;\r\n\r\n this.windowSize = 0;\r\n\r\n this.#initMemory();\r\n } else {\r\n throw new TypeError('Source must be a file path (string) or Uint8Array/Buffer');\r\n }\r\n };\r\n\r\n /**\r\n * Settings for when using .str\r\n * \r\n * @param {stringOptions} settings options to use with .str\r\n */\r\n set strSettings(settings: stringOptions) {\r\n this.strDefaults.encoding = settings.encoding;\r\n\r\n this.strDefaults.endian = settings.endian;\r\n\r\n this.strDefaults.length = settings.length;\r\n\r\n this.strDefaults.lengthReadSize = settings.lengthReadSize;\r\n\r\n this.strDefaults.lengthWriteSize = settings.lengthWriteSize;\r\n\r\n this.strDefaults.stringType = settings.stringType;\r\n\r\n this.strDefaults.stripNull = settings.stripNull;\r\n\r\n this.strDefaults.terminateValue = settings.terminateValue;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INTERNALS\r\n ///////////////////////////////\r\n\r\n /**\r\n * Checks if obj is an Uint8Array or a Buffer\r\n */\r\n isBufferOrUint8Array(obj: any): obj is Buffer | Uint8Array {\r\n return isBufferOrUint8Array(obj);\r\n };\r\n\r\n /**\r\n * Checks if obj is a Buffer\r\n */\r\n isBuffer(obj: any): obj is Buffer {\r\n return isBuffer(obj);\r\n };\r\n\r\n /**\r\n * Checks if obj is an Uint8Array\r\n */\r\n isUint8Array(obj: any): obj is Uint8Array {\r\n return isUint8Array(obj);\r\n };\r\n\r\n /**\r\n * Internal update size\r\n * \r\n * run after setting data\r\n */\r\n async #updateSize() {\r\n if (this.isMemoryMode) {\r\n this.size = this.data.length;\r\n\r\n this.bitSize = this.size * 8;\r\n\r\n return;\r\n }\r\n\r\n if (typeof fs === \"undefined\") {\r\n throw new Error(\"Can't load file outside Node.\");\r\n }\r\n\r\n if (this.fd != null) {\r\n try {\r\n const stat = await this.fd.stat();\r\n\r\n this.size = stat.size;\r\n\r\n this.bitSize = this.size * 8;\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Call this after everytime we set/replace `this.data`\r\n */\r\n #updateView(): void {\r\n if (this.#data) {\r\n this.#view = new DataView(\r\n this.#data.buffer,\r\n this.#data.byteOffset ?? 0,\r\n this.#data.byteLength\r\n );\r\n }\r\n };\r\n\r\n /**\r\n * `this.fd` must be null and not in memory mode\r\n */\r\n async #initFile() {\r\n if (this.isMemoryMode || this.fd != null) {\r\n return;\r\n }\r\n\r\n if (!(await _fileExists(this.filePath))) {\r\n await fs.writeFile(this.filePath, \"\");\r\n }\r\n\r\n try {\r\n this.fd = await fs.open(this.filePath, this.fsMode);\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n\r\n await this.#updateSize();\r\n\r\n const numChunks = this.#getNumChunks();\r\n\r\n this.chunks = new Array(numChunks).fill(null);\r\n\r\n this.chunkPromises = new Array(numChunks).fill(null);\r\n\r\n if (this.windowSize == 0) {\r\n this.loadAllPromise = this.#preloadAllChunks();\r\n } else {\r\n this.loadAllPromise = Promise.resolve();\r\n }\r\n };\r\n\r\n /**\r\n * Not for file mode\r\n */\r\n #initMemory() {\r\n if (!this.isMemoryMode) {\r\n return;\r\n }\r\n\r\n if(this.isFullyLoaded){\r\n return;\r\n }\r\n\r\n this.size = this.data.length;\r\n\r\n this.bitSize = this.size * 8;\r\n\r\n const numChunks = this.#getNumChunks();\r\n\r\n this.chunks = new Array(numChunks).fill(null);\r\n\r\n this.chunkPromises = new Array(numChunks).fill(null);\r\n\r\n this.isFullyLoaded = true;\r\n\r\n this.loadAllPromise = null;\r\n };\r\n\r\n /**\r\n * For when there is a full file read\r\n */\r\n #getChunkIndex(offset: number) {\r\n return this.windowSize === 0 ? 0 : Math.floor(offset / this.windowSize);\r\n };\r\n\r\n /**\r\n * For when there is a full file read\r\n */\r\n #getNumChunks() {\r\n return this.windowSize === 0 ? 1 : Math.ceil(this.size / this.windowSize);\r\n };\r\n\r\n /**\r\n * When the whole file is loaded at once\r\n */\r\n async #preloadAllChunks() {\r\n const promises = [];\r\n\r\n for (let i = 0; i < this.chunks.length; i++) {\r\n promises.push(this.#ensureChunkLoaded(i));\r\n }\r\n\r\n await Promise.all(promises);\r\n\r\n this.isFullyLoaded = true;\r\n };\r\n\r\n /**\r\n * Checks the chunk is loaded\r\n * \r\n * @param {number} chunkIndex \r\n */\r\n async #ensureChunkLoaded(chunkIndex: number): Promise<DataType> {\r\n if (this.windowSize === 0) {\r\n chunkIndex = 0;\r\n }\r\n\r\n if (chunkIndex >= this.chunks.length) {\r\n return null;\r\n }\r\n\r\n if (this.chunks[chunkIndex] !== null) {\r\n return this.chunks[chunkIndex];\r\n }\r\n\r\n if (this.isMemoryMode) {\r\n const start = chunkIndex * this.windowSize;\r\n\r\n const end = Math.min(start + this.windowSize, this.size);\r\n\r\n this.chunks[chunkIndex] = this.data.subarray(start, end) as DataType;\r\n\r\n return this.chunks[chunkIndex];\r\n }\r\n\r\n if (this.chunkPromises[chunkIndex]) {\r\n return await this.chunkPromises[chunkIndex];\r\n }\r\n\r\n const promise = this.#performChunkLoad(chunkIndex);\r\n\r\n this.chunkPromises[chunkIndex] = promise as Promise<DataType>;\r\n\r\n return await promise as DataType;\r\n };\r\n\r\n /**\r\n * Gets needed chunk\r\n * \r\n * @param {number} chunkIndex \r\n */\r\n async #performChunkLoad(chunkIndex: number) {\r\n const start = chunkIndex * this.windowSize;\r\n\r\n const length = Math.min(this.windowSize, this.size - start);\r\n\r\n const buffer = Buffer.alloc(length);\r\n\r\n await this.fd.read(buffer, 0, length, start);\r\n\r\n this.chunks[chunkIndex] = buffer as DataType;\r\n\r\n return buffer;\r\n };\r\n\r\n /**\r\n * Makes sure the needed size is loaded \r\n * \r\n * @param {number} offset \r\n * @param {number} length \r\n */\r\n async #ensureRangeLoaded(offset: number, length: number) {\r\n const needed = offset + length;\r\n\r\n if (needed > this.size) {\r\n if (this.strict || this.readOnly) {\r\n throw new Error(`Operation exceeds file size (${needed} > ${this.size})`);\r\n }\r\n\r\n await this.#confrimSize(needed);\r\n }\r\n\r\n const startChunk = this.#getChunkIndex(offset);\r\n\r\n const endChunk = this.#getChunkIndex(offset + length - 1);\r\n\r\n const promises = [];\r\n\r\n for (let i = startChunk; i <= endChunk && i < this.chunks.length; i++) {\r\n if (this.chunks[i] === null) {\r\n promises.push(this.#ensureChunkLoaded(i));\r\n }\r\n }\r\n\r\n await Promise.all(promises);\r\n };\r\n\r\n /**\r\n * Get bytes without changing offset\r\n * \r\n * @param {number} offset \r\n * @param {number} length \r\n */\r\n async #peekBytes(offset: number, length: number) {\r\n await this.open();\r\n\r\n if (length <= 0) {\r\n if (this.isMemoryMode) {\r\n if (this.isBuffer(this.data)) {\r\n return Buffer.alloc(0) as DataType;\r\n } else {\r\n return new Uint8Array(0) as DataType;\r\n }\r\n } else {\r\n return Buffer.alloc(0) as DataType;\r\n }\r\n }\r\n\r\n await this.#ensureRangeLoaded(offset, length);\r\n\r\n var result: DataType;\r\n\r\n if (this.isMemoryMode) {\r\n return this.data.subarray(offset, offset + length) as DataType;\r\n } else {\r\n result = Buffer.alloc(length) as DataType;\r\n }\r\n\r\n let pos = offset;\r\n\r\n let writePos = 0;\r\n\r\n while (writePos < length) {\r\n const chunkIndex = this.#getChunkIndex(pos);\r\n\r\n const chunk = this.chunks[chunkIndex];\r\n\r\n const chunkOffset = pos % this.windowSize;\r\n\r\n const toCopy = Math.min(length - writePos, chunk.length - chunkOffset);\r\n\r\n result.set(chunk.subarray(chunkOffset, chunkOffset + toCopy), writePos);\r\n\r\n writePos += toCopy;\r\n\r\n pos += toCopy;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n /**\r\n * write bytes internal\r\n * \r\n * @param {number} offset \r\n * @param {Uint8Array | Buffer | number[]} data \r\n */\r\n async #writeBytesAt(offset: number, data: Uint8Array | Buffer | number[]) {\r\n await this.open();\r\n\r\n if (data.length === 0) {\r\n return;\r\n }\r\n\r\n await this.#ensureRangeLoaded(offset, data.length);\r\n\r\n let pos = offset;\r\n\r\n let readPos = 0;\r\n\r\n if(this.isMemoryMode){\r\n for (let i = 0, n = offset; i < data.length; i++, n++) {\r\n this.#data[n] = data[i];\r\n }\r\n\r\n return;\r\n }\r\n\r\n while (readPos < data.length) {\r\n const chunkIndex = this.#getChunkIndex(pos);\r\n\r\n const chunk = this.chunks[chunkIndex];\r\n\r\n const chunkOffset = pos % this.windowSize;\r\n\r\n const toCopy = Math.min(data.length - readPos, chunk.length - chunkOffset);\r\n\r\n var sub: ArrayLike<number>;\r\n\r\n if (this.isBufferOrUint8Array(data)) {\r\n sub = data.subarray(readPos, readPos + toCopy);\r\n } else {\r\n sub = data.slice(readPos, readPos + toCopy);\r\n }\r\n\r\n chunk.set(sub, chunkOffset);\r\n\r\n this.dirtyChunks.add(chunkIndex);\r\n\r\n readPos += toCopy;\r\n\r\n pos += toCopy;\r\n }\r\n };\r\n\r\n /**\r\n * Checks loaded size\r\n * \r\n * Will set `wasExpanded` if expanded\r\n * \r\n * @param {number} neededSize \r\n */\r\n async #confrimSize(neededSize: number) {\r\n // check if the current request fits in range\r\n if (neededSize <= this.size) {\r\n return;\r\n }\r\n\r\n var targetSize = neededSize;\r\n // now adjust the size if less to `growthIncrement` factor\r\n if (targetSize > this.size) {\r\n if (this.strict || this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(`\\x1b[33m[Strict mode]\\x1b[0m: Reached end of data: ` + neededSize + \" at \" + this.#offset + \" of \" + this.size);\r\n }\r\n\r\n if (this.growthIncrement != 0) {\r\n this.wasExpanded = true;\r\n\r\n targetSize = Math.ceil(neededSize / this.growthIncrement) * this.growthIncrement;\r\n }\r\n\r\n await this.#extendArray(targetSize);\r\n } \r\n };\r\n\r\n /**\r\n * extends the data\r\n * \r\n * @param {number} targetSize \r\n */\r\n async #extendArray(targetSize: number) {\r\n await this.flush();\r\n\r\n if (this.isMemoryMode) {\r\n const toPadd = targetSize - this.size;\r\n\r\n var newData: DataType;\r\n\r\n if (isBuffer(this.#data)) {\r\n var paddbuffer = Buffer.alloc(toPadd);\r\n\r\n newData = Buffer.concat([this.#data, paddbuffer]) as DataType;\r\n } else {\r\n newData = new Uint8Array(this.size + toPadd) as DataType;\r\n\r\n newData.set(this.#data);\r\n }\r\n\r\n this.setData = newData;\r\n\r\n this.size = targetSize;\r\n\r\n this.bitSize = this.size * 8;\r\n\r\n this.chunks = new Array(this.#getNumChunks()).fill(null);\r\n\r\n this.chunkPromises = new Array(this.#getNumChunks()).fill(null);\r\n\r\n this.dirtyChunks.clear();\r\n } else {\r\n await this.fd.truncate(targetSize);\r\n\r\n this.size = targetSize;\r\n\r\n this.bitSize = this.size * 8;\r\n\r\n const oldNum = this.chunks.length;\r\n\r\n const newNum = this.#getNumChunks();\r\n\r\n this.chunks.length = newNum;\r\n\r\n this.chunkPromises.length = newNum;\r\n\r\n for (let i = oldNum; i < newNum; i++) {\r\n this.chunks[i] = null;\r\n\r\n this.chunkPromises[i] = null;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * For updating file size\r\n * \r\n * @param {number} exactSize \r\n * @returns \r\n */\r\n async #setFileSize(exactSize: number) {\r\n if (exactSize === this.size) {\r\n return;\r\n }\r\n\r\n await this.flush();\r\n\r\n if (this.isMemoryMode) {\r\n const newData = this.data.subarray(0, exactSize);\r\n\r\n this.setData = newData as DataType;\r\n\r\n this.size = exactSize;\r\n\r\n this.bitSize = this.size * 8;\r\n\r\n const newNum = Math.ceil(exactSize / this.windowSize);\r\n\r\n this.chunks = new Array(newNum).fill(null);\r\n\r\n this.chunkPromises = new Array(newNum).fill(null);\r\n\r\n this.dirtyChunks.clear();\r\n } else {\r\n await this.fd.truncate(exactSize);\r\n\r\n this.size = exactSize;\r\n\r\n this.bitSize = this.size * 8;\r\n\r\n const oldNum = this.chunks.length;\r\n\r\n const newNum = Math.ceil(exactSize / this.windowSize);\r\n\r\n this.chunks.length = newNum;\r\n\r\n this.chunkPromises.length = newNum;\r\n\r\n if (newNum < oldNum) {\r\n this.dirtyChunks = new Set([...this.dirtyChunks].filter(i => i < newNum));\r\n } else {\r\n for (let i = oldNum; i < newNum; i++) {\r\n this.chunks[i] = null;\r\n\r\n this.chunkPromises[i] = null;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * removes a chunk\r\n * \r\n * @param {number} startChunk \r\n */\r\n #invalidateFromChunk(startChunk: number) {\r\n for (let i = Math.max(0, startChunk); i < this.chunks.length; i++) {\r\n this.chunks[i] = null;\r\n\r\n this.chunkPromises[i] = null;\r\n\r\n this.dirtyChunks.delete(i);\r\n }\r\n };\r\n\r\n /**\r\n * Pulls data back\r\n * \r\n * @param {number} insertOffset \r\n * @param {number} insertLen \r\n * @param {number} oldEnd \r\n * @param {boolean} consume\r\n */\r\n async #shiftTailForward(insertOffset: number, insertLen: number, oldEnd: number, consume: boolean = false) {\r\n if (insertLen <= 0) {\r\n return;\r\n }\r\n\r\n if (this.isMemoryMode) {\r\n const tailCopy = this.data.subarray(insertOffset, oldEnd);\r\n\r\n this.data.set(tailCopy, insertOffset + insertLen);\r\n } else {\r\n let readEnd = oldEnd;\r\n\r\n let writeEnd = oldEnd + insertLen;\r\n\r\n const buf = Buffer.alloc(Math.min(this.windowSize, this.size));\r\n\r\n while (readEnd > insertOffset) {\r\n const len = Math.min(this.windowSize, readEnd - insertOffset);\r\n\r\n const readStart = readEnd - len;\r\n\r\n const { bytesRead } = await this.fd.read(buf, 0, len, readStart);\r\n\r\n const writeStart = writeEnd - len;\r\n\r\n await this.fd.write(buf, 0, bytesRead, writeStart);\r\n\r\n readEnd = readStart;\r\n\r\n writeEnd = writeStart;\r\n }\r\n }\r\n\r\n if (consume) {\r\n this.#offset = insertOffset + insertLen;\r\n\r\n this.#insetBit = 0;\r\n }\r\n };\r\n\r\n /**\r\n * \r\n * @param {number} removeOffset \r\n * @param {number} removeLen \r\n * @param {boolean} consume \r\n */\r\n async #shiftTailBackward(removeOffset: number, removeLen: number, consume: boolean = false) {\r\n if (removeLen <= 0) {\r\n return;\r\n }\r\n\r\n if (this.isMemoryMode) {\r\n const tailStart = removeOffset + removeLen;\r\n\r\n const tailCopy = this.data.subarray(tailStart, this.size);\r\n\r\n this.data.set(tailCopy, removeOffset);\r\n } else {\r\n const oldEnd = this.size;\r\n\r\n let readPos = removeOffset + removeLen;\r\n\r\n let writePos = removeOffset;\r\n\r\n const buf = Buffer.alloc(Math.min(this.windowSize, this.size));\r\n\r\n while (readPos < oldEnd) {\r\n const len = Math.min(this.windowSize, oldEnd - readPos);\r\n\r\n const { bytesRead } = await this.fd.read(buf, 0, len, readPos);\r\n\r\n await this.fd.write(buf, 0, bytesRead, writePos);\r\n\r\n readPos += bytesRead;\r\n\r\n writePos += bytesRead;\r\n }\r\n }\r\n\r\n if (consume) {\r\n this.#offset = removeOffset;\r\n\r\n this.#insetBit = 0;\r\n }\r\n };\r\n\r\n async #updateOffsets(newOffset: number, trueBytes: number, trueBits: number) {\r\n if (newOffset < 0) {\r\n throw new RangeError('Offset cannot be negative');\r\n }\r\n \r\n if (newOffset > this.size) {\r\n if (this.strict || this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(`\\x1b[33m[Strict mode]\\x1b[0m: Reached end of data: ` + newOffset + \" at \" + this.#offset + \" of \" + this.size);\r\n }\r\n\r\n await this.#confrimSize(newOffset);\r\n }\r\n\r\n this.#offset = trueBytes;\r\n // Adjust byte offset based on bit overflow\r\n this.#offset += Math.floor(trueBits / 8);\r\n // Adjust bit offset\r\n this.#insetBit = normalizeBitOffset(trueBits) % 8;\r\n // Ensure bit offset stays between 0-7\r\n this.#insetBit = Math.min(Math.max(this.#insetBit, 0), 7);\r\n // Ensure offset doesn't go negative\r\n this.#offset = Math.max(this.#offset, 0);\r\n };\r\n\r\n async #readBytes(length: number, consume: boolean = true) {\r\n await this.open();\r\n\r\n if (length <= 0) {\r\n return new Uint8Array(0);\r\n }\r\n\r\n const offSave = this.#offset;\r\n\r\n var trueByte = this.#offset;\r\n\r\n const trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#offset = trueByte;\r\n\r\n const data = await this.#peekBytes(trueByte, length);\r\n\r\n if (consume) {\r\n this.#offset += length;\r\n\r\n this.#insetBit = 0;\r\n } else {\r\n this.#offset = offSave;\r\n }\r\n\r\n return data;\r\n };\r\n\r\n async #writeBytes(data: Buffer | Uint8Array | number[], consume: boolean = true) {\r\n if (this.readOnly) {\r\n throw new Error('Cannot write to read-only file');\r\n }\r\n\r\n await this.open();\r\n\r\n if (data.length === 0) {\r\n return;\r\n }\r\n\r\n const offSave = this.#offset;\r\n\r\n var trueByte = this.#offset;\r\n\r\n const trueBit = this.#insetBit;\r\n\r\n if (trueBit != 0) {\r\n trueByte += 1;\r\n }\r\n\r\n this.#offset = trueByte;\r\n\r\n await this.#writeBytesAt(trueByte, data);\r\n\r\n if (consume) {\r\n this.#offset += data.length;\r\n\r\n this.#insetBit = 0;\r\n } else {\r\n this.#offset = offSave;\r\n }\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FILE MODE\r\n ///////////////////////////////\r\n\r\n /**\r\n * Enables writing and expanding (changes strict AND readOnly)\r\n * \r\n * @param {boolean} mode - True to enable writing and expanding (changes strict AND readOnly)\r\n */\r\n async writeMode(mode: boolean = true) {\r\n if (mode) {\r\n this.strict = false;\r\n\r\n this.readOnly = false;\r\n\r\n this.fsMode = \"r+\";\r\n } else {\r\n this.strict = true;\r\n\r\n this.readOnly = true;\r\n\r\n this.fsMode = \"r\";\r\n }\r\n\r\n if (!this.isMemoryMode) {\r\n await this.close();\r\n\r\n await this.open();\r\n }\r\n };\r\n\r\n /**\r\n * Opens the file in `file` mode. Must be run before reading or writing.\r\n * \r\n * Can be used to pass new data to a loaded class, shifting to memory mode.\r\n */\r\n async open(data?: DataType) {\r\n if (!this.isMemoryMode) {\r\n await this.#initFile();\r\n } else {\r\n if (this.isBufferOrUint8Array(data)) {\r\n this.setData = data;\r\n }\r\n\r\n this.#initMemory();\r\n }\r\n };\r\n\r\n /**\r\n * commit data and removes it.\r\n */\r\n async close(): Promise<DataType> {\r\n await this.open();\r\n\r\n if (!this.readOnly && this.dirtyChunks.size > 0) {\r\n await this.flush();\r\n }\r\n\r\n if (this.loadAllPromise && !this.isFullyLoaded) {\r\n await this.loadAllPromise;\r\n }\r\n\r\n if (!this.isMemoryMode && this.fd) {\r\n const data = await this.getData();\r\n\r\n await this.fd.close();\r\n\r\n this.fd = null;\r\n\r\n return data as DataType;\r\n }\r\n\r\n if (this.isMemoryMode) {\r\n return this.data;\r\n }\r\n };\r\n\r\n /**\r\n * Write data buffer back to file\r\n */\r\n async commit() {\r\n if (this.readOnly || this.dirtyChunks.size === 0 || this.isMemoryMode || !this.fd) {\r\n return;\r\n }\r\n\r\n const promises = [...this.dirtyChunks].map(i => {\r\n const chunk = this.chunks[i];\r\n\r\n if (!chunk) {\r\n return null;\r\n }\r\n\r\n return this.fd.write(chunk, 0, chunk.length, Math.min(i * this.windowSize, this.size));\r\n }).filter(Boolean);\r\n\r\n await Promise.all(promises);\r\n\r\n this.dirtyChunks.clear();\r\n };\r\n\r\n /**\r\n * Write data buffer back to file\r\n */\r\n async flush() {\r\n if (this.fd) {\r\n await this.commit();\r\n }\r\n }; \r\n\r\n /**\r\n * Renames the file you are working on.\r\n * \r\n * Must be full file path and file name.\r\n * \r\n * Keeps write / read position.\r\n * \r\n * Note: This is permanent and can't be undone.\r\n * \r\n * @param {string} newFilePath - New full file path and name.\r\n */\r\n async renameFile(newFilePath: string) {\r\n if (this.isMemoryMode) {\r\n return;\r\n }\r\n\r\n try {\r\n await this.close();\r\n\r\n this.fd = null;\r\n\r\n this.#data = null;\r\n\r\n this.#view = null;\r\n\r\n await fs.rename(this.filePath, newFilePath);\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n\r\n this.filePath = newFilePath;\r\n\r\n await this.open();\r\n };\r\n\r\n /**\r\n * Deletes the working file.\r\n * \r\n * Note: This is permanent and can't be undone. \r\n * \r\n * It doesn't send the file to the recycling bin for recovery.\r\n */\r\n async deleteFile() {\r\n if (this.isMemoryMode) {\r\n return;\r\n }\r\n\r\n if (this.readOnly) {\r\n throw new Error(\"Can't delete file in readOnly mode!\");\r\n }\r\n // this.mode == \"file\"\r\n try {\r\n this.close();\r\n\r\n await fs.unlink(this.filePath);\r\n } catch (error) {\r\n throw new Error(error);\r\n }\r\n\r\n this.filePath = null;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region ENDIANNESS\r\n ///////////////////////////////\r\n\r\n /**\r\n *\r\n * Change endian, defaults to little.\r\n * \r\n * Can be changed at any time, doesn't loose position.\r\n *\r\n * @param {endian} endian - endianness ``big`` or ``little``\r\n */\r\n endianness(endian: endian): void {\r\n if (endian == undefined || typeof endian != \"string\") {\r\n throw new TypeError(\"Endian must be big or little\");\r\n }\r\n\r\n if (endian != undefined && !(endian == \"big\" || endian == \"little\")) {\r\n throw new TypeError(\"Endian must be big or little\");\r\n }\r\n\r\n this.endian = endian;\r\n };\r\n\r\n /**\r\n * Sets endian to big.\r\n */\r\n bigEndian(): void {\r\n this.endianness(\"big\");\r\n };\r\n\r\n /**\r\n * Sets endian to big.\r\n */\r\n big(): void {\r\n this.endianness(\"big\");\r\n };\r\n\r\n /**\r\n * Sets endian to big.\r\n */\r\n be(): void {\r\n this.endianness(\"big\");\r\n };\r\n\r\n /**\r\n * Sets endian to little.\r\n */\r\n littleEndian(): void {\r\n this.endianness(\"little\");\r\n };\r\n\r\n /**\r\n * Sets endian to little.\r\n */\r\n little(): void {\r\n this.endianness(\"little\");\r\n };\r\n\r\n /**\r\n * Sets endian to little.\r\n */\r\n le(): void {\r\n this.endianness(\"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region SIZE\r\n ///////////////////////////////\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get length(): number {\r\n return this.size;\r\n };\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get len(): number {\r\n return this.size;\r\n };\r\n\r\n /**\r\n * Size in bits of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get sizeBits(): number {\r\n return this.bitSize;\r\n };\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get fileSize(): number {\r\n return this.size;\r\n };\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get FileSize(): number {\r\n return this.size;\r\n };\r\n\r\n /**\r\n * Size in bits of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get lengthBits(): number {\r\n return this.bitSize;\r\n };\r\n\r\n /**\r\n * Size in bits of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get fileBitSize(): number {\r\n return this.bitSize;\r\n };\r\n\r\n /**\r\n * Size in bytes of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get fileSizeBits(): number {\r\n return this.bitSize;\r\n };\r\n\r\n /**\r\n * Size in bits of the current buffer.\r\n * \r\n * @returns {number} size\r\n */\r\n get lenBits(): number {\r\n return this.bitSize;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region POSITION\r\n ///////////////////////////////\r\n\r\n /**\r\n * Get the current byte position.\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get offset(): number{\r\n return this.#offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position.\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get getOffset(): number {\r\n return this.offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position.\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get tell(): number {\r\n return this.#offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position.\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get FTell(): number {\r\n return this.#offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position;\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get saveOffset(): number {\r\n return this.#offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position;\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get off(): number {\r\n return this.#offset;\r\n };\r\n\r\n /**\r\n * Get the current byte position;\r\n *\r\n * @returns {number} current byte position\r\n */\r\n get byteOffset(): number {\r\n return this.offset;\r\n };\r\n\r\n /**\r\n * Set the current byte position.\r\n * \r\n * same as {@link goto}\r\n */\r\n async setOffset(value: number){\r\n await this.goto(value);\r\n };\r\n\r\n /**\r\n * Set the current byte position.\r\n * \r\n * same as {@link goto}\r\n */\r\n async setByteOffset(value: number){\r\n await this.setOffset(value);\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get bitOffset(): number{\r\n return (this.#offset * 8) + this.#insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get offsetBits(): number {\r\n return this.bitOffset;\r\n }\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get getBitOffset(): number {\r\n return this.bitOffset;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get saveBitOffset(): number {\r\n return this.bitOffset;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get FTellBits(): number {\r\n return this.bitOffset;\r\n };\r\n\r\n /**\r\n * Get the current bit position (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get tellBits(): number {\r\n return this.#insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position.\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get offBits(): number {\r\n return this.bitOffset;\r\n };\r\n\r\n /**\r\n * Set the current bit position.\r\n */\r\n async setOffsetBits(value: number) {\r\n await this.goto(value - (value % 8), value % 8);\r\n };\r\n\r\n /**\r\n * Set the current bit position.\r\n */\r\n async setBitOffset(value: number) {\r\n await this.setOffsetBits(value);\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get insetBit(): number {\r\n return this.#insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get saveInsetBit(): number {\r\n return this.insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get inBit(): number {\r\n return this.insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get bitTell(): number {\r\n return this.insetBit;\r\n };\r\n\r\n /**\r\n * Get the current bit position with in the current byte (0-7).\r\n *\r\n * @returns {number} current bit position\r\n */\r\n get getInsetBit(): number {\r\n return this.insetBit;\r\n };\r\n\r\n /**\r\n * Set the current bit position with in the current byte (0-7).\r\n */\r\n async setInsetBit(value: number){\r\n await this.goto(this.offset, value % 8);\r\n };\r\n\r\n /**\r\n * Size in bytes of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get remain(): number {\r\n return this.size - this.#offset;\r\n };\r\n\r\n /**\r\n * Size in bytes of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get remainBytes(): number {\r\n return this.remain; \r\n };\r\n\r\n /**\r\n * Size in bytes of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get FEoF(): number {\r\n return this.remainBytes;\r\n };\r\n\r\n /**\r\n * Size in bits of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get remainBits(): number {\r\n return (this.size * 8) - this.bitOffset;\r\n };\r\n\r\n /**\r\n * Size in bits of current read position to the end of the data.\r\n * \r\n * @returns {number} size\r\n */\r\n get FEoFBits(): number {\r\n return this.remainBits;\r\n };\r\n\r\n /**\r\n * Row line of the file (16 bytes per row).\r\n * \r\n * @returns {number} size\r\n */\r\n get getLine(): number {\r\n return Math.abs(Math.floor((this.#offset - 1) / 16));\r\n };\r\n\r\n /**\r\n * Row line of the file (16 bytes per row).\r\n * \r\n * @returns {number} size\r\n */\r\n get row(): number {\r\n return this.getLine;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FINISHING\r\n ///////////////////////////////\r\n\r\n /**\r\n * Returns current data.\r\n * \r\n * Note: Will remove all data after current position if ``growthIncrement`` was set.\r\n */\r\n async get() {\r\n await this.open();\r\n // Commit every pending change\r\n if (!this.readOnly && this.dirtyChunks.size > 0) {\r\n await this.flush();\r\n }\r\n // Make sure everything is loaded (works with windowSize=0 too)\r\n if (this.loadAllPromise && !this.isFullyLoaded) {\r\n await this.loadAllPromise;\r\n }\r\n\r\n if (this.growthIncrement != 0 && this.wasExpanded) {\r\n await this.trim();\r\n }\r\n\r\n if (this.isMemoryMode) {\r\n return this.#data;\r\n }\r\n\r\n const chunks: Buffer[] = [];\r\n\r\n for (let i = 0; i < this.#getNumChunks(); i++) {\r\n const chunk = await this.#ensureChunkLoaded(i) as Buffer;\r\n\r\n chunks.push(chunk);\r\n }\r\n\r\n if (this.growthIncrement != 0) {\r\n return Buffer.concat(chunks).subarray(0, this.#offset);\r\n }\r\n\r\n return Buffer.concat(chunks);\r\n };\r\n\r\n /**\r\n * Returns current data.\r\n * \r\n * Note: Will remove all data after current position if ``growthIncrement`` was set and you expanded data past the end once.\r\n * \r\n * Use ``.data`` instead if you want the full buffer data.\r\n */\r\n async getFullBuffer() {\r\n return await this.get();\r\n };\r\n\r\n /**\r\n * Returns current data.\r\n * \r\n * Note: Will remove all data after current position if ``growthIncrement`` was set.\r\n */\r\n async return() {\r\n return await this.get();\r\n };\r\n\r\n /**\r\n * Removes data.\r\n * \r\n * Commits any changes to file when editing a file.\r\n */\r\n async end() {\r\n if (this.isMemoryMode) {\r\n this.#data = null;\r\n\r\n this.#view = null;\r\n\r\n return;\r\n }\r\n\r\n await this.commit();\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Removes data.\r\n * \r\n * Commits any changes to file when editing a file.\r\n */\r\n async done() {\r\n return await this.end();\r\n };\r\n\r\n /**\r\n * Removes data.\r\n * \r\n * Commits any changes to file when editing a file.\r\n */\r\n async finished() {\r\n return await this.end();\r\n };\r\n\r\n ///////////////////////////////\r\n // #region HEX DUMP\r\n ///////////////////////////////\r\n\r\n /**\r\n * Creates hex dump string. Will console log or return string if set in options.\r\n * \r\n * @param {object} options \r\n * @param {hexdumpOptions?} options - hex dump options\r\n * @param {hexdumpOptions[\"length\"]} options.length - number of bytes to log, default ``192`` or end of data\r\n * @param {hexdumpOptions[\"startByte\"]} options.startByte - byte to start dump (default ``0``)\r\n * @param {hexdumpOptions[\"suppressUnicode\"]} options.suppressUnicode - Suppress unicode character preview for even columns.\r\n * @param {hexdumpOptions[\"returnString\"]} options.returnString - Returns the hex dump string instead of logging it.\r\n */\r\n async hexdump(options: hexdumpOptions = {}) {\r\n await this.open();\r\n\r\n const length: any = options?.length ?? 192;\r\n\r\n const startByte: any = options?.startByte ?? this.#offset;\r\n\r\n const endByte = Math.min(startByte + length, this.size);\r\n\r\n const newSize = endByte - startByte;\r\n\r\n if (startByte > this.size || endByte > this.size) {\r\n throw new RangeError(\"Hexdump amount is outside of data size: \" + newSize + \" of \" + endByte);\r\n }\r\n\r\n const data = await this.#peekBytes(startByte, Math.min(endByte, this.size) - startByte);\r\n\r\n return _hexDump(data, options, startByte, endByte);\r\n };\r\n\r\n /**\r\n * Turn hexdump on error off (default on).\r\n */\r\n errorDumpOff(): void {\r\n this.errorDump = false;\r\n };\r\n\r\n /**\r\n * Turn hexdump on error on (default on).\r\n */\r\n errorDumpOn(): void {\r\n this.errorDump = true;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region STRICT MODE\r\n ///////////////////////////////\r\n\r\n /**\r\n * Disallows extending data if position is outside of max size.\r\n */\r\n restrict(): void {\r\n this.strict = true;\r\n };\r\n\r\n /**\r\n * Allows extending data if position is outside of max size.\r\n */\r\n unrestrict(): void {\r\n this.strict = false;\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FIND \r\n ///////////////////////////////\r\n\r\n /**\r\n * Searches for position of array of byte values from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {Uint8Array | Buffer | Array<number>} bytesToFind \r\n */\r\n async findBytes(bytesToFind: Uint8Array | Buffer | Array<number>) {\r\n if ( Array.isArray(bytesToFind)) {\r\n bytesToFind = new Uint8Array(bytesToFind);\r\n }\r\n\r\n const data = await this.#peekBytes(0, this.size);\r\n\r\n if (this.isBuffer(data)) {\r\n var offset = data.subarray(this.#offset, this.size).indexOf(bytesToFind);\r\n\r\n if (offset == -1) {\r\n return -1;\r\n }\r\n\r\n return offset + this.#offset;\r\n }\r\n // data = Uint8Array\r\n for (let i = this.#offset; i <= this.size - bytesToFind.length; i++) {\r\n var match = true;\r\n\r\n for (let j = 0; j < bytesToFind.length; j++) {\r\n if (data[i + j] !== bytesToFind[j]) {\r\n match = false;\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (match) {\r\n return i; // Found the string, return the index\r\n }\r\n }\r\n\r\n return -1; // String not found\r\n };\r\n\r\n /**\r\n * Searches for byte position of string from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {string} string - String to search for.\r\n * @param {1|2|4} bytesPerChar - how many bytes each character should take up\r\n */\r\n async findString(string: string, bytesPerChar: number = 1) {\r\n const encoded = textEncode(string, bytesPerChar);\r\n\r\n return await this.findBytes(encoded);\r\n };\r\n\r\n #findNumber(data: DataType, value: number, bits: number, unsigned: boolean, endian: endian = this.endian): number {\r\n for (let z = this.#offset; z <= (this.size - (bits / 8)); z++) {\r\n var offsetInBits = 0;\r\n\r\n var currentValue = 0;\r\n\r\n for (var i = 0; i < bits;) {\r\n const remaining = bits - i;\r\n\r\n const bitOffset = offsetInBits & 7;\r\n\r\n const currentByte = data[z + (offsetInBits >> 3)];\r\n\r\n const read = Math.min(remaining, 8 - bitOffset);\r\n\r\n if (endian == \"big\") {\r\n let mask = ~(0xFF << read);\r\n\r\n let readBits = (currentByte >> (8 - read - bitOffset)) & mask;\r\n\r\n currentValue <<= read;\r\n\r\n currentValue |= readBits;\r\n } else {\r\n let mask = ~(0xFF << read);\r\n\r\n let readBits = (currentByte >> bitOffset) & mask;\r\n\r\n currentValue |= readBits << i;\r\n }\r\n\r\n offsetInBits += read;\r\n\r\n i += read;\r\n }\r\n\r\n if (unsigned == true || bits <= 7) {\r\n currentValue = currentValue >>> 0;\r\n } else {\r\n if (currentValue & (1 << (bits - 1))) {\r\n currentValue |= -1 ^ ((1 << bits) - 1);\r\n }\r\n }\r\n\r\n if (currentValue === value) {\r\n return z - this.#offset; // Found the byte, return the index from current\r\n }\r\n }\r\n\r\n return -1; // number not found\r\n }\r\n\r\n /**\r\n * Searches for byte value (can be signed or unsigned) position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {boolean} unsigned - If the number is unsigned (default true)\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n async findByte(value: number, unsigned: boolean = true, endian: endian = this.endian) {\r\n const data = await this.#peekBytes(0, this.size);\r\n\r\n return this.#findNumber(data, value, 8, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Searches for short value (can be signed or unsigned) position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {boolean} unsigned - If the number is unsigned (default true)\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n async findShort(value: number, unsigned: boolean = true, endian: endian = this.endian) {\r\n const data = await this.#peekBytes(0, this.size);\r\n\r\n return this.#findNumber(data, value, 16, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Searches for integer value (can be signed or unsigned) position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {boolean} unsigned - If the number is unsigned (default true)\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n async findInt(value: number, unsigned: boolean = true, endian: endian = this.endian) {\r\n const data = await this.#peekBytes(0, this.size);\r\n\r\n return this.#findNumber(data, value, 32, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Searches for 64 bit value (can be signed or unsigned) position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {BigValue} value - Number to search for.\r\n * @param {boolean} unsigned - If the number is unsigned (default true)\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n async findInt64(value: BigValue, unsigned: boolean = true, endian: endian = this.endian) {\r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n\r\n const data = await this.#peekBytes(0, this.size);\r\n\r\n for (let z = this.#offset; z <= (this.size - 8); z++) {\r\n var currentValue = BigInt(0);\r\n\r\n if (endian == \"little\") {\r\n for (let i = 0; i < 8; i++) {\r\n currentValue = currentValue | BigInt((data[z + i] & 0xFF)) << BigInt(8 * i);\r\n }\r\n\r\n if (unsigned == undefined || unsigned == false) {\r\n if (currentValue & (BigInt(1) << BigInt(63))) {\r\n currentValue -= BigInt(1) << BigInt(64);\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < 8; i++) {\r\n currentValue = (currentValue << BigInt(8)) | BigInt((data[z + i] & 0xFF));\r\n }\r\n\r\n if (unsigned == undefined || unsigned == false) {\r\n if (currentValue & (BigInt(1) << BigInt(63))) {\r\n currentValue -= BigInt(1) << BigInt(64);\r\n }\r\n }\r\n }\r\n\r\n if (currentValue == BigInt(value)) {\r\n return z;\r\n }\r\n }\r\n\r\n return -1;// number not found\r\n };\r\n\r\n /**\r\n * Searches for half float value position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n async findHalfFloat(value: number, endian: endian = this.endian) {\r\n const data = await this.#peekBytes(0, this.size);\r\n\r\n for (let z = this.#offset; z <= (this.size - 2); z++) {\r\n var currentValue = 0;\r\n\r\n if (endian == \"little\") {\r\n currentValue = ((data[z + 1] & 0xFFFF) << 8) | (data[z] & 0xFFFF);\r\n } else {\r\n currentValue = ((data[z] & 0xFFFF) << 8) | (data[z + 1] & 0xFFFF);\r\n }\r\n\r\n const sign = (currentValue & 0x8000) >> 15;\r\n\r\n const exponent = (currentValue & 0x7C00) >> 10;\r\n\r\n const fraction = currentValue & 0x03FF;\r\n\r\n var floatValue: number;\r\n\r\n if (exponent === 0) {\r\n if (fraction === 0) {\r\n floatValue = (sign === 0) ? 0 : -0; // +/-0\r\n } else {\r\n // Denormalized number\r\n floatValue = (sign === 0 ? 1 : -1) * Math.pow(2, -14) * (fraction / 0x0400);\r\n }\r\n } else if (exponent === 0x1F) {\r\n if (fraction === 0) {\r\n floatValue = (sign === 0) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\r\n } else {\r\n floatValue = Number.NaN;\r\n }\r\n } else {\r\n // Normalized number\r\n floatValue = (sign === 0 ? 1 : -1) * Math.pow(2, exponent - 15) * (1 + fraction / 0x0400);\r\n }\r\n\r\n if (floatValue === value) {\r\n return z; // Found the number, return the index\r\n }\r\n }\r\n\r\n return -1; // number not found\r\n };\r\n\r\n /**\r\n * Searches for float value position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n async findFloat(value: number, endian: endian = this.endian) {\r\n const data = await this.#peekBytes(0, this.size);\r\n\r\n for (let z = this.#offset; z <= (this.size - 4); z++) {\r\n var currentValue = 0;\r\n\r\n if (endian == \"little\") {\r\n currentValue = ((data[z + 3] & 0xFF) << 24) |\r\n ((data[z + 2] & 0xFF) << 16) |\r\n ((data[z + 1] & 0xFF) << 8) |\r\n (data[z] & 0xFF);\r\n } else {\r\n currentValue = ((data[z] & 0xFF) << 24) |\r\n ((data[z + 1] & 0xFF) << 16) |\r\n ((data[z + 2] & 0xFF) << 8) |\r\n (data[z + 3] & 0xFF);\r\n }\r\n\r\n const isNegative = (currentValue & 0x80000000) !== 0 ? 1 : 0;\r\n // Extract the exponent and fraction parts\r\n const exponent = (currentValue >> 23) & 0xFF;\r\n\r\n const fraction = currentValue & 0x7FFFFF;\r\n // Calculate the float value\r\n var floatValue: number;\r\n\r\n if (exponent === 0) {\r\n // Denormalized number (exponent is 0)\r\n floatValue = Math.pow(-1, isNegative) * Math.pow(2, -126) * (fraction / Math.pow(2, 23));\r\n } else if (exponent === 0xFF) {\r\n // Infinity or NaN (exponent is 255)\r\n floatValue = fraction === 0 ? (isNegative ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY) : Number.NaN;\r\n } else {\r\n // Normalized number\r\n floatValue = Math.pow(-1, isNegative) * Math.pow(2, exponent - 127) * (1 + fraction / Math.pow(2, 23));\r\n }\r\n\r\n if (floatValue === value) {\r\n return z; // Found the number, return the index\r\n }\r\n }\r\n\r\n return -1; // number not found\r\n };\r\n\r\n /**\r\n * Searches for double float value position from current read position.\r\n * \r\n * Returns -1 if not found.\r\n * \r\n * Does not change current read position.\r\n * \r\n * @param {number} value - Number to search for.\r\n * @param {endian} endian - endianness of value (default set endian).\r\n */\r\n async findDoubleFloat(value: number, endian: endian = this.endian) {\r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n\r\n const data = await this.#peekBytes(0, this.size);\r\n\r\n for (let z = this.#offset; z <= (this.size - 8); z++) {\r\n var currentValue = BigInt(0);\r\n\r\n if (endian == \"little\") {\r\n for (let i = 0; i < 8; i++) {\r\n currentValue = currentValue | BigInt((data[z + i] & 0xFF)) << BigInt(8 * i);\r\n }\r\n } else {\r\n for (let i = 0; i < 8; i++) {\r\n currentValue = (currentValue << BigInt(8)) | BigInt((data[z + i] & 0xFF));\r\n }\r\n }\r\n\r\n const sign = (currentValue & BigInt(\"9223372036854775808\")) >> BigInt(63);\r\n\r\n const exponent = Number((currentValue & BigInt(\"9218868437227405312\")) >> BigInt(52)) - 1023;\r\n\r\n const fraction = Number(currentValue & BigInt(\"4503599627370495\")) / Math.pow(2, 52);\r\n\r\n var floatValue: number;\r\n\r\n if (exponent == -1023) {\r\n if (fraction == 0) {\r\n floatValue = (sign == BigInt(0)) ? 0 : -0; // +/-0\r\n } else {\r\n // Denormalized number\r\n floatValue = (sign == BigInt(0) ? 1 : -1) * Math.pow(2, -1022) * fraction;\r\n }\r\n } else if (exponent == 1024) {\r\n if (fraction == 0) {\r\n floatValue = (sign == BigInt(0)) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\r\n } else {\r\n floatValue = Number.NaN;\r\n }\r\n } else {\r\n // Normalized number\r\n floatValue = (sign == BigInt(0) ? 1 : -1) * Math.pow(2, exponent) * (1 + fraction);\r\n }\r\n\r\n if (floatValue == value) {\r\n return z;\r\n }\r\n }\r\n\r\n return -1; // number not found\r\n };\r\n\r\n ///////////////////////////////\r\n // #region MOVE TO\r\n ///////////////////////////////\r\n\r\n /**\r\n * Aligns current byte position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} number - Byte to align\r\n */\r\n async align(number: number) {\r\n const a = this.#offset % number;\r\n\r\n if (a) {\r\n await this.skip(number - a);\r\n }\r\n };\r\n\r\n /**\r\n * Reverse aligns current byte position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} number - Byte to align\r\n */\r\n async alignRev(number: number) {\r\n const a = this.#offset % number;\r\n\r\n if (a) {\r\n await this.skip(a * -1);\r\n }\r\n };\r\n\r\n /**\r\n * Offset current byte or bit position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} bytes - Bytes to skip\r\n * @param {number} bits - Bits to skip\r\n */\r\n async skip(bytes: number = 0, bits: number = 0) {\r\n await this.open();\r\n\r\n var newOffset = ((bytes + this.#offset) + Math.ceil((this.#insetBit + bits) / 8));\r\n\r\n if (bits && bits < 0) {\r\n newOffset = Math.floor((((bytes + this.#offset) * 8) + this.#insetBit + bits) / 8);\r\n }\r\n\r\n await this.#updateOffsets(newOffset, bytes, bits);\r\n };\r\n\r\n /**\r\n * Offset current byte or bit position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} bytes - Bytes to skip\r\n * @param {number} bits - Bits to skip\r\n */\r\n async jump(bytes: number, bits?: number) {\r\n await this.skip(bytes, bits);\r\n };\r\n\r\n /**\r\n * Change position directly to address.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} byte - byte to set to\r\n * @param {number} bit - bit to set to\r\n */\r\n async FSeek(byte: number, bit?: number) {\r\n await this.goto(byte, bit)\r\n };\r\n\r\n /**\r\n * Offset current byte or bit position.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} bytes - Bytes to skip\r\n * @param {number} bits - Bits to skip\r\n */\r\n async seek(bytes: number, bits?: number) {\r\n await this.skip(bytes, bits)\r\n };\r\n\r\n /**\r\n * Change position directly to address.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} byte - byte to set to\r\n * @param {number} bit - bit to set to\r\n */\r\n async goto(byte: number = 0, bit: number = 0) {\r\n await this.open();\r\n\r\n var newOffset = byte + Math.ceil(bit / 8);\r\n\r\n await this.#updateOffsets(newOffset, byte, bit);\r\n };\r\n\r\n /**\r\n * Change position directly to address.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} byte - byte to set to\r\n * @param {number} bit - bit to set to\r\n */\r\n async pointer(byte: number, bit?: number) {\r\n await this.goto(byte, bit)\r\n };\r\n\r\n /**\r\n * Change position directly to address.\r\n * \r\n * Note: Will extend array if strict mode is off and outside of max size.\r\n * \r\n * @param {number} byte - byte to set to\r\n * @param {number} bit - bit to set to\r\n */\r\n async warp(byte: number, bit?: number) {\r\n await this.goto(byte, bit)\r\n };\r\n\r\n /**\r\n * Set byte and bit position to start of data.\r\n */\r\n rewind(): void {\r\n this.#offset = 0;\r\n\r\n this.#insetBit = 0;\r\n };\r\n\r\n /**\r\n * Set byte and bit position to start of data.\r\n */\r\n gotoStart() {\r\n this.rewind();\r\n };\r\n\r\n /**\r\n * Set current byte and bit position to end of data.\r\n */\r\n last() {\r\n this.#offset = this.size;\r\n\r\n this.#insetBit = 0;\r\n };\r\n\r\n /**\r\n * Set current byte and bit position to end of data.\r\n */\r\n gotoEnd() {\r\n this.last();\r\n };\r\n\r\n /**\r\n * Set byte and bit position to start of data.\r\n */\r\n EoF() {\r\n this.last();\r\n };\r\n\r\n ///////////////////////////////\r\n // #region REMOVE\r\n ///////////////////////////////\r\n\r\n /**\r\n * Deletes part of data from start to current byte position unless supplied, returns removed.\r\n * \r\n * Note: Errors in strict mode.\r\n * \r\n * @param {number} startOffset - Start location (default 0)\r\n * @param {number} endOffset - End location (default current position)\r\n * @param {boolean} consume - Move position to end of removed data (default false)\r\n */\r\n async delete(startOffset: number = 0, endOffset: number = this.#offset, consume: boolean = false) {\r\n if (this.readOnly || this.strict) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"\\x1b[33m[Strict mode]\\x1b[0m: Can not remove data in strict mode: endOffset \" + endOffset + \" of \" + this.size);\r\n }\r\n\r\n await this.open();\r\n\r\n const removeLen = endOffset - startOffset;\r\n\r\n if (startOffset < 0 || endOffset > this.size) {\r\n throw new RangeError('Remove range out of bounds');\r\n }\r\n\r\n if (removeLen <= 0) {\r\n if (this.isMemoryMode) {\r\n if (this.isBuffer(this.data)) {\r\n return Buffer.alloc(0) as DataType;\r\n } else {\r\n return new Uint8Array(0) as DataType;\r\n }\r\n } else {\r\n return Buffer.alloc(0) as DataType;\r\n }\r\n }\r\n\r\n if (this.readOnly || this.strict) {\r\n throw new Error('Cannot modify readOnly data');\r\n }\r\n\r\n const removed = await this.#peekBytes(startOffset, removeLen);\r\n\r\n await this.#shiftTailBackward(startOffset, removeLen, consume);\r\n\r\n const newSize = this.size - removeLen;\r\n\r\n await this.#setFileSize(newSize);\r\n\r\n const startChunk = this.#getChunkIndex(startOffset);\r\n\r\n this.#invalidateFromChunk(startChunk);\r\n\r\n return removed as DataType;\r\n };\r\n\r\n /**\r\n * Deletes part of data from current byte position to end, returns removed.\r\n * \r\n * Note: Errors in strict mode.\r\n */\r\n async clip() {\r\n return await this.delete(this.#offset, this.size, false);\r\n };\r\n\r\n /**\r\n * Deletes part of data from current byte position to end, returns removed.\r\n * \r\n * Note: Errors in strict mode.\r\n */\r\n async trim() {\r\n return await this.delete(this.#offset, this.size, false);\r\n };\r\n\r\n /**\r\n * Deletes part of data from current byte position to supplied length, returns removed.\r\n * \r\n * Note: Errors in strict mode.\r\n * \r\n * @param {number} length - Length of data in bytes to remove\r\n * @param {boolean} consume - Move position to end of removed data (default false)\r\n */\r\n async crop(length: number = 0, consume: boolean = false) {\r\n return await this.delete(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Deletes part of data from current position to supplied length, returns removed.\r\n * \r\n * Note: Only works in strict mode.\r\n * \r\n * @param {number} length - Length of data in bytes to remove\r\n * @param {boolean} consume - Move position to end of removed data (default false)\r\n */\r\n async drop(length: number = 0, consume: boolean = false) {\r\n return await this.delete(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Replaces data in data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to replace in data\r\n * @param {number} offset - Offset to add it at (defaults to current position)\r\n * @param {boolean} consume - Move current byte position to end of data (default false)\r\n */\r\n async replace(data: DataType, offset: number = this.#offset, consume: boolean = false) {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't replace data in readOnly mode!\");\r\n }\r\n\r\n await this.open();\r\n\r\n if (this.isMemoryMode) {\r\n if (this.isBuffer(data)) {\r\n if (this.isUint8Array(this.data)) {\r\n // source is Uint8Array\r\n data = new Uint8Array(data) as DataType;\r\n }\r\n } else {\r\n // input is Uint8Array\r\n if (this.isBuffer(this.data)) {\r\n // source is Buffer\r\n data = Buffer.from(data) as DataType;\r\n }\r\n }\r\n } else {\r\n if (!this.isBuffer(data)) {\r\n data = Buffer.from(data) as DataType;\r\n }\r\n }\r\n\r\n const insertLen = data?.length ?? 0;\r\n\r\n if (insertLen === 0) {\r\n return;\r\n }\r\n\r\n if (offset + insertLen > this.size) {\r\n if (this.strict || this.readOnly) {\r\n throw new Error('Growing requires strict: false');\r\n }\r\n\r\n await this.#confrimSize(offset + insertLen);\r\n }\r\n\r\n const savedOffset = this.#offset;\r\n\r\n const savedBitOffset = this.#insetBit;\r\n\r\n this.#offset = offset;\r\n\r\n this.#insetBit = 0;\r\n\r\n await this.#writeBytes(data, consume);\r\n\r\n const tailStartChunk = Math.floor((offset + insertLen) / this.windowSize);\r\n\r\n this.#invalidateFromChunk(tailStartChunk);\r\n\r\n if (!consume) {\r\n this.#offset = savedOffset;\r\n\r\n this.#insetBit = savedBitOffset;\r\n }\r\n };\r\n\r\n /**\r\n * Replaces data in data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to replace in data\r\n * @param {boolean} consume - Move current byte position to end of data (default false)\r\n * @param {number} offset - Offset to add it at (defaults to current position)\r\n */\r\n async overwrite(data: DataType, consume: boolean = false, offset: number = this.#offset) {\r\n return await this.replace(data, offset, consume);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region COPY OUT\r\n ///////////////////////////////\r\n\r\n /**\r\n * Returns part of data from current byte position to end of data unless supplied.\r\n * \r\n * @param {number} startOffset - Start location (default current position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move position to end of lifted data (default false)\r\n * @param {number} fillValue - Byte value to to fill returned data (does NOT fill unless supplied)\r\n */\r\n async fill(startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false, fillValue?: number) {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(\"Can't remove data in readOnly mode!\");\r\n }\r\n\r\n await this.open(); \r\n\r\n if (startOffset < 0 || endOffset > this.size) {\r\n throw new RangeError('Remove range out of bounds');\r\n }\r\n\r\n const removeLen = endOffset - startOffset;\r\n\r\n if (removeLen <= 0) {\r\n if (this.isMemoryMode) {\r\n if (this.isBuffer(this.data)) {\r\n return Buffer.alloc(0) as DataType;\r\n } else {\r\n return new Uint8Array(0) as DataType;\r\n }\r\n } else {\r\n return Buffer.alloc(0) as DataType;\r\n }\r\n }\r\n\r\n if(endOffset > this.size && this.strict){\r\n throw new Error('Cannot extend data while in strict mode. Use unrestrict() to enable.');\r\n }\r\n\r\n const dataRemoved = await this.#peekBytes(startOffset, removeLen);\r\n\r\n if (fillValue != undefined) {\r\n var replacement: DataType;\r\n\r\n if (this.isMemoryMode) {\r\n if (this.isBuffer(this.data)) {\r\n replacement = Buffer.alloc(removeLen, fillValue) as DataType;\r\n } else {\r\n replacement = new Uint8Array(removeLen).fill(fillValue & 0xff) as DataType;\r\n }\r\n } else {\r\n replacement = Buffer.alloc(removeLen, fillValue) as DataType;\r\n }\r\n\r\n const offsetSaver = this.#offset;\r\n\r\n const offsetBitSaver = this.#insetBit;\r\n\r\n await this.#writeBytes(replacement, consume);\r\n\r\n if (!consume) {\r\n this.#offset = offsetSaver;\r\n\r\n this.#insetBit = offsetBitSaver;\r\n }\r\n\r\n return replacement;\r\n } else {\r\n await this.#shiftTailBackward(startOffset, removeLen, consume);\r\n\r\n const newSize = this.size - removeLen;\r\n\r\n await this.#setFileSize(newSize);\r\n\r\n const startChunk = this.#getChunkIndex(startOffset);\r\n\r\n this.#invalidateFromChunk(startChunk);\r\n }\r\n\r\n return dataRemoved as DataType;\r\n };\r\n\r\n /**\r\n * Returns part of data from current byte position to end of data unless supplied.\r\n * \r\n * @param {number} startOffset - Start location (default current position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move position to end of lifted data (default false)\r\n * @param {number} fillValue - Byte value to to fill returned data (does NOT fill unless supplied)\r\n */\r\n async lift(startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false, fillValue?: number) {\r\n return await this.fill(startOffset, endOffset, consume, fillValue) as DataType;\r\n };\r\n\r\n /**\r\n * Extract data from current position to length supplied.\r\n * \r\n * Note: Does not affect supplied data.\r\n * \r\n * @param {number} length - Length of data in bytes to copy from current offset\r\n * @param {number} consume - Moves offset to end of length\r\n */\r\n async extract(length: number = 0, consume: boolean = false) {\r\n return await this.fill(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Extract data from current position to length supplied.\r\n * \r\n * Note: Does not affect supplied data.\r\n * \r\n * @param {number} length - Length of data in bytes to copy from current offset\r\n * @param {number} consume - Moves offset to end of length\r\n */\r\n async slice(length: number = 0, consume: boolean = false) {\r\n return await this.fill(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Extract data from current position to length supplied.\r\n * \r\n * Note: Does not affect supplied data.\r\n * \r\n * @param {number} length - Length of data in bytes to copy from current offset\r\n * @param {number} consume - Moves offset to end of length\r\n */\r\n async wrap(length: number = 0, consume: boolean = false) {\r\n return await this.fill(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INSERT\r\n ///////////////////////////////\r\n\r\n /**\r\n * Inserts data into data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {number} offset - Byte position to add at (defaults to current position)\r\n * @param {boolean} consume - Move current byte position to end of data (default true)\r\n */\r\n async insert(data: DataType, offset: number = this.#offset, consume: boolean = true) {\r\n if (this.readOnly || this.strict) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n\r\n throw new Error(`\\x1b[33m[Strict mode]\\x1b[0m: Can not insert data in strict mode. Use unrestrict() to enable.`);\r\n }\r\n\r\n if (!this.strict) {\r\n if (offset < 0 || offset > this.size) {\r\n throw new RangeError('Insert offset out of bounds');\r\n }\r\n }\r\n\r\n await this.open();\r\n\r\n if (this.isMemoryMode) {\r\n if (this.isBuffer(data)) {\r\n if (this.isUint8Array(this.data)) {\r\n // source is Uint8Array\r\n data = new Uint8Array(data) as DataType;\r\n }\r\n } else {\r\n // input is Uint8Array\r\n if (this.isBuffer(this.data)) {\r\n // source is Buffer\r\n data = Buffer.from(data) as DataType;\r\n }\r\n }\r\n } else {\r\n if (!this.isBuffer(data)) {\r\n data = Buffer.from(data) as DataType;\r\n }\r\n }\r\n\r\n const insertLen = data?.length ?? 0;\r\n\r\n if (insertLen === 0) {\r\n return;\r\n }\r\n\r\n const oldSize = this.size;\r\n\r\n if (offset + insertLen > this.size) {\r\n if (this.strict || this.readOnly) {\r\n throw new Error('Growing requires strict: false');\r\n }\r\n\r\n await this.#confrimSize(offset + insertLen);\r\n }\r\n\r\n await this.#shiftTailForward(offset, insertLen, oldSize, false);\r\n\r\n const savedOffset = this.#offset;\r\n\r\n const savedBitOffset = this.#insetBit;\r\n\r\n this.#offset = offset;\r\n\r\n this.#insetBit = 0;\r\n\r\n await this.#writeBytes(data, consume);\r\n\r\n const tailStartChunk = Math.floor((offset + insertLen) / this.windowSize);\r\n\r\n this.#invalidateFromChunk(tailStartChunk);\r\n\r\n if (!consume) {\r\n this.#offset = savedOffset;\r\n\r\n this.#insetBit = savedBitOffset;\r\n }\r\n };\r\n\r\n /**\r\n * Inserts data into data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {number} offset - Byte position to add at (defaults to current position)\r\n * @param {boolean} consume - Move current byte position to end of data (default true)\r\n */\r\n async place(data: DataType, offset: number = this.#offset, consume: boolean = true) {\r\n return await this.insert(data, offset, consume);\r\n };\r\n\r\n /**\r\n * Adds data to start of supplied data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {boolean} consume - Move current write position to end of data (default false)\r\n */\r\n async unshift(data: DataType, consume: boolean = false) {\r\n return await this.insert(data, 0, consume);\r\n };\r\n\r\n /**\r\n * Adds data to start of supplied data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {boolean} consume - Move current write position to end of data (default false)\r\n */\r\n async prepend(data: DataType, consume: boolean = false) {\r\n return await this.unshift(data, consume);\r\n };\r\n\r\n /**\r\n * Adds data to end of supplied data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {boolean} consume - Move current write position to end of data (default false)\r\n */\r\n async push(data: DataType, consume: boolean = false) {\r\n return await this.insert(data, this.size, consume);\r\n };\r\n\r\n /**\r\n * Adds data to end of supplied data.\r\n * \r\n * Note: Errors on strict mode.\r\n * \r\n * @param {DataType} data - ``Uint8Array`` or ``Buffer`` to add to data\r\n * @param {boolean} consume - Move current write position to end of data (default false)\r\n */\r\n async append(data: DataType, consume: boolean = false) {\r\n return await this.push(data, consume);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region MATH \r\n ///////////////////////////////\r\n\r\n /**\r\n * XOR data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} xorKey - Value, string or array to XOR\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async xor(xorKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof xorKey == \"string\") {\r\n xorKey = new TextEncoder().encode(xorKey);\r\n } else if (!(this.isBufferOrUint8Array(xorKey) || typeof xorKey == \"number\")) {\r\n throw new Error(\"XOR must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n const bytes = await this.#readBytes(Math.min(endOffset - startOffset, this.size - startOffset), consume);\r\n\r\n _XOR(bytes, 0, bytes.length, xorKey);\r\n\r\n return await this.#writeBytesAt(startOffset, bytes);\r\n };\r\n\r\n /**\r\n * XOR data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} xorKey - Value, string or array to XOR\r\n * @param {number} length - Length in bytes to XOR from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async xorThis(xorKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof xorKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof xorKey == \"string\") {\r\n xorKey = new TextEncoder().encode(xorKey)\r\n\r\n length = length ?? xorKey.length;\r\n } else if (this.isBufferOrUint8Array(xorKey)) {\r\n length = length ?? xorKey.length;\r\n } else {\r\n throw new Error(\"XOR must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return await this.xor(xorKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * OR data\r\n * \r\n * @param {number|string|Uint8Array|Buffer} orKey - Value, string or array to OR\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async or(orKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof orKey == \"string\") {\r\n orKey = new TextEncoder().encode(orKey);\r\n } else if (!(this.isBufferOrUint8Array(orKey) || typeof orKey == \"number\")) {\r\n throw new Error(\"OR must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n const bytes = await this.#readBytes(Math.min(endOffset - startOffset, this.size - startOffset), consume);\r\n\r\n _OR(bytes, 0, bytes.length, orKey);\r\n\r\n return await this.#writeBytesAt(startOffset, bytes);\r\n };\r\n\r\n /**\r\n * OR data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} orKey - Value, string or array to OR\r\n * @param {number} length - Length in bytes to OR from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async orThis(orKey: number | string | Uint8Array | Buffer, length?: number, consume?: boolean) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof orKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof orKey == \"string\") {\r\n orKey = new TextEncoder().encode(orKey);\r\n\r\n length = length ?? orKey.length;\r\n } else if (this.isBufferOrUint8Array(orKey)) {\r\n length = length ?? orKey.length;\r\n } else {\r\n throw new Error(\"OR must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return await this.or(orKey, this.#offset, this.#offset + length, consume || false);\r\n };\r\n\r\n /**\r\n * AND data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} andKey - Value, string or array to AND\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async and(andKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof andKey == \"string\") {\r\n andKey = new TextEncoder().encode(andKey);\r\n } else if (!(typeof andKey == \"object\" || typeof andKey == \"number\")) {\r\n throw new Error(\"AND must be a number, string, number array or Buffer\");\r\n }\r\n\r\n const bytes = await this.#readBytes(Math.min(endOffset - startOffset, this.size - startOffset), consume);\r\n\r\n _AND(bytes, 0, bytes.length, andKey);\r\n\r\n return await this.#writeBytesAt(startOffset, bytes);\r\n };\r\n\r\n /**\r\n * AND data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} andKey - Value, string or array to AND\r\n * @param {number} length - Length in bytes to AND from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async andThis(andKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof andKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof andKey == \"string\") {\r\n andKey = new TextEncoder().encode(andKey);\r\n\r\n length = length ?? andKey.length;\r\n } else if (this.isBufferOrUint8Array(andKey)) {\r\n length = length ?? andKey.length;\r\n } else {\r\n throw new Error(\"AND must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return await this.and(andKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Add value to data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} addKey - Value, string or array to add to data\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async add(addKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof addKey == \"string\") {\r\n addKey = new TextEncoder().encode(addKey);\r\n } else if (!(typeof addKey == \"object\" || typeof addKey == \"number\")) {\r\n throw new Error(\"Add key must be a number, string, number array or Buffer\");\r\n }\r\n\r\n const bytes = await this.#readBytes(Math.min(endOffset - startOffset, this.size - startOffset), consume);\r\n\r\n _ADD(bytes, 0, bytes.length, addKey);\r\n\r\n return await this.#writeBytesAt(startOffset, bytes);\r\n };\r\n\r\n /**\r\n * Add value to data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} addKey - Value, string or array to add to data\r\n * @param {number} length - Length in bytes to add from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async addThis(addKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof addKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof addKey == \"string\") {\r\n addKey = new TextEncoder().encode(addKey);\r\n\r\n length = length ?? addKey.length;\r\n } else if (this.isBufferOrUint8Array(addKey)) {\r\n length = length ?? addKey.length;\r\n } else {\r\n throw new Error(\"ADD must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return await this.add(addKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Not data.\r\n * \r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async not(startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n const bytes = await this.#readBytes(Math.min(endOffset - startOffset, this.size - startOffset), consume);\r\n\r\n _NOT(bytes, 0, bytes.length);\r\n\r\n return await this.#writeBytesAt(startOffset, bytes);\r\n };\r\n\r\n /**\r\n * Not data.\r\n * \r\n * @param {number} length - Length in bytes to NOT from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async notThis(length: number = 1, consume: boolean = false) {\r\n return await this.not(this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Left shift data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} shiftKey - Value, string or array to left shift data\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async lShift(shiftKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof shiftKey == \"string\") {\r\n shiftKey = new TextEncoder().encode(shiftKey);\r\n } else if (!(typeof shiftKey == \"object\" || typeof shiftKey == \"number\")) {\r\n throw new Error(\"Left shift must be a number, string, number array or Buffer\");\r\n }\r\n\r\n const bytes = await this.#readBytes(Math.min(endOffset - startOffset, this.size - startOffset), consume);\r\n\r\n _LSHIFT(bytes, 0, bytes.length, shiftKey);\r\n\r\n return await this.#writeBytesAt(startOffset, bytes);\r\n };\r\n\r\n /**\r\n * Left shift data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} shiftKey - Value, string or array to left shift data\r\n * @param {number} length - Length in bytes to left shift from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async lShiftThis(shiftKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof shiftKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof shiftKey == \"string\") {\r\n shiftKey = new TextEncoder().encode(shiftKey);\r\n\r\n length = length ?? shiftKey.length;\r\n } else if (this.isBufferOrUint8Array(shiftKey)) {\r\n length = length ?? shiftKey.length;\r\n } else {\r\n throw new Error(\"Left shift must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return await this.lShift(shiftKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n /**\r\n * Right shift data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} shiftKey - Value, string or array to right shift data\r\n * @param {number} startOffset - Start location (default current byte position)\r\n * @param {number} endOffset - End location (default end of data)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async rShift(shiftKey: number | string | Uint8Array | Buffer, startOffset: number = this.#offset, endOffset: number = this.size, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof shiftKey == \"string\") {\r\n shiftKey = new TextEncoder().encode(shiftKey);\r\n } else if (!(typeof shiftKey == \"object\" || typeof shiftKey == \"number\")) {\r\n throw new Error(\"Right shift must be a number, string, number array or Buffer\");\r\n }\r\n\r\n const bytes = await this.#readBytes(Math.min(endOffset - startOffset, this.size - startOffset), consume);\r\n\r\n _RSHIFT(bytes, 0, bytes.length, shiftKey);\r\n\r\n return await this.#writeBytesAt(startOffset, bytes);\r\n };\r\n\r\n /**\r\n * Right shift data.\r\n * \r\n * @param {number|string|Uint8Array|Buffer} shiftKey - Value, string or array to right shift data\r\n * @param {number} length - Length in bytes to right shift from curent position (default 1 byte for value, length of string or array for Uint8Array or Buffer)\r\n * @param {boolean} consume - Move current position to end of data (default false)\r\n */\r\n async rShiftThis(shiftKey: number | string | Uint8Array | Buffer, length?: number, consume: boolean = false) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (typeof shiftKey == \"number\") {\r\n length = length ?? 1;\r\n } else if (typeof shiftKey == \"string\") {\r\n shiftKey = new TextEncoder().encode(shiftKey);\r\n\r\n length = length ?? shiftKey.length;\r\n } else if (this.isBufferOrUint8Array(shiftKey)) {\r\n length = length ?? shiftKey.length;\r\n } else {\r\n throw new Error(\"right shift must be a number, string, Uint8Array or Buffer\");\r\n }\r\n\r\n return await this.rShift(shiftKey, this.#offset, this.#offset + length, consume);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region BIT READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readBit(bits?: number, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true) {\r\n await this.open();\r\n\r\n if (typeof bits != \"number\") {\r\n throw new TypeError(\"Enter number of bits to read\");\r\n }\r\n\r\n if (bits == 0) {\r\n return 0;\r\n }\r\n\r\n if (bits <= 0 || bits > 32) {\r\n throw new Error('Bit length must be between 1 and 32. Got ' + bits);\r\n }\r\n\r\n const byteEnd = Math.ceil((((bits - 1) + this.#insetBit) / 8) + this.#offset);\r\n\r\n if (byteEnd > this.size) {\r\n throw new Error(`Not enough bytes in file (need ${byteEnd}, have ${this.size})`);\r\n }\r\n\r\n const bitStart = (this.#offset * 8) + this.#insetBit;\r\n\r\n const byteStart = Math.floor(((this.#offset * 8) + this.#insetBit) / 8);\r\n\r\n const temp = await this.#peekBytes(byteStart, byteEnd - byteStart);\r\n\r\n const value = _rbit(temp, bits, bitStart % 8, endian, unsigned);\r\n\r\n if (consume) {\r\n this.#offset += Math.floor((bits + this.#insetBit) / 8); //end byte\r\n\r\n this.#insetBit = (bits + this.#insetBit) % 8;\r\n }\r\n\r\n return value;\r\n };\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n */\r\n async readUBitBE(bits: number) {\r\n return await this.readBit(bits, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n */\r\n async readUBitLE(bits: number) {\r\n return await this.readBit(bits, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n */\r\n async readBitBE(bits: number, unsigned?: boolean) {\r\n return await this.readBit(bits, unsigned, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n */\r\n async readBitLE(bits: number, unsigned?: boolean) {\r\n return await this.readBit(bits, unsigned, \"little\");\r\n };\r\n\r\n /**\r\n *\r\n * Write bits, must have at least value and number of bits.\r\n * \r\n * ``Note``: When returning to a byte write, remaining bits are skipped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - number of bits to write\r\n * @param {boolean} unsigned - if value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n async writeBit(value: number, bits: number, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true) {\r\n if (this.readOnly) {\r\n this.errorDump ? console.log(\"\\x1b[31m[Error]\\x1b[0m hexdump:\\n\" + this.hexdump({ returnString: true })) : \"\";\r\n \r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n await this.open();\r\n\r\n if (bits <= 0) {\r\n return;\r\n }\r\n\r\n if (bits <= 0 || bits > 32) {\r\n throw new Error('Bit length must be between 1 and 32. Got ' + bits);\r\n }\r\n\r\n value = numberSafe(value, bits, unsigned);\r\n\r\n const endOffset = Math.ceil((((bits - 1) + this.#insetBit) / 8) + this.#offset);\r\n\r\n const temp = await this.#peekBytes(this.#offset, Math.ceil(endOffset - this.#offset)) as DataType;\r\n\r\n _wbit(temp, value, bits, this.#insetBit, endian, unsigned);\r\n\r\n await this.#writeBytesAt(this.#offset, temp);\r\n\r\n if (consume) {\r\n this.#offset += Math.floor((bits + this.#insetBit) / 8);\r\n\r\n this.#insetBit = (bits + this.#insetBit) % 8;\r\n }\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n * @returns number\r\n */\r\n async writeUBitBE(value: number, bits: number) {\r\n return await this.writeBit(value, bits, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n * @returns number\r\n */\r\n async writeUBitLE(value: number, bits: number) {\r\n return await this.writeBit(value, bits, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns number\r\n */\r\n async writeBitBE(value: number, bits: number, unsigned?: boolean) {\r\n return await this.writeBit(value, bits, unsigned, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns number\r\n */\r\n async writeBitLE(value: number, bits: number, unsigned?: boolean) {\r\n return await this.writeBit(value, bits, unsigned, \"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region BYTE READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read byte.\r\n * \r\n * @param {boolean} unsigned - if the value is unsigned or not\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readByte(unsigned: boolean = false, consume: boolean = true) {\r\n await this.open();\r\n\r\n const data = await this.#readBytes(1, consume);\r\n\r\n var value = data[0];\r\n\r\n if (unsigned) {\r\n value = value & 0xFF;\r\n } else {\r\n value = value > 127 ? value - 256 : value;\r\n }\r\n return value;\r\n }\r\n\r\n /**\r\n * Read unsigned byte.\r\n */\r\n async readUByte() {\r\n return await this.readByte(true);\r\n };\r\n\r\n /**\r\n * Read multiple bytes.\r\n * \r\n * @param {number} amount - amount of bytes to read\r\n * @param {boolean} unsigned - if value is unsigned or not\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readBytes(amount: number, unsigned?: boolean, consume: boolean = true) {\r\n const array: number[] = [];\r\n\r\n for (let i = 0; i < amount; i++) {\r\n const value = await this.readByte(unsigned, consume);\r\n\r\n array.push(value);\r\n }\r\n\r\n return array;\r\n };\r\n\r\n /**\r\n * Read multiple unsigned bytes.\r\n * \r\n * @param {number} amount - amount of bytes to read\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readUBytes(amount: number, consume: boolean = true) {\r\n return await this.readBytes(amount, true, consume);\r\n };\r\n\r\n /**\r\n * Write byte.\r\n *\r\n * @param {number} value - value as int \r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {boolean} consume - move offset after write\r\n */\r\n async writeByte(value: number, unsigned?: boolean, consume: boolean = true) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n this.open();\r\n\r\n await this.#writeBytes([numberSafe(value, 8, unsigned)], consume);\r\n };\r\n\r\n /**\r\n * Write multiple unsigned bytes.\r\n * \r\n * @param {number[]} values - array of values as int\r\n */\r\n async writeUBytes(values: number[]) {\r\n for (let i = 0; i < values.length; i++) {\r\n await this.writeUByte(values[i]);\r\n }\r\n };\r\n\r\n /**\r\n * Write unsigned byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeUByte(value: number) {\r\n return await this.writeByte(value, true);\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INT16 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read short.\r\n * \r\n * @param {boolean} unsigned - if value is unsigned or not\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readInt16(unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true) {\r\n await this.open();\r\n\r\n const buf = await this.#readBytes(2, consume);\r\n\r\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\r\n\r\n var value: number;\r\n\r\n if (canInt16) {\r\n if (unsigned) {\r\n return view.getUint16(0, endian == \"little\");\r\n } else {\r\n return view.getInt16(0, endian == \"little\");\r\n }\r\n } else {\r\n return _rint16(buf, 0, endian, unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Read unsigned short.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async readUInt16(endian: endian = this.endian) {\r\n return await this.readInt16(true, endian);\r\n };\r\n\r\n /**\r\n * Read unsigned short in little endian.\r\n */\r\n async readUInt16LE() {\r\n return await this.readUInt16(\"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in big endian.\r\n */\r\n async readUInt16BE() {\r\n return await this.readUInt16(\"big\");\r\n };\r\n\r\n /**\r\n * Read signed short in little endian.\r\n */\r\n async readInt16LE() {\r\n return await this.readInt16(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed short in big endian.\r\n */\r\n async readInt16BE() {\r\n return await this.readInt16(false, \"big\");\r\n };\r\n\r\n /**\r\n * Write int16.\r\n *\r\n * @param {number} value - value as int \r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n async writeInt16(value: number, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (canInt16) {\r\n if (unsigned) {\r\n view2ByteDummy.setUint16(0, value, endian == \"little\");\r\n } else {\r\n view2ByteDummy.setInt16(0, value, endian == \"little\");\r\n }\r\n } else {\r\n _wint16(buff2ByteDummy, numberSafe(value, 16, unsigned), 0, endian, unsigned);\r\n }\r\n\r\n return await this.#writeBytes(buff2ByteDummy, consume);\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async writeUInt16(value: number, endian: endian = this.endian) {\r\n return await this.writeInt16(value, true, endian);\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeUInt16BE(value: number) {\r\n return await this.writeUInt16(value, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeUInt16LE(value: number) {\r\n return await this.writeUInt16(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeInt16LE(value: number) {\r\n return await this.writeInt16(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeInt16BE(value: number) {\r\n return await this.writeInt16(value, false, \"big\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region HALF FLOAT\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read 16 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readHalfFloat(endian: endian = this.endian, consume: boolean = true) {\r\n const buf = await this.#readBytes(2, consume);\r\n\r\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\r\n\r\n if (canFloat16) {\r\n return view.getFloat16(0, endian == \"little\");\r\n } else {\r\n return _rhalffloat(buf, 0, endian);\r\n }\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readFloat16(endian: endian = this.endian, consume: boolean = true) {\r\n return await this.readHalfFloat(endian, consume);\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n */\r\n async readHalfFloatBE() {\r\n return await this.readHalfFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n */\r\n async readFloat16BE() {\r\n return await this.readHalfFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n */\r\n async readHalfFloatLE() {\r\n return await this.readHalfFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read 16 bit float.\r\n */\r\n async readFloat16LE() {\r\n return await this.readHalfFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n async writeHalfFloat(value: number, endian: endian = this.endian, consume: boolean = true) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (canFloat16) {\r\n view2ByteDummy.setFloat16(0, value, endian == \"little\");\r\n } else {\r\n _whalffloat(buff2ByteDummy, value, 0, endian);\r\n }\r\n\r\n return await this.#writeBytes(buff2ByteDummy, consume);\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n async writeFloat16(value: number, endian: endian = this.endian, consume: boolean = true) {\r\n return await this.writeHalfFloat(value, endian, consume);\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeHalfFloatBE(value: number) {\r\n return await this.writeHalfFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeFloat16BE(value: number) {\r\n return await this.writeHalfFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeHalfFloatLE(value: number) {\r\n return await this.writeHalfFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Writes 16 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeFloat16LE(value: number) {\r\n return await this.writeHalfFloat(value, \"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INT32 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n */\r\n async readInt32(unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true) {\r\n const buf = await this.#readBytes(4, consume);\r\n\r\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\r\n\r\n if (canInt32) {\r\n if (unsigned) {\r\n return view.getUint32(0, endian == \"little\");\r\n } else {\r\n return view.getInt32(0, endian == \"little\");\r\n }\r\n } else {\r\n return _rint32(buf, 0, endian, unsigned);\r\n }\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n */\r\n async readInt(endian?: endian) {\r\n return await this.readInt32(false, endian);\r\n }\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n */\r\n async readInt32BE() {\r\n return await this.readInt(\"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n */\r\n async readInt32LE() {\r\n return await this.readInt(\"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async readUInt32(endian?: endian) {\r\n return await this.readInt32(true, endian);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async readUInt(endian?: endian) {\r\n return await this.readInt32(true, endian);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n */\r\n async readUInt32BE() {\r\n return await this.readUInt(\"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n */\r\n async readUInt32LE() {\r\n return await this.readUInt(\"little\");\r\n };\r\n\r\n /**\r\n * Write 32 bit integer.\r\n *\r\n * @param {number} value - value as int \r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n async writeInt32(value: number, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (canInt32) {\r\n if (unsigned) {\r\n view4ByteDummy.setUint32(0, value, endian == \"little\");\r\n } else {\r\n view4ByteDummy.setInt32(0, value, endian == \"little\");\r\n }\r\n } else {\r\n _wint32(buff4ByteDummy, numberSafe(value, 32, unsigned), 0, endian, unsigned);\r\n }\r\n\r\n return await this.#writeBytes(buff4ByteDummy, consume);\r\n }\r\n\r\n /**\r\n * Write signed 32 bit integer.\r\n *\r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async writeInt(value: number, endian?: endian) {\r\n return await this.writeInt32(value, false, endian);\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeInt32LE(value: number) {\r\n return await this.writeInt(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeInt32BE(value: number) {\r\n return await this.writeInt(value, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 32 bit integer.\r\n *\r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async writeUInt(value: number, endian?: endian) {\r\n return await this.writeInt32(value, true, endian);\r\n };\r\n\r\n /**\r\n * Write unsigned 32 bit integer.\r\n *\r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async writeUInt32(value: number, endian?: endian) {\r\n return await this.writeUInt(value, endian);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeUInt32BE(value: number) {\r\n return await this.writeUInt32(value, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeUInt32LE(value: number) {\r\n return await this.writeUInt32(value, \"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FLOAT32 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read 32 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readFloat(endian: endian = this.endian, consume: boolean = true) {\r\n const buf = await this.#readBytes(4, consume);\r\n\r\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\r\n\r\n if (canFloat32) {\r\n return view.getFloat32(0, endian == \"little\");\r\n } else {\r\n return _rfloat(buf, 0, endian);\r\n }\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readFloat32(endian: endian = this.endian, consume: boolean = true) {\r\n return await this.readFloat(endian, consume);\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n */\r\n async readFloatBE() {\r\n return await this.readFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n */\r\n async readFloat32BE() {\r\n return await this.readFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n */\r\n async readFloatLE() {\r\n return await this.readFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read 32 bit float.\r\n */\r\n async readFloat32LE() {\r\n return await this.readFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n async writeFloat(value: number, endian: endian = this.endian, consume: boolean = true) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (canFloat32) {\r\n view4ByteDummy.setFloat32(0, value, endian == \"little\");\r\n } else {\r\n _wfloat(buff4ByteDummy, value, 0, endian);\r\n }\r\n\r\n return await this.#writeBytes(buff4ByteDummy, consume);\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeFloatLE(value: number) {\r\n return await this.writeFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeFloat32LE(value: number) {\r\n return await this.writeFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeFloat32BE(value: number) {\r\n return await this.writeFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Write 32 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeFloatBE(value: number) {\r\n return await this.writeFloat(value, \"big\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region INT64 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n * \r\n * @param {boolean} unsigned - if value is unsigned or not\r\n * @param {endian?} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readInt64(unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true): Promise<alwaysBigInt extends true ? bigint : number> {\r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n\r\n const buf = await this.#readBytes(8, consume);\r\n\r\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\r\n\r\n var value: bigint;\r\n\r\n if (canBigInt64) {\r\n if (unsigned) {\r\n value = view.getBigUint64(0, endian == \"little\");\r\n } else {\r\n value = view.getBigInt64(0, endian == \"little\");\r\n }\r\n } else {\r\n value = _rint64(buf, 0, endian, unsigned);\r\n }\r\n\r\n if (this.enforceBigInt == true || (typeof value == \"bigint\" && !isSafeInt64(value))) {\r\n return value as alwaysBigInt extends true ? bigint : number;\r\n } else {\r\n if (isSafeInt64(value)) {\r\n return Number(value) as alwaysBigInt extends true ? bigint : number;\r\n } else {\r\n throw new Error(\"Value is outside of number range and enforceBigInt is set to false. \" + value);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async readUInt64(): Promise<alwaysBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true);\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async readInt64BE(): Promise<alwaysBigInt extends true ? bigint : number> {\r\n return await this.readInt64(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async readInt64LE(): Promise<alwaysBigInt extends true ? bigint : number> {\r\n return await this.readInt64(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async readUInt64BE(): Promise<alwaysBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async readUInt64LE(): Promise<alwaysBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true, \"little\");\r\n };\r\n\r\n /**\r\n * Write 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @param {boolean} consume - move offset after write\r\n */\r\n async writeInt64(value: BigValue, unsigned: boolean = false, endian: endian = this.endian, consume: boolean = true) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n \r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n\r\n if (canBigInt64) {\r\n if (unsigned) {\r\n view8ByteDummy.setBigUint64(0, BigInt(value), endian == \"little\");\r\n } else {\r\n view8ByteDummy.setBigInt64(0, BigInt(value), endian == \"little\");\r\n }\r\n } else {\r\n _wint64(buff8ByteDummy, numberSafe(value, 64, unsigned), 0, endian, unsigned);\r\n }\r\n\r\n return await this.#writeBytes(buff8ByteDummy, consume);\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async writeUInt64(value: BigValue, endian: endian = this.endian) {\r\n return await this.writeInt64(value, true, endian);\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async writeInt64LE(value: BigValue) {\r\n return await this.writeInt64(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async writeInt64BE(value: BigValue) {\r\n return await this.writeInt64(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async writeUInt64LE(value: BigValue) {\r\n return await this.writeInt64(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async writeUInt64BE(value: BigValue) {\r\n return await this.writeInt64(value, true, \"big\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region FLOAT64 READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Read 64 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async readDoubleFloat(endian: endian = this.endian, consume: boolean = true) {\r\n const buf = await this.#readBytes(8, consume);\r\n\r\n const view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\r\n\r\n if (canFloat64) {\r\n return view.getFloat64(0, endian == \"little\");\r\n } else {\r\n if (!hasBigInt) {\r\n throw new Error(\"System doesn't support BigInt values.\");\r\n }\r\n \r\n return _rdfloat(buf, 0, endian);\r\n }\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n * \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async readFloat64(endian: endian = this.endian) {\r\n return await this.readDoubleFloat(endian);\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n */\r\n async readDoubleFloatBE() {\r\n return await this.readDoubleFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n */\r\n async readFloat64BE() {\r\n return await this.readDoubleFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n */\r\n async readDoubleFloatLE() {\r\n return await this.readDoubleFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read 64 bit float.\r\n */\r\n async readFloat64LE() {\r\n return await this.readDoubleFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async writeDoubleFloat(value: number, endian: endian = this.endian, consume: boolean = true) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n if (canFloat64) {\r\n view8ByteDummy.setFloat64(0, value, endian == \"little\");\r\n } else {\r\n _wdfloat(buff8ByteDummy, value, 0, endian);\r\n }\r\n\r\n return await this.#writeBytes(buff8ByteDummy, consume);\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async writeFloat64(value: number, endian: endian = this.endian) {\r\n return await this.writeDoubleFloat(value, endian);\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeDoubleFloatBE(value: number) {\r\n return await this.writeDoubleFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeFloat64BE(value: number) {\r\n return await this.writeDoubleFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeDoubleFloatLE(value: number) {\r\n return await this.writeDoubleFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Writes 64 bit float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async writeFloat64LE(value: number) {\r\n return await this.writeDoubleFloat(value, \"little\");\r\n };\r\n\r\n ///////////////////////////////\r\n // #region STRING READER\r\n ///////////////////////////////\r\n\r\n /**\r\n * Reads string, use options object for different types.\r\n * \r\n * @param {stringOptions} options \r\n * @param {stringOptions[\"length\"]?} options.length - for fixed length, non-terminate value utf strings\r\n * @param {stringOptions[\"stringType\"]?} options.stringType - utf-8, utf-16, utf-32, pascal, wide-pascal or double-wide-pascal\r\n * @param {stringOptions[\"terminateValue\"]?} options.terminateValue - only with stringType: \"utf\"\r\n * @param {stringOptions[\"lengthReadSize\"]?} options.lengthReadSize - for pascal strings. 1, 2 or 4 byte length read size\r\n * @param {stringOptions[\"encoding\"]?} options.encoding - TextEncoder accepted types \r\n * @param {stringOptions[\"endian\"]?} options.endian - for wide-pascal, double-wide-pascal and utf-16, utf-32\r\n * @param {boolean} consume - move offset after read\r\n */\r\n async readString(options: stringOptions = this.strDefaults, consume: boolean = true) {\r\n await this.open();\r\n\r\n var length: number = options.length;\r\n\r\n var stringType: stringOptions[\"stringType\"] = options.stringType ?? 'utf-8';\r\n\r\n var terminateValue: number = options.terminateValue;\r\n\r\n var lengthReadSize: number = options.lengthReadSize ?? 1;\r\n\r\n var stripNull: boolean = options.stripNull ?? true;\r\n\r\n var endian: \"little\" | \"big\" = options.endian ?? this.endian;\r\n\r\n var encoding: stringOptions[\"encoding\"] = options.encoding ?? 'utf-8';\r\n\r\n var terminate = terminateValue;\r\n\r\n var readLengthinBytes = 0;\r\n\r\n if (length != undefined) {\r\n switch (stringType) {\r\n case \"utf-8\":\r\n readLengthinBytes = length;\r\n break;\r\n case \"utf-16\":\r\n readLengthinBytes = length * 2;\r\n break;\r\n case \"utf-32\":\r\n readLengthinBytes = length * 4;\r\n break;\r\n default:\r\n readLengthinBytes = length;\r\n break;\r\n }\r\n } else {\r\n readLengthinBytes = this.data.length - this.#offset;\r\n }\r\n\r\n if (this.#offset + readLengthinBytes > this.size) {\r\n if (this.strict || this.readOnly) {\r\n throw new Error('Growing requires strict: false');\r\n }\r\n\r\n await this.#confrimSize(this.#offset + readLengthinBytes);\r\n }\r\n\r\n if (terminateValue != undefined && typeof terminateValue == \"number\") {\r\n terminate = terminateValue & 0xFF;\r\n } else {\r\n terminate = 0;\r\n }\r\n\r\n const saved_offset = this.#offset;\r\n\r\n const saved_bitoffset = this.#insetBit;\r\n\r\n const str = await _rstringAsync(stringType, lengthReadSize, readLengthinBytes, terminate, stripNull, encoding, endian, this.readUByte.bind(this), this.readUInt16.bind(this), this.readUInt32.bind(this));\r\n\r\n if (!consume) {\r\n this.#offset = saved_offset;\r\n\r\n this.#insetBit = saved_bitoffset\r\n }\r\n\r\n return str;\r\n };\r\n\r\n /**\r\n * Writes string, use options object for different types.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions?} options\r\n * @param {stringOptions[\"length\"]?} options.length - for fixed length, non-terminate value utf strings\r\n * @param {stringOptions[\"stringType\"]?} options.stringType - utf-8, utf-16, utf-32, pascal, wide-pascal or double-wide-pascal\r\n * @param {stringOptions[\"terminateValue\"]?} options.terminateValue - only with stringType: \"utf\"\r\n * @param {stringOptions[\"lengthWriteSize\"]?} options.lengthWriteSize - for pascal strings. 1, 2 or 4 byte length write size\r\n * @param {stringOptions[\"encoding\"]?} options.encoding - TextEncoder accepted types \r\n * @param {stringOptions[\"endian\"]?} options.endian - for wide-pascal, double-wide-pascal and utf-16, utf-32\r\n * @param {boolean} consume - move offset after write\r\n */\r\n async writeString(string: string, options: stringOptions = this.strDefaults, consume: boolean = true) {\r\n if (this.readOnly) {\r\n throw new Error(\"Can't write data in readOnly mode!\");\r\n }\r\n\r\n await this.open();\r\n\r\n var length: number = options.length;\r\n\r\n var stringType: stringOptions[\"stringType\"] = options.stringType ?? 'utf-8';\r\n\r\n var terminateValue: number = options.terminateValue;\r\n\r\n var lengthWriteSize: number = options.lengthWriteSize ?? 1;\r\n\r\n var endian: \"little\" | \"big\" = options.endian ?? this.endian;\r\n\r\n var maxLengthValue = length ?? string.length;\r\n\r\n var strUnits = string.length;\r\n\r\n var maxBytes: number;\r\n\r\n switch (stringType) {\r\n case 'pascal':\r\n maxLengthValue = 255;\r\n\r\n if (length != undefined) {\r\n maxLengthValue = length;\r\n }\r\n\r\n break;\r\n case 'wide-pascal':\r\n strUnits *= 2;\r\n\r\n maxLengthValue = 65535;\r\n\r\n if (length != undefined) {\r\n maxLengthValue = length / 2;\r\n }\r\n\r\n break;\r\n case 'double-wide-pascal':\r\n strUnits *= 4;\r\n\r\n maxLengthValue = 4294967295;\r\n\r\n if (length != undefined) {\r\n maxLengthValue = length / 4;\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (terminateValue == undefined) {\r\n if (stringType == \"ascii\" || stringType == 'utf-8' ||\r\n stringType == 'utf-16' ||\r\n stringType == 'utf-32'\r\n ) {\r\n terminateValue = 0;\r\n }\r\n }\r\n\r\n var maxBytes = Math.min(strUnits, maxLengthValue);\r\n\r\n string = string.substring(0, maxBytes);\r\n\r\n var encodedString: Uint8Array<ArrayBufferLike>;\r\n\r\n var totalLength = string.length;\r\n\r\n switch (stringType) {\r\n case 'ascii':\r\n case 'utf-8':\r\n case 'pascal':\r\n {\r\n encodedString = new TextEncoder().encode(string);\r\n\r\n totalLength = encodedString.byteLength + 1;\r\n }\r\n break;\r\n case 'utf-16':\r\n case 'wide-pascal':\r\n {\r\n const utf16Buffer = new Uint16Array(string.length);\r\n\r\n for (let i = 0; i < string.length; i++) {\r\n utf16Buffer[i] = string.charCodeAt(i);\r\n }\r\n\r\n encodedString = new Uint8Array(utf16Buffer.buffer);\r\n\r\n totalLength = encodedString.byteLength + 2;\r\n }\r\n break;\r\n case 'utf-32':\r\n case 'double-wide-pascal':\r\n {\r\n const utf32Buffer = new Uint32Array(string.length);\r\n\r\n for (let i = 0; i < string.length; i++) {\r\n utf32Buffer[i] = string.codePointAt(i);\r\n }\r\n\r\n encodedString = new Uint8Array(utf32Buffer.buffer);\r\n\r\n totalLength = encodedString.byteLength + 4;\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n await this.#confrimSize(this.#offset + totalLength);\r\n \r\n const savedOffset = this.#offset;\r\n\r\n const savedBitOffset = this.#insetBit;\r\n\r\n await _wstringAsync(encodedString, stringType, endian, terminateValue, lengthWriteSize, this.writeUByte.bind(this), this.writeUInt16.bind(this), this.writeUInt32.bind(this));\r\n\r\n if (!consume) {\r\n this.#offset = savedOffset;\r\n\r\n this.#insetBit = savedBitOffset;\r\n }\r\n };\r\n};","import {\r\n BiOptions,\r\n endian,\r\n stringOptions,\r\n} from \"./common.js\";\r\nimport { BiBaseAsync } from './core/BiBaseAsync.js';\r\n\r\n/**\r\n * Async Binary reader, includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - File path or a ``Buffer`` or ``Uint8Array``. Always found in ``BiReader.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start writer (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start writer (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``false``)\r\n * @param {BiOptions[\"growthIncrement\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false. Note: Changes logic in ``.get`` and ``.return``.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always stay ``BigInt``.\r\n * @param {BiOptions[\"readOnly\"]} options.readOnly - If you want to prevent write operations (default true in reader)\r\n * \r\n * @since 4.0\r\n */\r\nexport class BiReaderAsync<DataType extends Buffer | Uint8Array, hasBigInt extends boolean> extends BiBaseAsync<DataType, hasBigInt> {\r\n\r\n /**\r\n * Async Binary reader, includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - File path or a ``Buffer`` or ``Uint8Array``. Always found in ``BiReader.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start writer (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start writer (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``false``)\r\n * @param {BiOptions[\"growthIncrement\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always stay ``BigInt``.\r\n * @param {BiOptions[\"readOnly\"]} options.readOnly - If you want to prevent write operations (default true in reader)\r\n */\r\n constructor(input: string | DataType, options: BiOptions = {}) {\r\n options.byteOffset = options.byteOffset ?? 0;\r\n \r\n options.bitOffset = options.bitOffset ?? 0;\r\n\r\n options.endianness = options.endianness ?? \"little\";\r\n\r\n options.strict = options.strict ?? true;\r\n\r\n options.growthIncrement = options.growthIncrement ?? 1048576;\r\n\r\n options.enforceBigInt = options.enforceBigInt ?? false;\r\n\r\n options.readOnly = options.readOnly ?? true;\r\n\r\n options.windowSize = options.windowSize = 4096;\r\n\r\n if (input == undefined) {\r\n throw new Error(\"Can not start BiReader without data.\");\r\n }\r\n\r\n super(input, options);\r\n };\r\n\r\n /**\r\n * Creates and opens a new `BiReaderAsync`\r\n * \r\n * Includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - File path or a ``Buffer`` or ``Uint8Array``. Always found in ``BiReader.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start writer (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start writer (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``false``)\r\n * @param {BiOptions[\"growthIncrement\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false. Note: Changes logic in ``.get`` and ``.return``.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always stay ``BigInt``.\r\n * @param {BiOptions[\"readonly\"]} options.readonly - If you want to prevent write operations (default true in reader)\r\n * \r\n * @returns {Promise<BiReaderAsync<DataType, hasBigInt>>}\r\n */\r\n static async create<DataType extends Buffer | Uint8Array, hasBigInt extends boolean>(input: string | DataType, options: BiOptions = {}): Promise<BiReaderAsync<DataType, hasBigInt>> {\r\n const instance = new BiReaderAsync<DataType, hasBigInt>(input, options);\r\n\r\n await instance.open();\r\n\r\n return instance;\r\n };\r\n\r\n //\r\n // #region Bit Aliases\r\n //\r\n\r\n /**\r\n * Bit field reader.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {Promise<number>}\r\n */\r\n async bit(bits: number, unsigned?: boolean, endian?: endian): Promise<number> {\r\n return await this.readBit(bits, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Bit field reader. Unsigned read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {endian} endian - ``big`` or ``little``\r\n * @returns {Promise<number>}\r\n */\r\n async ubit(bits: number, endian?: endian): Promise<number> {\r\n return await this.readBit(bits, true, endian);\r\n };\r\n\r\n /**\r\n * Bit field reader. Unsigned big endian read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @returns {Promise<number>}\r\n */\r\n async ubitbe(bits: number): Promise<number> {\r\n return await this.bit(bits, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Big endian read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns {Promise<number>}\r\n */\r\n async bitbe(bits: number, unsigned?: boolean): Promise<number> {\r\n return await this.bit(bits, unsigned, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Unsigned little endian read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @returns {Promise<number>}\r\n */\r\n async ubitle(bits: number): Promise<number> {\r\n return await this.bit(bits, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Little endian read.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n *\r\n * @param {number} bits - bits to read\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @returns {Promise<number>}\r\n */\r\n async bitle(bits: number, unsigned?: boolean): Promise<number> {\r\n return await this.bit(bits, unsigned, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit1(): Promise<number> {\r\n return await this.bit(1);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit1le(): Promise<number> {\r\n return await this.bit(1, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit1be(): Promise<number> {\r\n return await this.bit(1, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit1(): Promise<number> {\r\n return await this.bit(1, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit1le(): Promise<number> {\r\n return await this.bit(1, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 1 bit.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit1be(): Promise<number> {\r\n return await this.bit(1, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit2(): Promise<number> {\r\n return await this.bit(2);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit2le(): Promise<number> {\r\n return await this.bit(2, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit2be(): Promise<number> {\r\n return await this.bit(2, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit2(): Promise<number> {\r\n return await this.bit(2, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit2le(): Promise<number> {\r\n return await this.bit(2, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 2 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit2be(): Promise<number> {\r\n return await this.bit(2, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit3(): Promise<number> {\r\n return await this.bit(3);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit3le(): Promise<number> {\r\n return await this.bit(3, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit3be(): Promise<number> {\r\n return await this.bit(3, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit3(): Promise<number> {\r\n return await this.bit(3, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit3le(): Promise<number> {\r\n return await this.bit(3, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 3 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit3be(): Promise<number> {\r\n return await this.bit(3, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit4(): Promise<number> {\r\n return await this.bit(4);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit4le(): Promise<number> {\r\n return await this.bit(4, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit4be(): Promise<number> {\r\n return await this.bit(4, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit4(): Promise<number> {\r\n return await this.bit(4, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit4le(): Promise<number> {\r\n return await this.bit(4, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 4 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit4be(): Promise<number> {\r\n return await this.bit(4, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit5(): Promise<number> {\r\n return await this.bit(5);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit5le(): Promise<number> {\r\n return await this.bit(5, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit5be(): Promise<number> {\r\n return await this.bit(5, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit5(): Promise<number> {\r\n return await this.bit(5, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit5le(): Promise<number> {\r\n return await this.bit(5, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 5 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit5be(): Promise<number> {\r\n return await this.bit(5, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit6(): Promise<number> {\r\n return await this.bit(6);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit6le(): Promise<number> {\r\n return await this.bit(6, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit6be(): Promise<number> {\r\n return await this.bit(6, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit6(): Promise<number> {\r\n return await this.bit(6, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit6le(): Promise<number> {\r\n return await this.bit(6, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 6 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit6be(): Promise<number> {\r\n return await this.bit(6, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit7(): Promise<number> {\r\n return await this.bit(7);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit7le(): Promise<number> {\r\n return await this.bit(7, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit7be(): Promise<number> {\r\n return await this.bit(7, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit7(): Promise<number> {\r\n return await this.bit(7, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit7le(): Promise<number> {\r\n return await this.bit(7, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 7 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit7be(): Promise<number> {\r\n return await this.bit(7, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit8(): Promise<number> {\r\n return await this.bit(8);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit8le(): Promise<number> {\r\n return await this.bit(8, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit8be(): Promise<number> {\r\n return await this.bit(8, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit8(): Promise<number> {\r\n return await this.bit(8, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit8le(): Promise<number> {\r\n return await this.bit(8, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 8 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit8be(): Promise<number> {\r\n return await this.bit(8, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit9(): Promise<number> {\r\n return await this.bit(9);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit9le(): Promise<number> {\r\n return await this.bit(9, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit9be(): Promise<number> {\r\n return await this.bit(9, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit9(): Promise<number> {\r\n return await this.bit(9, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit9le(): Promise<number> {\r\n return await this.bit(9, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 9 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit9be(): Promise<number> {\r\n return await this.bit(9, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit10(): Promise<number> {\r\n return await this.bit(10);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit10le(): Promise<number> {\r\n return await this.bit(10, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit10be(): Promise<number> {\r\n return await this.bit(10, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit10(): Promise<number> {\r\n return await this.bit(10, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit10le(): Promise<number> {\r\n return await this.bit(10, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 10 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit10be(): Promise<number> {\r\n return await this.bit(10, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit11(): Promise<number> {\r\n return await this.bit(11);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit11le(): Promise<number> {\r\n return await this.bit(11, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit11be(): Promise<number> {\r\n return await this.bit(11, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit11(): Promise<number> {\r\n return await this.bit(11, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit11le(): Promise<number> {\r\n return await this.bit(11, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 11 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit11be(): Promise<number> {\r\n return await this.bit(11, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit12(): Promise<number> {\r\n return await this.bit(12);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit12le(): Promise<number> {\r\n return await this.bit(12, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit12be(): Promise<number> {\r\n return await this.bit(12, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit12(): Promise<number> {\r\n return await this.bit(12, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit12le(): Promise<number> {\r\n return await this.bit(12, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 12 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit12be(): Promise<number> {\r\n return await this.bit(12, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit13(): Promise<number> {\r\n return await this.bit(13);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit13le(): Promise<number> {\r\n return await this.bit(13, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit13be(): Promise<number> {\r\n return await this.bit(13, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit13(): Promise<number> {\r\n return await this.bit(13, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit13le(): Promise<number> {\r\n return await this.bit(13, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 13 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit13be(): Promise<number> {\r\n return await this.bit(13, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit14(): Promise<number> {\r\n return await this.bit(14);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit14le(): Promise<number> {\r\n return await this.bit(14, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit14be(): Promise<number> {\r\n return await this.bit(14, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit14(): Promise<number> {\r\n return await this.bit(14, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit14le(): Promise<number> {\r\n return await this.bit(14, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 14 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit14be(): Promise<number> {\r\n return await this.bit(14, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit15(): Promise<number> {\r\n return await this.bit(15);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {promise<number>}\r\n */\r\n async bit15le(): Promise<number> {\r\n return await this.bit(15, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {promise<number>}\r\n */\r\n async bit15be(): Promise<number> {\r\n return await this.bit(15, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit15(): Promise<number> {\r\n return await this.bit(15, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit15le(): Promise<number> {\r\n return await this.bit(15, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 15 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit15be(): Promise<number> {\r\n return await this.bit(15, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit16(): Promise<number> {\r\n return await this.bit(16);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit16le(): Promise<number> {\r\n return await this.bit(16, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit16be(): Promise<number> {\r\n return await this.bit(16, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit16(): Promise<number> {\r\n return await this.bit(16, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit16le(): Promise<number> {\r\n return await this.bit(16, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 16 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit16be(): Promise<number> {\r\n return await this.bit(16, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit17(): Promise<number> {\r\n return await this.bit(17);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit17le(): Promise<number> {\r\n return await this.bit(17, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit17be(): Promise<number> {\r\n return await this.bit(17, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit17(): Promise<number> {\r\n return await this.bit(17, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit17le(): Promise<number> {\r\n return await this.bit(17, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 17 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit17be(): Promise<number> {\r\n return await this.bit(17, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit18(): Promise<number> {\r\n return await this.bit(18);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit18le(): Promise<number> {\r\n return await this.bit(18, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit18be(): Promise<number> {\r\n return await this.bit(18, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit18(): Promise<number> {\r\n return await this.bit(18, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit18le(): Promise<number> {\r\n return await this.bit(18, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 18 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit18be(): Promise<number> {\r\n return await this.bit(18, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit19(): Promise<number> {\r\n return await this.bit(19);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit19le(): Promise<number> {\r\n return await this.bit(19, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit19be(): Promise<number> {\r\n return await this.bit(19, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit19(): Promise<number> {\r\n return await this.bit(19, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit19le(): Promise<number> {\r\n return await this.bit(19, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 19 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit19be(): Promise<number> {\r\n return await this.bit(19, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit20(): Promise<number> {\r\n return await this.bit(20);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit20le(): Promise<number> {\r\n return await this.bit(20, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit20be(): Promise<number> {\r\n return await this.bit(20, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit20(): Promise<number> {\r\n return await this.bit(20, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit20le(): Promise<number> {\r\n return await this.bit(20, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 20 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit20be(): Promise<number> {\r\n return await this.bit(20, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit21(): Promise<number> {\r\n return await this.bit(21);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit21le(): Promise<number> {\r\n return await this.bit(21, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit21be(): Promise<number> {\r\n return await this.bit(21, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit21(): Promise<number> {\r\n return await this.bit(21, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit21le(): Promise<number> {\r\n return await this.bit(21, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 21 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit21be(): Promise<number> {\r\n return await this.bit(21, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit22(): Promise<number> {\r\n return await this.bit(22);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit22le(): Promise<number> {\r\n return await this.bit(22, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit22be(): Promise<number> {\r\n return await this.bit(22, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit22(): Promise<number> {\r\n return await this.bit(22, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit22le(): Promise<number> {\r\n return await this.bit(22, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 22 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit22be(): Promise<number> {\r\n return await this.bit(22, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit23(): Promise<number> {\r\n return await this.bit(23);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit23le(): Promise<number> {\r\n return await this.bit(23, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit23be(): Promise<number> {\r\n return await this.bit(23, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit23(): Promise<number> {\r\n return await this.bit(23, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit23le(): Promise<number> {\r\n return await this.bit(23, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 23 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit23be(): Promise<number> {\r\n return await this.bit(23, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit24(): Promise<number> {\r\n return await this.bit(24);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit24le(): Promise<number> {\r\n return await this.bit(24, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit24be(): Promise<number> {\r\n return await this.bit(24, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit24(): Promise<number> {\r\n return await this.bit(24, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit24le(): Promise<number> {\r\n return await this.bit(24, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 24 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit24be(): Promise<number> {\r\n return await this.bit(24, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit25(): Promise<number> {\r\n return await this.bit(25);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit25le(): Promise<number> {\r\n return await this.bit(25, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit25be(): Promise<number> {\r\n return await this.bit(25, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit25(): Promise<number> {\r\n return await this.bit(25, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit25le(): Promise<number> {\r\n return await this.bit(25, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 25 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit25be(): Promise<number> {\r\n return await this.bit(25, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit26(): Promise<number> {\r\n return await this.bit(26);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit26le(): Promise<number> {\r\n return await this.bit(26, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit26be(): Promise<number> {\r\n return await this.bit(26, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit26(): Promise<number> {\r\n return await this.bit(26, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit26le(): Promise<number> {\r\n return await this.bit(26, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 26 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit26be(): Promise<number> {\r\n return await this.bit(26, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit27(): Promise<number> {\r\n return await this.bit(27);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit27le(): Promise<number> {\r\n return await this.bit(27, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit27be(): Promise<number> {\r\n return await this.bit(27, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit27(): Promise<number> {\r\n return await this.bit(27, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit27le(): Promise<number> {\r\n return await this.bit(27, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 27 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit27be(): Promise<number> {\r\n return await this.bit(27, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit28(): Promise<number> {\r\n return await this.bit(28);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit28le(): Promise<number> {\r\n return await this.bit(28, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit28be(): Promise<number> {\r\n return await this.bit(28, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit28(): Promise<number> {\r\n return await this.bit(28, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit28le(): Promise<number> {\r\n return await this.bit(28, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 28 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit28be(): Promise<number> {\r\n return await this.bit(28, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit29(): Promise<number> {\r\n return await this.bit(29);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit29le(): Promise<number> {\r\n return await this.bit(29, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit29be(): Promise<number> {\r\n return await this.bit(29, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit29(): Promise<number> {\r\n return await this.bit(29, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit29le(): Promise<number> {\r\n return await this.bit(29, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 29 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit29be(): Promise<number> {\r\n return await this.bit(29, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit30(): Promise<number> {\r\n return await this.bit(30);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit30le(): Promise<number> {\r\n return await this.bit(30, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit30be(): Promise<number> {\r\n return await this.bit(30, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit30(): Promise<number> {\r\n return await this.bit(30, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit30le(): Promise<number> {\r\n return await this.bit(30, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 30 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit30be(): Promise<number> {\r\n return await this.bit(30, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit31(): Promise<number> {\r\n return await this.bit(31);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit31le(): Promise<number> {\r\n return await this.bit(31, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit31be(): Promise<number> {\r\n return await this.bit(31, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit31(): Promise<number> {\r\n return await this.bit(31, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit31le(): Promise<number> {\r\n return await this.bit(31, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 31 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit31be(): Promise<number> {\r\n return await this.bit(31, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit32(): Promise<number> {\r\n return await this.bit(32);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit32le(): Promise<number> {\r\n return await this.bit(32, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async bit32be(): Promise<number> {\r\n return await this.bit(32, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit32(): Promise<number> {\r\n return await this.bit(32, true);\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit32le(): Promise<number> {\r\n return await this.bit(32, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field reader. Reads 32 bits.\r\n * \r\n * Note: When returning to a byte read, remaining bits are dropped.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubit32be(): Promise<number> {\r\n return await this.bit(32, true, \"big\");\r\n };\r\n\r\n //\r\n // #region byte read\r\n //\r\n\r\n /**\r\n * Read byte.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async byte(): Promise<number> {\r\n return await this.readByte();\r\n };\r\n\r\n /**\r\n * Read byte.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async int8(): Promise<number> {\r\n return await this.readByte();\r\n };\r\n\r\n /**\r\n * Read unsigned byte.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uint8(): Promise<number> {\r\n return await this.readByte(true);\r\n };\r\n\r\n /**\r\n * Read unsigned byte.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ubyte(): Promise<number> {\r\n return await this.readByte(true);\r\n };\r\n\r\n //\r\n // #region short16 read\r\n //\r\n\r\n /**\r\n * Read short.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async int16(): Promise<number> {\r\n return await this.readInt16();\r\n };\r\n\r\n /**\r\n * Read short.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async short(): Promise<number> {\r\n return await this.readInt16();\r\n };\r\n\r\n /**\r\n * Read short.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async word(): Promise<number> {\r\n return await this.readInt16();\r\n };\r\n\r\n /**\r\n * Read unsigned short.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uint16(): Promise<number> {\r\n return await this.readInt16(true);\r\n };\r\n\r\n /**\r\n * Read unsigned short.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ushort(): Promise<number> {\r\n return this.readInt16(true);\r\n };\r\n\r\n /**\r\n * Read unsigned short.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uword(): Promise<number> {\r\n return await this.readInt16(true);\r\n };\r\n\r\n /**\r\n * Read unsigned short in little endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uint16le(): Promise<number> {\r\n return await this.readInt16(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in little endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ushortle(): Promise<number> {\r\n return await this.readInt16(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in little endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uwordle(): Promise<number> {\r\n return await this.readInt16(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed short in little endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async int16le(): Promise<number> {\r\n return await this.readInt16(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed short in little endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async shortle(): Promise<number> {\r\n return await this.readInt16(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed short in little endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async wordle(): Promise<number> {\r\n return await this.readInt16(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in big endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uint16be(): Promise<number> {\r\n return await this.readInt16(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in big endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ushortbe(): Promise<number> {\r\n return await this.readInt16(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned short in big endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uwordbe(): Promise<number> {\r\n return await this.readInt16(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed short in big endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async int16be(): Promise<number> {\r\n return await this.readInt16(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed short in big endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async shortbe(): Promise<number> {\r\n return await this.readInt16(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed short in big endian.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async wordbe(): Promise<number> {\r\n return await this.readInt16(false, \"big\");\r\n };\r\n\r\n //\r\n // #region half float read\r\n //\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async halffloat(): Promise<number> {\r\n return await this.readHalfFloat();\r\n };\r\n\r\n /**\r\n * Read half float\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async half(): Promise<number> {\r\n return await this.readHalfFloat();\r\n };\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async halffloatbe(): Promise<number> {\r\n return await this.readHalfFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async halfbe(): Promise<number> {\r\n return await this.readHalfFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async halffloatle(): Promise<number> {\r\n return await this.readHalfFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read half float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async halfle(): Promise<number> {\r\n return await this.readHalfFloat(\"little\");\r\n };\r\n\r\n //\r\n // #region int read\r\n //\r\n\r\n /**\r\n * Read 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async int(): Promise<number> {\r\n return await this.readInt32();\r\n };\r\n\r\n /**\r\n * Read 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async double(): Promise<number> {\r\n return await this.readInt32();\r\n };\r\n\r\n /**\r\n * Read 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async int32(): Promise<number> {\r\n return await this.readInt32();\r\n };\r\n\r\n /**\r\n * Read 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async long(): Promise<number> {\r\n return await this.readInt32();\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uint(): Promise<number> {\r\n return await this.readInt32(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async udouble(): Promise<number> {\r\n return await this.readInt32(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uint32(): Promise<number> {\r\n return await this.readInt32(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ulong(): Promise<number> {\r\n return await this.readInt32(true);\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async intbe(): Promise<number> {\r\n return await this.readInt32(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async doublebe(): Promise<number> {\r\n return await this.readInt32(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async int32be(): Promise<number> {\r\n return await this.readInt32(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async longbe(): Promise<number> {\r\n return await this.readInt32(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uintbe(): Promise<number> {\r\n return await this.readInt32(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async udoublebe(): Promise<number> {\r\n return await this.readInt32(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uint32be(): Promise<number> {\r\n return await this.readInt32(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ulongbe(): Promise<number> {\r\n return await this.readInt32(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async intle(): Promise<number> {\r\n return await this.readInt32(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async doublele(): Promise<number> {\r\n return await this.readInt32(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async int32le(): Promise<number> {\r\n return await this.readInt32(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async longle(): Promise<number> {\r\n return await this.readInt32(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uintle(): Promise<number> {\r\n return await this.readInt32(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async udoublele(): Promise<number> {\r\n return await this.readInt32(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async uint32le(): Promise<number> {\r\n return await this.readInt32(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 32 bit integer.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async ulongle(): Promise<number> {\r\n return await this.readInt32(true, \"little\");\r\n };\r\n\r\n //\r\n // #region float read\r\n //\r\n\r\n /**\r\n * Read float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async float(): Promise<number> {\r\n return await this.readFloat();\r\n };\r\n\r\n /**\r\n * Read float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async floatbe(): Promise<number> {\r\n return await this.readFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async floatle(): Promise<number> {\r\n return await this.readFloat(\"little\");\r\n };\r\n\r\n //\r\n // #region int64 reader\r\n //\r\n\r\n /**\r\n * Read signed 64 bit integer\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async int64(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64();\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async bigint(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64();\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async quad(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64();\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async uint64(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async ubigint(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true);\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async uquad(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true);\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async int64be(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async bigintbe(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async quadbe(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(false, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async uint64be(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async ubigintbe(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async uquadbe(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true, \"big\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async int64le(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async bigintle(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read signed 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async quadle(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(false, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async uint64le(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async ubigintle(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true, \"little\");\r\n };\r\n\r\n /**\r\n * Read unsigned 64 bit integer.\r\n * \r\n * Note: If ``enforceBigInt`` was set to ``true``, this always returns a ``BigInt`` otherwise it will return a ``number`` if integer safe.\r\n */\r\n async uquadle(): Promise<hasBigInt extends true ? bigint : number> {\r\n return await this.readInt64(true, \"little\");\r\n };\r\n\r\n //\r\n // #region doublefloat reader\r\n //\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async doublefloat(): Promise<number> {\r\n return await this.readDoubleFloat();\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async dfloat(): Promise<number> {\r\n return await this.readDoubleFloat();\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async dfloatbe(): Promise<number> {\r\n return await this.readDoubleFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async doublefloatbe(): Promise<number> {\r\n return await this.readDoubleFloat(\"big\");\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async dfloatle(): Promise<number> {\r\n return await this.readDoubleFloat(\"little\");\r\n };\r\n\r\n /**\r\n * Read double float.\r\n * \r\n * @returns {Promise<number>}\r\n */\r\n async doublefloatle(): Promise<number> {\r\n return await this.readDoubleFloat(\"little\");\r\n };\r\n\r\n //\r\n // #region string reader\r\n //\r\n\r\n /**\r\n * Reads string, use options object for different types.\r\n * \r\n * @param {stringOptions} options \r\n * @param {stringOptions[\"length\"]?} options.length - for fixed length, non-terminate value utf strings\r\n * @param {stringOptions[\"stringType\"]?} options.stringType - ascii, utf-8, utf-16, utf-32, pascal, wide-pascal or double-wide-pascal\r\n * @param {stringOptions[\"terminateValue\"]?} options.terminateValue - only with stringType: \"utf\"\r\n * @param {stringOptions[\"lengthReadSize\"]?} options.lengthReadSize - for pascal strings. 1, 2 or 4 byte length read size\r\n * @param {stringOptions[\"stripNull\"]?} options.stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"encoding\"]?} options.encoding - TextEncoder accepted types \r\n * @param {stringOptions[\"endian\"]?} options.endian - for utf-16, utf-32, wide-pascal or double-wide-pascal\r\n * @returns {string}\r\n */\r\n async string(options?: stringOptions): Promise<string> {\r\n return await this.readString(options);\r\n };\r\n\r\n /**\r\n * Reads string using setting from .strDefaults\r\n * \r\n * Default is ``utf-8``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async str(): Promise<string> {\r\n return await this.readString(this.strDefaults);\r\n };\r\n\r\n /**\r\n * Reads UTF-8 (C) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async utf8string(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.string({ stringType: \"utf-8\", encoding: \"utf-8\", length: length, terminateValue: terminateValue, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads UTF-8 (C) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async cstring(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.utf8string(length, terminateValue, stripNull);\r\n };\r\n\r\n /**\r\n * Reads ANSI string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async ansistring(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.string({ stringType: \"utf-8\", encoding: \"windows-1252\", length: length, terminateValue: terminateValue, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads latin1 string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async latin1string(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.string({ stringType: \"utf-8\", encoding: \"iso-8859-1\", length: length, terminateValue: terminateValue, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async utf16string(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.string({ stringType: \"utf-16\", encoding: \"utf-16\", length: length, terminateValue: terminateValue, endian: endian, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async unistring(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.utf16string(length, terminateValue, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string in little endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async utf16stringle(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.utf16string(length, terminateValue, stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string in little endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async unistringle(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.utf16stringle(length, terminateValue, stripNull);\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string in big endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async utf16stringbe(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.utf16string(length, terminateValue, stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads UTF-16 (Unicode) string in big endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async unistringbe(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.utf16stringbe(length, terminateValue, stripNull);\r\n };\r\n\r\n /**\r\n * Reads UTF-32 (Unicode) string.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async utf32string(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.string({ stringType: \"utf-32\", encoding: \"utf-32\", length: length, terminateValue: terminateValue, endian: endian, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads UTF-32 (Unicode) string in little endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async utf32stringle(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.utf32string(length, terminateValue, stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads UTF-32 (Unicode) string in big endian order.\r\n * \r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async utf32stringbe(length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"], stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.utf32string(length, terminateValue, stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string.\r\n * \r\n * @param {stringOptions[\"lengthReadSize\"]} lengthReadSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring(lengthReadSize?: stringOptions[\"lengthReadSize\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.string({ stringType: \"pascal\", encoding: \"utf-8\", lengthReadSize: lengthReadSize, stripNull: stripNull, endian: endian });\r\n };\r\n\r\n /**\r\n * Reads Pascal string 1 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring1(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.pstring(1, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring1le(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.pstring1(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring1be(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.pstring1(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 2 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring2(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.pstring(2, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring2le(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.pstring2(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring2be(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.pstring2(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 4 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring4(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.pstring(4, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring4le(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.pstring4(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async pstring4be(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.pstring4(stripNull, \"big\" );\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string.\r\n * \r\n * @param {stringOptions[\"lengthReadSize\"]} lengthReadSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring(lengthReadSize?: stringOptions[\"lengthReadSize\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.string({ stringType: \"wide-pascal\", encoding: \"utf-16\", lengthReadSize: lengthReadSize, endian: endian, stripNull: stripNull });\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string 1 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring1(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.wpstring(1, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring1le(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.wpstring1(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring1be(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.wpstring1(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string 2 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring2(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.wpstring(2, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring2le(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.wpstring2(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring2be(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.wpstring2(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string 4 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring4(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.wpstring(4, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring4le(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.wpstring4(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Wide-Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async wpstring4be(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.wpstring4(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string.\r\n * \r\n * @param {stringOptions[\"lengthReadSize\"]} lengthReadSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring(lengthReadSize?: stringOptions[\"lengthReadSize\"], stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.string({ stringType: \"double-wide-pascal\", encoding: \"utf-32\", lengthReadSize: lengthReadSize, stripNull: stripNull, endian: endian });\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 1 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring1(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.dwpstring(1, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring1le(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.dwpstring1(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Double WidePascal string 1 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring1be(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.dwpstring1(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 2 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring2(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.dwpstring(2, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring2le(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.dwpstring2(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring2be(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.dwpstring2(stripNull, \"big\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 4 byte length read.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring4(stripNull?: stringOptions[\"stripNull\"], endian?: stringOptions[\"endian\"]): Promise<string> {\r\n return await this.dwpstring(4, stripNull, endian);\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring4le(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.dwpstring4(stripNull, \"little\");\r\n };\r\n\r\n /**\r\n * Reads Double Wide Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {stringOptions[\"stripNull\"]} stripNull - removes 0x00 characters\r\n * \r\n * @returns {Promise<string>}\r\n */\r\n async dwpstring4be(stripNull?: stringOptions[\"stripNull\"]): Promise<string> {\r\n return await this.dwpstring4(stripNull, \"big\");\r\n };\r\n};","import {\r\n BigValue,\r\n BiOptions,\r\n endian,\r\n stringOptions,\r\n} from \"./common.js\";\r\nimport { BiBaseAsync } from './core/BiBaseAsync.js';\r\n\r\n/**\r\n * Async Binary writer, includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - File path or a ``Buffer`` or ``Uint8Array``. Always found in ``BiWriter.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start writer (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start writer (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``false``)\r\n * @param {BiOptions[\"growthIncrement\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false. Note: Changes logic in ``.get`` and ``.return``.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always stay ``BigInt``.\r\n * \r\n * @since 4.0\r\n */\r\nexport class BiWriterAsync<DataType extends Buffer | Uint8Array, hasBigInt extends boolean> extends BiBaseAsync<DataType, hasBigInt> {\r\n\r\n /**\r\n * Async Binary writer, includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - ``Buffer`` or ``Uint8Array``. Always found in ``BiWriter.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start writer (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start writer (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``false``)\r\n * @param {BiOptions[\"growthIncrement\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always stay ``BigInt``.\r\n */\r\n constructor(input?: string | DataType, options: BiOptions = {}) {\r\n options.byteOffset = options.byteOffset ?? 0;\r\n \r\n options.bitOffset = options.bitOffset ?? 0;\r\n\r\n options.endianness = options.endianness ?? \"little\";\r\n\r\n options.strict = options.strict ?? false;\r\n\r\n options.growthIncrement = options.growthIncrement ?? 1048576;\r\n\r\n options.enforceBigInt = options.enforceBigInt ?? false;\r\n\r\n options.readOnly = options.readOnly ?? false;\r\n\r\n options.windowSize = options.windowSize = 4096;\r\n\r\n const {\r\n growthIncrement,\r\n } = options;\r\n\r\n if (input == undefined) {\r\n input = new Uint8Array(growthIncrement) as DataType;\r\n\r\n console.warn(`BiWriter started without data. Creating Uint8Array with growthIncrement.`);\r\n }\r\n\r\n super(input, options);\r\n };\r\n\r\n /**\r\n * \r\n * Creates and opens a new `BiWriterAsync`\r\n * \r\n * includes bitfields and strings.\r\n *\r\n * @param {string|Buffer|Uint8Array} input - ``Buffer`` or ``Uint8Array``. Always found in ``BiWriter.data``\r\n * @param {BiOptions?} options - Any options to set at start\r\n * @param {BiOptions[\"byteOffset\"]?} options.byteOffset - Byte offset to start writer (default ``0``)\r\n * @param {BiOptions[\"bitOffset\"]?} options.bitOffset - Bit offset 0-7 to start writer (default ``0``)\r\n * @param {BiOptions[\"endianness\"]?} options.endianness - Endianness ``big`` or ``little`` (default ``little``)\r\n * @param {BiOptions[\"strict\"]?} options.strict - Strict mode: if ``true`` does not extend supplied array on outside write (default ``false``)\r\n * @param {BiOptions[\"growthIncrement\"]?} options.growthIncrement - Amount of data to add when extending the buffer array when strict mode is false. Note: Changes logic in ``.get`` and ``.return``.\r\n * @param {BiOptions[\"enforceBigInt\"]?} options.enforceBigInt - 64 bit value reads will always stay ``BigInt``.\r\n * @param {BiOptions[\"writeable\"]} options.writeable - Allow data writes when reading a file (default true in writer)\r\n * \r\n * @returns {Promise<BiWriterAsync<DataType, hasBigInt>>}\r\n */\r\n static async create<DataType extends Buffer | Uint8Array, hasBigInt extends boolean>(input: string | DataType, options: BiOptions = {}): Promise<BiWriterAsync<DataType, hasBigInt>>{\r\n const instance = new BiWriterAsync<DataType, hasBigInt>(input, options);\r\n\r\n await instance.open();\r\n\r\n return instance;\r\n };\r\n\r\n //\r\n // #region Bit Aliases\r\n //\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async bit(value: number, bits: number, unsigned?: boolean, endian?: endian) {\r\n return await this.writeBit(value, bits, unsigned, endian);\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n * @param {endian} endian - ``big`` or ``little``\r\n */\r\n async ubit(value: number, bits: number, endian?: endian) {\r\n return await this.writeBit(value, bits, true, endian);\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n */\r\n async bitbe(value: number, bits: number, unsigned?: boolean) {\r\n return await this.bit(value, bits, unsigned, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int \r\n * @param {number} bits - bits to write\r\n */\r\n async ubitbe(value: number, bits: number) {\r\n return await this.bit(value, bits, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n */\r\n async ubitle(value: number, bits: number) {\r\n return await this.bit(value, bits, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n *\r\n * @param {number} value - value as int\r\n * @param {number} bits - bits to write\r\n * @param {boolean} unsigned - if the value is unsigned\r\n */\r\n async bitle(value: number, bits: number, unsigned?: boolean) {\r\n return await this.bit(value, bits, unsigned, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit1(value: number) {\r\n await this.bit(value, 1);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit1le(value: number) {\r\n await this.bit(value, 1, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit1be(value: number) {\r\n await this.bit(value, 1, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit1(value: number) {\r\n await this.bit(value, 1, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit1le(value: number) {\r\n await this.bit(value, 1, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 1 bit.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit1be(value: number) {\r\n await this.bit(value, 1, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit2(value: number) {\r\n await this.bit(value, 2);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit2le(value: number) {\r\n await this.bit(value, 2, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit2be(value: number) {\r\n await this.bit(value, 2, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit2(value: number) {\r\n await this.bit(value, 2, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit2le(value: number) {\r\n await this.bit(value, 2, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 2 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit2be(value: number) {\r\n await this.bit(value, 2, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit3(value: number) {\r\n await this.bit(value, 3);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit3le(value: number) {\r\n await this.bit(value, 3, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit3be(value: number) {\r\n await this.bit(value, 3, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit3(value: number) {\r\n await this.bit(value, 3, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit3le(value: number) {\r\n await this.bit(value, 3, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 3 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit3be(value: number) {\r\n await this.bit(value, 3, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit4(value: number) {\r\n await this.bit(value, 4);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit4le(value: number) {\r\n await this.bit(value, 4, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit4be(value: number) {\r\n await this.bit(value, 4, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit4(value: number) {\r\n await this.bit(value, 4, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit4le(value: number) {\r\n await this.bit(value, 4, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 4 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit4be(value: number) {\r\n await this.bit(value, 4, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit5(value: number) {\r\n await this.bit(value, 5);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit5le(value: number) {\r\n await this.bit(value, 5, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit5be(value: number) {\r\n await this.bit(value, 5, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit5(value: number) {\r\n await this.bit(value, 5, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit5le(value: number) {\r\n await this.bit(value, 5, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 5 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit5be(value: number) {\r\n await this.bit(value, 5, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit6(value: number) {\r\n await this.bit(value, 6);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit6le(value: number) {\r\n await this.bit(value, 6, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit6be(value: number) {\r\n await this.bit(value, 6, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit6(value: number) {\r\n await this.bit(value, 6, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit6le(value: number) {\r\n await this.bit(value, 6, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 6 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit6be(value: number) {\r\n await this.bit(value, 6, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit7(value: number) {\r\n await this.bit(value, 7);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit7le(value: number) {\r\n await this.bit(value, 7, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit7be(value: number) {\r\n await this.bit(value, 7, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit7(value: number) {\r\n await this.bit(value, 7, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit7le(value: number) {\r\n await this.bit(value, 7, true, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 7 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit7be(value: number) {\r\n await this.bit(value, 7, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit8(value: number) {\r\n await this.bit(value, 8);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit8le(value: number) {\r\n await this.bit(value, 8, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit8be(value: number) {\r\n await this.bit(value, 8, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit8(value: number) {\r\n await this.bit(value, 8, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit8le(value: number) {\r\n await this.bit(value, 8, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 8 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit8be(value: number) {\r\n await this.bit(value, 8, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit9(value: number) {\r\n await this.bit(value, 9);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit9le(value: number) {\r\n await this.bit(value, 9, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit9be(value: number) {\r\n await this.bit(value, 9, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit9(value: number) {\r\n await this.bit(value, 9, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit9le(value: number) {\r\n await this.bit(value, 9, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 9 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit9be(value: number) {\r\n await this.bit(value, 9, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit10(value: number) {\r\n await this.bit(value, 10);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit10le(value: number) {\r\n await this.bit(value, 10, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit10be(value: number) {\r\n await this.bit(value, 10, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit10(value: number) {\r\n await this.bit(value, 10, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit10le(value: number) {\r\n await this.bit(value, 10, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 10 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit10be(value: number) {\r\n await this.bit(value, 10, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit11(value: number) {\r\n await this.bit(value, 11);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit11le(value: number) {\r\n await this.bit(value, 11, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit11be(value: number) {\r\n await this.bit(value, 11, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit11(value: number) {\r\n await this.bit(value, 11, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit11le(value: number) {\r\n await this.bit(value, 11, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 11 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit11be(value: number) {\r\n await this.bit(value, 11, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit12(value: number) {\r\n await this.bit(value, 12);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit12le(value: number) {\r\n await this.bit(value, 12, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit12be(value: number) {\r\n await this.bit(value, 12, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit12(value: number) {\r\n await this.bit(value, 12, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit12le(value: number) {\r\n await this.bit(value, 12, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 12 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit12be(value: number) {\r\n await this.bit(value, 12, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit13(value: number) {\r\n await this.bit(value, 13);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit13le(value: number) {\r\n await this.bit(value, 13, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit13be(value: number) {\r\n await this.bit(value, 13, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit13(value: number) {\r\n await this.bit(value, 13, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit13le(value: number) {\r\n await this.bit(value, 13, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 13 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit13be(value: number) {\r\n await this.bit(value, 13, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit14(value: number) {\r\n await this.bit(value, 14);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit14le(value: number) {\r\n await this.bit(value, 14, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit14be(value: number) {\r\n await this.bit(value, 14, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit14(value: number) {\r\n await this.bit(value, 14, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit14le(value: number) {\r\n await this.bit(value, 14, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 14 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit14be(value: number) {\r\n await this.bit(value, 14, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit15(value: number) {\r\n await this.bit(value, 15);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit15le(value: number) {\r\n await this.bit(value, 15, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit15be(value: number) {\r\n await this.bit(value, 15, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit15(value: number) {\r\n await this.bit(value, 15, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit15le(value: number) {\r\n await this.bit(value, 15, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 15 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit15be(value: number) {\r\n await this.bit(value, 15, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit16(value: number) {\r\n await this.bit(value, 16);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit16le(value: number) {\r\n await this.bit(value, 16, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit16be(value: number) {\r\n await this.bit(value, 16, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit16(value: number) {\r\n await this.bit(value, 16, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit16le(value: number) {\r\n await this.bit(value, 16, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 16 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit16be(value: number) {\r\n await this.bit(value, 16, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit17(value: number) {\r\n await this.bit(value, 17);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit17le(value: number) {\r\n await this.bit(value, 17, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit17be(value: number) {\r\n await this.bit(value, 17, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit17(value: number) {\r\n await this.bit(value, 17, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit17le(value: number) {\r\n await this.bit(value, 17, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 17 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit17be(value: number) {\r\n await this.bit(value, 17, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit18(value: number) {\r\n await this.bit(value, 18);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit18le(value: number) {\r\n await this.bit(value, 18, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit18be(value: number) {\r\n await this.bit(value, 18, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit18(value: number) {\r\n await this.bit(value, 18, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit18le(value: number) {\r\n await this.bit(value, 18, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 18 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit18be(value: number) {\r\n await this.bit(value, 18, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit19(value: number) {\r\n await this.bit(value, 19);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit19le(value: number) {\r\n await this.bit(value, 19, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit19be(value: number) {\r\n await this.bit(value, 19, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit19(value: number) {\r\n await this.bit(value, 19, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit19le(value: number) {\r\n await this.bit(value, 19, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 19 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit19be(value: number) {\r\n await this.bit(value, 19, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit20(value: number) {\r\n await this.bit(value, 20);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit20le(value: number) {\r\n await this.bit(value, 20, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit20be(value: number) {\r\n await this.bit(value, 20, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit20(value: number) {\r\n await this.bit(value, 20, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit20le(value: number) {\r\n await this.bit(value, 20, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 20 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit20be(value: number) {\r\n await this.bit(value, 20, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit21(value: number) {\r\n await this.bit(value, 21);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit21le(value: number) {\r\n await this.bit(value, 21, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit21be(value: number) {\r\n await this.bit(value, 21, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit21(value: number) {\r\n await this.bit(value, 21, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit21le(value: number) {\r\n await this.bit(value, 21, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 21 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit21be(value: number) {\r\n await this.bit(value, 21, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit22(value: number) {\r\n await this.bit(value, 22);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit22le(value: number) {\r\n await this.bit(value, 22, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit22be(value: number) {\r\n await this.bit(value, 22, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit22(value: number) {\r\n await this.bit(value, 22, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit22le(value: number) {\r\n await this.bit(value, 22, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 22 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit22be(value: number) {\r\n await this.bit(value, 22, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit23(value: number) {\r\n await this.bit(value, 23);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit23le(value: number) {\r\n await this.bit(value, 23, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit23be(value: number) {\r\n await this.bit(value, 23, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit23(value: number) {\r\n await this.bit(value, 23, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit23le(value: number) {\r\n await this.bit(value, 23, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 23 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit23be(value: number) {\r\n await this.bit(value, 23, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit24(value: number) {\r\n await this.bit(value, 24);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit24le(value: number) {\r\n await this.bit(value, 24, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit24be(value: number) {\r\n await this.bit(value, 24, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit24(value: number) {\r\n await this.bit(value, 24, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit24le(value: number) {\r\n await this.bit(value, 24, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 24 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit24be(value: number) {\r\n await this.bit(value, 24, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit25(value: number) {\r\n await this.bit(value, 25);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit25le(value: number) {\r\n await this.bit(value, 25, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit25be(value: number) {\r\n await this.bit(value, 25, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit25(value: number) {\r\n await this.bit(value, 25, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit25le(value: number) {\r\n await this.bit(value, 25, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 25 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit25be(value: number) {\r\n await this.bit(value, 25, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit26(value: number) {\r\n await this.bit(value, 26);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit26le(value: number) {\r\n await this.bit(value, 26, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit26be(value: number) {\r\n await this.bit(value, 26, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit26(value: number) {\r\n await this.bit(value, 26, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit26le(value: number) {\r\n await this.bit(value, 26, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 26 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit26be(value: number) {\r\n await this.bit(value, 26, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit27(value: number) {\r\n await this.bit(value, 27);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit27le(value: number) {\r\n await this.bit(value, 27, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit27be(value: number) {\r\n await this.bit(value, 27, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit27(value: number) {\r\n await this.bit(value, 27, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit27le(value: number) {\r\n await this.bit(value, 27, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 27 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit27be(value: number) {\r\n await this.bit(value, 27, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit28(value: number) {\r\n await this.bit(value, 28);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit28le(value: number) {\r\n await this.bit(value, 28, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit28be(value: number) {\r\n await this.bit(value, 28, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit28(value: number) {\r\n await this.bit(value, 28, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit28le(value: number) {\r\n await this.bit(value, 28, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 28 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit28be(value: number) {\r\n await this.bit(value, 28, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit29(value: number) {\r\n await this.bit(value, 29);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit29le(value: number) {\r\n await this.bit(value, 29, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit29be(value: number) {\r\n await this.bit(value, 29, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit29(value: number) {\r\n await this.bit(value, 29, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit29le(value: number) {\r\n await this.bit(value, 29, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 29 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit29be(value: number) {\r\n await this.bit(value, 29, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit30(value: number) {\r\n await this.bit(value, 30);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit30le(value: number) {\r\n await this.bit(value, 30, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit30be(value: number) {\r\n await this.bit(value, 30, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit30(value: number) {\r\n await this.bit(value, 30, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit30le(value: number) {\r\n await this.bit(value, 30, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 30 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit30be(value: number) {\r\n await this.bit(value, 30, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit31(value: number) {\r\n await this.bit(value, 31);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit31le(value: number) {\r\n await this.bit(value, 31, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit31be(value: number) {\r\n await this.bit(value, 31, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit31(value: number) {\r\n await this.bit(value, 31, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit31le(value: number) {\r\n await this.bit(value, 31, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 31 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit31be(value: number) {\r\n await this.bit(value, 31, true, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit32(value: number) {\r\n await this.bit(value, 32);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit32le(value: number) {\r\n await this.bit(value, 32, undefined, \"little\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async bit32be(value: number) {\r\n await this.bit(value, 32, undefined, \"big\");\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit32(value: number) {\r\n await this.bit(value, 32, true);\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit32le(value: number) {\r\n await this.bit(value, 32, true, \"little\");;\r\n };\r\n\r\n /**\r\n * Bit field writer. Writes 32 bits.\r\n * \r\n * Note: When returning to a byte write, remaining bits are dropped.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async ubit32be(value: number) {\r\n await this.bit(value, 32, true, \"big\");\r\n };\r\n\r\n //\r\n // #region byte write\r\n //\r\n\r\n /**\r\n * Write byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async byte(value: number) {\r\n await this.writeByte(value);\r\n };\r\n\r\n /**\r\n * Write byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async int8(value: number) {\r\n await this.writeByte(value);\r\n };\r\n\r\n /**\r\n * Write unsigned byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uint8(value: number) {\r\n await this.writeByte(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned byte.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async ubyte(value: number) {\r\n await this.writeByte(value, true);\r\n };\r\n\r\n //\r\n // #region short writes\r\n //\r\n\r\n /**\r\n * Write int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async int16(value: number) {\r\n await this.writeInt16(value);\r\n };\r\n\r\n /**\r\n * Write int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async short(value: number) {\r\n await this.writeInt16(value);\r\n };\r\n\r\n /**\r\n * Write int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async word(value: number) {\r\n await this.writeInt16(value);\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uint16(value: number) {\r\n await this.writeInt16(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async ushort(value: number) {\r\n await this.writeInt16(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uword(value: number) {\r\n await this.writeInt16(value, true);\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async int16be(value: number) {\r\n await this.writeInt16(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async shortbe(value: number) {\r\n await this.writeInt16(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async wordbe(value: number) {\r\n await this.writeInt16(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uint16be(value: number) {\r\n await this.writeInt16(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async ushortbe(value: number) {\r\n await this.writeInt16(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uwordbe(value: number) {\r\n await this.writeInt16(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async int16le(value: number) {\r\n await this.writeInt16(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async shortle(value: number) {\r\n await this.writeInt16(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async wordle(value: number) {\r\n await this.writeInt16(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uint16le(value: number) {\r\n await this.writeInt16(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async ushortle(value: number) {\r\n await this.writeInt16(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int16.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uwordle(value: number) {\r\n await this.writeInt16(value, true, \"little\");\r\n };\r\n\r\n //\r\n // #region half float\r\n //\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async half(value: number) {\r\n await this.writeHalfFloat(value);\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async halffloat(value: number) {\r\n await this.writeHalfFloat(value);\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async halffloatbe(value: number) {\r\n await this.writeHalfFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async halfbe(value: number) {\r\n await this.writeHalfFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async halffloatle(value: number) {\r\n await this.writeHalfFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Writes half float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async halfle(value: number) {\r\n await this.writeHalfFloat(value, \"little\");\r\n };\r\n\r\n //\r\n // #region int32 write\r\n //\r\n\r\n /**\r\n * Write int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async int(value: number) {\r\n await this.writeInt32(value);\r\n };\r\n\r\n /**\r\n * Write int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async int32(value: number) {\r\n await this.writeInt32(value);\r\n };\r\n\r\n /**\r\n * Write int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async double(value: number) {\r\n await this.writeInt32(value);\r\n };\r\n\r\n /**\r\n * Write int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async long(value: number) {\r\n await this.writeInt32(value);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uint32(value: number) {\r\n await this.writeInt32(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uint(value: number) {\r\n await this.writeInt32(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async udouble(value: number) {\r\n await this.writeInt32(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async ulong(value: number) {\r\n await this.writeInt32(value, true);\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async int32le(value: number) {\r\n await this.writeInt32(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async intle(value: number) {\r\n await this.writeInt32(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async doublele(value: number) {\r\n await this.writeInt32(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async longle(value: number) {\r\n await this.writeInt32(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uint32le(value: number) {\r\n await this.writeInt32(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uintle(value: number) {\r\n await this.writeInt32(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async udoublele(value: number) {\r\n await this.writeInt32(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async ulongle(value: number) {\r\n await this.writeInt32(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async intbe(value: number) {\r\n await this.writeInt32(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async int32be(value: number) {\r\n await this.writeInt32(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async doublebe(value: number) {\r\n await this.writeInt32(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async longbe(value: number) {\r\n await this.writeInt32(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async writeUInt32BE(value: number) {\r\n await this.writeInt32(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uint32be(value: number) {\r\n await this.writeInt32(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async uintbe(value: number) {\r\n await this.writeInt32(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int \r\n */\r\n async udoublebe(value: number) {\r\n await this.writeInt32(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned int32.\r\n *\r\n * @param {number} value - value as int\r\n */\r\n async ulongbe(value: number) {\r\n await this.writeInt32(value, true, \"big\");\r\n };\r\n\r\n //\r\n // #region float write\r\n //\r\n\r\n /**\r\n * Write float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async float(value: number) {\r\n await this.writeFloat(value);\r\n };\r\n\r\n /**\r\n * Write float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async floatle(value: number) {\r\n await this.writeFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Write float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async floatbe(value: number) {\r\n await this.writeFloat(value, \"big\");\r\n };\r\n\r\n //\r\n // #region int64 write\r\n //\r\n\r\n /**\r\n * Write 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async int64(value: BigValue) {\r\n await this.writeInt64(value);\r\n };\r\n\r\n /**\r\n * Write 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async quad(value: BigValue) {\r\n await this.writeInt64(value);\r\n };\r\n\r\n /**\r\n * Write 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async bigint(value: BigValue) {\r\n await this.writeInt64(value);\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async uint64(value: BigValue) {\r\n await this.writeInt64(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async ubigint(value: BigValue) {\r\n await this.writeInt64(value, true);\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async uquad(value: BigValue) {\r\n await this.writeInt64(value, true,);\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async int64le(value: BigValue) {\r\n await this.writeInt64(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async bigintle(value: BigValue) {\r\n await this.writeInt64(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async quadle(value: BigValue) {\r\n await this.writeInt64(value, false, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async uint64le(value: BigValue) {\r\n await this.writeInt64(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async ubigintle(value: BigValue) {\r\n await this.writeInt64(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async uquadle(value: BigValue) {\r\n await this.writeInt64(value, true, \"little\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async int64be(value: BigValue) {\r\n await this.writeInt64(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async bigintbe(value: BigValue) {\r\n await this.writeInt64(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write signed 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async quadbe(value: BigValue) {\r\n await this.writeInt64(value, false, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async uint64be(value: BigValue) {\r\n await this.writeInt64(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async ubigintbe(value: BigValue) {\r\n await this.writeInt64(value, true, \"big\");\r\n };\r\n\r\n /**\r\n * Write unsigned 64 bit integer.\r\n * \r\n * @param {BigValue} value - value as int \r\n */\r\n async uquadbe(value: BigValue) {\r\n await this.writeInt64(value, true, \"big\");\r\n };\r\n\r\n //\r\n // #region doublefloat\r\n //\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async doublefloat(value: number) {\r\n await this.writeDoubleFloat(value);\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async dfloat(value: number) {\r\n await this.writeDoubleFloat(value);\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async dfloatbe(value: number) {\r\n await this.writeDoubleFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async doublefloatbe(value: number) {\r\n await this.writeDoubleFloat(value, \"big\");\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async dfloatle(value: number) {\r\n await this.writeDoubleFloat(value, \"little\");\r\n };\r\n\r\n /**\r\n * Writes double float.\r\n * \r\n * @param {number} value - value as int \r\n */\r\n async doublefloatle(value: number) {\r\n await this.writeDoubleFloat(value, \"little\");\r\n };\r\n\r\n //\r\n // #region string\r\n //\r\n\r\n /**\r\n * Writes string, use options object for different types.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions?} options\r\n * @param {stringOptions[\"length\"]?} options.length - for fixed length, non-terminate value utf strings\r\n * @param {stringOptions[\"stringType\"]?} options.stringType - ascii, utf-8, utf-16, utf-32, pascal, wide-pascal or double-wide-pascal\r\n * @param {stringOptions[\"terminateValue\"]?} options.terminateValue - only with stringType: \"utf\"\r\n * @param {stringOptions[\"lengthWriteSize\"]?} options.lengthWriteSize - for pascal strings. 1, 2 or 4 byte length write size\r\n * @param {stringOptions[\"encoding\"]?} options.encoding - TextEncoder accepted types \r\n * @param {stringOptions[\"endian\"]?} options.endian - for utf-16, utf-32, wide-pascal or double-wide-pascal\r\n */\r\n async string(string: string, options?: stringOptions) {\r\n return await this.writeString(string, options);\r\n };\r\n\r\n /**\r\n * Writes string using setting from .strDefaults\r\n * \r\n * Default is ``utf-8``\r\n * \r\n * @param {string} string - text string\r\n */\r\n async str(string: string) {\r\n await this.writeString(string, this.strDefaults);\r\n };\r\n\r\n /**\r\n * Writes UTF-8 (C) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async utf8string(string: string, length?: stringOptions[\"length\"], terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.string(string, { stringType: \"utf-8\", encoding: \"utf-8\", length: length, terminateValue: terminateValue });\r\n };\r\n\r\n /**\r\n * Writes UTF-8 (C) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async cstring(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.utf8string(string, length, terminateValue);\r\n };\r\n\r\n /**\r\n * Writes ANSI string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async ansistring(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.string(string, { stringType: \"utf-8\", encoding: \"windows-1252\", length: length, terminateValue: terminateValue });\r\n };\r\n\r\n /**\r\n * Writes latin1 string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async latin1tring(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.string(string, { stringType: \"utf-8\", encoding: \"iso-8859-1\", length: length, terminateValue: terminateValue });\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"endian\"]} endian - for wide-pascal and utf-16\r\n */\r\n async utf16string(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"], endian?: stringOptions[\"endian\"]) {\r\n return await this.string(string, { stringType: \"utf-16\", encoding: \"utf-16\", length: length, terminateValue: terminateValue, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"endian\"]} endian - for wide-pascal and utf-16\r\n */\r\n async unistring(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"], endian?: stringOptions[\"endian\"]) {\r\n return await this.utf16string(string, length, terminateValue, endian);\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async utf16stringle(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.unistring(string, length, terminateValue, \"little\");\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async unistringle(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.utf16stringle(string, length, terminateValue);\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async utf16stringbe(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.unistring(string, length, terminateValue, \"big\");\r\n };\r\n\r\n /**\r\n * Writes UTF-16 (Unicode) string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async unistringbe(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.utf16stringbe(string, length, terminateValue);\r\n };\r\n\r\n /**\r\n * Writes UTF-32 (Unicode) string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n * @param {stringOptions[\"endian\"]} endian - for wide-pascal and utf-16\r\n */\r\n async utf32string(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"], endian?: stringOptions[\"endian\"]) {\r\n return await this.string(string, { stringType: \"utf-32\", encoding: \"utf-32\", length: length, terminateValue: terminateValue, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes UTF-32 (Unicode) string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async utf32stringle(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.utf32string(string, length, terminateValue, \"little\");\r\n };\r\n\r\n /**\r\n * Writes UTF-32 (Unicode) string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"length\"]} length - for fixed length utf strings\r\n * @param {stringOptions[\"terminateValue\"]} terminateValue - for non-fixed length utf strings\r\n */\r\n async utf32stringbe(string: string, length?: number, terminateValue?: stringOptions[\"terminateValue\"]) {\r\n return await this.utf32string(string, length, terminateValue, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little`` for 2 or 4 byte length write size\r\n */\r\n async pstring(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"], endian?: stringOptions[\"endian\"]) {\r\n return await this.string(string, { stringType: \"pascal\", encoding: \"utf-8\", lengthWriteSize: lengthWriteSize, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes Pascal string 1 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little`` for 2 or 4 byte length write size\r\n */\r\n async pstring1(string: string, endian?: stringOptions[\"endian\"]) {\r\n return await this.pstring(string, 1, endian);\r\n };\r\n\r\n /**\r\n * Writes Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async pstring1le(string: string) {\r\n return await this.pstring1(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async pstring1be(string: string) {\r\n return await this.pstring1(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 2 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async pstring2(string: string, endian?: stringOptions[\"endian\"]) {\r\n return await this.pstring(string, 2, endian);\r\n };\r\n\r\n /**\r\n * Writes Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async pstring2le(string: string) {\r\n return await this.pstring2(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async pstring2be(string: string) {\r\n return await this.pstring2(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 4 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async pstring4(string: string, endian?: stringOptions[\"endian\"]) {\r\n return await this.pstring(string, 4, endian);\r\n };\r\n\r\n /**\r\n * Writes Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async pstring4le(string: string) {\r\n return await this.pstring4(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async pstring4be(string: string) {\r\n return await this.pstring4(string, \"big\");\r\n }; \r\n\r\n /**\r\n * Writes Wide Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async wpstring(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"], endian?: stringOptions[\"endian\"]) {\r\n return await this.string(string, { stringType: \"wide-pascal\", encoding: \"utf-16\", lengthWriteSize: lengthWriteSize, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n */\r\n async wpstringle(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"]) {\r\n return await this.wpstring(string, lengthWriteSize, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n */\r\n async wpstringbe(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"]) {\r\n return await this.wpstring(string, lengthWriteSize, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async wpstring1(string: string, endian?: stringOptions[\"endian\"]) {\r\n return await this.wpstring(string, 1, endian);\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async wpstring1be(string: string) {\r\n return await this.wpstring1(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async wpstring1le(string: string) {\r\n return await this.wpstring1(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 2 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async wpstring2(string: string, endian?: stringOptions[\"endian\"]) {\r\n return await this.wpstring(string, 2, endian);\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async wpstring2le(string: string) {\r\n return await this.wpstring2(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async wpstring2be(string: string) {\r\n return await this.wpstring2(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 4 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async wpstring4(string: string, endian?: stringOptions[\"endian\"]) {\r\n return await this.wpstring(string, 4, endian);\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async wpstring4le(string: string) {\r\n return await this.wpstring4(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Wide Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async wpstring4be(string: string) {\r\n return await this.wpstring4(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async dwpstring(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"], endian?: stringOptions[\"endian\"]) {\r\n return await this.string(string, { stringType: \"double-wide-pascal\", encoding: \"utf-32\", lengthWriteSize: lengthWriteSize, endian: endian });\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string in little endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n */\r\n async dwpstringle(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"]) {\r\n return await this.dwpstring(string, lengthWriteSize, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string in big endian order.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"lengthWriteSize\"]} lengthWriteSize - 1, 2 or 4 byte length write size (default 1)\r\n */\r\n async dwpstringbe(string: string, lengthWriteSize?: stringOptions[\"lengthWriteSize\"]) {\r\n return await this.dwpstring(string, lengthWriteSize, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async dwpstring1(string: string, endian?: stringOptions[\"endian\"]) {\r\n return await this.dwpstring(string, 1, endian);\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 1 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async dwpstring1le(string: string) {\r\n return await this.dwpstring1(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 1 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async dwpstring1be(string: string) {\r\n return await this.dwpstring1(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 2 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async dwpstring2(string: string, endian?: stringOptions[\"endian\"]) {\r\n return await this.dwpstring(string, 2, endian);\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 2 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async dwpstring2le(string: string) {\r\n return await this.dwpstring2(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 2 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async dwpstring2be(string: string) {\r\n return await this.dwpstring2(string, \"big\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 4 byte length read.\r\n * \r\n * @param {string} string - text string\r\n * @param {stringOptions[\"endian\"]} endian - ``big`` or ``little``\r\n */\r\n async dwpstring4(string: string, endian?: stringOptions[\"endian\"]) {\r\n return await this.dwpstring(string, 4, endian);\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 4 byte length read in little endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async dwpstring4le(string: string) {\r\n return await this.dwpstring4(string, \"little\");\r\n };\r\n\r\n /**\r\n * Writes Double Wide Pascal string 4 byte length read in big endian order.\r\n * \r\n * @param {string} string - text string\r\n */\r\n async dwpstring4be(string: string) {\r\n return await this.dwpstring4(string, \"big\");\r\n };\r\n};","export { BiReader } from './BiReader.js';\r\nexport { BiWriter } from './BiWriter.js';\r\nexport { BiBase } from './core/BiBase.js'\r\nexport { BiReaderAsync } from './BiReaderAsync.js';\r\nexport { BiWriterAsync } from './BiWriterAsync.js';\r\nexport { hexdump } from './common.js';\r\n\r\n/**\r\n * Not in use anymore.\r\n * @since 3.0 \r\n * @deprecated Use ``BiReader`` instead.\r\n */\r\nexport class bireader {\r\n constructor() {\r\n throw new Error(\"bireader is deprecated. Use BiReader instead.\");\r\n }\r\n};\r\n\r\n/**\r\n * Not in use anymore.\r\n * @since 4.0 \r\n * @deprecated Use ``BiReader`` instead.\r\n */\r\nexport class BiReaderStream {\r\n constructor() {\r\n throw new Error(\"BiReaderStream is deprecated. Use BiReader instead.\");\r\n }\r\n};\r\n\r\n/**\r\n * Not in use anymore.\r\n * @since 3.0 \r\n * @deprecated Use ``BiWriter`` instead.\r\n */\r\nexport class biwriter {\r\n constructor() {\r\n throw new Error(\"biwriter is deprecated. Use BiWriter instead.\");\r\n }\r\n};\r\n\r\n/**\r\n * Not in use anymore.\r\n * @since 4.0 \r\n * @deprecated Use ``BiWriter`` instead.\r\n */\r\nexport class BiWriterStream {\r\n constructor() {\r\n throw new Error(\"BiWriterStream is deprecated. Use BiWriter instead.\");\r\n }\r\n};"],"names":["fs","_fileExists"],"mappings":"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","x_google_ignoreList":[0]}