real-browser-mcp-server 1.5.1 → 2.0.3

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 (106) hide show
  1. package/README.md +46 -41
  2. package/dist/lib/cjs/index.d.ts +14 -1
  3. package/dist/lib/cjs/index.d.ts.map +1 -1
  4. package/dist/lib/cjs/index.js +5 -3
  5. package/dist/lib/cjs/index.js.map +1 -1
  6. package/dist/lib/cjs/module/pageController.d.ts +7 -1
  7. package/dist/lib/cjs/module/pageController.d.ts.map +1 -1
  8. package/dist/lib/cjs/module/pageController.js +4 -23
  9. package/dist/lib/cjs/module/pageController.js.map +1 -1
  10. package/dist/lib/cjs/module/turnstile.d.ts +4 -1
  11. package/dist/lib/cjs/module/turnstile.d.ts.map +1 -1
  12. package/dist/lib/cjs/module/turnstile.js +14 -13
  13. package/dist/lib/cjs/module/turnstile.js.map +1 -1
  14. package/dist/lib/esm/index.d.mjs +11 -0
  15. package/dist/lib/esm/index.mjs +4 -0
  16. package/dist/lib/esm/module/pageController.d.mjs +3 -0
  17. package/dist/lib/esm/module/turnstile.d.mjs +3 -0
  18. package/dist/scripts/generate-esm.d.ts +2 -0
  19. package/dist/scripts/generate-esm.d.ts.map +1 -0
  20. package/dist/scripts/generate-esm.js +100 -0
  21. package/dist/scripts/generate-esm.js.map +1 -0
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js +0 -1
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/mcp/handlers/browser.d.ts +8 -7
  26. package/dist/src/mcp/handlers/browser.d.ts.map +1 -1
  27. package/dist/src/mcp/handlers/browser.js +4 -3
  28. package/dist/src/mcp/handlers/browser.js.map +1 -1
  29. package/dist/src/mcp/handlers/dom.d.ts +19 -18
  30. package/dist/src/mcp/handlers/dom.d.ts.map +1 -1
  31. package/dist/src/mcp/handlers/dom.js +7 -28
  32. package/dist/src/mcp/handlers/dom.js.map +1 -1
  33. package/dist/src/mcp/handlers/extract.js.map +1 -1
  34. package/dist/src/mcp/handlers/handler-utils.d.ts +14 -0
  35. package/dist/src/mcp/handlers/handler-utils.d.ts.map +1 -0
  36. package/dist/src/mcp/handlers/handler-utils.js +42 -0
  37. package/dist/src/mcp/handlers/handler-utils.js.map +1 -0
  38. package/dist/src/mcp/handlers/helpers.d.ts +0 -7
  39. package/dist/src/mcp/handlers/helpers.d.ts.map +1 -1
  40. package/dist/src/mcp/handlers/helpers.js +0 -15
  41. package/dist/src/mcp/handlers/helpers.js.map +1 -1
  42. package/dist/src/mcp/handlers/media-handlers.d.ts +2 -1
  43. package/dist/src/mcp/handlers/media-handlers.d.ts.map +1 -1
  44. package/dist/src/mcp/handlers/media-handlers.js +24 -8
  45. package/dist/src/mcp/handlers/media-handlers.js.map +1 -1
  46. package/dist/src/mcp/handlers/network-extractors.d.ts +2 -0
  47. package/dist/src/mcp/handlers/network-extractors.d.ts.map +1 -0
  48. package/dist/src/mcp/handlers/network-extractors.js +651 -0
  49. package/dist/src/mcp/handlers/network-extractors.js.map +1 -0
  50. package/dist/src/mcp/handlers/network-recorder.d.ts +119 -0
  51. package/dist/src/mcp/handlers/network-recorder.d.ts.map +1 -0
  52. package/dist/src/mcp/handlers/network-recorder.js +337 -0
  53. package/dist/src/mcp/handlers/network-recorder.js.map +1 -0
  54. package/dist/src/mcp/handlers/network.d.ts +30 -118
  55. package/dist/src/mcp/handlers/network.d.ts.map +1 -1
  56. package/dist/src/mcp/handlers/network.js +28 -1187
  57. package/dist/src/mcp/handlers/network.js.map +1 -1
  58. package/dist/src/mcp/handlers/state.d.ts +1 -0
  59. package/dist/src/mcp/handlers/state.d.ts.map +1 -1
  60. package/dist/src/mcp/handlers/state.js +17 -0
  61. package/dist/src/mcp/handlers/state.js.map +1 -1
  62. package/dist/src/mcp/handlers/utility-handlers.d.ts +8 -37
  63. package/dist/src/mcp/handlers/utility-handlers.d.ts.map +1 -1
  64. package/dist/src/mcp/handlers/utility-handlers.js +69 -31
  65. package/dist/src/mcp/handlers/utility-handlers.js.map +1 -1
  66. package/dist/src/mcp/handlers/vision-captcha.d.ts +221 -0
  67. package/dist/src/mcp/handlers/vision-captcha.d.ts.map +1 -0
  68. package/dist/src/mcp/handlers/vision-captcha.js +238 -0
  69. package/dist/src/mcp/handlers/vision-captcha.js.map +1 -0
  70. package/dist/src/mcp/handlers/vision-see-page.d.ts +32 -0
  71. package/dist/src/mcp/handlers/vision-see-page.d.ts.map +1 -0
  72. package/dist/src/mcp/handlers/vision-see-page.js +260 -0
  73. package/dist/src/mcp/handlers/vision-see-page.js.map +1 -0
  74. package/dist/src/mcp/handlers/vision.d.ts +50 -27
  75. package/dist/src/mcp/handlers/vision.d.ts.map +1 -1
  76. package/dist/src/mcp/handlers/vision.js +4 -606
  77. package/dist/src/mcp/handlers/vision.js.map +1 -1
  78. package/dist/src/mcp/index.d.ts.map +1 -1
  79. package/dist/src/mcp/index.js +11 -3
  80. package/dist/src/mcp/index.js.map +1 -1
  81. package/dist/src/shared/cache-manager.d.ts +0 -2
  82. package/dist/src/shared/cache-manager.d.ts.map +1 -1
  83. package/dist/src/shared/cache-manager.js +1 -3
  84. package/dist/src/shared/cache-manager.js.map +1 -1
  85. package/dist/src/shared/lib-core.d.ts +2 -1
  86. package/dist/src/shared/lib-core.d.ts.map +1 -1
  87. package/dist/src/shared/lib-core.js +5 -38
  88. package/dist/src/shared/lib-core.js.map +1 -1
  89. package/dist/src/shared/tools.d.ts.map +1 -1
  90. package/dist/src/shared/tools.js +6 -18
  91. package/dist/src/shared/tools.js.map +1 -1
  92. package/dist/src/types.d.ts +25 -6
  93. package/dist/src/types.d.ts.map +1 -1
  94. package/dist/test/cjs/test.js +29 -33
  95. package/dist/test/cjs/test.js.map +1 -1
  96. package/dist/test/mcp/smoke-test.d.ts.map +1 -1
  97. package/dist/test/mcp/smoke-test.js +9 -3
  98. package/dist/test/mcp/smoke-test.js.map +1 -1
  99. package/dist/test/unit/handler-test.d.ts +3 -0
  100. package/dist/test/unit/handler-test.d.ts.map +1 -0
  101. package/dist/test/unit/handler-test.js +133 -0
  102. package/dist/test/unit/handler-test.js.map +1 -0
  103. package/lib/esm/module/pageController.mjs +4 -22
  104. package/lib/esm/module/turnstile.mjs +16 -13
  105. package/package.json +5 -4
  106. package/typings.d.ts +5 -40
package/README.md CHANGED
@@ -91,7 +91,7 @@ docker run -i --rm ghcr.io/codeiva4u/real-browser-mcp-server:latest
91
91
  * **Human-like Interactions**: Integrates **ghost-cursor-patchright** (Bézier curves) to transparently simulate human mouse movements, velocity, and natural hover-before-click behaviors. Features **Physics-based Smooth Scrolling** (`page.realScroll`) utilizing real mouse-wheel events and Cubic Ease-Out deceleration to perfectly mimic manual trackpad/mouse flicks, bypassing advanced behavioral detectors.
92
92
  * **Turnstile Auto-Solver**: Seamlessly detects and bypasses Cloudflare Turnstile widgets.
93
93
  * **Anti-Race Condition Guards**: Robust state-guards ensure popup blockers, shims, and adblockers attach exactly once per page, preventing context destruction.
94
- * **100% Type-Safe**: Entire codebase is written in Strict Mode TypeScript (`strict: true`) ensuring maximum stability and zero runtime casting errors.
94
+ * **TypeScript**: Entire codebase is written in TypeScript for type safety and maintainability.
95
95
  * **Global Persistent Cache**: Internal `CacheManager` saves browser state and extracted data persistently across server restarts to `.cache/browser_state.json`.
96
96
 
97
97
  ---
@@ -109,7 +109,7 @@ Add the following to your `claude_desktop_config.json`:
109
109
  "real-browser-mcp-server": {
110
110
  "command": "node",
111
111
  "args": [
112
- "c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/src/index.js"
112
+ "c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/dist/src/index.js"
113
113
  ],
114
114
  "env": {
115
115
  "HEADLESS": "false"
@@ -125,7 +125,7 @@ Add the following to your `claude_desktop_config.json`:
125
125
  3. Configure as follows:
126
126
  * **Name**: `real-browser-mcp-server`
127
127
  * **Type**: `command`
128
- * **Command**: `node c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/src/index.js`
128
+ * **Command**: `node c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/dist/src/index.js`
129
129
  4. Click **Save**.
130
130
 
131
131
  ### 3. Cline / Roo Code (VS Code)
@@ -138,7 +138,7 @@ Add the server entry to your global MCP settings file (typically found at `%APPD
138
138
  "type": "stdio",
139
139
  "command": "C:/Program Files/nodejs/node.exe",
140
140
  "args": [
141
- "c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/src/index.js"
141
+ "c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/dist/src/index.js"
142
142
  ],
143
143
  "env": {
144
144
  "HEADLESS": "false"
@@ -160,7 +160,7 @@ Configure the server in your `~/.codeium/windsurf/mcp_config.json`:
160
160
  "real-browser-mcp-server": {
161
161
  "command": "node",
162
162
  "args": [
163
- "c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/src/index.js"
163
+ "c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/dist/src/index.js"
164
164
  ],
165
165
  "env": {
166
166
  "HEADLESS": "false"
@@ -171,7 +171,7 @@ Configure the server in your `~/.codeium/windsurf/mcp_config.json`:
171
171
  ```
172
172
 
173
173
  ### 5. PearAI
174
- Add the configurations via **PearAI Settings** ➔ **MCP Servers** using the standard `command` configuration pointing to `node` and the path to `src/index.js`.
174
+ Add the configuration via **PearAI Settings** ➔ **MCP Servers** using the standard `command` setup pointing to `node` and the built entrypoint at `dist/src/index.js`.
175
175
 
176
176
  ### 6. OpenCode AI IDE
177
177
  Configure the server in your `opencode.jsonc` or standard MCP settings configuration:
@@ -182,7 +182,7 @@ Configure the server in your `opencode.jsonc` or standard MCP settings configura
182
182
  "real-browser-mcp-server": {
183
183
  "command": "node",
184
184
  "args": [
185
- "c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/src/index.js"
185
+ "c:/Users/Admin/Desktop/Software/Real-Browser-Mcp-Server/dist/src/index.js"
186
186
  ],
187
187
  "env": {
188
188
  "HEADLESS": "false"
@@ -196,25 +196,25 @@ Configure the server in your `opencode.jsonc` or standard MCP settings configura
196
196
 
197
197
  ## 🌐 Complete MCP Tool Reference (21 Tools)
198
198
 
199
- The server exposes 21 highly optimized tools categorized into functional units:
199
+ The server exposes 21 tools categorized into functional units:
200
200
 
201
201
  ### 🌐 Browser & Session
202
202
  | Tool Name | Description | Parameters |
203
203
  |:---|:---|:---|
204
204
  | `browser_init` | Initialize Brave/Patchright browser with stealth, ad blocker, and turnstile bypass. | `headless` (boolean), `proxy` (object) |
205
- | `browser_close` | Close browser with cleanup and session saving. | None |
205
+ | `browser_close` | Close browser with cleanup and session saving. | `force` (boolean), `saveSession` (boolean) |
206
206
 
207
207
  ### 🧭 Navigation
208
208
  | Tool Name | Description | Parameters |
209
209
  |:---|:---|:---|
210
- | `navigate` | Navigate to URL with smart retry and configurable wait strategy. | `url` (string), `waitStrategy` (string) |
210
+ | `navigate` | Navigate to URL with smart retry and configurable wait strategy. | `url` (string), `waitUntil` (string), `timeout` (number), `retries` (number) |
211
211
 
212
212
  ### 👆 Human-like Interaction
213
213
  | Tool Name | Description | Parameters |
214
214
  |:---|:---|:---|
215
215
  | `click` | Human-like click using ghost cursor and iframe support. | `selector` (string), `hoverFirst` (boolean) |
216
216
  | `type` | Type text with human speed variation, smart clearing, and iframe support. | `selector` (string), `text` (string) |
217
- | `solve_captcha` | Auto-solve CAPTCHAs (Turnstile, reCAPTCHA, hCaptcha, OCR). | `selector` (string) |
217
+ | `solve_captcha` | Solves Turnstile directly and returns OCR/vision guidance for image CAPTCHAs. reCAPTCHA/hCaptcha are detected honestly but not solved automatically. | `type` (string), `captchaSelector` (string) |
218
218
  | `random_scroll` | Simulated human scrolling with natural patterns and lazy-load triggers. | `direction` (string), `amount` (number), `smooth` (boolean) |
219
219
  | `press_key` | Press keyboard keys with modifier key support (Ctrl/Shift/Alt). | `key` (string), `modifiers` (array) |
220
220
  | `execute_js` | Run custom asynchronous/synchronous JavaScript inside a page or iframe. | `code` (string), `iframeIndex` (number) |
@@ -223,42 +223,41 @@ The server exposes 21 highly optimized tools categorized into functional units:
223
223
  | Tool Name | Description | Parameters |
224
224
  |:---|:---|:---|
225
225
  | `get_content` | Retrieve page content in `html`, `text`, `markdown`, or direct `rawHttp` modes. | `format` (string) |
226
- | `extract_data` | Advanced 8-mode extractor (Regex, JSON, Meta tags, JS Deobfuscator, Cryptography). | `mode` (string), `target` (string) |
227
- | `media_extractor` | Capture and control HLS, DASH, JWPlayer, Plyr, or dynamic streaming content. | `action` (string), `targetUrl` (string) |
226
+ | `extract_data` | Advanced extractor for regex, JSON, metadata, structured data, deobfuscation, API discovery, and decrypt flows. | `type` (string), `source` (string) |
227
+ | `media_extractor` | Capture and control HLS, DASH, JWPlayer, Plyr, or dynamic streaming content. | `action` (string), `types` (array), `quality` (string) |
228
228
 
229
229
  ### 📡 Network & Utilities
230
230
  | Tool Name | Description | Parameters |
231
231
  |:---|:---|:---|
232
232
  | `redirect_tracer` | Trace complete redirect chains (HTTP 301/302, JS location, meta refresh). | `url` (string) |
233
- | `network_recorder` | Capture network requests, XHR request/response bodies, or WebSockets. | `action` (string), `captureXhrBody` (boolean) |
234
- | `deep_analysis` | Detailed analysis of DOM structure, scripts, anti-bots, and stack. | None |
235
- | `wait` | Smart delay with AI prediction or static timeout. | `duration` (number) |
236
- | `progress_tracker` | Track running automation progress with AI-estimated remaining times. | `step` (string), `percentage` (number) |
233
+ | `network_recorder` | Capture requests, responses, intercepted APIs, GraphQL payloads, WebSockets, and media URLs. | `action` (string), `captureXhrBody` (boolean) |
234
+ | `deep_analysis` | Detailed analysis of DOM structure, scripts, anti-bots, stack, and page signals. | `types` (array) |
235
+ | `wait` | Smart delay for selectors, navigation, or fixed timeout. | `type` (string), `value` (string) |
236
+ | `progress_tracker` | Track running automation progress with AI-estimated remaining times. | `taskName` (string), `progress` (number) |
237
237
  | `storage_inspector` | Inspect IndexedDB and Service Workers natively via JS. | None |
238
- | `replay_request` | Replay a captured API request directly in the browser context (bypasses CORS). | `requestId` (string) |
238
+ | `replay_request` | Replay a captured API request directly in the browser context (bypasses CORS). | `url` (string), `method` (string) |
239
239
  | `api_analyzer` | Generate schemas, diff JSONs, and create SDK boilerplates (Python/TypeScript). | `action` (string), `data` (string) |
240
240
 
241
241
  ### 👁️ AI Vision (Eyes)
242
242
  | Tool Name | Description | Parameters |
243
243
  |:---|:---|:---|
244
- | `see_page` | Lets the AI **visually SEE** the page like human eyes: returns the actual screenshot image to the agent **plus** a "visual map" of every visible interactive element. | `fullPage` (boolean), `format` (png/jpeg) |
244
+ | `see_page` | Lets the AI **visually SEE** the page like human eyes: returns a screenshot image plus a text JSON summary and a visual map of visible interactive elements. | `fullPage` (boolean), `format` (png/jpeg) |
245
+
246
+ If the current model cannot consume images, `see_page` still returns a text summary, and `solve_captcha` can return text-only fallback guidance when called with `preferTextFallback: true`.
245
247
 
246
248
  ---
247
249
 
248
250
  ## 📈 Evasion Performance & Test Coverage
249
251
 
250
- Our test suites run headless/headed simulations against all major fingerprinting and bot checking platforms with a **100% Pass Rate**:
252
+ Our test suites cover several real-world bot and fingerprinting pages, plus a fast MCP smoke test. Results still depend on IP reputation, third-party site changes, and network conditions.
251
253
 
252
254
  | Target Test Platform | Detection Type | Status |
253
255
  |:---|:---|:---|
254
- | **DrissionPage Detector** | Bot / Automation framework detection | ✅ Pass |
255
256
  | **Sannysoft WebDriver** | WebDriver/navigator properties check | ✅ Pass |
256
257
  | **Cloudflare WAF** | Web Application Firewall challenge | ✅ Pass |
257
258
  | **Cloudflare Turnstile** | Advanced CAPTCHA widget solver | ✅ Pass |
258
259
  | **FingerprintJS Bot Detector** | Fingerprint-based bot detection | ✅ Pass |
259
- | **Datadome Bot Detector** | Dynamic behavioral detection | ✅ Pass |
260
- | **reCAPTCHA v3 Score** | Google Trust Score test (Passed with > 0.9) | ✅ Pass |
261
- | **CreepJS Fingerprinting** | Advanced trust rating and fingerprint check | ✅ Pass |
260
+ | **reCAPTCHA v3 Score** | Google Trust Score test (target: not obviously bot-like) | ✅ Environment-dependent |
262
261
  | **Pixelscan Fingerprint** | Masque & Canvas fingerprint masking check | ✅ Pass (No Masking Detected) |
263
262
 
264
263
  ### 🧪 Local Test Suite Execution Status
@@ -267,32 +266,20 @@ Both the CommonJS and ES Module test suites execute and pass successfully under
267
266
 
268
267
  | Test Suite / Environment | Test Case | Status |
269
268
  |:---|:---|:---|
270
- | **CommonJS (`cjs_test`)** | DrissionPage Detector | ✅ Passed |
271
269
  | **CommonJS (`cjs_test`)** | Sannysoft WebDriver Detector | ✅ Passed |
272
270
  | **CommonJS (`cjs_test`)** | Cloudflare WAF | ✅ Passed |
273
271
  | **CommonJS (`cjs_test`)** | Cloudflare Turnstile | ✅ Passed |
274
272
  | **CommonJS (`cjs_test`)** | Fingerprint JS Bot Detector | ✅ Passed |
275
273
  | **CommonJS (`cjs_test`)** | Recaptcha V3 Score | ✅ Passed |
276
274
  | **CommonJS (`cjs_test`)** | Pixelscan Fingerprint Check | ✅ Passed |
277
- | **CommonJS (`cjs_test`)** | Human-like Move & Click | ✅ Passed |
278
- | **CommonJS (`cjs_test`)** | Human-like Typing | ✅ Passed |
279
- | **CommonJS (`cjs_test`)** | Human-like Scrolling | ✅ Passed |
280
- | **CommonJS (`cjs_test`)** | Form Automation Demonstration | ✅ Passed |
281
- | **CommonJS (`cjs_test`)** | Content Strategy Demonstration | ✅ Passed |
282
- | **ES Module (`esm_test`)** | DrissionPage Detector | ✅ Passed |
283
275
  | **ES Module (`esm_test`)** | Sannysoft WebDriver Detector | ✅ Passed |
284
276
  | **ES Module (`esm_test`)** | Cloudflare WAF | ✅ Passed |
285
277
  | **ES Module (`esm_test`)** | Cloudflare Turnstile | ✅ Passed |
286
278
  | **ES Module (`esm_test`)** | Fingerprint JS Bot Detector | ✅ Passed |
287
279
  | **ES Module (`esm_test`)** | Recaptcha V3 Score | ✅ Passed |
288
280
  | **ES Module (`esm_test`)** | Pixelscan Fingerprint Check | ✅ Passed |
289
- | **ES Module (`esm_test`)** | Human-like Move & Click | ✅ Passed |
290
- | **ES Module (`esm_test`)** | Human-like Typing | ✅ Passed |
291
- | **ES Module (`esm_test`)** | Human-like Scrolling | ✅ Passed |
292
- | **ES Module (`esm_test`)** | Form Automation Demonstration | ✅ Passed |
293
- | **ES Module (`esm_test`)** | Content Strategy Demonstration | ✅ Passed |
294
-
295
- ---
281
+ | **MCP Smoke (`mcp_test`)** | Tool Registry Check | ✅ Passed |
282
+ | **MCP Smoke (`mcp_test`)** | JSON-RPC Initialize Handshake | ✅ Passed |
296
283
 
297
284
  ---
298
285
 
@@ -352,8 +339,8 @@ Run these scripts from the project root directory:
352
339
  | `npm run dev` | Alias to start the MCP server. |
353
340
  | `npm run mcp` | Start the MCP server. |
354
341
  | `npm run mcp:verbose` | Start the MCP server with verbose logging on `stderr`. |
355
- | `npm run list` | Clean list of all 23 tools with emojis and categories. |
356
- | `npm run build` | Validate workspace structure and confirm library status. |
342
+ | `npm run list` | List all registered MCP tools with categories. |
343
+ | `npm run build` | Compile TypeScript into the `dist/` folder. |
357
344
  | `npm test` | Execute the full test suite (CJS & ESM). |
358
345
  | `npm run cjs_test` | Run CommonJS test scripts. |
359
346
  | `npm run esm_test` | Run ECMAScript Module test scripts. |
@@ -361,6 +348,24 @@ Run these scripts from the project root directory:
361
348
 
362
349
  ---
363
350
 
351
+ ## 🏗️ Architecture Notes
352
+
353
+ ### Design
354
+
355
+ - **MCP-first**: every tool is defined in `src/shared/tools.ts` and dispatched through a single `executeTool()` router.
356
+ - **Handler modules**: `src/mcp/handlers/` contains focused helper files (`network-recorder.ts`, `network-extractors.ts`, `vision-captcha.ts`, `vision-see-page.ts`) with thin wrapper files (`network.ts`, `vision.ts`) for the tool-facing API.
357
+ - **Browser state**: a single global `state` object in `src/mcp/handlers/state.ts` holds the current browser/page instance and network recorder data. `createSessionContext()` provides a typed accessor pattern for handlers.
358
+ - **Persistent cache**: `src/shared/cache-manager.ts` and `src/shared/activity-logger.ts` survive server restarts via JSON files on disk.
359
+
360
+ ### Known Limitations
361
+
362
+ - **Single-session model**: the MCP server manages one browser instance at a time. Concurrent multi-session isolation is not supported.
363
+ - **reCAPTCHA / hCaptcha**: detected honestly but not solved automatically. Use a third-party service for these.
364
+ - **Vision tools require image-capable models**: `see_page` and `solve_captcha` return images. Non-vision models get a text JSON summary fallback, but image reading itself requires a multimodal client.
365
+ - **TypeScript strict mode**: the project compiles with `strict: true`, though some legacy bridge files still use `@ts-nocheck`.
366
+
367
+ ---
368
+
364
369
  ## 🛡️ License
365
370
 
366
- This project is licensed under the **ISC License**. Created and maintained with ❤️ by [codeiva4u](https://github.com/codeiva4u).
371
+ This project is licensed under the **MIT License**. Created and maintained by [codeiva4u](https://github.com/codeiva4u).
@@ -1,2 +1,15 @@
1
- export {};
1
+ declare const connect: ({ args, headless, proxy, contextOptions, turnstile, executablePath, }?: {
2
+ args?: never[] | undefined;
3
+ headless?: boolean | undefined;
4
+ proxy?: any;
5
+ contextOptions?: {} | undefined;
6
+ turnstile?: boolean | undefined;
7
+ executablePath?: undefined;
8
+ }) => Promise<{
9
+ browser: import("patchright-core").Browser;
10
+ page: import("patchright-core").Page;
11
+ blocker: any;
12
+ setupPage: (p: any) => Promise<void>;
13
+ }>;
14
+ export { connect };
2
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cjs/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/cjs/index.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,OAAO;;;;;;;;;;;;EAAgC,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const { pageController } = require("./module/pageController.js");
4
- const { createConnect } = require("../../src/shared/lib-core.js");
5
- const connect = createConnect(pageController);
3
+ exports.connect = void 0;
4
+ const pageController_1 = require("./module/pageController");
5
+ const lib_core_1 = require("../../src/shared/lib-core");
6
+ const connect = (0, lib_core_1.createConnect)(pageController_1.pageController);
7
+ exports.connect = connect;
6
8
  module.exports = { connect };
7
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/cjs/index.ts"],"names":[],"mappings":";;AAEA,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACjE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAElE,MAAM,OAAO,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC;AAE9C,MAAM,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/cjs/index.ts"],"names":[],"mappings":";;;AAAA,4DAAyD;AACzD,wDAA0D;AAE1D,MAAM,OAAO,GAAG,IAAA,wBAAa,EAAC,+BAAc,CAAC,CAAC;AAErC,0BAAO;AAChB,MAAM,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,CAAC"}
@@ -1,2 +1,8 @@
1
- export {};
1
+ declare function pageController({ browser, page, proxy, turnstile }: {
2
+ browser: any;
3
+ page: any;
4
+ proxy: any;
5
+ turnstile: boolean;
6
+ }): Promise<any>;
7
+ export { pageController };
2
8
  //# sourceMappingURL=pageController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pageController.d.ts","sourceRoot":"","sources":["../../../../lib/cjs/module/pageController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"pageController.d.ts","sourceRoot":"","sources":["../../../../lib/cjs/module/pageController.ts"],"names":[],"mappings":"AAEA,iBAAe,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;IAAE,OAAO,EAAE,GAAG,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,gBA+C7H;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const { checkTurnstile } = require('./turnstile.js');
3
+ exports.pageController = pageController;
4
+ const turnstile_1 = require("./turnstile");
4
5
  async function pageController({ browser, page, proxy, turnstile }) {
5
6
  if (page._pageControllerApplied)
6
7
  return page;
@@ -11,15 +12,13 @@ async function pageController({ browser, page, proxy, turnstile }) {
11
12
  });
12
13
  async function turnstileSolver() {
13
14
  while (solveStatus) {
14
- await checkTurnstile({ page }).catch(() => { });
15
+ await (0, turnstile_1.checkTurnstile)({ page }).catch(() => { });
15
16
  await new Promise(r => setTimeout(r, 1000));
16
17
  }
17
- return;
18
18
  }
19
19
  if (solveStatus) {
20
20
  turnstileSolver();
21
21
  }
22
- // === POPUP AD BLOCKING ===
23
22
  const context = page.context();
24
23
  if (!context._popupBlockerApplied) {
25
24
  context._popupBlockerApplied = true;
@@ -40,29 +39,11 @@ async function pageController({ browser, page, proxy, turnstile }) {
40
39
  }
41
40
  }
42
41
  }
43
- catch (e) {
42
+ catch (_e) {
44
43
  // Ignore errors
45
44
  }
46
45
  });
47
46
  }
48
- // NOTE: JS stealth overrides are commented out because Patchright natively handles automation hiding.
49
- // Manual JS overrides trigger Pixelscan fingerprint masking detectors.
50
- /*
51
- await page.addInitScript(() => {
52
- // ========== HARDWARE CONCURRENCY & DEVICE MEMORY FIX ==========
53
- Object.defineProperty(navigator, 'hardwareConcurrency', {
54
- get: () => 8,
55
- configurable: true
56
- });
57
-
58
- if ('deviceMemory' in navigator) {
59
- Object.defineProperty(navigator, 'deviceMemory', {
60
- get: () => 8,
61
- configurable: true
62
- });
63
- }
64
- });
65
- */
66
47
  return page;
67
48
  }
68
49
  module.exports = { pageController };
@@ -1 +1 @@
1
- {"version":3,"file":"pageController.js","sourceRoot":"","sources":["../../../../lib/cjs/module/pageController.ts"],"names":[],"mappings":";;AAEA,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAErD,KAAK,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE;IAC7D,IAAI,IAAI,CAAC,sBAAsB;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAEnC,IAAI,WAAW,GAAG,SAAS,CAAC;IAE5B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,WAAW,GAAG,KAAK,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,eAAe;QAC1B,OAAO,WAAW,EAAE,CAAC;YACjB,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO;IACX,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,CAAC;IACtB,CAAC;IAED,4BAA4B;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAChC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACpC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;gBACtC,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;oBAC1B,MAAM,SAAS,GAAG,GAAG,KAAK,aAAa;wBACnC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAClB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACnB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACrB,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;wBACxB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC1B,IAAI,SAAS,EAAE,CAAC;wBACZ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;wBACvC,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC7E,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,gBAAgB;YACpB,CAAC;QACL,CAAC,CAAC,CAAC;IACH,CAAC;IAED,sGAAsG;IACtG,uEAAuE;IACvE;;;;;;;;;;;;;;;MAeE;IAEF,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"pageController.js","sourceRoot":"","sources":["../../../../lib/cjs/module/pageController.ts"],"names":[],"mappings":";;AAmDS,wCAAc;AAnDvB,2CAA6C;AAE7C,KAAK,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAA+D;IAC1H,IAAI,IAAI,CAAC,sBAAsB;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAEnC,IAAI,WAAW,GAAG,SAAS,CAAC;IAE5B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,WAAW,GAAG,KAAK,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,eAAe;QAC1B,OAAO,WAAW,EAAE,CAAC;YACjB,MAAM,IAAA,0BAAc,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAChD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QACd,eAAe,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAChC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACpC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;YACtC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;gBACtC,IAAI,MAAM,EAAE,CAAC;oBACT,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;oBAC1B,MAAM,SAAS,GAAG,GAAG,KAAK,aAAa;wBACnC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;wBAClB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACnB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACrB,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;wBACxB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC1B,IAAI,SAAS,EAAE,CAAC;wBACZ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;wBACvC,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC7E,CAAC;gBACL,CAAC;YACL,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACV,gBAAgB;YACpB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAGD,MAAM,CAAC,OAAO,GAAG,EAAE,cAAc,EAAE,CAAC"}
@@ -1,2 +1,5 @@
1
- export {};
1
+ declare const checkTurnstile: ({ page }: {
2
+ page: any;
3
+ }) => Promise<boolean>;
4
+ export { checkTurnstile };
2
5
  //# sourceMappingURL=turnstile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"turnstile.d.ts","sourceRoot":"","sources":["../../../../lib/cjs/module/turnstile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"turnstile.d.ts","sourceRoot":"","sources":["../../../../lib/cjs/module/turnstile.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,cAAc,GAAU,UAAU;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,KAAG,OAAO,CAAC,OAAO,CAiEtE,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkTurnstile = void 0;
3
4
  const checkTurnstile = async ({ page }) => {
4
5
  try {
5
6
  const elements = await page.locator('[name="cf-turnstile-response"]').all();
@@ -12,29 +13,29 @@ const checkTurnstile = async ({ page }) => {
12
13
  if (!isChallenge)
13
14
  return false;
14
15
  const coordinates = await page.evaluate(() => {
15
- let coordinates = [];
16
+ let coords = [];
16
17
  document.querySelectorAll('div').forEach(item => {
17
18
  try {
18
19
  let itemCoordinates = item.getBoundingClientRect();
19
20
  let itemCss = window.getComputedStyle(item);
20
- if (itemCss.margin == "0px" && itemCss.padding == "0px" && itemCoordinates.width > 290 && itemCoordinates.width <= 310 && !item.querySelector('*')) {
21
- coordinates.push({ x: itemCoordinates.x, y: item.getBoundingClientRect().y, w: item.getBoundingClientRect().width, h: item.getBoundingClientRect().height });
21
+ if (itemCss.margin === "0px" && itemCss.padding === "0px" && itemCoordinates.width > 290 && itemCoordinates.width <= 310 && !item.querySelector('*')) {
22
+ coords.push({ x: itemCoordinates.x, y: item.getBoundingClientRect().y, w: item.getBoundingClientRect().width, h: item.getBoundingClientRect().height });
22
23
  }
23
24
  }
24
- catch (err) { }
25
+ catch (_err) { }
25
26
  });
26
- if (coordinates.length <= 0) {
27
+ if (coords.length <= 0) {
27
28
  document.querySelectorAll('div').forEach(item => {
28
29
  try {
29
30
  let itemCoordinates = item.getBoundingClientRect();
30
31
  if (itemCoordinates.width > 290 && itemCoordinates.width <= 310 && !item.querySelector('*')) {
31
- coordinates.push({ x: itemCoordinates.x, y: item.getBoundingClientRect().y, w: item.getBoundingClientRect().width, h: item.getBoundingClientRect().height });
32
+ coords.push({ x: itemCoordinates.x, y: item.getBoundingClientRect().y, w: item.getBoundingClientRect().width, h: item.getBoundingClientRect().height });
32
33
  }
33
34
  }
34
- catch (err) { }
35
+ catch (_err) { }
35
36
  });
36
37
  }
37
- return coordinates;
38
+ return coords;
38
39
  });
39
40
  for (const item of coordinates) {
40
41
  try {
@@ -42,14 +43,13 @@ const checkTurnstile = async ({ page }) => {
42
43
  let y = item.y + item.h / 2;
43
44
  await page.mouse.click(x, y);
44
45
  }
45
- catch (err) { }
46
+ catch (_err) { }
46
47
  }
47
48
  return true;
48
49
  }
49
50
  for (const element of elements) {
50
51
  try {
51
- // Get the parent element bounding box
52
- const box = await element.evaluate(el => {
52
+ const box = await element.evaluate((el) => {
53
53
  const parent = el.parentElement;
54
54
  if (!parent)
55
55
  return null;
@@ -62,13 +62,14 @@ const checkTurnstile = async ({ page }) => {
62
62
  await page.mouse.click(x, y);
63
63
  }
64
64
  }
65
- catch (err) { }
65
+ catch (_err) { }
66
66
  }
67
67
  return true;
68
68
  }
69
- catch (err) {
69
+ catch (_err) {
70
70
  return false;
71
71
  }
72
72
  };
73
+ exports.checkTurnstile = checkTurnstile;
73
74
  module.exports = { checkTurnstile };
74
75
  //# sourceMappingURL=turnstile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"turnstile.js","sourceRoot":"","sources":["../../../../lib/cjs/module/turnstile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turnstile.js","sourceRoot":"","sources":["../../../../lib/cjs/module/turnstile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ declare const connect: ({ args, headless, proxy, contextOptions, turnstile, executablePath, }? | undefined;
2
+ turnstile? | undefined;
3
+ executablePath?;
4
+ }) => Promise<{
5
+ browser: import("patchright-core").Browser;
6
+ page: import("patchright-core").Page;
7
+ blocker;
8
+ setupPage: (p) => Promise<void>;
9
+ }>;
10
+
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,4 @@
1
+ import { pageController } from "./module/pageController.mjs";
2
+ import { createConnect } from "../../dist/src/shared/lib-core.js";
3
+
4
+ export const connect = createConnect(pageController);
@@ -0,0 +1,3 @@
1
+ declare function pageController({ browser, page, proxy, turnstile });
2
+
3
+ //# sourceMappingURL=pageController.d.ts.map
@@ -0,0 +1,3 @@
1
+ declare const checkTurnstile: ({ page }) => Promise<boolean>;
2
+
3
+ //# sourceMappingURL=turnstile.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generate-esm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-esm.d.ts","sourceRoot":"","sources":["../../scripts/generate-esm.ts"],"names":[],"mappings":""}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const fs = __importStar(require("fs"));
37
+ const path = __importStar(require("path"));
38
+ const cjsDir = path.join(__dirname, '..', 'lib', 'cjs');
39
+ const esmDir = path.join(__dirname, '..', 'lib', 'esm');
40
+ function convertCjsToEsm(content, _filename) {
41
+ let out = content;
42
+ out = out.replace(/\/\/ @ts-nocheck\n/g, '');
43
+ out = out.replace(/export\s*\{\s*\};\n/g, '');
44
+ out = out.replace(/^export\s*\{[^}]+\};?\s*$/gm, '');
45
+ const moduleExportsMatch = out.match(/module\.exports\s*=\s*\{\s*([^}]+)\s*\};/);
46
+ const exportedNames = moduleExportsMatch
47
+ ? moduleExportsMatch[1].split(',').map((n) => n.trim()).filter(Boolean)
48
+ : [];
49
+ out = out.replace(/const\s+\{\s*([^}]+)\s*\}\s*=\s*require\(([^)]+)\);/g, (_, names, mod) => {
50
+ let modPath = mod.replace(/['"]/g, '');
51
+ if (modPath.endsWith('.js'))
52
+ modPath = modPath.replace(/\.js$/, '.mjs');
53
+ return `import { ${names.trim()} } from '${modPath}';`;
54
+ });
55
+ out = out.replace(/from\s+'(\.[^']+)'/g, (match, modPath) => {
56
+ if (modPath.endsWith('.mjs'))
57
+ return match;
58
+ return `from '${modPath}.mjs'`;
59
+ });
60
+ out = out.replace(/module\.exports\s*=\s*\{\s*[^}]+\s*\};/g, '');
61
+ for (const name of exportedNames) {
62
+ const fnRegex = new RegExp(`^(\\s*)async function ${name}\\(`, 'gm');
63
+ out = out.replace(fnRegex, `$1export async function ${name}(`);
64
+ const constRegex = new RegExp(`^(\\s*)const ${name}\\s*=\\s*async`, 'gm');
65
+ out = out.replace(constRegex, `$1export const ${name} = async`);
66
+ }
67
+ out = out.replace(/:\s*\{[^}]*\}/g, '');
68
+ out = out.replace(/:\s*Promise<[^>]*>/g, '');
69
+ out = out.replace(/:\s*Array<[^>]*>/g, '');
70
+ out = out.replace(/:\s*(string|number|boolean|any|void|null|undefined)\b/g, '');
71
+ out = out.replace(/\)\s*:\s*\w+/g, ')');
72
+ out = out.replace(/as\s+(any|string|number|boolean)\b/g, '');
73
+ return out;
74
+ }
75
+ function processDir(cjsSubDir, esmSubDir) {
76
+ if (!fs.existsSync(esmSubDir))
77
+ fs.mkdirSync(esmSubDir, { recursive: true });
78
+ for (const entry of fs.readdirSync(cjsSubDir, { withFileTypes: true })) {
79
+ const cjsPath = path.join(cjsSubDir, entry.name);
80
+ const esmName = entry.name.replace(/\.ts$/, '.mjs');
81
+ const esmPath = path.join(esmSubDir, esmName);
82
+ if (entry.isDirectory()) {
83
+ processDir(cjsPath, esmPath);
84
+ }
85
+ else if (entry.name.endsWith('.ts')) {
86
+ const content = fs.readFileSync(cjsPath, 'utf-8');
87
+ const esm = convertCjsToEsm(content, entry.name);
88
+ fs.writeFileSync(esmPath, esm);
89
+ }
90
+ }
91
+ }
92
+ processDir(cjsDir, esmDir);
93
+ const indexEsm = `import { pageController } from "./module/pageController.mjs";
94
+ import { createConnect } from "../../dist/src/shared/lib-core.js";
95
+
96
+ export const connect = createConnect(pageController);
97
+ `;
98
+ fs.writeFileSync(path.join(esmDir, 'index.mjs'), indexEsm);
99
+ console.log('✅ ESM files auto-generated from CJS source');
100
+ //# sourceMappingURL=generate-esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-esm.js","sourceRoot":"","sources":["../../scripts/generate-esm.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG;AA0GH,OAAO,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AA0GH,OAAO,EAAE,CAAA"}
package/dist/src/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- // @ts-nocheck
4
3
  /**
5
4
  * Real Browser MCP Server
6
5
  *