'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

/**
 * 将 ArrayBuffer 转换为字符串
 * 支持多种字符编码，优先使用 TextDecoder API
 * @param buffer - 要转换的 ArrayBuffer
 * @param encoding - 字符编码，默认为 'utf-8'
 * @returns 转换后的字符串
 * @example
 * ```ts
 * const buffer = new ArrayBuffer(8);
 * const str = ab2str(buffer); // 使用 UTF-8 编码
 * const gbkStr = ab2str(buffer, 'gbk'); // 使用 GBK 编码
 * ```
 */
function ab2str(buffer) {
  var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'utf-8';
  if (typeof TextDecoder !== 'undefined') {
    return new TextDecoder(encoding).decode(new Uint8Array(buffer));
  }
  // 备选方案
  var byteArray = new Uint8Array(buffer);
  var result = '';
  for (var i = 0; i < byteArray.length; i++) {
    result += String.fromCharCode(byteArray[i]);
  }
  // 如果是 GBK 编码，可能需要特殊处理
  if (encoding.toLowerCase() === 'gbk' || encoding.toLowerCase() === 'gb2312') {
    // 这里可以集成第三方 GBK 解码库
    console.warn('GBK编码可能需要特殊处理，建议服务器使用UTF-8');
  }
  return result;
}

exports.ab2str = ab2str;
