@agent-infra/browser 0.0.2 → 0.0.3-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/browser-finder/chrome-paths.d.ts +10 -0
  2. package/dist/browser-finder/chrome-paths.d.ts.map +1 -0
  3. package/dist/browser-finder/chrome-paths.js +160 -0
  4. package/dist/browser-finder/chrome-paths.js.map +1 -0
  5. package/dist/browser-finder/chrome-paths.mjs +118 -0
  6. package/dist/browser-finder/chrome-paths.mjs.map +1 -0
  7. package/dist/browser-finder/firefox-paths.d.ts +2 -0
  8. package/dist/browser-finder/firefox-paths.d.ts.map +1 -0
  9. package/dist/browser-finder/firefox-paths.js +132 -0
  10. package/dist/browser-finder/firefox-paths.js.map +1 -0
  11. package/dist/browser-finder/firefox-paths.mjs +90 -0
  12. package/dist/browser-finder/firefox-paths.mjs.map +1 -0
  13. package/dist/browser-finder/index.d.ts +15 -0
  14. package/dist/browser-finder/index.d.ts.map +1 -0
  15. package/dist/browser-finder/index.js +151 -0
  16. package/dist/browser-finder/index.js.map +1 -0
  17. package/dist/browser-finder/index.mjs +119 -0
  18. package/dist/browser-finder/index.mjs.map +1 -0
  19. package/dist/browser-finder/index.test.d.ts +2 -0
  20. package/dist/browser-finder/index.test.d.ts.map +1 -0
  21. package/dist/index.js +1 -1
  22. package/dist/index.mjs +1 -1
  23. package/dist/local-browser.d.ts +2 -6
  24. package/dist/local-browser.d.ts.map +1 -1
  25. package/dist/local-browser.js +37 -19
  26. package/dist/local-browser.js.map +1 -1
  27. package/dist/local-browser.mjs +37 -19
  28. package/dist/local-browser.mjs.map +1 -1
  29. package/dist/types.d.ts +11 -2
  30. package/dist/types.d.ts.map +1 -1
  31. package/dist/types.js +0 -15
  32. package/dist/types.mjs +0 -3
  33. package/package.json +5 -2
  34. package/dist/browser-finder.d.ts +0 -59
  35. package/dist/browser-finder.d.ts.map +0 -1
  36. package/dist/browser-finder.js +0 -148
  37. package/dist/browser-finder.js.map +0 -1
  38. package/dist/browser-finder.mjs +0 -116
  39. package/dist/browser-finder.mjs.map +0 -1
  40. package/dist/browser-finder.test.d.ts +0 -2
  41. package/dist/browser-finder.test.d.ts.map +0 -1
@@ -0,0 +1,151 @@
1
+ /**
2
+ * Copyright (c) 2025 Bytedance, Inc. and its affiliates.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ "use strict";
6
+ var __webpack_require__ = {};
7
+ (()=>{
8
+ __webpack_require__.d = (exports1, definition)=>{
9
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
10
+ enumerable: true,
11
+ get: definition[key]
12
+ });
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = function(exports1) {
20
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ BrowserFinder: ()=>BrowserFinder
32
+ });
33
+ const logger_namespaceObject = require("@agent-infra/logger");
34
+ const external_edge_paths_namespaceObject = require("edge-paths");
35
+ const external_chrome_paths_js_namespaceObject = require("./chrome-paths.js");
36
+ const external_firefox_paths_js_namespaceObject = require("./firefox-paths.js");
37
+ function _define_property(obj, key, value) {
38
+ if (key in obj) Object.defineProperty(obj, key, {
39
+ value: value,
40
+ enumerable: true,
41
+ configurable: true,
42
+ writable: true
43
+ });
44
+ else obj[key] = value;
45
+ return obj;
46
+ }
47
+ class BrowserFinder {
48
+ findBrowser(name) {
49
+ const platform = process.platform;
50
+ let browserPath;
51
+ let browserType;
52
+ this.logger.info('Find browser on platform:', platform);
53
+ if (![
54
+ 'darwin',
55
+ 'win32',
56
+ 'linux'
57
+ ].includes(platform)) {
58
+ const error = new Error(`Unsupported platform: ${platform}`);
59
+ this.logger.error(error.message);
60
+ throw error;
61
+ }
62
+ switch(name){
63
+ case 'chrome':
64
+ browserPath = this.findChrome();
65
+ browserType = 'chrome';
66
+ break;
67
+ case 'edge':
68
+ browserPath = this.findEdge();
69
+ browserType = 'edge';
70
+ break;
71
+ case 'firefox':
72
+ browserPath = this.findFirefox();
73
+ browserType = 'firefox';
74
+ break;
75
+ default:
76
+ const value = this.findAnyBrowser();
77
+ browserPath = value.path;
78
+ browserType = value.type;
79
+ break;
80
+ }
81
+ this.logger.info('browserPath:', browserPath);
82
+ return {
83
+ path: browserPath,
84
+ type: browserType
85
+ };
86
+ }
87
+ findChrome() {
88
+ try {
89
+ return (0, external_chrome_paths_js_namespaceObject.getAnyChromeStable)();
90
+ } catch (e) {
91
+ this.logger.error('Find Chrome Error:', e);
92
+ throw e;
93
+ }
94
+ }
95
+ findEdge() {
96
+ try {
97
+ return (0, external_edge_paths_namespaceObject.getAnyEdgeStable)();
98
+ } catch (e) {
99
+ this.logger.error('Find Edge Error:', e);
100
+ throw e;
101
+ }
102
+ }
103
+ findFirefox() {
104
+ try {
105
+ return (0, external_firefox_paths_js_namespaceObject.getAnyFirefoxStable)();
106
+ } catch (e) {
107
+ this.logger.error('Find Firefox Error:', e);
108
+ throw e;
109
+ }
110
+ }
111
+ findAnyBrowser() {
112
+ try {
113
+ return {
114
+ path: (0, external_chrome_paths_js_namespaceObject.getAnyChromeStable)(),
115
+ type: 'chrome'
116
+ };
117
+ } catch (e) {
118
+ this.logger.warn('Find Chrome Error:', e);
119
+ }
120
+ try {
121
+ return {
122
+ path: (0, external_edge_paths_namespaceObject.getAnyEdgeStable)(),
123
+ type: 'edge'
124
+ };
125
+ } catch (e) {
126
+ this.logger.warn('Find Edge Error:', e);
127
+ }
128
+ try {
129
+ return {
130
+ path: (0, external_firefox_paths_js_namespaceObject.getAnyFirefoxStable)(),
131
+ type: 'firefox'
132
+ };
133
+ } catch (e) {
134
+ this.logger.warn('Find Firefox Error:', e);
135
+ }
136
+ const error = new Error('Unable to find any browser.');
137
+ error.name = 'BrowserPathsError';
138
+ throw error;
139
+ }
140
+ constructor(logger){
141
+ _define_property(this, "logger", void 0);
142
+ this.logger = logger ?? logger_namespaceObject.defaultLogger;
143
+ }
144
+ }
145
+ var __webpack_export_target__ = exports;
146
+ for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
147
+ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
148
+ value: true
149
+ });
150
+
151
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-finder/index.js","sources":["webpack://@agent-infra/browser/./src/browser-finder/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 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;;;;;;;;;;AASM,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,AAAAA,IAAAA,yCAAAA,kBAAAA,AAAAA;QACT,EAAE,OAAOC,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsBA;YACxC,MAAMA;QACR;IACF;IAEQ,WAAmB;QACzB,IAAI;YACF,OAAOC,AAAAA,IAAAA,oCAAAA,gBAAAA,AAAAA;QACT,EAAE,OAAOD,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoBA;YACtC,MAAMA;QACR;IACF;IAEQ,cAAsB;QAC5B,IAAI;YACF,OAAOE,AAAAA,IAAAA,0CAAAA,mBAAAA,AAAAA;QACT,EAAE,OAAOF,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuBA;YACzC,MAAMA;QACR;IACF;IAEQ,iBAAsD;QAC5D,IAAI;YACF,OAAO;gBACL,MAAMD,AAAAA,IAAAA,yCAAAA,kBAAAA,AAAAA;gBACN,MAAM;YACR;QACF,EAAE,OAAOC,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsBA;QACzC;QAEA,IAAI;YACF,OAAO;gBACL,MAAMC,AAAAA,IAAAA,oCAAAA,gBAAAA,AAAAA;gBACN,MAAM;YACR;QACF,EAAE,OAAOD,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoBA;QACvC;QAEA,IAAI;YACF,OAAO;gBACL,MAAME,AAAAA,IAAAA,0CAAAA,mBAAAA,AAAAA;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,uBAAAA,aAAaA;IACvC;AAwGF"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Copyright (c) 2025 Bytedance, Inc. and its affiliates.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import * as __WEBPACK_EXTERNAL_MODULE__agent_infra_logger_ddae3da2__ from "@agent-infra/logger";
6
+ import * as __WEBPACK_EXTERNAL_MODULE_edge_paths_335d45e8__ from "edge-paths";
7
+ import * as __WEBPACK_EXTERNAL_MODULE__chrome_paths_mjs_6a8bf971__ from "./chrome-paths.mjs";
8
+ import * as __WEBPACK_EXTERNAL_MODULE__firefox_paths_mjs_7d752188__ from "./firefox-paths.mjs";
9
+ function _define_property(obj, key, value) {
10
+ if (key in obj) Object.defineProperty(obj, key, {
11
+ value: value,
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true
15
+ });
16
+ else obj[key] = value;
17
+ return obj;
18
+ }
19
+ class BrowserFinder {
20
+ findBrowser(name) {
21
+ const platform = process.platform;
22
+ let browserPath;
23
+ let browserType;
24
+ this.logger.info('Find browser on platform:', platform);
25
+ if (![
26
+ 'darwin',
27
+ 'win32',
28
+ 'linux'
29
+ ].includes(platform)) {
30
+ const error = new Error(`Unsupported platform: ${platform}`);
31
+ this.logger.error(error.message);
32
+ throw error;
33
+ }
34
+ switch(name){
35
+ case 'chrome':
36
+ browserPath = this.findChrome();
37
+ browserType = 'chrome';
38
+ break;
39
+ case 'edge':
40
+ browserPath = this.findEdge();
41
+ browserType = 'edge';
42
+ break;
43
+ case 'firefox':
44
+ browserPath = this.findFirefox();
45
+ browserType = 'firefox';
46
+ break;
47
+ default:
48
+ const value = this.findAnyBrowser();
49
+ browserPath = value.path;
50
+ browserType = value.type;
51
+ break;
52
+ }
53
+ this.logger.info('browserPath:', browserPath);
54
+ return {
55
+ path: browserPath,
56
+ type: browserType
57
+ };
58
+ }
59
+ findChrome() {
60
+ try {
61
+ return (0, __WEBPACK_EXTERNAL_MODULE__chrome_paths_mjs_6a8bf971__.getAnyChromeStable)();
62
+ } catch (e) {
63
+ this.logger.error('Find Chrome Error:', e);
64
+ throw e;
65
+ }
66
+ }
67
+ findEdge() {
68
+ try {
69
+ return (0, __WEBPACK_EXTERNAL_MODULE_edge_paths_335d45e8__.getAnyEdgeStable)();
70
+ } catch (e) {
71
+ this.logger.error('Find Edge Error:', e);
72
+ throw e;
73
+ }
74
+ }
75
+ findFirefox() {
76
+ try {
77
+ return (0, __WEBPACK_EXTERNAL_MODULE__firefox_paths_mjs_7d752188__.getAnyFirefoxStable)();
78
+ } catch (e) {
79
+ this.logger.error('Find Firefox Error:', e);
80
+ throw e;
81
+ }
82
+ }
83
+ findAnyBrowser() {
84
+ try {
85
+ return {
86
+ path: (0, __WEBPACK_EXTERNAL_MODULE__chrome_paths_mjs_6a8bf971__.getAnyChromeStable)(),
87
+ type: 'chrome'
88
+ };
89
+ } catch (e) {
90
+ this.logger.warn('Find Chrome Error:', e);
91
+ }
92
+ try {
93
+ return {
94
+ path: (0, __WEBPACK_EXTERNAL_MODULE_edge_paths_335d45e8__.getAnyEdgeStable)(),
95
+ type: 'edge'
96
+ };
97
+ } catch (e) {
98
+ this.logger.warn('Find Edge Error:', e);
99
+ }
100
+ try {
101
+ return {
102
+ path: (0, __WEBPACK_EXTERNAL_MODULE__firefox_paths_mjs_7d752188__.getAnyFirefoxStable)(),
103
+ type: 'firefox'
104
+ };
105
+ } catch (e) {
106
+ this.logger.warn('Find Firefox Error:', e);
107
+ }
108
+ const error = new Error('Unable to find any browser.');
109
+ error.name = 'BrowserPathsError';
110
+ throw error;
111
+ }
112
+ constructor(logger){
113
+ _define_property(this, "logger", void 0);
114
+ this.logger = logger ?? __WEBPACK_EXTERNAL_MODULE__agent_infra_logger_ddae3da2__.defaultLogger;
115
+ }
116
+ }
117
+ export { BrowserFinder };
118
+
119
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-finder/index.mjs","sources":["webpack://@agent-infra/browser/./src/browser-finder/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 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;;;;;;;;;;AASM,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,AAAAA,IAAAA,uDAAAA,kBAAAA,AAAAA;QACT,EAAE,OAAOC,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsBA;YACxC,MAAMA;QACR;IACF;IAEQ,WAAmB;QACzB,IAAI;YACF,OAAOC,AAAAA,IAAAA,gDAAAA,gBAAAA,AAAAA;QACT,EAAE,OAAOD,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoBA;YACtC,MAAMA;QACR;IACF;IAEQ,cAAsB;QAC5B,IAAI;YACF,OAAOE,AAAAA,IAAAA,wDAAAA,mBAAAA,AAAAA;QACT,EAAE,OAAOF,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuBA;YACzC,MAAMA;QACR;IACF;IAEQ,iBAAsD;QAC5D,IAAI;YACF,OAAO;gBACL,MAAMD,AAAAA,IAAAA,uDAAAA,kBAAAA,AAAAA;gBACN,MAAM;YACR;QACF,EAAE,OAAOC,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsBA;QACzC;QAEA,IAAI;YACF,OAAO;gBACL,MAAMC,AAAAA,IAAAA,gDAAAA,gBAAAA,AAAAA;gBACN,MAAM;YACR;QACF,EAAE,OAAOD,GAAG;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoBA;QACvC;QAEA,IAAI;YACF,OAAO;gBACL,MAAME,AAAAA,IAAAA,wDAAAA,mBAAAA,AAAAA;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,yDAAAA,aAAaA;IACvC;AAwGF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/browser-finder/index.test.ts"],"names":[],"mappings":""}
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ var __webpack_modules__ = {
8
8
  module.exports = require("./base-browser.js");
9
9
  },
10
10
  "./browser-finder": function(module) {
11
- module.exports = require("./browser-finder.js");
11
+ module.exports = require("./browser-finder/index.js");
12
12
  },
13
13
  "./local-browser": function(module) {
14
14
  module.exports = require("./local-browser.js");
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  export * from "./types.mjs";
6
- export * from "./browser-finder.mjs";
6
+ export * from "./browser-finder/index.mjs";
7
7
  export * from "./local-browser.mjs";
8
8
  export * from "./remote-browser.mjs";
9
9
  export * from "./base-browser.mjs";
@@ -1,16 +1,11 @@
1
- import { LaunchOptions } from './types';
2
1
  import { BaseBrowser } from './base-browser';
2
+ import type { LaunchOptions } from './types';
3
3
  /**
4
4
  * LocalBrowser class for controlling locally installed browsers
5
5
  * Extends the BaseBrowser with functionality specific to managing local browser instances
6
6
  * @extends BaseBrowser
7
7
  */
8
8
  export declare class LocalBrowser extends BaseBrowser {
9
- /**
10
- * Browser finder instance to detect and locate installed browsers
11
- * @private
12
- */
13
- private browserFinder;
14
9
  /**
15
10
  * Launches a local browser instance with specified options
16
11
  * Automatically detects installed browsers if no executable path is provided
@@ -19,5 +14,6 @@ export declare class LocalBrowser extends BaseBrowser {
19
14
  * @throws {Error} If the browser cannot be launched
20
15
  */
21
16
  launch(options?: LaunchOptions): Promise<void>;
17
+ private getBrowserInfo;
22
18
  }
23
19
  //# sourceMappingURL=local-browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-browser.d.ts","sourceRoot":"","sources":["../src/local-browser.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAC3C;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAuB;IAE5C;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CA2DzD"}
1
+ {"version":3,"file":"local-browser.d.ts","sourceRoot":"","sources":["../src/local-browser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,WAAW;IAC3C;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4ExD,OAAO,CAAC,cAAc;CAsCvB"}
@@ -31,32 +31,23 @@ __webpack_require__.d(__webpack_exports__, {
31
31
  LocalBrowser: ()=>LocalBrowser
32
32
  });
33
33
  const external_puppeteer_core_namespaceObject = require("puppeteer-core");
34
- const external_browser_finder_js_namespaceObject = require("./browser-finder.js");
34
+ const index_js_namespaceObject = require("./browser-finder/index.js");
35
35
  const external_base_browser_js_namespaceObject = require("./base-browser.js");
36
- function _define_property(obj, key, value) {
37
- if (key in obj) Object.defineProperty(obj, key, {
38
- value: value,
39
- enumerable: true,
40
- configurable: true,
41
- writable: true
42
- });
43
- else obj[key] = value;
44
- return obj;
45
- }
46
36
  class LocalBrowser extends external_base_browser_js_namespaceObject.BaseBrowser {
47
37
  async launch(options = {}) {
48
38
  var _options_defaultViewport, _options_defaultViewport1;
49
39
  this.logger.info('Launching browser with options:', options);
50
- const executablePath = (null == options ? void 0 : options.executablePath) || this.browserFinder.findBrowser().executable;
51
- this.logger.info('Using executable path:', executablePath);
40
+ const { path, type } = this.getBrowserInfo(options);
52
41
  const viewportWidth = (null == options ? void 0 : null === (_options_defaultViewport = options.defaultViewport) || void 0 === _options_defaultViewport ? void 0 : _options_defaultViewport.width) ?? 1280;
53
42
  const viewportHeight = (null == options ? void 0 : null === (_options_defaultViewport1 = options.defaultViewport) || void 0 === _options_defaultViewport1 ? void 0 : _options_defaultViewport1.height) ?? 800;
54
43
  const puppeteerLaunchOptions = {
55
- executablePath,
44
+ browser: type,
45
+ executablePath: path,
56
46
  headless: (null == options ? void 0 : options.headless) ?? false,
57
47
  defaultViewport: {
58
48
  width: viewportWidth,
59
- height: viewportHeight
49
+ height: viewportHeight,
50
+ deviceScaleFactor: 0
60
51
  },
61
52
  args: [
62
53
  '--no-sandbox',
@@ -77,8 +68,14 @@ class LocalBrowser extends external_base_browser_js_namespaceObject.BaseBrowser
77
68
  '--disable-site-isolation-trials',
78
69
  `--window-size=${viewportWidth},${viewportHeight + 90}`,
79
70
  (null == options ? void 0 : options.proxy) ? `--proxy-server=${options.proxy}` : '',
80
- (null == options ? void 0 : options.profilePath) ? `--profile-directory=${options.profilePath}` : ''
81
- ].filter(Boolean),
71
+ (null == options ? void 0 : options.profilePath) ? `--profile-directory=${options.profilePath}` : '',
72
+ ...options.args ?? []
73
+ ].filter((item)=>{
74
+ if ('firefox' === type) {
75
+ if ('--disable-features=IsolateOrigins,site-per-process' === item || item === `--window-size=${viewportWidth},${viewportHeight + 90}`) return false;
76
+ }
77
+ return !!item;
78
+ }),
82
79
  ignoreDefaultArgs: [
83
80
  '--enable-automation'
84
81
  ],
@@ -97,8 +94,29 @@ class LocalBrowser extends external_base_browser_js_namespaceObject.BaseBrowser
97
94
  throw error;
98
95
  }
99
96
  }
100
- constructor(...args){
101
- super(...args), _define_property(this, "browserFinder", new external_browser_finder_js_namespaceObject.BrowserFinder());
97
+ getBrowserInfo(options = {}) {
98
+ const map = {
99
+ chrome: 'chrome',
100
+ edge: 'chrome',
101
+ firefox: 'firefox'
102
+ };
103
+ let browserPath = options.executablePath;
104
+ let browserType = options.browserType && map[options.browserType];
105
+ if (browserPath) {
106
+ if (!browserType) {
107
+ const lowercasePath = browserPath.toLowerCase();
108
+ browserType = lowercasePath.includes('chrome') ? 'chrome' : lowercasePath.includes('edge') ? 'chrome' : lowercasePath.includes('firefox') ? 'firefox' : 'chrome';
109
+ }
110
+ } else {
111
+ const browserInfo = new index_js_namespaceObject.BrowserFinder(this.logger).findBrowser();
112
+ browserPath = browserInfo.path;
113
+ browserType = map[browserInfo.type];
114
+ }
115
+ this.logger.info('Using executable path:', browserPath);
116
+ return {
117
+ path: browserPath,
118
+ type: browserType
119
+ };
102
120
  }
103
121
  }
104
122
  var __webpack_export_target__ = exports;
@@ -1 +1 @@
1
- {"version":3,"file":"local-browser.js","sources":["webpack://@agent-infra/browser/./src/local-browser.ts"],"sourcesContent":["/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as puppeteer from 'puppeteer-core';\nimport { LaunchOptions } from './types';\nimport { BrowserFinder } from './browser-finder';\nimport { BaseBrowser } from './base-browser';\n\n/**\n * LocalBrowser class for controlling locally installed browsers\n * Extends the BaseBrowser with functionality specific to managing local browser instances\n * @extends BaseBrowser\n */\nexport class LocalBrowser extends BaseBrowser {\n /**\n * Browser finder instance to detect and locate installed browsers\n * @private\n */\n private browserFinder = new BrowserFinder();\n\n /**\n * Launches a local browser instance with specified options\n * Automatically detects installed browsers if no executable path is provided\n * @param {LaunchOptions} options - Configuration options for launching the browser\n * @returns {Promise<void>} Promise that resolves when the browser is successfully launched\n * @throws {Error} If the browser cannot be launched\n */\n async launch(options: LaunchOptions = {}): Promise<void> {\n this.logger.info('Launching browser with options:', options);\n\n const executablePath =\n options?.executablePath || this.browserFinder.findBrowser().executable;\n\n this.logger.info('Using executable path:', executablePath);\n\n const viewportWidth = options?.defaultViewport?.width ?? 1280;\n const viewportHeight = options?.defaultViewport?.height ?? 800;\n\n const puppeteerLaunchOptions: puppeteer.LaunchOptions = {\n executablePath,\n headless: options?.headless ?? false,\n defaultViewport: {\n width: viewportWidth,\n height: viewportHeight,\n },\n args: [\n '--no-sandbox',\n '--mute-audio',\n '--disable-gpu',\n '--disable-http2',\n '--disable-blink-features=AutomationControlled',\n '--disable-infobars',\n '--disable-background-timer-throttling',\n '--disable-popup-blocking',\n '--disable-backgrounding-occluded-windows',\n '--disable-renderer-backgrounding',\n '--disable-window-activation',\n '--disable-focus-on-load',\n '--no-default-browser-check', // disable default browser check\n '--disable-web-security', // disable CORS\n '--disable-features=IsolateOrigins,site-per-process',\n '--disable-site-isolation-trials',\n `--window-size=${viewportWidth},${viewportHeight + 90}`,\n options?.proxy ? `--proxy-server=${options.proxy}` : '',\n options?.profilePath\n ? `--profile-directory=${options.profilePath}`\n : '',\n ].filter(Boolean),\n ignoreDefaultArgs: ['--enable-automation'],\n timeout: options.timeout ?? 0,\n downloadBehavior: {\n policy: 'deny',\n },\n };\n\n this.logger.info('Launch options:', puppeteerLaunchOptions);\n\n try {\n this.browser = await puppeteer.launch(puppeteerLaunchOptions);\n await this.setupPageListener();\n this.logger.success('Browser launched successfully');\n } catch (error) {\n this.logger.error('Failed to launch browser:', error);\n throw error;\n }\n }\n}\n"],"names":["LocalBrowser","BaseBrowser","options","_options_defaultViewport","_options_defaultViewport1","executablePath","viewportWidth","viewportHeight","puppeteerLaunchOptions","Boolean","puppeteer","error","BrowserFinder"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGC;;;;;;;;;;AAWM,MAAMA,qBAAqBC,yCAAAA,WAAWA;IAc3C,MAAM,OAAOC,UAAyB,CAAC,CAAC,EAAiB;YAQjCC,0BACCC;QARvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmCF;QAEpD,MAAMG,iBACJH,AAAAA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,cAAc,AAAD,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,UAAU;QAExE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0BG;QAE3C,MAAMC,gBAAgBH,AAAAA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,AAAwB,SAAxBA,CAAAA,2BAAAA,QAAS,eAAe,AAAD,KAAvBA,AAAAA,KAAAA,MAAAA,2BAAAA,KAAAA,IAAAA,yBAA0B,KAAK,AAAD,KAAK;QACzD,MAAMI,iBAAiBH,AAAAA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,AAAwB,SAAxBA,CAAAA,4BAAAA,QAAS,eAAe,AAAD,KAAvBA,AAAAA,KAAAA,MAAAA,4BAAAA,KAAAA,IAAAA,0BAA0B,MAAM,AAAD,KAAK;QAE3D,MAAMI,yBAAkD;YACtDH;YACA,UAAUH,AAAAA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,QAAQ,AAAD,KAAK;YAC/B,iBAAiB;gBACf,OAAOI;gBACP,QAAQC;YACV;YACA,MAAM;gBACJ;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA,CAAC,cAAc,EAAED,cAAc,CAAC,EAAEC,iBAAiB,IAAI;gBACvDL,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,KAAK,AAAD,IAAI,CAAC,eAAe,EAAEA,QAAQ,KAAK,EAAE,GAAG;gBACrDA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,WAAW,AAAD,IACf,CAAC,oBAAoB,EAAEA,QAAQ,WAAW,EAAE,GAC5C;aACL,CAAC,MAAM,CAACO;YACT,mBAAmB;gBAAC;aAAsB;YAC1C,SAASP,QAAQ,OAAO,IAAI;YAC5B,kBAAkB;gBAChB,QAAQ;YACV;QACF;QAEA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmBM;QAEpC,IAAI;YACF,IAAI,CAAC,OAAO,GAAG,MAAME,wCAAAA,MAAgB,CAACF;YACtC,MAAM,IAAI,CAAC,iBAAiB;YAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACtB,EAAE,OAAOG,OAAO;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6BA;YAC/C,MAAMA;QACR;IACF;;QAxEK,gBAKL,uBAAQ,iBAAgB,IAAIC,2CAAAA,aAAaA;;AAoE3C"}
1
+ {"version":3,"file":"local-browser.js","sources":["webpack://@agent-infra/browser/./src/local-browser.ts"],"sourcesContent":["/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as puppeteer from 'puppeteer-core';\nimport { BrowserFinder } from './browser-finder';\nimport { BaseBrowser } from './base-browser';\n\nimport type { BrowserType, LaunchOptions } from './types';\n\n/**\n * LocalBrowser class for controlling locally installed browsers\n * Extends the BaseBrowser with functionality specific to managing local browser instances\n * @extends BaseBrowser\n */\nexport class LocalBrowser extends BaseBrowser {\n /**\n * Launches a local browser instance with specified options\n * Automatically detects installed browsers if no executable path is provided\n * @param {LaunchOptions} options - Configuration options for launching the browser\n * @returns {Promise<void>} Promise that resolves when the browser is successfully launched\n * @throws {Error} If the browser cannot be launched\n */\n async launch(options: LaunchOptions = {}): Promise<void> {\n this.logger.info('Launching browser with options:', options);\n\n const { path, type } = this.getBrowserInfo(options);\n const viewportWidth = options?.defaultViewport?.width ?? 1280;\n const viewportHeight = options?.defaultViewport?.height ?? 800;\n\n const puppeteerLaunchOptions: puppeteer.LaunchOptions = {\n browser: type,\n executablePath: path,\n headless: options?.headless ?? false,\n defaultViewport: {\n width: viewportWidth,\n height: viewportHeight,\n // Setting this value to 0 will reset this value to the system default.\n // This parameter combined with `captureBeyondViewport: false`, will resolve the screenshot blinking issue.\n deviceScaleFactor: 0,\n },\n args: [\n '--no-sandbox',\n '--mute-audio',\n '--disable-gpu',\n '--disable-http2',\n '--disable-blink-features=AutomationControlled',\n '--disable-infobars',\n '--disable-background-timer-throttling',\n '--disable-popup-blocking',\n '--disable-backgrounding-occluded-windows',\n '--disable-renderer-backgrounding',\n '--disable-window-activation',\n '--disable-focus-on-load',\n '--no-default-browser-check', // disable default browser check\n '--disable-web-security', // disable CORS\n '--disable-features=IsolateOrigins,site-per-process',\n '--disable-site-isolation-trials',\n `--window-size=${viewportWidth},${viewportHeight + 90}`,\n options?.proxy ? `--proxy-server=${options.proxy}` : '',\n options?.profilePath\n ? `--profile-directory=${options.profilePath}`\n : '',\n ...(options.args ?? []),\n ].filter((item) => {\n if (type === 'firefox') {\n // firefox not support rules\n if (\n item === '--disable-features=IsolateOrigins,site-per-process' ||\n item === `--window-size=${viewportWidth},${viewportHeight + 90}`\n ) {\n return false;\n }\n\n return !!item;\n }\n\n // chrome/edge\n return !!item;\n }),\n ignoreDefaultArgs: ['--enable-automation'],\n timeout: options.timeout ?? 0,\n downloadBehavior: {\n policy: 'deny',\n },\n };\n\n this.logger.info('Launch options:', puppeteerLaunchOptions);\n\n try {\n this.browser = await puppeteer.launch(puppeteerLaunchOptions);\n await this.setupPageListener();\n this.logger.success('Browser launched successfully');\n } catch (error) {\n this.logger.error('Failed to launch browser:', error);\n throw error;\n }\n }\n\n private getBrowserInfo(options: LaunchOptions = {}) {\n // pptr only support 'chrome' and 'firefox'\n const map: Record<BrowserType, Exclude<BrowserType, 'edge'>> = {\n chrome: 'chrome',\n edge: 'chrome',\n firefox: 'firefox',\n };\n\n let browserPath = options.executablePath;\n let browserType = options.browserType && map[options.browserType];\n\n if (!browserPath) {\n const browserInfo = new BrowserFinder(this.logger).findBrowser();\n browserPath = browserInfo.path;\n browserType = map[browserInfo.type];\n } else {\n if (!browserType) {\n const lowercasePath = browserPath.toLowerCase();\n\n if (lowercasePath.includes('chrome')) {\n browserType = 'chrome';\n } else if (lowercasePath.includes('edge')) {\n browserType = 'chrome'; // pptr only support 'chrome' and 'firefox'\n } else if (lowercasePath.includes('firefox')) {\n browserType = 'firefox';\n } else {\n browserType = 'chrome';\n }\n }\n }\n\n this.logger.info('Using executable path:', browserPath);\n\n return {\n path: browserPath,\n type: browserType,\n };\n }\n}\n"],"names":["LocalBrowser","BaseBrowser","options","_options_defaultViewport","_options_defaultViewport1","path","type","viewportWidth","viewportHeight","puppeteerLaunchOptions","item","puppeteer","error","map","browserPath","browserType","lowercasePath","browserInfo","BrowserFinder"],"mappings":"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"}
@@ -3,32 +3,23 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import * as __WEBPACK_EXTERNAL_MODULE_puppeteer_core_17481843__ from "puppeteer-core";
6
- import * as __WEBPACK_EXTERNAL_MODULE__browser_finder_mjs_e776194b__ from "./browser-finder.mjs";
6
+ import * as __WEBPACK_EXTERNAL_MODULE__browser_finder_index_mjs_208fd54f__ from "./browser-finder/index.mjs";
7
7
  import * as __WEBPACK_EXTERNAL_MODULE__base_browser_mjs_64d751a3__ from "./base-browser.mjs";
8
- function _define_property(obj, key, value) {
9
- if (key in obj) Object.defineProperty(obj, key, {
10
- value: value,
11
- enumerable: true,
12
- configurable: true,
13
- writable: true
14
- });
15
- else obj[key] = value;
16
- return obj;
17
- }
18
8
  class LocalBrowser extends __WEBPACK_EXTERNAL_MODULE__base_browser_mjs_64d751a3__.BaseBrowser {
19
9
  async launch(options = {}) {
20
10
  var _options_defaultViewport, _options_defaultViewport1;
21
11
  this.logger.info('Launching browser with options:', options);
22
- const executablePath = (null == options ? void 0 : options.executablePath) || this.browserFinder.findBrowser().executable;
23
- this.logger.info('Using executable path:', executablePath);
12
+ const { path, type } = this.getBrowserInfo(options);
24
13
  const viewportWidth = (null == options ? void 0 : null === (_options_defaultViewport = options.defaultViewport) || void 0 === _options_defaultViewport ? void 0 : _options_defaultViewport.width) ?? 1280;
25
14
  const viewportHeight = (null == options ? void 0 : null === (_options_defaultViewport1 = options.defaultViewport) || void 0 === _options_defaultViewport1 ? void 0 : _options_defaultViewport1.height) ?? 800;
26
15
  const puppeteerLaunchOptions = {
27
- executablePath,
16
+ browser: type,
17
+ executablePath: path,
28
18
  headless: (null == options ? void 0 : options.headless) ?? false,
29
19
  defaultViewport: {
30
20
  width: viewportWidth,
31
- height: viewportHeight
21
+ height: viewportHeight,
22
+ deviceScaleFactor: 0
32
23
  },
33
24
  args: [
34
25
  '--no-sandbox',
@@ -49,8 +40,14 @@ class LocalBrowser extends __WEBPACK_EXTERNAL_MODULE__base_browser_mjs_64d751a3_
49
40
  '--disable-site-isolation-trials',
50
41
  `--window-size=${viewportWidth},${viewportHeight + 90}`,
51
42
  (null == options ? void 0 : options.proxy) ? `--proxy-server=${options.proxy}` : '',
52
- (null == options ? void 0 : options.profilePath) ? `--profile-directory=${options.profilePath}` : ''
53
- ].filter(Boolean),
43
+ (null == options ? void 0 : options.profilePath) ? `--profile-directory=${options.profilePath}` : '',
44
+ ...options.args ?? []
45
+ ].filter((item)=>{
46
+ if ('firefox' === type) {
47
+ if ('--disable-features=IsolateOrigins,site-per-process' === item || item === `--window-size=${viewportWidth},${viewportHeight + 90}`) return false;
48
+ }
49
+ return !!item;
50
+ }),
54
51
  ignoreDefaultArgs: [
55
52
  '--enable-automation'
56
53
  ],
@@ -69,8 +66,29 @@ class LocalBrowser extends __WEBPACK_EXTERNAL_MODULE__base_browser_mjs_64d751a3_
69
66
  throw error;
70
67
  }
71
68
  }
72
- constructor(...args){
73
- super(...args), _define_property(this, "browserFinder", new __WEBPACK_EXTERNAL_MODULE__browser_finder_mjs_e776194b__.BrowserFinder());
69
+ getBrowserInfo(options = {}) {
70
+ const map = {
71
+ chrome: 'chrome',
72
+ edge: 'chrome',
73
+ firefox: 'firefox'
74
+ };
75
+ let browserPath = options.executablePath;
76
+ let browserType = options.browserType && map[options.browserType];
77
+ if (browserPath) {
78
+ if (!browserType) {
79
+ const lowercasePath = browserPath.toLowerCase();
80
+ browserType = lowercasePath.includes('chrome') ? 'chrome' : lowercasePath.includes('edge') ? 'chrome' : lowercasePath.includes('firefox') ? 'firefox' : 'chrome';
81
+ }
82
+ } else {
83
+ const browserInfo = new __WEBPACK_EXTERNAL_MODULE__browser_finder_index_mjs_208fd54f__.BrowserFinder(this.logger).findBrowser();
84
+ browserPath = browserInfo.path;
85
+ browserType = map[browserInfo.type];
86
+ }
87
+ this.logger.info('Using executable path:', browserPath);
88
+ return {
89
+ path: browserPath,
90
+ type: browserType
91
+ };
74
92
  }
75
93
  }
76
94
  export { LocalBrowser };
@@ -1 +1 @@
1
- {"version":3,"file":"local-browser.mjs","sources":["webpack://@agent-infra/browser/./src/local-browser.ts"],"sourcesContent":["/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as puppeteer from 'puppeteer-core';\nimport { LaunchOptions } from './types';\nimport { BrowserFinder } from './browser-finder';\nimport { BaseBrowser } from './base-browser';\n\n/**\n * LocalBrowser class for controlling locally installed browsers\n * Extends the BaseBrowser with functionality specific to managing local browser instances\n * @extends BaseBrowser\n */\nexport class LocalBrowser extends BaseBrowser {\n /**\n * Browser finder instance to detect and locate installed browsers\n * @private\n */\n private browserFinder = new BrowserFinder();\n\n /**\n * Launches a local browser instance with specified options\n * Automatically detects installed browsers if no executable path is provided\n * @param {LaunchOptions} options - Configuration options for launching the browser\n * @returns {Promise<void>} Promise that resolves when the browser is successfully launched\n * @throws {Error} If the browser cannot be launched\n */\n async launch(options: LaunchOptions = {}): Promise<void> {\n this.logger.info('Launching browser with options:', options);\n\n const executablePath =\n options?.executablePath || this.browserFinder.findBrowser().executable;\n\n this.logger.info('Using executable path:', executablePath);\n\n const viewportWidth = options?.defaultViewport?.width ?? 1280;\n const viewportHeight = options?.defaultViewport?.height ?? 800;\n\n const puppeteerLaunchOptions: puppeteer.LaunchOptions = {\n executablePath,\n headless: options?.headless ?? false,\n defaultViewport: {\n width: viewportWidth,\n height: viewportHeight,\n },\n args: [\n '--no-sandbox',\n '--mute-audio',\n '--disable-gpu',\n '--disable-http2',\n '--disable-blink-features=AutomationControlled',\n '--disable-infobars',\n '--disable-background-timer-throttling',\n '--disable-popup-blocking',\n '--disable-backgrounding-occluded-windows',\n '--disable-renderer-backgrounding',\n '--disable-window-activation',\n '--disable-focus-on-load',\n '--no-default-browser-check', // disable default browser check\n '--disable-web-security', // disable CORS\n '--disable-features=IsolateOrigins,site-per-process',\n '--disable-site-isolation-trials',\n `--window-size=${viewportWidth},${viewportHeight + 90}`,\n options?.proxy ? `--proxy-server=${options.proxy}` : '',\n options?.profilePath\n ? `--profile-directory=${options.profilePath}`\n : '',\n ].filter(Boolean),\n ignoreDefaultArgs: ['--enable-automation'],\n timeout: options.timeout ?? 0,\n downloadBehavior: {\n policy: 'deny',\n },\n };\n\n this.logger.info('Launch options:', puppeteerLaunchOptions);\n\n try {\n this.browser = await puppeteer.launch(puppeteerLaunchOptions);\n await this.setupPageListener();\n this.logger.success('Browser launched successfully');\n } catch (error) {\n this.logger.error('Failed to launch browser:', error);\n throw error;\n }\n }\n}\n"],"names":["LocalBrowser","BaseBrowser","options","_options_defaultViewport","_options_defaultViewport1","executablePath","viewportWidth","viewportHeight","puppeteerLaunchOptions","Boolean","puppeteer","error","BrowserFinder"],"mappings":";;;;;;;AAGC;;;;;;;;;;AAWM,MAAMA,qBAAqBC,uDAAAA,WAAWA;IAc3C,MAAM,OAAOC,UAAyB,CAAC,CAAC,EAAiB;YAQjCC,0BACCC;QARvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmCF;QAEpD,MAAMG,iBACJH,AAAAA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,cAAc,AAAD,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,UAAU;QAExE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0BG;QAE3C,MAAMC,gBAAgBH,AAAAA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,AAAwB,SAAxBA,CAAAA,2BAAAA,QAAS,eAAe,AAAD,KAAvBA,AAAAA,KAAAA,MAAAA,2BAAAA,KAAAA,IAAAA,yBAA0B,KAAK,AAAD,KAAK;QACzD,MAAMI,iBAAiBH,AAAAA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,AAAwB,SAAxBA,CAAAA,4BAAAA,QAAS,eAAe,AAAD,KAAvBA,AAAAA,KAAAA,MAAAA,4BAAAA,KAAAA,IAAAA,0BAA0B,MAAM,AAAD,KAAK;QAE3D,MAAMI,yBAAkD;YACtDH;YACA,UAAUH,AAAAA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,QAAQ,AAAD,KAAK;YAC/B,iBAAiB;gBACf,OAAOI;gBACP,QAAQC;YACV;YACA,MAAM;gBACJ;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA,CAAC,cAAc,EAAED,cAAc,CAAC,EAAEC,iBAAiB,IAAI;gBACvDL,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,KAAK,AAAD,IAAI,CAAC,eAAe,EAAEA,QAAQ,KAAK,EAAE,GAAG;gBACrDA,CAAAA,QAAAA,UAAAA,KAAAA,IAAAA,QAAS,WAAW,AAAD,IACf,CAAC,oBAAoB,EAAEA,QAAQ,WAAW,EAAE,GAC5C;aACL,CAAC,MAAM,CAACO;YACT,mBAAmB;gBAAC;aAAsB;YAC1C,SAASP,QAAQ,OAAO,IAAI;YAC5B,kBAAkB;gBAChB,QAAQ;YACV;QACF;QAEA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmBM;QAEpC,IAAI;YACF,IAAI,CAAC,OAAO,GAAG,MAAME,oDAAAA,MAAgB,CAACF;YACtC,MAAM,IAAI,CAAC,iBAAiB;YAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACtB,EAAE,OAAOG,OAAO;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6BA;YAC/C,MAAMA;QACR;IACF;;QAxEK,gBAKL,uBAAQ,iBAAgB,IAAIC,yDAAAA,aAAaA;;AAoE3C"}
1
+ {"version":3,"file":"local-browser.mjs","sources":["webpack://@agent-infra/browser/./src/local-browser.ts"],"sourcesContent":["/*\n * Copyright (c) 2025 Bytedance, Inc. and its affiliates.\n * SPDX-License-Identifier: Apache-2.0\n */\nimport * as puppeteer from 'puppeteer-core';\nimport { BrowserFinder } from './browser-finder';\nimport { BaseBrowser } from './base-browser';\n\nimport type { BrowserType, LaunchOptions } from './types';\n\n/**\n * LocalBrowser class for controlling locally installed browsers\n * Extends the BaseBrowser with functionality specific to managing local browser instances\n * @extends BaseBrowser\n */\nexport class LocalBrowser extends BaseBrowser {\n /**\n * Launches a local browser instance with specified options\n * Automatically detects installed browsers if no executable path is provided\n * @param {LaunchOptions} options - Configuration options for launching the browser\n * @returns {Promise<void>} Promise that resolves when the browser is successfully launched\n * @throws {Error} If the browser cannot be launched\n */\n async launch(options: LaunchOptions = {}): Promise<void> {\n this.logger.info('Launching browser with options:', options);\n\n const { path, type } = this.getBrowserInfo(options);\n const viewportWidth = options?.defaultViewport?.width ?? 1280;\n const viewportHeight = options?.defaultViewport?.height ?? 800;\n\n const puppeteerLaunchOptions: puppeteer.LaunchOptions = {\n browser: type,\n executablePath: path,\n headless: options?.headless ?? false,\n defaultViewport: {\n width: viewportWidth,\n height: viewportHeight,\n // Setting this value to 0 will reset this value to the system default.\n // This parameter combined with `captureBeyondViewport: false`, will resolve the screenshot blinking issue.\n deviceScaleFactor: 0,\n },\n args: [\n '--no-sandbox',\n '--mute-audio',\n '--disable-gpu',\n '--disable-http2',\n '--disable-blink-features=AutomationControlled',\n '--disable-infobars',\n '--disable-background-timer-throttling',\n '--disable-popup-blocking',\n '--disable-backgrounding-occluded-windows',\n '--disable-renderer-backgrounding',\n '--disable-window-activation',\n '--disable-focus-on-load',\n '--no-default-browser-check', // disable default browser check\n '--disable-web-security', // disable CORS\n '--disable-features=IsolateOrigins,site-per-process',\n '--disable-site-isolation-trials',\n `--window-size=${viewportWidth},${viewportHeight + 90}`,\n options?.proxy ? `--proxy-server=${options.proxy}` : '',\n options?.profilePath\n ? `--profile-directory=${options.profilePath}`\n : '',\n ...(options.args ?? []),\n ].filter((item) => {\n if (type === 'firefox') {\n // firefox not support rules\n if (\n item === '--disable-features=IsolateOrigins,site-per-process' ||\n item === `--window-size=${viewportWidth},${viewportHeight + 90}`\n ) {\n return false;\n }\n\n return !!item;\n }\n\n // chrome/edge\n return !!item;\n }),\n ignoreDefaultArgs: ['--enable-automation'],\n timeout: options.timeout ?? 0,\n downloadBehavior: {\n policy: 'deny',\n },\n };\n\n this.logger.info('Launch options:', puppeteerLaunchOptions);\n\n try {\n this.browser = await puppeteer.launch(puppeteerLaunchOptions);\n await this.setupPageListener();\n this.logger.success('Browser launched successfully');\n } catch (error) {\n this.logger.error('Failed to launch browser:', error);\n throw error;\n }\n }\n\n private getBrowserInfo(options: LaunchOptions = {}) {\n // pptr only support 'chrome' and 'firefox'\n const map: Record<BrowserType, Exclude<BrowserType, 'edge'>> = {\n chrome: 'chrome',\n edge: 'chrome',\n firefox: 'firefox',\n };\n\n let browserPath = options.executablePath;\n let browserType = options.browserType && map[options.browserType];\n\n if (!browserPath) {\n const browserInfo = new BrowserFinder(this.logger).findBrowser();\n browserPath = browserInfo.path;\n browserType = map[browserInfo.type];\n } else {\n if (!browserType) {\n const lowercasePath = browserPath.toLowerCase();\n\n if (lowercasePath.includes('chrome')) {\n browserType = 'chrome';\n } else if (lowercasePath.includes('edge')) {\n browserType = 'chrome'; // pptr only support 'chrome' and 'firefox'\n } else if (lowercasePath.includes('firefox')) {\n browserType = 'firefox';\n } else {\n browserType = 'chrome';\n }\n }\n }\n\n this.logger.info('Using executable path:', browserPath);\n\n return {\n path: browserPath,\n type: browserType,\n };\n }\n}\n"],"names":["LocalBrowser","BaseBrowser","options","_options_defaultViewport","_options_defaultViewport1","path","type","viewportWidth","viewportHeight","puppeteerLaunchOptions","item","puppeteer","error","map","browserPath","browserType","lowercasePath","browserInfo","BrowserFinder"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,14 +1,23 @@
1
- import { Page, WaitForOptions } from 'puppeteer-core';
1
+ import type { Page, KeyInput, WaitForOptions } from 'puppeteer-core';
2
+ export type BrowserType = 'chrome' | 'edge' | 'firefox';
2
3
  /**
3
4
  * Options for launching a browser instance
4
5
  * @interface LaunchOptions
5
6
  */
6
7
  export interface LaunchOptions {
8
+ /**
9
+ * Additional command line arguments to pass to the browser instance.
10
+ */
11
+ args?: string[];
7
12
  /**
8
13
  * Whether to run browser in headless mode
9
14
  * @default false
10
15
  */
11
16
  headless?: boolean;
17
+ /**
18
+ * Browser type, 'chrome' | 'edge' | 'firefox'
19
+ */
20
+ browserType?: BrowserType;
12
21
  /**
13
22
  * Maximum time in milliseconds to wait for the browser to start
14
23
  * @default 0 (no timeout)
@@ -128,5 +137,5 @@ export interface BrowserInterface {
128
137
  */
129
138
  getActivePage(): Promise<Page>;
130
139
  }
131
- export { Page };
140
+ export { Page, KeyInput };
132
141
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;IAC1D;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IAEhD;;;OAGG;IACH,kBAAkB,EAAE,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9D;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,EAClC,OAAO,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GACtC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAErB;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErE,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAExD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;IAC1D;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IAEhD;;;OAGG;IACH,kBAAkB,EAAE,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9D;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC,EAClC,OAAO,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GACtC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAErB;;;OAGG;IACH,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC"}