{"version":3,"file":"index.mjs","sources":["webpack://@agent-infra/browser-finder/./src/index.ts"],"sourcesContent":["/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport { Logger, defaultLogger } from '@agent-infra/logger';\n\nimport { getAnyEdgeStable } from 'edge-paths';\nimport { getAnyChromeStable } from './chrome-paths';\nimport { getAnyFirefoxStable } from './firefox-paths';\n\nimport { BrowserType } from './types';\n\nexport type { BrowserType };\n\nexport class BrowserFinder {\n  private logger: Logger;\n\n  constructor(logger?: Logger) {\n    this.logger = logger ?? defaultLogger;\n  }\n\n  public findBrowser(name?: BrowserType): { path: string; type: BrowserType } {\n    const platform = process.platform;\n    let browserPath: string;\n    let browserType: BrowserType;\n\n    this.logger.info('Find browser on platform:', platform);\n\n    if (!['darwin', 'win32', 'linux'].includes(platform)) {\n      const error = new Error(`Unsupported platform: ${platform}`);\n      this.logger.error(error.message);\n      throw error;\n    }\n\n    switch (name) {\n      case 'chrome':\n        browserPath = this.findChrome();\n        browserType = 'chrome';\n        break;\n      case 'edge':\n        // https://learn.microsoft.com/en-us/microsoft-edge/puppeteer/\n        browserPath = this.findEdge();\n        browserType = 'edge';\n        break;\n      case 'firefox':\n        // https://pptr.dev/webdriver-bidi/#automate-with-chrome-and-firefox\n        browserPath = this.findFirefox();\n        browserType = 'firefox';\n        break;\n      default:\n        const value = this.findAnyBrowser();\n        browserPath = value.path;\n        browserType = value.type;\n        break;\n    }\n\n    this.logger.info('browserPath:', browserPath);\n\n    return {\n      path: browserPath,\n      type: browserType,\n    };\n  }\n\n  private findChrome(): string {\n    try {\n      return getAnyChromeStable();\n    } catch (e) {\n      this.logger.error('Find Chrome Error:', e);\n      throw e;\n    }\n  }\n\n  private findEdge(): string {\n    try {\n      return getAnyEdgeStable();\n    } catch (e) {\n      this.logger.error('Find Edge Error:', e);\n      throw e;\n    }\n  }\n\n  private findFirefox(): string {\n    try {\n      return getAnyFirefoxStable();\n    } catch (e) {\n      this.logger.error('Find Firefox Error:', e);\n      throw e;\n    }\n  }\n\n  private findAnyBrowser(): { path: string; type: BrowserType } {\n    try {\n      return {\n        path: getAnyChromeStable(),\n        type: 'chrome',\n      };\n    } catch (e) {\n      this.logger.warn('Find Chrome Error:', e);\n    }\n\n    try {\n      return {\n        path: getAnyEdgeStable(),\n        type: 'edge',\n      };\n    } catch (e) {\n      this.logger.warn('Find Edge Error:', e);\n    }\n\n    try {\n      return {\n        path: getAnyFirefoxStable(),\n        type: 'firefox',\n      };\n    } catch (e) {\n      this.logger.warn('Find Firefox Error:', e);\n    }\n\n    const error = new Error('Unable to find any browser.');\n    error.name = 'BrowserPathsError';\n    throw error;\n  }\n}\n"],"names":["BrowserFinder","name","platform","process","browserPath","browserType","error","Error","value","getAnyChromeStable","e","getAnyEdgeStable","getAnyFirefoxStable","logger","defaultLogger"],"mappings":";;;;;;;;AAGC;;;;;;;;;;AAWM,MAAMA;IAOJ,YAAYC,IAAkB,EAAuC;QAC1E,MAAMC,WAAWC,QAAQ,QAAQ;QACjC,IAAIC;QACJ,IAAIC;QAEJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6BH;QAE9C,IAAI,CAAC;YAAC;YAAU;YAAS;SAAQ,CAAC,QAAQ,CAACA,WAAW;YACpD,MAAMI,QAAQ,IAAIC,MAAM,CAAC,sBAAsB,EAAEL,UAAU;YAC3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAACI,MAAM,OAAO;YAC/B,MAAMA;QACR;QAEA,OAAQL;YACN,KAAK;gBACHG,cAAc,IAAI,CAAC,UAAU;gBAC7BC,cAAc;gBACd;YACF,KAAK;gBAEHD,cAAc,IAAI,CAAC,QAAQ;gBAC3BC,cAAc;gBACd;YACF,KAAK;gBAEHD,cAAc,IAAI,CAAC,WAAW;gBAC9BC,cAAc;gBACd;YACF;gBACE,MAAMG,QAAQ,IAAI,CAAC,cAAc;gBACjCJ,cAAcI,MAAM,IAAI;gBACxBH,cAAcG,MAAM,IAAI;gBACxB;QACJ;QAEA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgBJ;QAEjC,OAAO;YACL,MAAMA;YACN,MAAMC;QACR;IACF;IAEQ,aAAqB;QAC3B,IAAI;YACF,OAAOI;QACT,EAAE,OAAOC,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsBA;YACxC,MAAMA;QACR;IACF;IAEQ,WAAmB;QACzB,IAAI;YACF,OAAOC;QACT,EAAE,OAAOD,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoBA;YACtC,MAAMA;QACR;IACF;IAEQ,cAAsB;QAC5B,IAAI;YACF,OAAOE;QACT,EAAE,OAAOF,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuBA;YACzC,MAAMA;QACR;IACF;IAEQ,iBAAsD;QAC5D,IAAI;YACF,OAAO;gBACL,MAAMD;gBACN,MAAM;YACR;QACF,EAAE,OAAOC,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsBA;QACzC;QAEA,IAAI;YACF,OAAO;gBACL,MAAMC;gBACN,MAAM;YACR;QACF,EAAE,OAAOD,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoBA;QACvC;QAEA,IAAI;YACF,OAAO;gBACL,MAAME;gBACN,MAAM;YACR;QACF,EAAE,OAAOF,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuBA;QAC1C;QAEA,MAAMJ,QAAQ,IAAIC,MAAM;QACxBD,MAAM,IAAI,GAAG;QACb,MAAMA;IACR;IAzGA,YAAYO,MAAe,CAAE;QAF7B,uBAAQ,UAAR;QAGE,IAAI,CAAC,MAAM,GAAGA,UAAUC;IAC1B;AAwGF"}