"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.concatToUint8Array = concatToUint8Array; exports.concat = concat; const buffer_source_js_1 = require("./buffer-source.js"); function concatToUint8Array(buffers) { const views = []; let length = 0; for (const buffer of buffers) { const view = (0, buffer_source_js_1.toUint8Array)(buffer); views.push(view); length += view.byteLength; } const result = new Uint8Array(length); let offset = 0; for (const view of views) { result.set(view, offset); offset += view.byteLength; } return result; } function concat(first, second, ...rest) { let buffers; let type; if (typeof second === "function") { buffers = Array.from(first); type = second; } else if ((0, buffer_source_js_1.isBufferSource)(first)) { buffers = [first, second, ...rest].filter(buffer_source_js_1.isBufferSource); } else { buffers = Array.from(first); if (second) { buffers.push(second); } buffers.push(...rest); } const bytes = concatToUint8Array(buffers); return type ? (0, buffer_source_js_1.toView)(bytes, type) : bytes.buffer; }