import { logger } from "./logger";

/**
 * 检测浏览器是否兼容Proxy对象
 */
export function supportsProxy() {
  try {
    // 检查 Proxy 构造函数是否存在
    if (typeof Proxy === 'undefined') {
      return false;
    }

    // 尝试创建一个简单的 Proxy
    var testProxy = new Proxy({}, {
      get: function get() {
        return 'test';
      }
    });

    // 测试 Proxy 是否正常工作
    return (testProxy === null || testProxy === void 0 ? void 0 : testProxy.anyProperty) === 'test';
  } catch (e) {
    return false;
  }
}

/**
 * 检测浏览器是否兼容defineProperty
 */
export function supportsDefineProperty() {
  if (typeof Object.defineProperty !== 'function') {
    return false;
  }
  return true;
}

/**
 * @description 尝试调用window.tracker上报m5性能数据
 * @param options 自定义性能埋点 m1-m20,  m1-资源加载耗时，m2-首屏数据请求耗时，m3-首屏数据请求完成耗时，m4-首屏渲染完成耗时
 */
export var reportCustomizedPerformance = function reportCustomizedPerformance(options) {
  var retryCount = 0;
  var maxRetries = 5;
  var intervalId = setInterval(function () {
    var _window;
    retryCount++;
    if ((_window = window) !== null && _window !== void 0 && _window.tracker) {
      var _window2;
      (_window2 = window) === null || _window2 === void 0 || (_window2 = _window2.tracker) === null || _window2 === void 0 || _window2.reportCustomizedPerformanceData(options);
      clearInterval(intervalId);
      return;
    }
    if (retryCount >= maxRetries) {
      clearInterval(intervalId);
      logger.logError({
        title: 'report_customized_performance_error'
      }, {
        options: options
      });
      return;
    }
  }, 3000);
};