{"version":3,"file":"data.mjs","names":["hex4","i","toString","toUpperCase","padStart","align","o","concat","pieces","l","piece","length","r","Uint8Array","set","getBuffer","data","offset","size","byteOffset","byteLength","Error","buffer","slice","setBuffer","findIndex","find","from","e","f","indexOf","m","j","getCstrN","c","String","fromCharCode","subarray","encodeUtf16","str","le","d","ArrayBuffer","v","DataView","setUint16","charCodeAt","getUtf16","a","getUint16","push"],"sources":["../../../src/util/internal/data.ts"],"sourcesContent":["/**\n * Encode integer as 4 byte hex.\n *\n * @param i The integer to encode.\n * @returns Hex string.\n */\nexport function hex4(i: number) {\n\treturn i.toString(16).toUpperCase().padStart(8, '0');\n}\n\n/**\n * Align integer.\n *\n * @param i Integer value.\n * @param align Alignment amount.\n * @returns Aligned integer.\n */\nexport function align(i: number, align: number) {\n\tconst o = i % align;\n\treturn o ? align - o + i : i;\n}\n\n/**\n * Concat data chunks together.\n *\n * @param pieces The pieces to merge.\n * @returns Merged data.\n */\nexport function concat(pieces: readonly Readonly<Uint8Array>[]) {\n\tlet l = 0;\n\tfor (const piece of pieces) {\n\t\tl += piece.length;\n\t}\n\tconst r = new Uint8Array(l);\n\tl = 0;\n\tfor (const piece of pieces) {\n\t\tr.set(piece, l);\n\t\tl += piece.length;\n\t}\n\treturn r;\n}\n\n/**\n * Get buffer.\n *\n * @param data Data view.\n * @param offset The offset.\n * @param size The size.\n * @returns ArrayBuffer slice.\n */\nexport function getBuffer(data: Readonly<DataView>, offset: number, size = -1) {\n\tconst {byteOffset, byteLength} = data;\n\tconst o = byteOffset + offset;\n\tconst l = byteLength - byteOffset;\n\tif (size > l) {\n\t\tthrow new Error(`Size out of bounds`);\n\t}\n\treturn data.buffer.slice(o, o + (size < 0 ? l : size));\n}\n\n/**\n * Set buffer.\n *\n * @param data Data view.\n * @param offset The offset.\n * @param buffer The ArrayBuffer.\n * @param size The size.\n */\nexport function setBuffer(\n\tdata: DataView,\n\toffset: number,\n\tbuffer: Readonly<ArrayBuffer>,\n\tsize = -1\n) {\n\tconst {byteOffset, byteLength} = data;\n\tconst o = byteOffset + offset;\n\tnew Uint8Array(data.buffer, o, byteLength - o).set(\n\t\tnew Uint8Array(buffer, 0, size < 0 ? buffer.byteLength : size)\n\t);\n}\n\n/**\n * Find exact match in data.\n *\n * @param data Data to search.\n * @param find Search for.\n * @param from Search from.\n * @returns Index.\n */\nexport function findIndex(\n\tdata: Readonly<Uint8Array>,\n\tfind: Readonly<Uint8Array>,\n\tfrom = 0\n) {\n\tconst l = find.length;\n\tif (l) {\n\t\tconst e = data.length - l;\n\t\tconst [f] = find;\n\t\tfor (let i = from; ; i++) {\n\t\t\ti = data.indexOf(f, i);\n\t\t\tif (i < 0 || i > e) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlet m = true;\n\t\t\tfor (let j = 1; j < l; j++) {\n\t\t\t\tif (data[i + j] !== find[j]) {\n\t\t\t\t\tm = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (m) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n * Get C-String with a max length.\n *\n * @param data Data buffer.\n * @param i Integer offset.\n * @param l Max length.\n * @returns ASCII string.\n */\nexport function getCstrN(data: Readonly<Uint8Array>, i: number, l: number) {\n\tlet c = 0;\n\tfor (; c < l; c++) {\n\t\tif (!data[i + c]) {\n\t\t\tbreak;\n\t\t}\n\t}\n\t// eslint-disable-next-line unicorn/prefer-code-point\n\treturn String.fromCharCode(...data.subarray(i, i + c));\n}\n\n/**\n * Encode string as UTF-16.\n *\n * @param str The string to encode.\n * @param le Little endian.\n * @returns Encoded data.\n */\nexport function encodeUtf16(str: string, le = false) {\n\tconst l = str.length;\n\tconst d = new ArrayBuffer(l * 2);\n\tconst v = new DataView(d);\n\tfor (let i = 0; i < l; i++) {\n\t\t// eslint-disable-next-line unicorn/prefer-code-point\n\t\tv.setUint16(i * 2, str.charCodeAt(i), le);\n\t}\n\treturn new Uint8Array(d);\n}\n\n/**\n * Get UTF16 string from data buffer.\n *\n * @param data Data buffer.\n * @param i Start index.\n * @param le Little endian.\n * @returns Decoded string or null if never null terminated.\n */\nexport function getUtf16(data: Readonly<Uint8Array>, i: number, le = false) {\n\tconst v = new DataView(data.buffer, data.byteOffset, data.byteLength);\n\tconst e = v.byteLength - 1;\n\tfor (const a = []; i < e; i += 2) {\n\t\tconst c = v.getUint16(i, le);\n\t\tif (!c) {\n\t\t\t// eslint-disable-next-line unicorn/prefer-code-point\n\t\t\treturn String.fromCharCode(...a);\n\t\t}\n\t\ta.push(c);\n\t}\n\treturn null;\n}\n"],"mappings":"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","ignoreList":[]}