/**
 * URL 辅助函数
 */

/**
 * 规范化 URL（补全协议）
 * @param url URL 地址
 * @param defaultProtocol 默认协议
 * @returns 规范化后的 URL
 * 
 * @example
 * normalizeUrl('example.com', 'https://') // 'https://example.com'
 * normalizeUrl('http://example.com', 'https://') // 'http://example.com'
 */
export function normalizeUrl(url) {
  var defaultProtocol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'https://';
  if (!url) return '';
  var trimmedUrl = url.trim();

  // 已有协议，直接返回
  if (/^[a-z]+:\/\//i.test(trimmedUrl)) {
    return trimmedUrl;
  }

  // 无协议，添加默认协议
  return defaultProtocol + trimmedUrl;
}

/**
 * 智能补全协议（识别 localhost）
 * @param url URL 地址
 * @returns 规范化后的 URL
 * 
 * @example
 * smartNormalizeUrl('localhost:3000') // 'http://localhost:3000'
 * smartNormalizeUrl('example.com') // 'https://example.com'
 */
export function smartNormalizeUrl(url) {
  if (!url) return '';
  var trimmedUrl = url.trim();

  // 已有协议
  if (/^[a-z]+:\/\//i.test(trimmedUrl)) {
    return trimmedUrl;
  }

  // localhost 或本地 IP 使用 http
  if (trimmedUrl.startsWith('localhost') || trimmedUrl.startsWith('127.0.0.1') || trimmedUrl.startsWith('192.168.') || trimmedUrl.startsWith('10.0.') || trimmedUrl.startsWith('172.')) {
    return 'http://' + trimmedUrl;
  }

  // 其他使用 https
  return 'https://' + trimmedUrl;
}

/**
 * 提取域名
 * @param url URL 地址
 * @returns 域名
 * 
 * @example
 * extractDomain('https://www.example.com/path') // 'www.example.com'
 */
export function extractDomain(url) {
  try {
    var normalizedUrl = url.startsWith('http') ? url : 'https://' + url;
    var urlObj = new URL(normalizedUrl);
    return urlObj.hostname;
  } catch (_unused) {
    return url;
  }
}

/**
 * 处理链接跳转（安全性保障）
 * @param url URL 地址
 * @param openInNewWindow 是否新窗口打开
 * @param defaultProtocol 默认协议
 * 
 * @example
 * handleUrlClick('example.com', true, 'https://')
 */
export function handleUrlClick(url) {
  var openInNewWindow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
  var defaultProtocol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'https://';
  if (!url) return;

  // 规范化 URL（补全协议）
  var normalizedUrl = normalizeUrl(url, defaultProtocol);

  // 验证 URL
  try {
    new URL(normalizedUrl);
  } catch (_unused2) {
    console.warn('Invalid URL:', normalizedUrl);
    return;
  }
  if (openInNewWindow) {
    // 新窗口打开（添加安全性）
    window.open(normalizedUrl, '_blank', 'noopener,noreferrer');
  } else {
    // 当前窗口打开
    window.location.href = normalizedUrl;
  }
}

/**
 * 检测是否为安全链接（HTTPS）
 * @param url URL 地址
 * @returns 是否为 HTTPS
 * 
 * @example
 * isSecureUrl('https://example.com') // true
 * isSecureUrl('http://example.com') // false
 */
export function isSecureUrl(url) {
  return url.startsWith('https://');
}

/**
 * 提取 URL 参数
 * @param url URL 地址
 * @returns 参数对象
 * 
 * @example
 * extractUrlParams('https://example.com?foo=bar&baz=qux')
 * // { foo: 'bar', baz: 'qux' }
 */
export function extractUrlParams(url) {
  try {
    var normalizedUrl = url.startsWith('http') ? url : 'https://' + url;
    var urlObj = new URL(normalizedUrl);
    var params = {};
    urlObj.searchParams.forEach(function (value, key) {
      params[key] = value;
    });
    return params;
  } catch (_unused3) {
    return {};
  }
}