@natchs/browser-mcp 2.3.1 → 2.5.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 (172) hide show
  1. package/README.md +367 -190
  2. package/dist/core/audit-logger.d.ts +3 -0
  3. package/dist/core/audit-logger.d.ts.map +1 -0
  4. package/dist/core/audit-logger.js +5 -0
  5. package/dist/core/audit-logger.js.map +1 -0
  6. package/dist/core/auth.d.ts.map +1 -1
  7. package/dist/core/auth.js +29 -1
  8. package/dist/core/auth.js.map +1 -1
  9. package/dist/core/body-fetch.d.ts.map +1 -1
  10. package/dist/core/body-fetch.js +26 -2
  11. package/dist/core/body-fetch.js.map +1 -1
  12. package/dist/core/browser-lifecycle.d.ts +29 -0
  13. package/dist/core/browser-lifecycle.d.ts.map +1 -0
  14. package/dist/core/browser-lifecycle.js +107 -0
  15. package/dist/core/browser-lifecycle.js.map +1 -0
  16. package/dist/core/browser-provider.d.ts +7 -3
  17. package/dist/core/browser-provider.d.ts.map +1 -1
  18. package/dist/core/browser-provider.js +65 -10
  19. package/dist/core/browser-provider.js.map +1 -1
  20. package/dist/core/config.d.ts +30 -6
  21. package/dist/core/config.d.ts.map +1 -1
  22. package/dist/core/config.js +9 -0
  23. package/dist/core/config.js.map +1 -1
  24. package/dist/core/errors.d.ts +0 -12
  25. package/dist/core/errors.d.ts.map +1 -1
  26. package/dist/core/errors.js +4 -13
  27. package/dist/core/errors.js.map +1 -1
  28. package/dist/core/index.d.ts +4 -0
  29. package/dist/core/index.d.ts.map +1 -0
  30. package/dist/core/index.js +3 -0
  31. package/dist/core/index.js.map +1 -0
  32. package/dist/core/network-capture-utils.d.ts +49 -0
  33. package/dist/core/network-capture-utils.d.ts.map +1 -0
  34. package/dist/core/network-capture-utils.js +56 -0
  35. package/dist/core/network-capture-utils.js.map +1 -0
  36. package/dist/core/network-capture.d.ts +3 -39
  37. package/dist/core/network-capture.d.ts.map +1 -1
  38. package/dist/core/network-capture.js +20 -53
  39. package/dist/core/network-capture.js.map +1 -1
  40. package/dist/core/network-export.d.ts +3 -3
  41. package/dist/core/network-export.d.ts.map +1 -1
  42. package/dist/core/network-export.js +20 -21
  43. package/dist/core/network-export.js.map +1 -1
  44. package/dist/core/output.d.ts +0 -28
  45. package/dist/core/output.d.ts.map +1 -1
  46. package/dist/core/registry.d.ts +2 -0
  47. package/dist/core/registry.d.ts.map +1 -1
  48. package/dist/core/registry.js +14 -3
  49. package/dist/core/registry.js.map +1 -1
  50. package/dist/core/sandbox.d.ts +4 -5
  51. package/dist/core/sandbox.d.ts.map +1 -1
  52. package/dist/core/sandbox.js +31 -23
  53. package/dist/core/sandbox.js.map +1 -1
  54. package/dist/core/session.d.ts +4 -3
  55. package/dist/core/session.d.ts.map +1 -1
  56. package/dist/core/session.js +43 -22
  57. package/dist/core/session.js.map +1 -1
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +4 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/prompts/index.d.ts.map +1 -1
  62. package/dist/prompts/index.js +2 -1
  63. package/dist/prompts/index.js.map +1 -1
  64. package/dist/tools/admin/cache.js +3 -3
  65. package/dist/tools/admin/cache.js.map +1 -1
  66. package/dist/tools/admin/server-status.js +2 -2
  67. package/dist/tools/admin/server-status.js.map +1 -1
  68. package/dist/tools/browser/cookies.js +4 -4
  69. package/dist/tools/browser/cookies.js.map +1 -1
  70. package/dist/tools/browser/download.js +2 -2
  71. package/dist/tools/browser/download.js.map +1 -1
  72. package/dist/tools/browser/evaluate.d.ts.map +1 -1
  73. package/dist/tools/browser/evaluate.js +23 -6
  74. package/dist/tools/browser/evaluate.js.map +1 -1
  75. package/dist/tools/browser/index.d.ts.map +1 -1
  76. package/dist/tools/browser/index.js +2 -0
  77. package/dist/tools/browser/index.js.map +1 -1
  78. package/dist/tools/browser/page-info.js +2 -2
  79. package/dist/tools/browser/page-info.js.map +1 -1
  80. package/dist/tools/browser/pdf.js +4 -4
  81. package/dist/tools/browser/pdf.js.map +1 -1
  82. package/dist/tools/browser/screenshot.js +3 -3
  83. package/dist/tools/browser/screenshot.js.map +1 -1
  84. package/dist/tools/browser/scroll.d.ts +17 -0
  85. package/dist/tools/browser/scroll.d.ts.map +1 -0
  86. package/dist/tools/browser/scroll.js +30 -0
  87. package/dist/tools/browser/scroll.js.map +1 -0
  88. package/dist/tools/extraction/extract-css.js +7 -7
  89. package/dist/tools/extraction/extract-css.js.map +1 -1
  90. package/dist/tools/extraction/extract.js +4 -4
  91. package/dist/tools/extraction/extract.js.map +1 -1
  92. package/dist/tools/interaction/click.d.ts +1 -2
  93. package/dist/tools/interaction/click.d.ts.map +1 -1
  94. package/dist/tools/interaction/click.js +9 -15
  95. package/dist/tools/interaction/click.js.map +1 -1
  96. package/dist/tools/interaction/drag.js +4 -4
  97. package/dist/tools/interaction/drag.js.map +1 -1
  98. package/dist/tools/interaction/file-upload.d.ts.map +1 -1
  99. package/dist/tools/interaction/file-upload.js +11 -5
  100. package/dist/tools/interaction/file-upload.js.map +1 -1
  101. package/dist/tools/interaction/fill.d.ts.map +1 -1
  102. package/dist/tools/interaction/fill.js +5 -7
  103. package/dist/tools/interaction/fill.js.map +1 -1
  104. package/dist/tools/interaction/hover.js +3 -3
  105. package/dist/tools/interaction/hover.js.map +1 -1
  106. package/dist/tools/interaction/press-key.js +3 -3
  107. package/dist/tools/interaction/press-key.js.map +1 -1
  108. package/dist/tools/interaction/select.js +4 -4
  109. package/dist/tools/interaction/select.js.map +1 -1
  110. package/dist/tools/interaction/type.d.ts +1 -1
  111. package/dist/tools/interaction/type.js +4 -4
  112. package/dist/tools/interaction/type.js.map +1 -1
  113. package/dist/tools/navigation/back.js +2 -2
  114. package/dist/tools/navigation/back.js.map +1 -1
  115. package/dist/tools/navigation/forward.js +2 -2
  116. package/dist/tools/navigation/forward.js.map +1 -1
  117. package/dist/tools/navigation/navigate.js +2 -2
  118. package/dist/tools/navigation/navigate.js.map +1 -1
  119. package/dist/tools/navigation/refresh.js +2 -2
  120. package/dist/tools/navigation/refresh.js.map +1 -1
  121. package/dist/tools/navigation/wait-for.js +2 -2
  122. package/dist/tools/navigation/wait-for.js.map +1 -1
  123. package/dist/tools/network/console.js +2 -2
  124. package/dist/tools/network/console.js.map +1 -1
  125. package/dist/tools/network/dialog.js +2 -2
  126. package/dist/tools/network/dialog.js.map +1 -1
  127. package/dist/tools/network/network-clear.js +2 -2
  128. package/dist/tools/network/network-clear.js.map +1 -1
  129. package/dist/tools/network/network-entries.d.ts +3 -0
  130. package/dist/tools/network/network-entries.d.ts.map +1 -1
  131. package/dist/tools/network/network-entries.js +11 -3
  132. package/dist/tools/network/network-entries.js.map +1 -1
  133. package/dist/tools/network/network-export.d.ts +2 -2
  134. package/dist/tools/network/network-export.js +2 -2
  135. package/dist/tools/network/network-export.js.map +1 -1
  136. package/dist/tools/network/network-requests.js +2 -2
  137. package/dist/tools/network/network-requests.js.map +1 -1
  138. package/dist/tools/network/network-response.d.ts +3 -0
  139. package/dist/tools/network/network-response.d.ts.map +1 -1
  140. package/dist/tools/network/network-response.js +9 -4
  141. package/dist/tools/network/network-response.js.map +1 -1
  142. package/dist/tools/network/network-save.js +2 -2
  143. package/dist/tools/network/network-save.js.map +1 -1
  144. package/dist/tools/network/wait-nav.js +2 -2
  145. package/dist/tools/network/wait-nav.js.map +1 -1
  146. package/dist/tools/network/websocket-frames.js +2 -2
  147. package/dist/tools/network/websocket-frames.js.map +1 -1
  148. package/dist/tools/re/api-discover.d.ts +3 -3
  149. package/dist/tools/re/api-discover.d.ts.map +1 -1
  150. package/dist/tools/re/api-discover.js +32 -11
  151. package/dist/tools/re/api-discover.js.map +1 -1
  152. package/dist/tools/re/auth-analyze.d.ts +3 -3
  153. package/dist/tools/re/auth-analyze.d.ts.map +1 -1
  154. package/dist/tools/re/auth-analyze.js +43 -6
  155. package/dist/tools/re/auth-analyze.js.map +1 -1
  156. package/dist/tools/re/js-beautify.js +3 -3
  157. package/dist/tools/re/js-beautify.js.map +1 -1
  158. package/dist/tools/re/js-deobfuscate.js +3 -3
  159. package/dist/tools/re/js-deobfuscate.js.map +1 -1
  160. package/dist/tools/session/close.js +2 -2
  161. package/dist/tools/session/close.js.map +1 -1
  162. package/dist/tools/session/list.js +2 -2
  163. package/dist/tools/session/list.js.map +1 -1
  164. package/dist/tools/session/open.js +2 -2
  165. package/dist/tools/session/open.js.map +1 -1
  166. package/dist/tools/stealth/fingerprint.d.ts +13 -0
  167. package/dist/tools/stealth/fingerprint.d.ts.map +1 -1
  168. package/dist/tools/stealth/fingerprint.js +16 -3
  169. package/dist/tools/stealth/fingerprint.js.map +1 -1
  170. package/dist/tools/stealth/human-behavior.js +2 -2
  171. package/dist/tools/stealth/human-behavior.js.map +1 -1
  172. package/package.json +1 -2
@@ -1,6 +1,8 @@
1
1
  import { ErrorCode } from './errors.js';
2
- import { validateUrl } from './sandbox.js';
2
+ import { validateUrl, isInternalIP } from './sandbox.js';
3
3
  import { logger } from './logger.js';
4
+ import { auditLog } from './audit-logger.js';
5
+ import * as dns from 'node:dns';
4
6
  export class BodyFetchService {
5
7
  config;
6
8
  constructor(config) {
@@ -38,12 +40,34 @@ export class BodyFetchService {
38
40
  }
39
41
  const urlCheck = validateUrl(entry.url);
40
42
  if (!urlCheck.valid) {
43
+ auditLog('DNS_REBIND', { url: entry.url, reason: urlCheck.error });
41
44
  return { error: 'SSRF blocked: ' + urlCheck.error, code: ErrorCode.NETWORK_RESPONSE_FAILED };
42
45
  }
46
+ const parsedUrl = new URL(entry.url);
47
+ let fetchUrl = entry.url;
48
+ try {
49
+ const addresses = await dns.promises.lookup(parsedUrl.hostname, { all: true });
50
+ for (const addr of addresses) {
51
+ if (isInternalIP(addr.address)) {
52
+ auditLog('INTERNAL_IP', { url: entry.url, ip: addr.address });
53
+ return { error: `DNS rebind blocked: ${entry.url} resolves to internal IP ${addr.address}`, code: ErrorCode.INTERNAL_IP };
54
+ }
55
+ }
56
+ // TOCTOU DNS rebind fix: use resolved IP directly for HTTP
57
+ if (parsedUrl.protocol === 'http:' && addresses.length > 0) {
58
+ fetchUrl = `http://${addresses[0].address}${parsedUrl.pathname}${parsedUrl.search}`;
59
+ headers['Host'] = parsedUrl.hostname;
60
+ }
61
+ }
62
+ catch (err) {
63
+ const errMsg = err instanceof Error ? err.message : String(err);
64
+ auditLog('DNS_REBIND', { url: entry.url, reason: `DNS lookup failed for ${parsedUrl.hostname}: ${errMsg}` });
65
+ throw new Error(`DNS lookup failed for ${parsedUrl.hostname}: ${errMsg}`);
66
+ }
43
67
  const controller = new AbortController();
44
68
  const timeout = setTimeout(() => controller.abort(), 30000);
45
69
  try {
46
- const response = await fetch(entry.url, {
70
+ const response = await fetch(fetchUrl, {
47
71
  method: entry.method,
48
72
  headers: Object.keys(headers).length > 0 ? headers : undefined,
49
73
  signal: controller.signal,
@@ -1 +1 @@
1
- {"version":3,"file":"body-fetch.js","sourceRoot":"","sources":["../../src/core/body-fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"body-fetch.js","sourceRoot":"","sources":["../../src/core/body-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Browser, BrowserContext, Page } from 'playwright';
2
+ import { BrowserProvider } from './browser-provider.js';
3
+ export declare class BrowserLifecycle {
4
+ private provider;
5
+ private headless;
6
+ private browser;
7
+ private context;
8
+ private pages;
9
+ private nextPageId;
10
+ private _maxPages;
11
+ constructor(provider: BrowserProvider | undefined, headless: boolean, maxPages?: number);
12
+ set maxPages(value: number);
13
+ get maxPages(): number;
14
+ get hasProvider(): boolean;
15
+ ensureBrowser(): Promise<Browser>;
16
+ createContext(): Promise<BrowserContext>;
17
+ getOrCreateContext(): Promise<BrowserContext>;
18
+ createPage(): Promise<{
19
+ page: Page;
20
+ id: string;
21
+ }>;
22
+ getPage(id: string): Page | undefined;
23
+ closePage(id: string): Promise<void>;
24
+ shutdown(): Promise<void>;
25
+ isRunning(): boolean;
26
+ getCurrentContext(): BrowserContext | null;
27
+ getCurrentBrowser(): Browser | null;
28
+ }
29
+ //# sourceMappingURL=browser-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-lifecycle.d.ts","sourceRoot":"","sources":["../../src/core/browser-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,UAAU,CAAK;IAEvB,OAAO,CAAC,SAAS,CAAM;gBAEX,QAAQ,EAAE,eAAe,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,SAAK;IAMnF,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEK,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAWjC,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAQxC,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IAM7C,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAWvD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAI/B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQpC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB/B,SAAS,IAAI,OAAO;IAIpB,iBAAiB,IAAI,cAAc,GAAG,IAAI;IAI1C,iBAAiB,IAAI,OAAO,GAAG,IAAI;CAGpC"}
@@ -0,0 +1,107 @@
1
+ export class BrowserLifecycle {
2
+ provider;
3
+ headless;
4
+ browser = null;
5
+ context = null;
6
+ pages = new Map();
7
+ nextPageId = 1;
8
+ _maxPages = 20;
9
+ constructor(provider, headless, maxPages = 20) {
10
+ this.provider = provider;
11
+ this.headless = headless;
12
+ this._maxPages = maxPages;
13
+ }
14
+ set maxPages(value) {
15
+ this._maxPages = value;
16
+ }
17
+ get maxPages() {
18
+ return this._maxPages;
19
+ }
20
+ get hasProvider() {
21
+ return this.provider !== undefined;
22
+ }
23
+ async ensureBrowser() {
24
+ if (this.provider) {
25
+ throw new Error(`Browser is managed by BrowserProvider`);
26
+ }
27
+ if (!this.browser) {
28
+ const { chromium } = await import('playwright');
29
+ this.browser = await chromium.launch({ headless: this.headless });
30
+ }
31
+ return this.browser;
32
+ }
33
+ async createContext() {
34
+ if (this.provider) {
35
+ return this.provider.getOrCreateContext();
36
+ }
37
+ const browser = await this.ensureBrowser();
38
+ return browser.newContext();
39
+ }
40
+ async getOrCreateContext() {
41
+ if (this.context)
42
+ return this.context;
43
+ this.context = await this.createContext();
44
+ return this.context;
45
+ }
46
+ async createPage() {
47
+ if (this.pages.size >= this._maxPages) {
48
+ throw new Error('Maximum page limit reached');
49
+ }
50
+ const context = await this.getOrCreateContext();
51
+ const page = await context.newPage();
52
+ const id = `page_${this.nextPageId++}`;
53
+ this.pages.set(id, page);
54
+ return { page, id };
55
+ }
56
+ getPage(id) {
57
+ return this.pages.get(id);
58
+ }
59
+ async closePage(id) {
60
+ const page = this.pages.get(id);
61
+ if (page && !page.isClosed()) {
62
+ await page.close();
63
+ }
64
+ this.pages.delete(id);
65
+ }
66
+ async shutdown() {
67
+ for (const [, page] of this.pages) {
68
+ if (!page.isClosed()) {
69
+ try {
70
+ await page.close();
71
+ }
72
+ catch { /* ignore */ }
73
+ }
74
+ }
75
+ this.pages.clear();
76
+ if (this.context) {
77
+ try {
78
+ await this.context.close();
79
+ }
80
+ catch { /* ignore */ }
81
+ this.context = null;
82
+ }
83
+ if (this.browser) {
84
+ try {
85
+ await this.browser.close();
86
+ }
87
+ catch { /* ignore */ }
88
+ this.browser = null;
89
+ }
90
+ if (this.provider) {
91
+ try {
92
+ await this.provider.cleanup();
93
+ }
94
+ catch { /* ignore */ }
95
+ }
96
+ }
97
+ isRunning() {
98
+ return this.browser !== null;
99
+ }
100
+ getCurrentContext() {
101
+ return this.context;
102
+ }
103
+ getCurrentBrowser() {
104
+ return this.browser;
105
+ }
106
+ }
107
+ //# sourceMappingURL=browser-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-lifecycle.js","sourceRoot":"","sources":["../../src/core/browser-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,9 @@ export interface BrowserProvider {
8
8
  export declare class FreshBrowserProvider implements BrowserProvider {
9
9
  private browser;
10
10
  private headless;
11
+ private stealthProfile;
11
12
  private _pendingLaunch;
12
- constructor(headless: boolean);
13
+ constructor(headless: boolean, stealthEnabled?: boolean);
13
14
  getOrCreateContext(): Promise<BrowserContext>;
14
15
  cleanup(): Promise<void>;
15
16
  getMode(): BrowserMode;
@@ -19,8 +20,9 @@ export declare class PersistentBrowserProvider implements BrowserProvider {
19
20
  private userDataDir;
20
21
  private headless;
21
22
  private browserChannel;
23
+ private stealthProfile;
22
24
  private _pendingLaunch;
23
- constructor(userDataDir: string, headless: boolean, browserChannel?: string);
25
+ constructor(userDataDir: string, headless: boolean, browserChannel?: string, stealthEnabled?: boolean);
24
26
  getOrCreateContext(): Promise<BrowserContext>;
25
27
  cleanup(): Promise<void>;
26
28
  getMode(): BrowserMode;
@@ -29,8 +31,9 @@ export declare class ConnectBrowserProvider implements BrowserProvider {
29
31
  private browser;
30
32
  private context;
31
33
  private endpointUrl;
34
+ private stealthProfile;
32
35
  private _pendingLaunch;
33
- constructor(endpointUrl: string);
36
+ constructor(endpointUrl: string, stealthEnabled?: boolean);
34
37
  getOrCreateContext(): Promise<BrowserContext>;
35
38
  cleanup(): Promise<void>;
36
39
  getMode(): BrowserMode;
@@ -42,5 +45,6 @@ export declare function createBrowserProvider(config: {
42
45
  browserChannel?: string;
43
46
  debugPort?: number;
44
47
  autoDetectProfile?: boolean;
48
+ stealthEnabled?: boolean;
45
49
  }): BrowserProvider;
46
50
  //# sourceMappingURL=browser-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-provider.d.ts","sourceRoot":"","sources":["../../src/core/browser-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAKzE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,IAAI,WAAW,CAAC;CACxB;AAED,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAwC;gBAElD,QAAQ,EAAE,OAAO;IAIvB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IAsB7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,IAAI,WAAW;CAGvB;AAED,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,cAAc,CAAwC;gBAElD,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM;IAMrE,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IAoB7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,IAAI,WAAW;CAGvB;AAED,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAwC;gBAElD,WAAW,EAAE,MAAM;IAIzB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IA6B7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,OAAO,IAAI,WAAW;CAGvB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,eAAe,CA+BlB"}
1
+ {"version":3,"file":"browser-provider.d.ts","sourceRoot":"","sources":["../../src/core/browser-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAOzE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,IAAI,WAAW,CAAC;CACxB;AAED,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,cAAc,CAAwC;gBAElD,QAAQ,EAAE,OAAO,EAAE,cAAc,GAAE,OAAe;IAOxD,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IA4C7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,IAAI,WAAW;CAGvB;AAED,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,cAAc,CAAwC;gBAElD,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe;IAStG,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IA6B7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,OAAO,IAAI,WAAW;CAGvB;AAED,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,cAAc,CAAwC;gBAElD,WAAW,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe;IAO1D,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IAuC7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,OAAO,IAAI,WAAW;CAGvB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,eAAe,CAgClB"}
@@ -2,12 +2,17 @@ import { chromium } from 'playwright';
2
2
  import { logger } from './logger.js';
3
3
  import { normalizeError } from './errors.js';
4
4
  import { detectChromeProfile } from './profile-detector.js';
5
+ import { generateProfile, applyFingerprint } from '../tools/stealth/fingerprint.js';
5
6
  export class FreshBrowserProvider {
6
7
  browser = null;
7
8
  headless;
9
+ stealthProfile = null;
8
10
  _pendingLaunch = null;
9
- constructor(headless) {
11
+ constructor(headless, stealthEnabled = false) {
10
12
  this.headless = headless;
13
+ if (stealthEnabled) {
14
+ this.stealthProfile = generateProfile();
15
+ }
11
16
  }
12
17
  async getOrCreateContext() {
13
18
  if (this._pendingLaunch)
@@ -16,17 +21,39 @@ export class FreshBrowserProvider {
16
21
  this.browser = null;
17
22
  }
18
23
  if (!this.browser) {
19
- this._pendingLaunch = chromium.launch({ headless: this.headless }).then(b => {
24
+ this._pendingLaunch = chromium.launch({ headless: this.headless }).then(async (b) => {
20
25
  this.browser = b;
21
26
  this._pendingLaunch = null;
22
- return b.newContext();
27
+ const ctx = this.stealthProfile
28
+ ? await b.newContext({
29
+ userAgent: this.stealthProfile.userAgent,
30
+ locale: this.stealthProfile.locale,
31
+ timezoneId: this.stealthProfile.timezone,
32
+ viewport: this.stealthProfile.viewport,
33
+ })
34
+ : await b.newContext();
35
+ if (this.stealthProfile) {
36
+ await applyFingerprint(ctx, this.stealthProfile).catch(() => { });
37
+ }
38
+ return ctx;
23
39
  }).catch(err => {
24
40
  this._pendingLaunch = null;
25
41
  throw new Error(`FreshBrowserProvider: browser launch failed. Error: ${normalizeError(err)}`);
26
42
  });
27
43
  return this._pendingLaunch;
28
44
  }
29
- return this.browser.newContext();
45
+ const ctx = this.stealthProfile
46
+ ? await this.browser.newContext({
47
+ userAgent: this.stealthProfile.userAgent,
48
+ locale: this.stealthProfile.locale,
49
+ timezoneId: this.stealthProfile.timezone,
50
+ viewport: this.stealthProfile.viewport,
51
+ })
52
+ : await this.browser.newContext();
53
+ if (this.stealthProfile) {
54
+ await applyFingerprint(ctx, this.stealthProfile).catch(() => { });
55
+ }
56
+ return ctx;
30
57
  }
31
58
  async cleanup() {
32
59
  if (this.browser) {
@@ -48,11 +75,15 @@ export class PersistentBrowserProvider {
48
75
  userDataDir;
49
76
  headless;
50
77
  browserChannel;
78
+ stealthProfile = null;
51
79
  _pendingLaunch = null;
52
- constructor(userDataDir, headless, browserChannel) {
80
+ constructor(userDataDir, headless, browserChannel, stealthEnabled = false) {
53
81
  this.userDataDir = userDataDir;
54
82
  this.headless = headless;
55
83
  this.browserChannel = browserChannel;
84
+ if (stealthEnabled) {
85
+ this.stealthProfile = generateProfile();
86
+ }
56
87
  }
57
88
  async getOrCreateContext() {
58
89
  if (this._pendingLaunch)
@@ -62,9 +93,18 @@ export class PersistentBrowserProvider {
62
93
  this._pendingLaunch = chromium.launchPersistentContext(this.userDataDir, {
63
94
  headless: this.headless,
64
95
  channel: this.browserChannel,
96
+ ...(this.stealthProfile ? {
97
+ userAgent: this.stealthProfile.userAgent,
98
+ locale: this.stealthProfile.locale,
99
+ timezoneId: this.stealthProfile.timezone,
100
+ viewport: this.stealthProfile.viewport,
101
+ } : {}),
65
102
  }).then(ctx => {
66
103
  this.context = ctx;
67
104
  this._pendingLaunch = null;
105
+ if (this.stealthProfile) {
106
+ applyFingerprint(ctx, this.stealthProfile).catch(() => { });
107
+ }
68
108
  return ctx;
69
109
  }).catch(err => {
70
110
  this._pendingLaunch = null;
@@ -91,9 +131,13 @@ export class ConnectBrowserProvider {
91
131
  browser = null;
92
132
  context = null;
93
133
  endpointUrl;
134
+ stealthProfile = null;
94
135
  _pendingLaunch = null;
95
- constructor(endpointUrl) {
136
+ constructor(endpointUrl, stealthEnabled = false) {
96
137
  this.endpointUrl = endpointUrl;
138
+ if (stealthEnabled) {
139
+ this.stealthProfile = generateProfile();
140
+ }
97
141
  }
98
142
  async getOrCreateContext() {
99
143
  if (this._pendingLaunch)
@@ -109,9 +153,19 @@ export class ConnectBrowserProvider {
109
153
  this.context = contexts[0];
110
154
  }
111
155
  else {
112
- this.context = await this.browser.newContext();
156
+ this.context = this.stealthProfile
157
+ ? await this.browser.newContext({
158
+ userAgent: this.stealthProfile.userAgent,
159
+ locale: this.stealthProfile.locale,
160
+ timezoneId: this.stealthProfile.timezone,
161
+ viewport: this.stealthProfile.viewport,
162
+ })
163
+ : await this.browser.newContext();
113
164
  }
114
165
  this._pendingLaunch = null;
166
+ if (this.stealthProfile && this.context) {
167
+ await applyFingerprint(this.context, this.stealthProfile).catch(() => { });
168
+ }
115
169
  return this.context;
116
170
  })().catch(err => {
117
171
  this._pendingLaunch = null;
@@ -130,9 +184,10 @@ export class ConnectBrowserProvider {
130
184
  }
131
185
  }
132
186
  export function createBrowserProvider(config) {
187
+ const stealthEnabled = config.stealthEnabled ?? false;
133
188
  switch (config.mode) {
134
189
  case 'fresh':
135
- return new FreshBrowserProvider(config.headless ?? true);
190
+ return new FreshBrowserProvider(config.headless ?? true, stealthEnabled);
136
191
  case 'persistent':
137
192
  let resolvedUserDataDir = config.userDataDir;
138
193
  if (!resolvedUserDataDir && config.autoDetectProfile !== false) {
@@ -150,12 +205,12 @@ export function createBrowserProvider(config) {
150
205
  if (!resolvedUserDataDir) {
151
206
  throw new Error('createBrowserProvider: userDataDir is required for persistent mode');
152
207
  }
153
- return new PersistentBrowserProvider(resolvedUserDataDir, config.headless ?? true, config.browserChannel);
208
+ return new PersistentBrowserProvider(resolvedUserDataDir, config.headless ?? true, config.browserChannel, stealthEnabled);
154
209
  case 'connect':
155
210
  if (config.debugPort === undefined) {
156
211
  throw new Error('createBrowserProvider: debugPort is required for connect mode');
157
212
  }
158
- return new ConnectBrowserProvider(`http://127.0.0.1:${config.debugPort}`);
213
+ return new ConnectBrowserProvider(`http://127.0.0.1:${config.debugPort}`, stealthEnabled);
159
214
  default:
160
215
  throw new Error(`createBrowserProvider: unknown browser mode '${config.mode}'`);
161
216
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["../../src/core/browser-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-provider.js","sourceRoot":"","sources":["../../src/core/browser-provider.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,7 @@ declare const BrowserConfigSchema: z.ZodObject<{
30
30
  browserChannel: z.ZodDefault<z.ZodString>;
31
31
  debugPort: z.ZodDefault<z.ZodNumber>;
32
32
  autoDetectProfile: z.ZodDefault<z.ZodBoolean>;
33
+ stealthEnabled: z.ZodDefault<z.ZodBoolean>;
33
34
  }, "strip", z.ZodTypeAny, {
34
35
  headless: boolean;
35
36
  viewport: {
@@ -41,11 +42,11 @@ declare const BrowserConfigSchema: z.ZodObject<{
41
42
  browserChannel: string;
42
43
  debugPort: number;
43
44
  autoDetectProfile: boolean;
44
- userDataDir?: string | undefined;
45
+ stealthEnabled: boolean;
45
46
  userAgent?: string | undefined;
46
47
  locale?: string | undefined;
47
- }, {
48
48
  userDataDir?: string | undefined;
49
+ }, {
49
50
  headless?: boolean | undefined;
50
51
  viewport?: {
51
52
  width?: number | undefined;
@@ -55,9 +56,11 @@ declare const BrowserConfigSchema: z.ZodObject<{
55
56
  locale?: string | undefined;
56
57
  timeout?: number | undefined;
57
58
  mode?: "fresh" | "persistent" | "connect" | undefined;
59
+ userDataDir?: string | undefined;
58
60
  browserChannel?: string | undefined;
59
61
  debugPort?: number | undefined;
60
62
  autoDetectProfile?: boolean | undefined;
63
+ stealthEnabled?: boolean | undefined;
61
64
  }>;
62
65
  export type BrowserConfig = z.infer<typeof BrowserConfigSchema>;
63
66
  declare const RateLimitConfigSchema: z.ZodObject<{
@@ -103,6 +106,8 @@ declare const NetworkConfigSchema: z.ZodObject<{
103
106
  downloadDir: z.ZodDefault<z.ZodString>;
104
107
  maxDownloadSize: z.ZodDefault<z.ZodNumber>;
105
108
  downloadEnabled: z.ZodDefault<z.ZodBoolean>;
109
+ networkSaveEnabled: z.ZodDefault<z.ZodBoolean>;
110
+ redactAuthHeaders: z.ZodDefault<z.ZodBoolean>;
106
111
  }, "strip", z.ZodTypeAny, {
107
112
  maxEntries: number;
108
113
  maxResponseBodySize: number;
@@ -118,6 +123,8 @@ declare const NetworkConfigSchema: z.ZodObject<{
118
123
  downloadDir: string;
119
124
  maxDownloadSize: number;
120
125
  downloadEnabled: boolean;
126
+ networkSaveEnabled: boolean;
127
+ redactAuthHeaders: boolean;
121
128
  }, {
122
129
  maxEntries?: number | undefined;
123
130
  maxResponseBodySize?: number | undefined;
@@ -133,6 +140,8 @@ declare const NetworkConfigSchema: z.ZodObject<{
133
140
  downloadDir?: string | undefined;
134
141
  maxDownloadSize?: number | undefined;
135
142
  downloadEnabled?: boolean | undefined;
143
+ networkSaveEnabled?: boolean | undefined;
144
+ redactAuthHeaders?: boolean | undefined;
136
145
  }>;
137
146
  export type NetworkConfig = z.infer<typeof NetworkConfigSchema>;
138
147
  export { NetworkConfigSchema };
@@ -180,6 +189,7 @@ declare const ServerConfigSchema: z.ZodObject<{
180
189
  browserChannel: z.ZodDefault<z.ZodString>;
181
190
  debugPort: z.ZodDefault<z.ZodNumber>;
182
191
  autoDetectProfile: z.ZodDefault<z.ZodBoolean>;
192
+ stealthEnabled: z.ZodDefault<z.ZodBoolean>;
183
193
  }, "strip", z.ZodTypeAny, {
184
194
  headless: boolean;
185
195
  viewport: {
@@ -191,11 +201,11 @@ declare const ServerConfigSchema: z.ZodObject<{
191
201
  browserChannel: string;
192
202
  debugPort: number;
193
203
  autoDetectProfile: boolean;
194
- userDataDir?: string | undefined;
204
+ stealthEnabled: boolean;
195
205
  userAgent?: string | undefined;
196
206
  locale?: string | undefined;
197
- }, {
198
207
  userDataDir?: string | undefined;
208
+ }, {
199
209
  headless?: boolean | undefined;
200
210
  viewport?: {
201
211
  width?: number | undefined;
@@ -205,9 +215,11 @@ declare const ServerConfigSchema: z.ZodObject<{
205
215
  locale?: string | undefined;
206
216
  timeout?: number | undefined;
207
217
  mode?: "fresh" | "persistent" | "connect" | undefined;
218
+ userDataDir?: string | undefined;
208
219
  browserChannel?: string | undefined;
209
220
  debugPort?: number | undefined;
210
221
  autoDetectProfile?: boolean | undefined;
222
+ stealthEnabled?: boolean | undefined;
211
223
  }>>;
212
224
  rateLimit: z.ZodDefault<z.ZodObject<{
213
225
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -272,6 +284,8 @@ declare const ServerConfigSchema: z.ZodObject<{
272
284
  downloadDir: z.ZodDefault<z.ZodString>;
273
285
  maxDownloadSize: z.ZodDefault<z.ZodNumber>;
274
286
  downloadEnabled: z.ZodDefault<z.ZodBoolean>;
287
+ networkSaveEnabled: z.ZodDefault<z.ZodBoolean>;
288
+ redactAuthHeaders: z.ZodDefault<z.ZodBoolean>;
275
289
  }, "strip", z.ZodTypeAny, {
276
290
  maxEntries: number;
277
291
  maxResponseBodySize: number;
@@ -287,6 +301,8 @@ declare const ServerConfigSchema: z.ZodObject<{
287
301
  downloadDir: string;
288
302
  maxDownloadSize: number;
289
303
  downloadEnabled: boolean;
304
+ networkSaveEnabled: boolean;
305
+ redactAuthHeaders: boolean;
290
306
  }, {
291
307
  maxEntries?: number | undefined;
292
308
  maxResponseBodySize?: number | undefined;
@@ -302,6 +318,8 @@ declare const ServerConfigSchema: z.ZodObject<{
302
318
  downloadDir?: string | undefined;
303
319
  maxDownloadSize?: number | undefined;
304
320
  downloadEnabled?: boolean | undefined;
321
+ networkSaveEnabled?: boolean | undefined;
322
+ redactAuthHeaders?: boolean | undefined;
305
323
  }>>;
306
324
  }, "strip", z.ZodTypeAny, {
307
325
  browser: {
@@ -315,9 +333,10 @@ declare const ServerConfigSchema: z.ZodObject<{
315
333
  browserChannel: string;
316
334
  debugPort: number;
317
335
  autoDetectProfile: boolean;
318
- userDataDir?: string | undefined;
336
+ stealthEnabled: boolean;
319
337
  userAgent?: string | undefined;
320
338
  locale?: string | undefined;
339
+ userDataDir?: string | undefined;
321
340
  };
322
341
  rateLimit: {
323
342
  enabled: boolean;
@@ -352,10 +371,11 @@ declare const ServerConfigSchema: z.ZodObject<{
352
371
  downloadDir: string;
353
372
  maxDownloadSize: number;
354
373
  downloadEnabled: boolean;
374
+ networkSaveEnabled: boolean;
375
+ redactAuthHeaders: boolean;
355
376
  };
356
377
  }, {
357
378
  browser?: {
358
- userDataDir?: string | undefined;
359
379
  headless?: boolean | undefined;
360
380
  viewport?: {
361
381
  width?: number | undefined;
@@ -365,9 +385,11 @@ declare const ServerConfigSchema: z.ZodObject<{
365
385
  locale?: string | undefined;
366
386
  timeout?: number | undefined;
367
387
  mode?: "fresh" | "persistent" | "connect" | undefined;
388
+ userDataDir?: string | undefined;
368
389
  browserChannel?: string | undefined;
369
390
  debugPort?: number | undefined;
370
391
  autoDetectProfile?: boolean | undefined;
392
+ stealthEnabled?: boolean | undefined;
371
393
  } | undefined;
372
394
  rateLimit?: {
373
395
  enabled?: boolean | undefined;
@@ -402,6 +424,8 @@ declare const ServerConfigSchema: z.ZodObject<{
402
424
  downloadDir?: string | undefined;
403
425
  maxDownloadSize?: number | undefined;
404
426
  downloadEnabled?: boolean | undefined;
427
+ networkSaveEnabled?: boolean | undefined;
428
+ redactAuthHeaders?: boolean | undefined;
405
429
  } | undefined;
406
430
  }>;
407
431
  export type ServerConfig = z.infer<typeof ServerConfigSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,QAAA,MAAM,cAAc;;;;;;;;;EAGlB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAG5D,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWvB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAKzB,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGpE,QAAA,MAAM,iBAAiB;;;;;;;;;EAGrB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAevB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,YAAY,CAAC;CACtB;AAqMD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAItE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CA8BlD;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,EACjC,SAAS,EAAE;IACT,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACpC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC,EACD,QAAQ,EAAE,YAAY,GACrB,YAAY,CAQd;AAED,wBAAgB,UAAU,IAAI,YAAY,CAezC;AAED,wBAAgB,SAAS,IAAI,YAAY,CAKxC;AAED,gBAAgB;AAChB,wBAAgB,YAAY,IAAI,YAAY,CAG3C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,QAAA,MAAM,cAAc;;;;;;;;;EAGlB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAG5D,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYvB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAGhE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;EAKzB,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAGpE,QAAA,MAAM,iBAAiB;;;;;;;;;EAGrB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiBvB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAGlE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMtB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9D,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,YAAY,CAAC;CACtB;AA2MD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAItE;AAED,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CA8BlD;AAED,wBAAgB,YAAY,CAC1B,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,EACjC,SAAS,EAAE;IACT,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACpC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC,EACD,QAAQ,EAAE,YAAY,GACrB,YAAY,CAQd;AAED,wBAAgB,UAAU,IAAI,YAAY,CAezC;AAED,wBAAgB,SAAS,IAAI,YAAY,CAKxC;AAED,gBAAgB;AAChB,wBAAgB,YAAY,IAAI,YAAY,CAG3C"}