// pdf-compatibility.js
(function() {
    'use strict';
    
    // 修复 url.parse
    if (typeof window.URL === 'undefined' || typeof window.URL.parse !== 'function') {
        window.URL = window.URL || {};
        
        window.URL.parse = function(url) {
            try {
                // 使用 DOM 方式解析 URL
                const a = document.createElement('a');
                a.href = url;
                return {
                    protocol: a.protocol,
                    hostname: a.hostname,
                    port: a.port,
                    pathname: a.pathname,
                    search: a.search,
                    hash: a.hash,
                    host: a.host,
                    href: a.href,
                    origin: a.origin
                };
            } catch (e) {
                // 简单的字符串解析
                const match = url.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/);
                return {
                    protocol: match[2] || '',
                    hostname: match[4] || '',
                    pathname: match[5] || '',
                    search: match[6] || '',
                    hash: match[8] || '',
                    href: url
                };
            }
        };
    }
    
    // 修复 Promise.withResolvers
    if (typeof Promise.withResolvers !== 'function') {
        Promise.withResolvers = function() {
            var resolve, reject;
            var promise = new Promise(function(res, rej) {
                resolve = res;
                reject = rej;
            });
            return { promise: promise, resolve: resolve, reject: reject };
        };
    }
    
    // 修复 Object.values
    if (typeof Object.values !== 'function') {
        Object.values = function(obj) {
            var values = [];
            for (var key in obj) {
                if (obj.hasOwnProperty(key)) {
                    values.push(obj[key]);
                }
            }
            return values;
        };
    }
    
    console.log('PDF 兼容性修复已加载');
})();