{"version":3,"file":"environment-detector-Cnn6wr6O.cjs","names":[],"sources":["../../src/utils/environment-detector.ts"],"sourcesContent":["/**\n * Environment Detector - Robust environment detection for logger\n * Detects browser, terminal, server, and other runtime environments\n */\n\nexport type Environment = 'browser' | 'terminal' | 'server' | 'webworker' | 'deno' | 'unknown';\n\n/**\n * Checks if running in Node.js environment\n */\nexport const isNode = typeof process !== 'undefined' &&\n                      process.versions &&\n                      process.versions.node;\n\n/**\n * Checks if running in browser environment\n */\nexport const isBrowser = typeof window !== 'undefined' &&\n                          typeof document !== 'undefined';\n\n/**\n * Main environment detection function\n */\nexport function getEnvironment(): Environment {\n    // Check for Deno first\n    if (typeof globalThis !== 'undefined' && (globalThis as any).Deno) {\n        return 'deno';\n    }\n\n    // Check for WebWorker\n    if (typeof window === 'undefined' && typeof self !== 'undefined' && typeof (self as any).importScripts === 'function') {\n        return 'webworker';\n    }\n\n    // Check for Node.js (server environment)\n    if (typeof process !== 'undefined' && process.versions && process.versions.node) {\n        // Determine if it's running in a terminal or as a server\n        if (isRunningInTerminal()) {\n            return 'terminal';\n        }\n        return 'server';\n    }\n\n    // Check for browser\n    if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n        return 'browser';\n    }\n\n    return 'unknown';\n}\n\n/**\n * Check if running in an interactive terminal\n */\nexport function isRunningInTerminal(): boolean {\n    // Check for common terminal indicators\n    if (typeof process === 'undefined') return false;\n\n    const isTTY = process.stdout && process.stdout.isTTY;\n    const hasTerminalEnv = process.env && (\n        process.env.TERM ||\n        process.env.TERM_PROGRAM ||\n        process.env.SSH_TTY ||\n        process.env.TERM_SESSION_ID\n    );\n\n    // Check if we're running in common terminal programs\n    const terminalPrograms = [\n        'vscode',\n        'hyper',\n        'iterm',\n        'terminal',\n        'alacritty',\n        'kitty',\n        'gnome-terminal',\n        'konsole',\n        'xterm',\n        'tmux',\n        'screen'\n    ];\n\n    const isTerminalProgram = hasTerminalEnv && terminalPrograms.some(program =>\n        process.env.TERM_PROGRAM?.toLowerCase().includes(program) ||\n        process.env.TERM?.toLowerCase().includes(program)\n    );\n\n    return Boolean(isTTY || hasTerminalEnv || isTerminalProgram);\n}\n\n/**\n * Check if environment supports ANSI colors\n */\nexport function supportsANSI(): boolean {\n    const env = getEnvironment();\n\n    if (env === 'browser') return false;\n    if (env === 'terminal') return true;\n    if (env === 'server') return checkServerANSISupport();\n\n    return false;\n}\n\n/**\n * Check if server environment supports ANSI colors\n */\nfunction checkServerANSISupport(): boolean {\n    if (typeof process === 'undefined') return false;\n\n    // Check common environment variables that indicate ANSI support\n    const supportsANSI = process.env && (\n        process.env.COLORTERM ||\n        process.env.FORCE_COLOR ||\n        (process.env.TERM && process.env.TERM !== 'dumb') ||\n        process.env.TERM_PROGRAM\n    );\n\n    return Boolean(supportsANSI);\n}\n\n/**\n * Get environment-specific color capability\n */\nexport function getColorCapability(): 'full' | 'basic' | 'none' {\n    const env = getEnvironment();\n\n    if (env === 'browser') {\n        return 'full'; // CSS colors\n    }\n\n    if (!supportsANSI()) {\n        return 'none';\n    }\n\n    // Check for 256-color or truecolor support\n    if (typeof process !== 'undefined' && process.env) {\n        const hasTrueColor = process.env.COLORTERM === 'truecolor' || process.env.COLORTERM === '24bit';\n        const has256Colors = process.env.TERM && process.env.TERM.includes('256');\n\n        if (hasTrueColor || has256Colors) {\n            return 'full';\n        }\n    }\n\n    return 'basic'; // Basic 16 colors\n}\n\n/**\n * Get terminal width in columns\n */\nexport function getTerminalWidth(): number {\n    if (typeof process !== 'undefined' && process.stdout?.columns) {\n        return process.stdout.columns;\n    }\n    return 80;\n}\n\n/**\n * Get terminal height in rows\n */\nexport function getTerminalHeight(): number {\n    if (typeof process !== 'undefined' && process.stdout?.rows) {\n        return process.stdout.rows;\n    }\n    return 24;\n}\n\n/**\n * Environment information for debugging\n */\nexport function getEnvironmentInfo() {\n    return {\n        environment: getEnvironment(),\n        supportsANSI: supportsANSI(),\n        colorCapability: getColorCapability(),\n        isTTY: typeof process !== 'undefined' ? Boolean(process.stdout?.isTTY) : false,\n        platform: typeof process !== 'undefined' ? process.platform : 'unknown',\n        nodeVersion: typeof process !== 'undefined' ? process.versions?.node : null,\n        term: typeof process !== 'undefined' ? process.env?.TERM : null,\n        colorTerm: typeof process !== 'undefined' ? process.env?.COLORTERM : null,\n        terminalWidth: getTerminalWidth(),\n        terminalHeight: getTerminalHeight()\n    };\n}"],"mappings":";;;;AAUA,MAAa,SAAS,OAAO,YAAY,eACnB,QAAQ,YACR,QAAQ,SAAS;;;;AAKvC,MAAa,YAAY,OAAO,WAAW,eACjB,OAAO,aAAa;;;;AAK9C,SAAgB,iBAA8B;CAE1C,IAAI,OAAO,eAAe,eAAgB,WAAmB,MACzD,OAAO;CAIX,IAAI,OAAO,WAAW,eAAe,OAAO,SAAS,eAAe,OAAQ,KAAa,kBAAkB,YACvG,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,YAAY,QAAQ,SAAS,MAAM;EAE7E,IAAI,oBAAoB,GACpB,OAAO;EAEX,OAAO;CACX;CAGA,IAAI,OAAO,WAAW,eAAe,OAAO,aAAa,aACrD,OAAO;CAGX,OAAO;AACX;;;;AAKA,SAAgB,sBAA+B;CAE3C,IAAI,OAAO,YAAY,aAAa,OAAO;CAE3C,MAAM,QAAQ,QAAQ,UAAU,QAAQ,OAAO;CAC/C,MAAM,iBAAiB,QAAQ,QAC3B,QAAQ,IAAI,QACZ,QAAQ,IAAI,gBACZ,QAAQ,IAAI,WACZ,QAAQ,IAAI;CAkBhB,MAAM,oBAAoB,kBAAkB;EAbxC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAGuD,CAAC,CAAC,MAAK,YAC9D,QAAQ,IAAI,cAAc,YAAY,CAAC,CAAC,SAAS,OAAO,KACxD,QAAQ,IAAI,MAAM,YAAY,CAAC,CAAC,SAAS,OAAO,CACpD;CAEA,OAAO,QAAQ,SAAS,kBAAkB,iBAAiB;AAC/D;;;;AAKA,SAAgB,eAAwB;CACpC,MAAM,MAAM,eAAe;CAE3B,IAAI,QAAQ,WAAW,OAAO;CAC9B,IAAI,QAAQ,YAAY,OAAO;CAC/B,IAAI,QAAQ,UAAU,OAAO,uBAAuB;CAEpD,OAAO;AACX;;;;AAKA,SAAS,yBAAkC;CACvC,IAAI,OAAO,YAAY,aAAa,OAAO;CAG3C,MAAM,eAAe,QAAQ,QACzB,QAAQ,IAAI,aACZ,QAAQ,IAAI,eACX,QAAQ,IAAI,QAAQ,QAAQ,IAAI,SAAS,UAC1C,QAAQ,IAAI;CAGhB,OAAO,QAAQ,YAAY;AAC/B;;;;AAKA,SAAgB,qBAAgD;CAG5D,IAFY,eAEN,MAAM,WACR,OAAO;CAGX,IAAI,CAAC,aAAa,GACd,OAAO;CAIX,IAAI,OAAO,YAAY,eAAe,QAAQ,KAAK;EAC/C,MAAM,eAAe,QAAQ,IAAI,cAAc,eAAe,QAAQ,IAAI,cAAc;EACxF,MAAM,eAAe,QAAQ,IAAI,QAAQ,QAAQ,IAAI,KAAK,SAAS,KAAK;EAExE,IAAI,gBAAgB,cAChB,OAAO;CAEf;CAEA,OAAO;AACX;;;;AAKA,SAAgB,mBAA2B;CACvC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,SAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,oBAA4B;CACxC,IAAI,OAAO,YAAY,eAAe,QAAQ,QAAQ,MAClD,OAAO,QAAQ,OAAO;CAE1B,OAAO;AACX;;;;AAKA,SAAgB,qBAAqB;CACjC,OAAO;EACH,aAAa,eAAe;EAC5B,cAAc,aAAa;EAC3B,iBAAiB,mBAAmB;EACpC,OAAO,OAAO,YAAY,cAAc,QAAQ,QAAQ,QAAQ,KAAK,IAAI;EACzE,UAAU,OAAO,YAAY,cAAc,QAAQ,WAAW;EAC9D,aAAa,OAAO,YAAY,cAAc,QAAQ,UAAU,OAAO;EACvE,MAAM,OAAO,YAAY,cAAc,QAAQ,KAAK,OAAO;EAC3D,WAAW,OAAO,YAAY,cAAc,QAAQ,KAAK,YAAY;EACrE,eAAe,iBAAiB;EAChC,gBAAgB,kBAAkB;CACtC;AACJ"}