@lmcc-dev/mult-fetch-mcp-server 1.0.3 → 1.1.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 (113) hide show
  1. package/README.md +3 -1
  2. package/README.zh.md +3 -2
  3. package/dist/src/client.d.ts +6 -0
  4. package/dist/src/client.js +26 -28
  5. package/dist/src/client.js.map +1 -0
  6. package/dist/src/index.d.ts +15 -0
  7. package/dist/src/index.js.map +1 -0
  8. package/dist/src/lib/BrowserFetcher.d.ts +175 -0
  9. package/dist/src/lib/BrowserFetcher.js.map +1 -0
  10. package/dist/src/lib/NodeFetcher.d.ts +92 -0
  11. package/dist/src/lib/NodeFetcher.js +143 -84
  12. package/dist/src/lib/NodeFetcher.js.map +1 -0
  13. package/dist/src/lib/i18n/index.js.map +1 -0
  14. package/dist/src/lib/i18n/keys.js +135 -0
  15. package/dist/src/lib/i18n/locales/en/browser.d.ts +61 -0
  16. package/dist/src/lib/i18n/locales/en/browser.js +68 -54
  17. package/dist/src/lib/i18n/locales/en/browser.js.map +1 -0
  18. package/dist/src/lib/i18n/locales/en/client.d.ts +39 -0
  19. package/dist/src/lib/i18n/locales/en/client.js.map +1 -0
  20. package/dist/src/lib/i18n/locales/en/errors.d.ts +17 -0
  21. package/dist/src/lib/i18n/locales/en/errors.js.map +1 -0
  22. package/dist/src/lib/i18n/locales/en/fetcher.d.ts +66 -0
  23. package/dist/src/lib/i18n/locales/en/fetcher.js +60 -59
  24. package/dist/src/lib/i18n/locales/en/fetcher.js.map +1 -0
  25. package/dist/src/lib/i18n/locales/en/index.d.ts +344 -0
  26. package/dist/src/lib/i18n/locales/en/index.js +1 -1
  27. package/dist/src/lib/i18n/locales/en/index.js.map +1 -0
  28. package/dist/src/lib/i18n/locales/en/node.d.ts +41 -0
  29. package/dist/src/lib/i18n/locales/en/node.js.map +1 -0
  30. package/dist/src/lib/i18n/locales/en/prompts.d.ts +65 -0
  31. package/dist/src/lib/i18n/locales/en/prompts.js.map +1 -0
  32. package/dist/src/lib/i18n/locales/en/resources.d.ts +41 -0
  33. package/dist/src/lib/i18n/locales/en/resources.js +30 -15
  34. package/dist/src/lib/i18n/locales/en/resources.js.map +1 -0
  35. package/dist/src/lib/i18n/locales/en/server.d.ts +30 -0
  36. package/dist/src/lib/i18n/locales/en/server.js.map +1 -0
  37. package/dist/src/lib/i18n/locales/en/tools.d.ts +24 -0
  38. package/dist/src/lib/i18n/locales/en/tools.js.map +1 -0
  39. package/dist/src/lib/i18n/locales/zh/browser.d.ts +61 -0
  40. package/dist/src/lib/i18n/locales/zh/browser.js +68 -54
  41. package/dist/src/lib/i18n/locales/zh/browser.js.map +1 -0
  42. package/dist/src/lib/i18n/locales/zh/client.d.ts +38 -0
  43. package/dist/src/lib/i18n/locales/zh/client.js.map +1 -0
  44. package/dist/src/lib/i18n/locales/zh/errors.d.ts +17 -0
  45. package/dist/src/lib/i18n/locales/zh/errors.js.map +1 -0
  46. package/dist/src/lib/i18n/locales/zh/fetcher.d.ts +66 -0
  47. package/dist/src/lib/i18n/locales/zh/fetcher.js +60 -59
  48. package/dist/src/lib/i18n/locales/zh/fetcher.js.map +1 -0
  49. package/dist/src/lib/i18n/locales/zh/index.d.ts +343 -0
  50. package/dist/src/lib/i18n/locales/zh/index.js +1 -1
  51. package/dist/src/lib/i18n/locales/zh/index.js.map +1 -0
  52. package/dist/src/lib/i18n/locales/zh/node.d.ts +41 -0
  53. package/dist/src/lib/i18n/locales/zh/node.js.map +1 -0
  54. package/dist/src/lib/i18n/locales/zh/prompts.d.ts +65 -0
  55. package/dist/src/lib/i18n/locales/zh/prompts.js.map +1 -0
  56. package/dist/src/lib/i18n/locales/zh/resources.d.ts +41 -0
  57. package/dist/src/lib/i18n/locales/zh/resources.js +28 -13
  58. package/dist/src/lib/i18n/locales/zh/resources.js.map +1 -0
  59. package/dist/src/lib/i18n/locales/zh/server.d.ts +30 -0
  60. package/dist/src/lib/i18n/locales/zh/server.js.map +1 -0
  61. package/dist/src/lib/i18n/locales/zh/tools.d.ts +24 -0
  62. package/dist/src/lib/i18n/locales/zh/tools.js.map +1 -0
  63. package/dist/src/lib/i18n/logger.d.ts +38 -0
  64. package/dist/src/lib/i18n/logger.js.map +1 -0
  65. package/dist/src/lib/logger.d.ts +32 -0
  66. package/dist/src/lib/logger.js.map +1 -0
  67. package/dist/src/lib/server/browser.d.ts +34 -0
  68. package/dist/src/lib/server/browser.js +10 -16
  69. package/dist/src/lib/server/browser.js.map +1 -0
  70. package/dist/src/lib/server/fetcher.d.ts +20 -0
  71. package/dist/src/lib/server/fetcher.js.map +1 -0
  72. package/dist/src/lib/server/index.d.ts +10 -0
  73. package/dist/src/lib/server/index.js.map +1 -0
  74. package/dist/src/lib/server/prompts.d.ts +11 -0
  75. package/dist/src/lib/server/prompts.js.map +1 -0
  76. package/dist/src/lib/server/resources.d.ts +11 -0
  77. package/dist/src/lib/server/resources.js.map +1 -0
  78. package/dist/src/lib/server/tools.d.ts +12 -0
  79. package/dist/src/lib/server/tools.js +369 -309
  80. package/dist/src/lib/server/tools.js.map +1 -0
  81. package/dist/src/lib/server/types.d.ts +71 -0
  82. package/dist/src/lib/server/types.js.map +1 -0
  83. package/dist/src/lib/types.d.ts +119 -0
  84. package/dist/src/lib/types.js.map +1 -0
  85. package/dist/src/lib/utils/errorDetection.js +41 -0
  86. package/dist/src/lib/utils/errors.js +279 -0
  87. package/dist/src/mcp-server.d.ts +6 -0
  88. package/dist/src/mcp-server.js.map +1 -0
  89. package/dist/tests/BrowserFetcher.test.js +951 -0
  90. package/dist/tests/NodeFetcher.test.js +263 -0
  91. package/dist/tests/client.test.js +250 -0
  92. package/dist/tests/i18n.test.js +179 -0
  93. package/dist/tests/jest.setup.d.ts +6 -0
  94. package/dist/tests/jest.setup.js +30 -0
  95. package/dist/tests/jest.setup.js.map +1 -0
  96. package/dist/tests/logger.test.js +99 -0
  97. package/dist/tests/mcp-server.test.js +113 -0
  98. package/dist/tests/server/browser.test.js +197 -0
  99. package/dist/tests/server/fetcher.test.js +216 -0
  100. package/dist/tests/server/index.test.js +122 -0
  101. package/dist/tests/server/prompts.test.js +243 -0
  102. package/dist/tests/server/resources.test.js +359 -0
  103. package/dist/tests/server/tools.test.js +222 -0
  104. package/dist/tests/test-direct-client.d.ts +6 -0
  105. package/dist/tests/test-direct-client.js.map +1 -0
  106. package/dist/tests/test-mcp-methods.d.ts +6 -0
  107. package/dist/tests/test-mcp-methods.js.map +1 -0
  108. package/dist/tests/test-mcp.d.ts +6 -0
  109. package/dist/tests/test-mcp.js.map +1 -0
  110. package/dist/tests/test-mini4k.d.ts +6 -0
  111. package/dist/tests/test-mini4k.js.map +1 -0
  112. package/dist/tests/types.test.js +57 -0
  113. package/package.json +11 -2
@@ -124,9 +124,139 @@ export class NodeFetcher {
124
124
  return undefined;
125
125
  }
126
126
  /**
127
- * 执行带重定向处理的HTTP请求 (Perform HTTP request with redirect handling)
128
- * @param requestPayload 请求参数 (Request parameters)
129
- * @returns 响应数据 (Response data)
127
+ * 处理请求延迟 (Handle request delay)
128
+ * @param noDelay 是否禁用延迟 (Whether to disable delay)
129
+ * @param isRedirect 是否是重定向请求 (Whether it's a redirect request)
130
+ * @param debug 是否启用调试模式 (Whether debug mode is enabled)
131
+ */
132
+ static async handleDelay(noDelay, isRedirect, debug) {
133
+ if (!noDelay && isRedirect) {
134
+ await this.randomDelay();
135
+ }
136
+ }
137
+ /**
138
+ * 准备请求头 (Prepare request headers)
139
+ * @param headers 原始请求头 (Original headers)
140
+ * @param debug 是否启用调试模式 (Whether debug mode is enabled)
141
+ * @returns 处理后的请求头 (Processed headers)
142
+ */
143
+ static prepareHeaders(headers = {}, debug) {
144
+ const requestHeaders = { ...headers };
145
+ // 添加随机User-Agent (Add random User-Agent)
146
+ if (!requestHeaders['User-Agent']) {
147
+ const userAgent = this.getRandomUserAgent();
148
+ requestHeaders['User-Agent'] = userAgent;
149
+ log('node.usingUserAgent', debug, { userAgent }, COMPONENTS.NODE_FETCH);
150
+ }
151
+ return requestHeaders;
152
+ }
153
+ /**
154
+ * 设置代理 (Set proxy)
155
+ * @param url 请求URL (Request URL)
156
+ * @param proxy 代理URL (Proxy URL)
157
+ * @param debug 是否启用调试模式 (Whether debug mode is enabled)
158
+ * @returns 代理Agent (Proxy agent)
159
+ */
160
+ static setupProxy(url, proxy, debug) {
161
+ if (!proxy)
162
+ return undefined;
163
+ let agent = undefined;
164
+ if (url.startsWith('https://')) {
165
+ agent = new HttpsProxyAgent(proxy);
166
+ log('node.usingHttpsProxy', debug, {}, COMPONENTS.NODE_FETCH);
167
+ }
168
+ else {
169
+ agent = new HttpProxyAgent(proxy);
170
+ log('node.usingHttpProxy', debug, {}, COMPONENTS.NODE_FETCH);
171
+ }
172
+ return agent;
173
+ }
174
+ /**
175
+ * 处理重定向URL (Handle redirect URL)
176
+ * @param location 重定向位置 (Redirect location)
177
+ * @param currentUrl 当前URL (Current URL)
178
+ * @param debug 是否启用调试模式 (Whether debug mode is enabled)
179
+ * @returns 完整的重定向URL (Complete redirect URL)
180
+ */
181
+ static buildRedirectUrl(location, currentUrl, debug) {
182
+ let redirectUrl = location;
183
+ if (location.startsWith('/')) {
184
+ const urlObj = new URL(currentUrl);
185
+ redirectUrl = `${urlObj.protocol}//${urlObj.host}${location}`;
186
+ }
187
+ else if (!location.startsWith('http')) {
188
+ redirectUrl = new URL(location, currentUrl).toString();
189
+ }
190
+ log('node.constructedFullRedirectUrl', debug, { redirectUrl }, COMPONENTS.NODE_FETCH);
191
+ return redirectUrl;
192
+ }
193
+ /**
194
+ * 处理错误响应 (Handle error response)
195
+ * @param response 响应对象 (Response object)
196
+ * @param debug 是否启用调试模式 (Whether debug mode is enabled)
197
+ * @returns Promise<never> 抛出错误 (Throws error)
198
+ */
199
+ static async handleErrorResponse(response, debug) {
200
+ log('node.errorResponse', debug, { status: response.status, statusText: response.statusText }, COMPONENTS.NODE_FETCH);
201
+ // 尝试读取错误响应体 (Try to read error response body)
202
+ let errorText = '';
203
+ try {
204
+ errorText = await response.text();
205
+ log('node.errorResponseBody', debug, { body: errorText.substring(0, 200) + (errorText.length > 200 ? '...' : '') }, COMPONENTS.NODE_FETCH);
206
+ }
207
+ catch (textError) {
208
+ log('node.errorReadingBody', debug, { error: String(textError) }, COMPONENTS.NODE_FETCH);
209
+ }
210
+ // 创建错误对象 (Create error object)
211
+ const error = new Error(`HTTP Error ${response.status}: ${response.statusText}`);
212
+ error.status = response.status;
213
+ error.statusText = response.statusText;
214
+ error.body = errorText;
215
+ throw error;
216
+ }
217
+ /**
218
+ * 处理请求错误 (Handle request error)
219
+ * @param error 错误对象 (Error object)
220
+ * @param fetchStart 请求开始时间 (Request start time)
221
+ * @param timeout 超时时间 (Timeout)
222
+ * @param redirectCount 重定向计数 (Redirect count)
223
+ * @param maxRedirects 最大重定向次数 (Maximum redirects)
224
+ * @param debug 是否启用调试模式 (Whether debug mode is enabled)
225
+ * @returns Promise<never> 抛出错误 (Throws error)
226
+ */
227
+ static handleRequestError(error, fetchStart, timeout, redirectCount, maxRedirects, debug) {
228
+ // 记录错误 (Log error)
229
+ log('node.fetchError', debug, { error: String(error) }, COMPONENTS.NODE_FETCH);
230
+ // 处理超时错误 (Handle timeout error)
231
+ if (error.name === 'AbortError') {
232
+ log('node.requestAborted', debug, { duration: Date.now() - fetchStart }, COMPONENTS.NODE_FETCH);
233
+ const timeoutError = new Error(`Request timeout after ${timeout}ms`);
234
+ timeoutError.code = 'ETIMEDOUT';
235
+ timeoutError.timeout = timeout;
236
+ throw timeoutError;
237
+ }
238
+ // 处理网络错误 (Handle network error)
239
+ if (error.code) {
240
+ log('node.networkError', debug, { code: error.code || error.name }, COMPONENTS.NODE_FETCH);
241
+ const networkError = new Error(`Network error: ${error.code || error.message}`);
242
+ networkError.code = error.code;
243
+ networkError.originalError = error;
244
+ throw networkError;
245
+ }
246
+ // 处理重定向错误 (Handle redirect error)
247
+ if (redirectCount >= maxRedirects) {
248
+ log('node.tooManyRedirects', debug, { redirects: maxRedirects }, COMPONENTS.NODE_FETCH);
249
+ const redirectError = new Error(`Too many redirects (${maxRedirects})`);
250
+ redirectError.code = 'EMAXREDIRECTS';
251
+ redirectError.redirects = redirectCount;
252
+ throw redirectError;
253
+ }
254
+ // 重新抛出其他错误 (Rethrow other errors)
255
+ throw error;
256
+ }
257
+ /**
258
+ * 执行带重定向处理的HTTP请求 (Execute HTTP request with redirect handling)
259
+ * 支持自动处理重定向、超时和代理 (Supports automatic handling of redirects, timeouts, and proxies)
130
260
  */
131
261
  static async _fetchWithRedirects({ url, headers = {}, proxy, noDelay, timeout = 30000, // 默认30秒超时
132
262
  maxRedirects = 10, // 最大重定向次数
@@ -152,20 +282,12 @@ export class NodeFetcher {
152
282
  // 处理重定向循环 (Handle redirect loop)
153
283
  while (redirectCount < maxRedirects) {
154
284
  log('node.fetchingUrl', debug, { url: currentUrl, redirect: redirectCount }, COMPONENTS.NODE_FETCH);
155
- // 如果启用了随机延迟且不是第一个请求,则添加延迟 (Add delay if random delay is enabled and not the first request)
156
- if (!noDelay && redirectCount > 0) {
157
- await this.randomDelay();
158
- }
285
+ // 处理延迟 (Handle delay)
286
+ await this.handleDelay(noDelay, redirectCount > 0, debug);
159
287
  // 准备请求头 (Prepare request headers)
160
- const requestHeaders = {
161
- ...headers
162
- };
163
- // 添加随机User-Agent (Add random User-Agent)
164
- if (!requestHeaders['User-Agent']) {
165
- const userAgent = this.getRandomUserAgent();
166
- requestHeaders['User-Agent'] = userAgent;
167
- log('node.usingUserAgent', debug, { userAgent }, COMPONENTS.NODE_FETCH);
168
- }
288
+ const requestHeaders = this.prepareHeaders(headers, debug);
289
+ // 设置代理 (Set proxy)
290
+ const agent = this.setupProxy(currentUrl, finalProxy, debug);
169
291
  // 准备请求选项 (Prepare request options)
170
292
  const fetchOptions = {
171
293
  method: 'GET',
@@ -173,17 +295,7 @@ export class NodeFetcher {
173
295
  timeout,
174
296
  signal: controller.signal,
175
297
  };
176
- // 设置代理 (Set proxy)
177
- let agent = undefined;
178
- if (finalProxy) {
179
- if (currentUrl.startsWith('https://')) {
180
- agent = new HttpsProxyAgent(finalProxy);
181
- log('node.usingHttpsProxy', debug, {}, COMPONENTS.NODE_FETCH);
182
- }
183
- else {
184
- agent = new HttpProxyAgent(finalProxy);
185
- log('node.usingHttpProxy', debug, {}, COMPONENTS.NODE_FETCH);
186
- }
298
+ if (agent) {
187
299
  fetchOptions.agent = agent;
188
300
  }
189
301
  // 记录请求详情 (Log request details)
@@ -209,17 +321,7 @@ export class NodeFetcher {
209
321
  const location = response.headers.get('location');
210
322
  log('node.redirectingTo', debug, { location }, COMPONENTS.NODE_FETCH);
211
323
  // 构建完整的重定向URL (Build complete redirect URL)
212
- let redirectUrl = location;
213
- if (location.startsWith('/')) {
214
- const urlObj = new URL(currentUrl);
215
- redirectUrl = `${urlObj.protocol}//${urlObj.host}${location}`;
216
- }
217
- else if (!location.startsWith('http')) {
218
- redirectUrl = new URL(location, currentUrl).toString();
219
- }
220
- log('node.constructedFullRedirectUrl', debug, { redirectUrl }, COMPONENTS.NODE_FETCH);
221
- // 更新当前URL为重定向URL (Update current URL to redirect URL)
222
- currentUrl = redirectUrl;
324
+ currentUrl = this.buildRedirectUrl(location, currentUrl, debug);
223
325
  continue;
224
326
  }
225
327
  // 如果响应成功,返回响应 (If response is successful, return response)
@@ -229,58 +331,15 @@ export class NodeFetcher {
229
331
  }
230
332
  else {
231
333
  // 处理错误响应 (Handle error response)
232
- log('node.errorResponse', debug, { status: response.status, statusText: response.statusText }, COMPONENTS.NODE_FETCH);
233
- // 尝试读取错误响应体 (Try to read error response body)
234
- let errorText = '';
235
- try {
236
- errorText = await response.text();
237
- log('node.errorResponseBody', debug, { body: errorText.substring(0, 200) + (errorText.length > 200 ? '...' : '') }, COMPONENTS.NODE_FETCH);
238
- }
239
- catch (textError) {
240
- log('node.errorReadingBody', debug, { error: String(textError) }, COMPONENTS.NODE_FETCH);
241
- }
242
- // 创建错误对象 (Create error object)
243
- const error = new Error(`HTTP Error ${response.status}: ${response.statusText}`);
244
- error.status = response.status;
245
- error.statusText = response.statusText;
246
- error.body = errorText;
247
- throw error;
334
+ return await this.handleErrorResponse(response, debug);
248
335
  }
249
336
  }
250
337
  // 如果达到最大重定向次数,抛出错误 (If maximum redirects reached, throw error)
251
338
  throw new Error(`Too many redirects (${maxRedirects})`);
252
339
  }
253
340
  catch (error) {
254
- // 清除超时定时器 (Clear timeout timer)
255
- clearTimeout(timeoutId);
256
- // 记录错误 (Log error)
257
- log('node.fetchError', debug, { error: String(error) }, COMPONENTS.NODE_FETCH);
258
- // 处理超时错误 (Handle timeout error)
259
- if (error.name === 'AbortError') {
260
- log('node.requestAborted', debug, { duration: Date.now() - fetchStart }, COMPONENTS.NODE_FETCH);
261
- const timeoutError = new Error(`Request timeout after ${timeout}ms`);
262
- timeoutError.code = 'ETIMEDOUT';
263
- timeoutError.timeout = timeout;
264
- throw timeoutError;
265
- }
266
- // 处理网络错误 (Handle network error)
267
- if (error.code) {
268
- log('node.networkError', debug, { code: error.code || error.name }, COMPONENTS.NODE_FETCH);
269
- const networkError = new Error(`Network error: ${error.code || error.message}`);
270
- networkError.code = error.code;
271
- networkError.originalError = error;
272
- throw networkError;
273
- }
274
- // 处理重定向错误 (Handle redirect error)
275
- if (redirectCount >= maxRedirects) {
276
- log('node.tooManyRedirects', debug, { redirects: maxRedirects }, COMPONENTS.NODE_FETCH);
277
- const redirectError = new Error(`Too many redirects (${maxRedirects})`);
278
- redirectError.code = 'EMAXREDIRECTS';
279
- redirectError.redirects = redirectCount;
280
- throw redirectError;
281
- }
282
- // 重新抛出其他错误 (Rethrow other errors)
283
- throw error;
341
+ // 处理请求错误 (Handle request error)
342
+ this.handleRequestError(error, fetchStart, timeout, redirectCount, maxRedirects, debug);
284
343
  }
285
344
  finally {
286
345
  // 清除超时定时器 (Clear timeout timer)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeFetcher.js","sourceRoot":"","sources":["../../../src/lib/NodeFetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,qCAAqC;AACrC,MAAM,SAAS,GAAG;IAChB,EAAE,EAAE;QACF,WAAW,EAAE,aAAa;KAC3B;IACD,EAAE,EAAE;QACF,WAAW,EAAE,aAAa;KAC3B;CACF,CAAC;AAEF,mCAAmC;AACnC,OAAO,CAAC,IAAI,CAAC;IACX,SAAS;IACT,uBAAuB;IACvB,sEAAsE;IACtE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI;IACjC,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE;QACb,WAAW,EAAE,KAAK,CAAC,qCAAqC;KACzD;CACF,CAAC,CAAC;AAEH,0CAA0C;AAC1C,eAAe,OAAO,CAAC;AAEvB,yDAAyD;AACzD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,OAAa,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAEzE,gDAAgD;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAEhF,oDAAoD;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC"}
@@ -0,0 +1,135 @@
1
+ /*
2
+ * Author: Martin <lmccc.dev@gmail.com>
3
+ * Co-Author: AI Assistant (Claude)
4
+ * Description: This code was collaboratively developed by Martin and AI Assistant.
5
+ */
6
+ /**
7
+ * 共享的国际化键结构 (Shared internationalization key structure)
8
+ * 用于避免在不同语言文件中重复相同的键结构 (Used to avoid repeating the same key structure in different language files)
9
+ */
10
+ /**
11
+ * 获取器相关键 (Fetcher related keys)
12
+ */
13
+ export const FETCHER_KEYS = {
14
+ addingDelay: 'fetcher.addingDelay',
15
+ delayCompleted: 'fetcher.delayCompleted',
16
+ usingProxy: 'fetcher.usingProxy',
17
+ usingSpecifiedProxy: 'fetcher.usingSpecifiedProxy',
18
+ attemptingToUseSystemProxy: 'fetcher.attemptingToUseSystemProxy',
19
+ notUsingProxy: 'fetcher.notUsingProxy',
20
+ finalProxyUsed: 'fetcher.finalProxyUsed',
21
+ noProxy: 'fetcher.noProxy',
22
+ fetchingUrl: 'fetcher.fetchingUrl',
23
+ usingUserAgent: 'fetcher.usingUserAgent',
24
+ usingHttpsProxy: 'fetcher.usingHttpsProxy',
25
+ usingHttpProxy: 'fetcher.usingHttpProxy',
26
+ requestOptions: 'fetcher.requestOptions',
27
+ startingFetch: 'fetcher.startingFetch',
28
+ fetchCompleted: 'fetcher.fetchCompleted',
29
+ responseStatus: 'fetcher.responseStatus',
30
+ redirectingTo: 'fetcher.redirectingTo',
31
+ constructedFullRedirectUrl: 'fetcher.constructedFullRedirectUrl',
32
+ requestSuccess: 'fetcher.requestSuccess',
33
+ errorResponse: 'fetcher.errorResponse',
34
+ errorResponseBody: 'fetcher.errorResponseBody',
35
+ errorReadingBody: 'fetcher.errorReadingBody',
36
+ fetchError: 'fetcher.fetchError',
37
+ requestAborted: 'fetcher.requestAborted',
38
+ networkError: 'fetcher.networkError',
39
+ requestTimeout: 'fetcher.requestTimeout',
40
+ fetchFailed: 'fetcher.fetchFailed',
41
+ tooManyRedirects: 'fetcher.tooManyRedirects',
42
+ startingHtmlFetch: 'fetcher.startingHtmlFetch',
43
+ readingText: 'fetcher.readingText',
44
+ htmlContentLength: 'fetcher.htmlContentLength',
45
+ startingJsonFetch: 'fetcher.startingJsonFetch',
46
+ parsingJson: 'fetcher.parsingJson',
47
+ jsonParsed: 'fetcher.jsonParsed',
48
+ jsonParseError: 'fetcher.jsonParseError',
49
+ startingTxtFetch: 'fetcher.startingTxtFetch',
50
+ textContentLength: 'fetcher.textContentLength',
51
+ startingMarkdownFetch: 'fetcher.startingMarkdownFetch',
52
+ creatingTurndown: 'fetcher.creatingTurndown',
53
+ convertingToMarkdown: 'fetcher.convertingToMarkdown',
54
+ markdownContentLength: 'fetcher.markdownContentLength',
55
+ checkingProxyEnv: 'fetcher.checkingProxyEnv',
56
+ envVarValue: 'fetcher.envVarValue',
57
+ foundSystemProxy: 'fetcher.foundSystemProxy',
58
+ systemCommandProxySettings: 'fetcher.systemCommandProxySettings',
59
+ foundProxyFromCommand: 'fetcher.foundProxyFromCommand',
60
+ errorGettingProxyFromCommand: 'fetcher.errorGettingProxyFromCommand',
61
+ checkingSystemEnvVars: 'fetcher.checkingSystemEnvVars',
62
+ windowsEnvVars: 'fetcher.windowsEnvVars',
63
+ foundWindowsEnvProxy: 'fetcher.foundWindowsEnvProxy',
64
+ errorGettingWindowsEnvVars: 'fetcher.errorGettingWindowsEnvVars',
65
+ unixEnvVars: 'fetcher.unixEnvVars',
66
+ foundUnixEnvProxy: 'fetcher.foundUnixEnvProxy',
67
+ errorGettingUnixEnvVars: 'fetcher.errorGettingUnixEnvVars',
68
+ errorGettingSystemEnvVars: 'fetcher.errorGettingSystemEnvVars',
69
+ noSystemProxyFound: 'fetcher.noSystemProxyFound',
70
+ notSet: 'fetcher.notSet',
71
+ debug: 'fetcher.debug',
72
+ none: 'fetcher.none'
73
+ };
74
+ /**
75
+ * 浏览器相关键 (Browser related keys)
76
+ */
77
+ export const BROWSER_KEYS = {
78
+ closing: 'browser.closing',
79
+ closed: 'browser.closed',
80
+ starting: 'browser.starting',
81
+ startingFailed: 'browser.startingFailed',
82
+ alreadyRunning: 'browser.alreadyRunning',
83
+ creatingPage: 'browser.creatingPage',
84
+ navigatingTo: 'browser.navigatingTo',
85
+ waitingForSelector: 'browser.waitingForSelector',
86
+ waitingForTimeout: 'browser.waitingForTimeout',
87
+ scrollingToBottom: 'browser.scrollingToBottom',
88
+ gettingContent: 'browser.gettingContent',
89
+ contentLength: 'browser.contentLength',
90
+ savingCookies: 'browser.savingCookies',
91
+ cookiesSaved: 'browser.cookiesSaved',
92
+ loadingCookies: 'browser.loadingCookies',
93
+ cookiesLoaded: 'browser.cookiesLoaded',
94
+ noCookiesFound: 'browser.noCookiesFound',
95
+ errorLoadingCookies: 'browser.errorLoadingCookies',
96
+ errorSavingCookies: 'browser.errorSavingCookies',
97
+ errorNavigating: 'browser.errorNavigating',
98
+ errorGettingContent: 'browser.errorGettingContent',
99
+ errorClosingBrowser: 'browser.errorClosingBrowser',
100
+ errorCreatingPage: 'browser.errorCreatingPage'
101
+ };
102
+ /**
103
+ * 资源相关键 (Resources related keys)
104
+ */
105
+ export const RESOURCES_KEYS = {
106
+ list: {
107
+ request: 'resources.list.request',
108
+ success: 'resources.list.success',
109
+ error: 'resources.list.error'
110
+ },
111
+ get: {
112
+ request: 'resources.get.request',
113
+ success: 'resources.get.success',
114
+ error: 'resources.get.error',
115
+ notFound: 'resources.get.notFound'
116
+ },
117
+ create: {
118
+ request: 'resources.create.request',
119
+ success: 'resources.create.success',
120
+ error: 'resources.create.error',
121
+ duplicate: 'resources.create.duplicate'
122
+ },
123
+ update: {
124
+ request: 'resources.update.request',
125
+ success: 'resources.update.success',
126
+ error: 'resources.update.error',
127
+ notFound: 'resources.update.notFound'
128
+ },
129
+ delete: {
130
+ request: 'resources.delete.request',
131
+ success: 'resources.delete.success',
132
+ error: 'resources.delete.error',
133
+ notFound: 'resources.delete.notFound'
134
+ }
135
+ };
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Author: Martin <lmccc.dev@gmail.com>
3
+ * Co-Author: AI Assistant (Claude)
4
+ * Description: This code was collaboratively developed by Martin and AI Assistant.
5
+ */
6
+ export declare const browser: {
7
+ closing: string;
8
+ closed: string;
9
+ starting: string;
10
+ startingFailed: string;
11
+ waiting: string;
12
+ startupSuccess: string;
13
+ navigating: string;
14
+ waitingForSelector: string;
15
+ waitingForTimeout: string;
16
+ scrolling: string;
17
+ scrollCompleted: string;
18
+ gettingContent: string;
19
+ savingCookies: string;
20
+ contentLength: string;
21
+ contentTruncated: string;
22
+ pageClosed: string;
23
+ fetchError: string;
24
+ highMemory: string;
25
+ closingDueToMemory: string;
26
+ closingError: string;
27
+ forcingGC: string;
28
+ memoryCheckError: string;
29
+ usingCookies: string;
30
+ usingProxy: string;
31
+ checkingCloudflare: string;
32
+ cloudflareDetected: string;
33
+ simulatingHuman: string;
34
+ simulatingHumanError: string;
35
+ stillOnCloudflare: string;
36
+ bypassFailed: string;
37
+ cloudflareError: string;
38
+ continuingWithoutBypass: string;
39
+ fetchingWithRetry: string;
40
+ memoryUsage: string;
41
+ memoryTooHigh: string;
42
+ unableToBypassCloudflare: string;
43
+ contentTooLarge: string;
44
+ failedToParseJSON: string;
45
+ startingBrowserFetchForMarkdown: string;
46
+ errorInBrowserFetchForMarkdown: string;
47
+ fetchRequest: string;
48
+ usingStoredCookies: string;
49
+ closingInstance: string;
50
+ fetchErrorWithAttempt: string;
51
+ retryingAfterDelay: string;
52
+ browserStartupSuccess: string;
53
+ browserStartupFailed: string;
54
+ usingCustomChromePath: string;
55
+ browserDisconnected: string;
56
+ waitingForBrowserStart: string;
57
+ reusingExistingBrowser: string;
58
+ startingBrowser: string;
59
+ browserStarted: string;
60
+ browserStartError: string;
61
+ };
@@ -3,60 +3,74 @@
3
3
  * Co-Author: AI Assistant (Claude)
4
4
  * Description: This code was collaboratively developed by Martin and AI Assistant.
5
5
  */
6
+ import { BROWSER_KEYS } from '../../keys.js';
6
7
  // 浏览器相关消息 (Browser related messages)
7
8
  export const browser = {
8
- closing: "Closing browser...",
9
- closed: "Browser closed",
10
- starting: "Starting new browser instance",
11
- startingFailed: "Browser startup failed: {{error}}",
12
- waiting: "Browser is starting, waiting...",
13
- startupSuccess: "Browser started successfully",
14
- navigating: "Navigating to URL...",
15
- waitingForSelector: "Waiting for selector: {{selector}}",
16
- waitingForTimeout: "Waiting for timeout: {{timeout}}",
17
- scrolling: "Auto-scrolling page...",
18
- scrollCompleted: "Auto-scroll completed",
19
- gettingContent: "Getting page content...",
20
- savingCookies: "Saving cookies...",
21
- contentLength: "Content length: {{length}}",
22
- contentTruncated: "Content too large, truncating...",
23
- pageClosed: "Page closed",
24
- fetchError: "Error in browser fetch: {{error}}",
25
- highMemory: "High memory usage detected, attempting to free resources...",
26
- closingDueToMemory: "Closing browser due to high memory usage...",
27
- closingError: "Error closing browser: {{error}}",
28
- forcingGC: "Forcing garbage collection...",
29
- memoryCheckError: "Error checking memory usage: {{error}}",
30
- usingCookies: "Using stored cookies for domain: {{domain}}",
31
- usingProxy: "Using proxy: {{proxy}}",
32
- checkingCloudflare: "Checking for Cloudflare protection...",
33
- cloudflareDetected: "Cloudflare protection detected, attempting to bypass...",
34
- simulatingHuman: "Simulating human behavior...",
35
- simulatingHumanError: "Error simulating human behavior: {{error}}",
36
- stillOnCloudflare: "Still on Cloudflare protection page, trying to refresh...",
37
- bypassFailed: "Failed to bypass Cloudflare protection",
38
- cloudflareError: "Error handling Cloudflare protection: {{error}}",
39
- continuingWithoutBypass: "Unable to bypass Cloudflare protection, continuing to try to get content...",
40
- fetchingWithRetry: "Fetching HTML with browser (attempt {{attempt}}/{{maxAttempts}}): {{url}}",
41
- memoryUsage: "Memory usage - Heap: {{heapUsed}}MB/{{heapTotal}}MB, RSS: {{rss}}MB",
42
- memoryTooHigh: "Memory usage too high - Heap: {{heapUsed}}MB/{{heapTotal}}MB, RSS: {{rss}}MB",
43
- unableToBypassCloudflare: "Unable to bypass Cloudflare protection, continuing to try to get content...",
44
- contentTooLarge: "Content too large, truncating...",
45
- failedToParseJSON: "Failed to parse JSON: {{error}}",
46
- startingBrowserFetchForMarkdown: "Starting browser fetch for Markdown: {{url}}",
47
- errorInBrowserFetchForMarkdown: "Error in browser fetch for Markdown: {{error}}",
48
- fetchRequest: "Browser fetch request: {{url}}",
49
- usingStoredCookies: "Using stored cookies for domain: {{domain}}",
50
- closingInstance: "Closing browser instance",
51
- fetchErrorWithAttempt: "Error in browser fetch (attempt {{attempt}}/{{maxAttempts}}): {{error}}",
52
- retryingAfterDelay: "Retrying after {{delayMs}}ms delay...",
53
- browserStartupSuccess: "Browser started successfully",
54
- browserStartupFailed: "Browser startup failed: {{error}}",
55
- usingCustomChromePath: "Using custom Chrome path: {{path}}",
56
- browserDisconnected: "Browser disconnected",
57
- waitingForBrowserStart: "Waiting for browser to start",
58
- reusingExistingBrowser: "Reusing existing browser instance",
59
- startingBrowser: "Starting browser",
60
- browserStarted: "Browser started successfully",
61
- browserStartError: "Browser startup error: {{error}}"
9
+ [BROWSER_KEYS.closing]: "Closing browser...",
10
+ [BROWSER_KEYS.closed]: "Browser closed",
11
+ [BROWSER_KEYS.starting]: "Starting new browser instance",
12
+ [BROWSER_KEYS.startingFailed]: "Browser startup failed: {{error}}",
13
+ [BROWSER_KEYS.alreadyRunning]: "Browser is starting, waiting...",
14
+ [BROWSER_KEYS.creatingPage]: "Browser started successfully",
15
+ [BROWSER_KEYS.navigatingTo]: "Navigating to URL...",
16
+ [BROWSER_KEYS.waitingForSelector]: "Waiting for selector: {{selector}}",
17
+ [BROWSER_KEYS.waitingForTimeout]: "Waiting for timeout: {{timeout}}",
18
+ [BROWSER_KEYS.scrollingToBottom]: "Auto-scrolling page...",
19
+ [BROWSER_KEYS.gettingContent]: "Getting page content...",
20
+ [BROWSER_KEYS.savingCookies]: "Saving cookies...",
21
+ [BROWSER_KEYS.contentLength]: "Content length: {{length}}",
22
+ [BROWSER_KEYS.cookiesSaved]: "Cookies saved",
23
+ [BROWSER_KEYS.cookiesLoaded]: "Cookies loaded",
24
+ [BROWSER_KEYS.noCookiesFound]: "No cookies found",
25
+ [BROWSER_KEYS.errorLoadingCookies]: "Error loading cookies: {{error}}",
26
+ [BROWSER_KEYS.errorSavingCookies]: "Error saving cookies: {{error}}",
27
+ [BROWSER_KEYS.errorNavigating]: "Error navigating: {{error}}",
28
+ [BROWSER_KEYS.errorGettingContent]: "Error in browser fetch: {{error}}",
29
+ [BROWSER_KEYS.errorClosingBrowser]: "Error closing browser: {{error}}",
30
+ [BROWSER_KEYS.errorCreatingPage]: "Error creating page: {{error}}",
31
+ // 额外的键(不在 BROWSER_KEYS 中定义的)
32
+ "waiting": "Browser is starting, waiting...",
33
+ "startupSuccess": "Browser started successfully",
34
+ "navigating": "Navigating to URL...",
35
+ "scrolling": "Auto-scrolling page...",
36
+ "scrollCompleted": "Auto-scroll completed",
37
+ "contentTruncated": "Content too large, truncating...",
38
+ "pageClosed": "Page closed",
39
+ "fetchError": "Error in browser fetch: {{error}}",
40
+ "highMemory": "High memory usage detected, attempting to free resources...",
41
+ "closingDueToMemory": "Closing browser due to high memory usage...",
42
+ "forcingGC": "Forcing garbage collection...",
43
+ "memoryCheckError": "Error checking memory usage: {{error}}",
44
+ "usingCookies": "Using stored cookies for domain: {{domain}}",
45
+ "usingProxy": "Using proxy: {{proxy}}",
46
+ "checkingCloudflare": "Checking for Cloudflare protection...",
47
+ "cloudflareDetected": "Cloudflare protection detected, attempting to bypass...",
48
+ "simulatingHuman": "Simulating human behavior...",
49
+ "simulatingHumanError": "Error simulating human behavior: {{error}}",
50
+ "stillOnCloudflare": "Still on Cloudflare protection page, trying to refresh...",
51
+ "bypassFailed": "Failed to bypass Cloudflare protection",
52
+ "cloudflareError": "Error handling Cloudflare protection: {{error}}",
53
+ "continuingWithoutBypass": "Unable to bypass Cloudflare protection, continuing to try to get content...",
54
+ "fetchingWithRetry": "Fetching HTML with browser (attempt {{attempt}}/{{maxAttempts}}): {{url}}",
55
+ "memoryUsage": "Memory usage - Heap: {{heapUsed}}MB/{{heapTotal}}MB, RSS: {{rss}}MB",
56
+ "memoryTooHigh": "Memory usage too high - Heap: {{heapUsed}}MB/{{heapTotal}}MB, RSS: {{rss}}MB",
57
+ "unableToBypassCloudflare": "Unable to bypass Cloudflare protection, continuing to try to get content...",
58
+ "contentTooLarge": "Content too large, truncating...",
59
+ "failedToParseJSON": "Failed to parse JSON: {{error}}",
60
+ "startingBrowserFetchForMarkdown": "Starting browser fetch for Markdown: {{url}}",
61
+ "errorInBrowserFetchForMarkdown": "Error in browser fetch for Markdown: {{error}}",
62
+ "fetchRequest": "Browser fetch request: {{url}}",
63
+ "usingStoredCookies": "Using stored cookies for domain: {{domain}}",
64
+ "closingInstance": "Closing browser instance",
65
+ "fetchErrorWithAttempt": "Error in browser fetch (attempt {{attempt}}/{{maxAttempts}}): {{error}}",
66
+ "retryingAfterDelay": "Retrying after {{delayMs}}ms delay...",
67
+ "browserStartupSuccess": "Browser started successfully",
68
+ "browserStartupFailed": "Browser startup failed: {{error}}",
69
+ "usingCustomChromePath": "Using custom Chrome path: {{path}}",
70
+ "browserDisconnected": "Browser disconnected",
71
+ "waitingForBrowserStart": "Waiting for browser to start",
72
+ "reusingExistingBrowser": "Reusing existing browser instance",
73
+ "startingBrowser": "Starting browser",
74
+ "browserStarted": "Browser started successfully",
75
+ "browserStartError": "Browser startup error: {{error}}"
62
76
  };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../../../src/lib/i18n/locales/en/browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qCAAqC;AACrC,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAE,gBAAgB;IACxB,QAAQ,EAAE,+BAA+B;IACzC,cAAc,EAAE,mCAAmC;IACnD,OAAO,EAAE,iCAAiC;IAC1C,cAAc,EAAE,8BAA8B;IAC9C,UAAU,EAAE,sBAAsB;IAClC,kBAAkB,EAAE,oCAAoC;IACxD,iBAAiB,EAAE,kCAAkC;IACrD,SAAS,EAAE,wBAAwB;IACnC,eAAe,EAAE,uBAAuB;IACxC,cAAc,EAAE,yBAAyB;IACzC,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,4BAA4B;IAC3C,gBAAgB,EAAE,kCAAkC;IACpD,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,mCAAmC;IAC/C,UAAU,EAAE,6DAA6D;IACzE,kBAAkB,EAAE,6CAA6C;IACjE,YAAY,EAAE,kCAAkC;IAChD,SAAS,EAAE,+BAA+B;IAC1C,gBAAgB,EAAE,wCAAwC;IAC1D,YAAY,EAAE,6CAA6C;IAC3D,UAAU,EAAE,wBAAwB;IACpC,kBAAkB,EAAE,uCAAuC;IAC3D,kBAAkB,EAAE,yDAAyD;IAC7E,eAAe,EAAE,8BAA8B;IAC/C,oBAAoB,EAAE,4CAA4C;IAClE,iBAAiB,EAAE,2DAA2D;IAC9E,YAAY,EAAE,wCAAwC;IACtD,eAAe,EAAE,iDAAiD;IAClE,uBAAuB,EAAE,6EAA6E;IACtG,iBAAiB,EAAE,2EAA2E;IAC9F,WAAW,EAAE,qEAAqE;IAClF,aAAa,EAAE,8EAA8E;IAC7F,wBAAwB,EAAE,6EAA6E;IACvG,eAAe,EAAE,kCAAkC;IACnD,iBAAiB,EAAE,iCAAiC;IACpD,+BAA+B,EAAE,8CAA8C;IAC/E,8BAA8B,EAAE,gDAAgD;IAChF,YAAY,EAAE,gCAAgC;IAC9C,kBAAkB,EAAE,6CAA6C;IACjE,eAAe,EAAE,0BAA0B;IAC3C,qBAAqB,EAAE,yEAAyE;IAChG,kBAAkB,EAAE,uCAAuC;IAC3D,qBAAqB,EAAE,8BAA8B;IACrD,oBAAoB,EAAE,mCAAmC;IACzD,qBAAqB,EAAE,oCAAoC;IAC3D,mBAAmB,EAAE,sBAAsB;IAC3C,sBAAsB,EAAE,8BAA8B;IACtD,sBAAsB,EAAE,mCAAmC;IAC3D,eAAe,EAAE,kBAAkB;IACnC,cAAc,EAAE,8BAA8B;IAC9C,iBAAiB,EAAE,kCAAkC;CACtD,CAAC"}