import { isArray as i } from "lodash";
class f {
  /**
   * 解析URL中是否包含全局变量
   * 包含   则解析全局变量
   * 不包含 则忽略
   */
  static replaceURLVariables(e, l) {
    try {
      const r = e.match(/\${(.*?)}/g);
      if (r)
        for (let t = 0; t < r.length; t++) {
          const a = l.filter((n) => n.name === r[t].substring(2, r[t].length - 1));
          a && i(a) && a.length > 0 && (e = e.replaceAll(r[t], a[0]._value));
        }
      return e;
    } catch {
      return e;
    }
  }
  /**
   * 解析对象中是否包含全局变量
   * 包含   则解析全局变量
   * 不包含 则忽略
   */
  static replaceObjectVariables(e, l) {
    try {
      let r = JSON.stringify(e);
      const t = r.match(/\$g{(.*?)}/g);
      if (t) {
        for (let a = 0; a < t.length; a++) {
          const n = l.filter((c) => c.name === t[a].substring(3, t[a].length - 1));
          n && i(n) && n.length > 0 && (r = r.replaceAll(t[a], n[0]._value));
        }
        return JSON.parse(r);
      }
      return e;
    } catch {
      return e;
    }
  }
  /**
   * 解析字符串中是否包含全局变量
   * 包含   则解析全局变量
   * 不包含 则忽略
   */
  static replaceStringVariables(e, l) {
    try {
      const r = e.match(/\$g{(.*?)}/g);
      if (r)
        for (let t = 0; t < r.length; t++) {
          const a = l.filter((n) => n.name === r[t].substring(3, r[t].length - 1));
          a && i(a) && a.length > 0 && (e = e.replaceAll(r[t], a[0]._value));
        }
      return e;
    } catch {
      return e;
    }
  }
  /**
   * 解析环境变量
   * 包含   则解析环境变量
   * 不包含 则忽略
   */
  static replaceEnvVariables(e, l) {
    try {
      let r = "";
      if (!e.includes("http") && l) {
        const t = l.filter((a) => a.selected);
        t && i(t) && t.length > 0 && (r = t[0].envBaseUrl || "");
      }
      return r;
    } catch {
      return "";
    }
  }
  /**
   * 返回空数据
   */
  static noneData(e) {
    return {
      id: e,
      finalKeyData: [],
      finalUserData: { id: e, data: [] },
      filteredData: [],
      rawData: [],
      noMappingData: []
    };
  }
  /**
   * 获取环境变量
   */
  static getEnvironments() {
    let e = localStorage.getItem("currentApiEnvironments");
    return e && (e = JSON.parse(e)), e;
  }
  /**
   * 获取变量数据
   */
  static getVariableData() {
    let e = localStorage.getItem("currentVariableData");
    return e && (e = JSON.parse(e)), e;
  }
  // 新增：检查 WebSocket 是否已存在且有效
  static hasValidWebSocket(e, l, r) {
    const t = e.get(l);
    if (!t) return !1;
    for (const a of t)
      if (a.getId() === r && a.isConnected())
        return !0;
    return !1;
  }
  // 优化：只在必要时清理 WebSocket 连接
  static cleanupPreviousWebSockets(e, l, r) {
    const t = e.get(r);
    t && (t.forEach((a) => {
      l.includes(a.getId()) || (a.disconnect(), t.delete(a));
    }), t.size === 0 && e.delete(r));
  }
}
export {
  f as DataSourceUtils
};
