"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const commons_js_1 = require("./commons.js"); const base64_arraybuffer_js_1 = require("./contrib/base64-arraybuffer.js"); const withNativeArrayBuffer = typeof ArrayBuffer === "function"; const decodePacket = (encodedPacket, binaryType) => { if (typeof encodedPacket !== "string") { return { type: "message", data: mapBinary(encodedPacket, binaryType) }; } const type = encodedPacket.charAt(0); if (type === "b") { return { type: "message", data: decodeBase64Packet(encodedPacket.substring(1), binaryType) }; } const packetType = commons_js_1.PACKET_TYPES_REVERSE[type]; if (!packetType) { return commons_js_1.ERROR_PACKET; } return encodedPacket.length > 1 ? { type: commons_js_1.PACKET_TYPES_REVERSE[type], data: encodedPacket.substring(1) } : { type: commons_js_1.PACKET_TYPES_REVERSE[type] }; }; const decodeBase64Packet = (data, binaryType) => { if (withNativeArrayBuffer) { const decoded = (0, base64_arraybuffer_js_1.decode)(data); return mapBinary(decoded, binaryType); } else { return { base64: true, data }; // fallback for old browsers } }; const mapBinary = (data, binaryType) => { switch (binaryType) { case "blob": return data instanceof ArrayBuffer ? new Blob([data]) : data; case "arraybuffer": default: return data; // assuming the data is already an ArrayBuffer } }; exports.default = decodePacket;