proxy-pool-manager 1.0.2 → 1.0.4

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.
package/README.md CHANGED
@@ -52,6 +52,38 @@ const responseWithProxy = await sdk.post('http://your-api.com/request', {
52
52
  console.log(response.data);
53
53
  ```
54
54
 
55
+ ### 轻量级模式 + 代理数组(支持异常时自动轮换)
56
+
57
+ 如果你需要代理管理但不想连接 MongoDB,可以传入代理数组:
58
+
59
+ ```typescript
60
+ import { createProxyRequest } from 'proxy-pool-manager';
61
+
62
+ // 创建轻量级 SDK 实例 + 代理数组(不连接 MongoDB)
63
+ const sdk = await createProxyRequest({
64
+ proxies: [
65
+ 'proxy1.example.com:8080:user1:pass1',
66
+ 'proxy2.example.com:8080:user2:pass2',
67
+ 'proxy3.example.com:8080:user3:pass3'
68
+ ],
69
+ proxyStrategy: 'sequential', // 顺序策略
70
+ maxRetries: 3,
71
+ timeout: 30,
72
+ logLevel: 'info'
73
+ });
74
+
75
+ // 发送请求,会自动使用代理管理器选择的代理
76
+ // 如果代理失败,会自动轮换到下一个代理并重试
77
+ const response = await sdk.post('http://your-api.com/request', {
78
+ url: 'https://api.example.com/data',
79
+ method: 'GET',
80
+ timeout: 10
81
+ });
82
+
83
+ console.log('当前使用的代理:', sdk.getCurrentProxy());
84
+ console.log('可用代理列表:', sdk.getAvailableProxies());
85
+ ```
86
+
55
87
  ### 完整模式(包含代理管理功能)
56
88
 
57
89
  如果需要代理管理功能(自动轮换、健康检查等),需要提供 MongoDB 连接:
@@ -87,6 +119,35 @@ const responseWithSpecificProxy = await sdk.post('http://your-api.com/request',
87
119
  console.log(response.data);
88
120
  ```
89
121
 
122
+ ### 完整模式 + 代理数组(支持异常时自动轮换)
123
+
124
+ 如果需要代理管理功能,并且想预先设置代理列表:
125
+
126
+ ```typescript
127
+ import { createProxyRequest } from 'proxy-pool-manager';
128
+
129
+ // 创建完整 SDK 实例 + 代理数组(连接 MongoDB)
130
+ const sdk = await createProxyRequest({
131
+ mongoUri: 'mongodb://localhost:27017/proxy_db',
132
+ proxies: [
133
+ 'proxy1.example.com:8080:user1:pass1',
134
+ 'proxy2.example.com:8080:user2:pass2',
135
+ 'proxy3.example.com:8080:user3:pass3'
136
+ ],
137
+ proxyStrategy: 'failover', // 故障转移策略
138
+ maxRetries: 3,
139
+ timeout: 30,
140
+ proxyCheckOptions: {
141
+ mainUrl: 'http://example.com/check',
142
+ timeout: 10,
143
+ }
144
+ });
145
+
146
+ // 代理会被保存到 MongoDB,并支持自动轮换
147
+ // 如果请求失败,会自动轮换到下一个代理并重试
148
+ const response = await sdk.get('https://api.example.com/data');
149
+ ```
150
+
90
151
  ### 添加代理
91
152
 
92
153
  ```typescript
@@ -158,6 +219,11 @@ interface SDKOptions {
158
219
  proxyStrategy?: ProxyStrategy; // 代理策略,默认 'sequential'
159
220
  logLevel?: LogLevel; // 日志级别,默认 'info'
160
221
  instanceId?: string; // 实例 ID,用于多实例场景
222
+ proxies?: string[]; // 代理数组,支持异常时自动轮换
223
+ proxy?: string; // 单个代理
224
+ retryDelay?: number; // 重试间隔(毫秒),默认使用指数退避策略
225
+ retryDelayBase?: number; // 指数退避的基础延迟(毫秒),默认 1000
226
+ retryDelayMultiplier?: number; // 指数退避的倍数,默认 2
161
227
  proxyCheckEnabled?: boolean; // 是否启用代理检查,默认 true
162
228
  proxyLimit?: number; // 代理加载限制,0 表示不加载,默认 0
163
229
  proxyCheckOptions?: { // 代理检查配置(启用代理管理时需要)
@@ -175,7 +241,9 @@ interface SDKOptions {
175
241
  **配置说明:**
176
242
 
177
243
  - **轻量级模式**:不提供 `mongoUri` 和 `proxyCheckOptions`,SDK 将以轻量级模式运行,不连接 MongoDB,不初始化代理管理功能
244
+ - **轻量级模式 + 代理数组**:提供 `proxies` 或 `proxy` 但不提供 `mongoUri`,SDK 将以轻量级模式运行,代理仅存储在内存中,支持异常时自动轮换
178
245
  - **完整模式**:提供 `mongoUri` 或 `proxyCheckOptions`,SDK 将启用代理管理功能
246
+ - **完整模式 + 代理数组**:同时提供 `mongoUri` 和 `proxies`,代理会被保存到 MongoDB,并支持异常时自动轮换
179
247
  - **禁用代理检查**:设置 `proxyCheckEnabled: false` 可禁用代理检查
180
248
  - **不加载代理**:设置 `proxyLimit: 0` 可不从数据库加载代理
181
249
 
@@ -222,11 +290,256 @@ interface SDKOptions {
222
290
 
223
291
  ### 代理策略
224
292
 
225
- 支持三种代理选择策略:
293
+ 支持三种代理选择策略,每种策略都有不同的使用场景和特点:
294
+
295
+ #### 1. sequential(顺序策略)
296
+
297
+ **特点:**
298
+
299
+ - 按照代理列表的顺序依次使用代理
300
+ - 每次请求后自动切换到下一个代理
301
+ - 简单、可预测,适合需要均匀分配请求的场景
302
+
303
+ **使用场景:**
304
+
305
+ - 需要均匀分配请求到各个代理
306
+ - 代理质量相近,不需要特别优化
307
+ - 需要可预测的代理使用顺序
308
+
309
+ **示例:**
310
+ ```typescript
311
+ const sdk = await createProxyRequest({
312
+ proxies: [
313
+ 'proxy1.example.com:8080:user1:pass1',
314
+ 'proxy2.example.com:8080:user2:pass2',
315
+ 'proxy3.example.com:8080:user3:pass3'
316
+ ],
317
+ proxyStrategy: 'sequential'
318
+ });
319
+
320
+ // 第一次请求使用 proxy1
321
+ const response1 = await sdk.get('https://api.example.com/data');
322
+ // 第二次请求使用 proxy2
323
+ const response2 = await sdk.get('https://api.example.com/data');
324
+ // 第三次请求使用 proxy3
325
+ const response3 = await sdk.get('https://api.example.com/data');
326
+ // 第四次请求又回到 proxy1(循环)
327
+ ```
328
+
329
+ **轮换机制:**
330
+
331
+ - 请求失败时,自动切换到下一个代理并重试
332
+ - 如果所有代理都失败,停止重试
333
+
334
+ #### 2. random(随机策略)
335
+
336
+ **特点:**
337
+
338
+ - 从可用代理中随机选择一个使用
339
+ - 避免重复使用同一个代理,直到所有代理都被使用过
340
+ - 适合需要避免代理被过度使用的场景
341
+
342
+ **使用场景:**
343
+
344
+ - 需要避免某些代理被过度使用
345
+ - 代理质量相近,随机分配即可
346
+ - 需要分散请求负载
347
+
348
+ **示例:**
349
+ ```typescript
350
+ const sdk = await createProxyRequest({
351
+ proxies: [
352
+ 'proxy1.example.com:8080:user1:pass1',
353
+ 'proxy2.example.com:8080:user2:pass2',
354
+ 'proxy3.example.com:8080:user3:pass3'
355
+ ],
356
+ proxyStrategy: 'random'
357
+ });
358
+
359
+ // 每次请求随机选择一个代理
360
+ const response1 = await sdk.get('https://api.example.com/data');
361
+ const response2 = await sdk.get('https://api.example.com/data');
362
+ const response3 = await sdk.get('https://api.example.com/data');
363
+ ```
364
+
365
+ **轮换机制:**
366
+
367
+ - 随机选择代理,避免重复使用
368
+ - 当所有代理都被使用过后,重置使用记录
369
+ - 请求失败时,从剩余未使用的代理中随机选择并重试
370
+
371
+ #### 3. failover(故障转移策略)⭐ 推荐
372
+
373
+ **特点:**
374
+
375
+ - 智能选择最佳可用代理
376
+ - 根据代理的历史表现(失败率、响应时间)自动选择最优代理
377
+ - 优先使用失败率低、响应时间短的代理
378
+ - 适合需要高可用性和性能的场景
379
+ - **不需要 MongoDB**:统计信息存储在内存中,实时更新
380
+
381
+ **选择优先级:**
382
+
383
+ 1. **连续失败次数**:优先选择连续失败次数最少的代理
384
+ 2. **失败率**:在连续失败次数相同的情况下,选择失败率最低的代理
385
+ 3. **响应时间**:在失败率相同的情况下,选择平均响应时间最短的代理
386
+
387
+ **使用场景:**
388
+
389
+ - 需要高可用性和性能的场景
390
+ - 代理质量差异较大,需要自动选择最优代理
391
+ - 需要自动排除故障代理
392
+ - 对请求成功率要求较高的场景
393
+ - **轻量级模式**:不需要 MongoDB,仅使用内存统计
394
+
395
+ **示例:**
396
+
397
+ ```typescript
398
+ // 轻量级模式 + failover(不需要 MongoDB)
399
+ const sdk1 = await createProxyRequest({
400
+ proxies: [
401
+ 'proxy1.example.com:8080:user1:pass1', // 高质量代理
402
+ 'proxy2.example.com:8080:user2:pass2', // 中等质量代理
403
+ 'proxy3.example.com:8080:user3:pass3' // 低质量代理
404
+ ],
405
+ proxyStrategy: 'failover' // 不需要 MongoDB,统计信息存储在内存中
406
+ });
407
+
408
+ // 自动选择最优代理(失败率低、响应时间短)
409
+ const response = await sdk1.get('https://api.example.com/data');
410
+ ```
411
+
412
+ ```typescript
413
+ // 完整模式 + failover(使用 MongoDB 持久化统计信息)
414
+ const sdk2 = await createProxyRequest({
415
+ mongoUri: 'mongodb://localhost:27017/proxy_db',
416
+ proxies: [
417
+ 'proxy1.example.com:8080:user1:pass1',
418
+ 'proxy2.example.com:8080:user2:pass2',
419
+ 'proxy3.example.com:8080:user3:pass3'
420
+ ],
421
+ proxyStrategy: 'failover',
422
+ proxyCheckOptions: {
423
+ mainUrl: 'http://example.com/check'
424
+ }
425
+ });
426
+
427
+ // 统计信息会被持久化到 MongoDB,重启后仍然保留历史数据
428
+ const response = await sdk2.get('https://api.example.com/data');
429
+ ```
430
+
431
+ **统计信息说明:**
432
+
433
+ - **内存模式**(不提供 `mongoUri`):
434
+ - 统计信息存储在内存中,实时更新
435
+ - 重启后统计信息会重置
436
+ - 适合临时使用或单次运行场景
437
+
438
+ - **持久化模式**(提供 `mongoUri`):
439
+ - 统计信息会保存到 MongoDB
440
+ - 重启后仍然保留历史数据
441
+ - 适合长期运行或需要历史数据的场景
442
+
443
+ **轮换机制:**
444
+
445
+ - 请求失败时,自动标记当前代理的失败次数
446
+ - 下次请求时,自动选择表现最好的代理
447
+ - 连续失败超过阈值的代理会被标记为无效,不再使用
448
+ - 代理恢复后(成功请求),会自动重新启用
449
+
450
+ **故障转移流程:**
451
+
452
+ ```text
453
+ 1. 选择最优代理(连续失败次数最少 → 失败率最低 → 响应时间最短)
454
+ 2. 发送请求
455
+ 3. 如果失败:
456
+ - 增加代理的失败计数
457
+ - 如果连续失败次数超过阈值,标记为无效
458
+ - 下次请求时自动选择下一个最优代理
459
+ 4. 如果成功:
460
+ - 重置连续失败次数
461
+ - 更新平均响应时间
462
+ - 如果之前被标记为无效,自动恢复为有效状态
463
+ ```
464
+
465
+ **性能优化:**
466
+
467
+ - 自动排除故障代理,避免重复尝试
468
+ - 优先使用高质量代理,提高成功率
469
+ - 动态调整代理优先级,适应代理质量变化
470
+
471
+ **重要说明:**
472
+
473
+ - ✅ **不需要 MongoDB**:failover 策略可以在轻量级模式下使用,统计信息存储在内存中
474
+ - ✅ **实时更新**:每次请求后,统计信息会立即更新(成功/失败次数、响应时间等)
475
+ - ✅ **自动学习**:随着请求的进行,系统会自动学习每个代理的质量,并优先使用高质量代理
476
+ - 💡 **MongoDB 的作用**:如果提供 MongoDB,统计信息会被持久化,重启后仍然保留历史数据,有助于更快地识别高质量代理
477
+
478
+ ### 重试间隔配置
479
+
480
+ 支持两种重试间隔策略:
481
+
482
+ #### 1. 指数退避策略(默认)
483
+
484
+ 每次重试前等待时间递增,适合大多数场景:
485
+
486
+ ```typescript
487
+ const sdk = await createProxyRequest({
488
+ maxRetries: 3,
489
+ retryDelayBase: 1000, // 基础延迟 1000ms(默认)
490
+ retryDelayMultiplier: 2 // 倍数 2(默认)
491
+ });
492
+
493
+ // 重试间隔:第1次 1000ms,第2次 2000ms,第3次 4000ms
494
+ ```
495
+
496
+ **计算公式:** `waitTime = retryDelayBase × retryDelayMultiplier^(attempt-1)`
497
+
498
+ **示例:**
499
+ - 第1次重试:1000ms × 2^0 = 1000ms
500
+ - 第2次重试:1000ms × 2^1 = 2000ms
501
+ - 第3次重试:1000ms × 2^2 = 4000ms
226
502
 
227
- - **sequential**(顺序):按顺序使用代理列表中的代理
228
- - **random**(随机):随机选择可用代理
229
- - **failover**(故障转移):当前代理失败时自动切换到下一个
503
+ #### 2. 固定间隔策略
504
+
505
+ 每次重试前等待固定时间,适合需要稳定重试间隔的场景:
506
+
507
+ ```typescript
508
+ const sdk = await createProxyRequest({
509
+ maxRetries: 3,
510
+ retryDelay: 2000 // 每次重试都等待 2000ms
511
+ });
512
+
513
+ // 重试间隔:每次都是 2000ms
514
+ ```
515
+
516
+ **使用场景:**
517
+ - **指数退避**:适合网络不稳定、需要避免服务器压力的场景
518
+ - **固定间隔**:适合需要稳定重试节奏、便于调试的场景
519
+
520
+ **自定义配置示例:**
521
+
522
+ ```typescript
523
+ // 快速重试(500ms 基础,1.5倍递增)
524
+ const sdk1 = await createProxyRequest({
525
+ retryDelayBase: 500,
526
+ retryDelayMultiplier: 1.5
527
+ // 重试间隔:500ms → 750ms → 1125ms
528
+ });
529
+
530
+ // 慢速重试(2000ms 基础,2倍递增)
531
+ const sdk2 = await createProxyRequest({
532
+ retryDelayBase: 2000,
533
+ retryDelayMultiplier: 2
534
+ // 重试间隔:2000ms → 4000ms → 8000ms
535
+ });
536
+
537
+ // 固定间隔 3 秒
538
+ const sdk3 = await createProxyRequest({
539
+ retryDelay: 3000
540
+ // 重试间隔:每次都是 3000ms
541
+ });
542
+ ```
230
543
 
231
544
  ### 日志级别
232
545
 
@@ -272,6 +585,29 @@ const response = await sdk.post('http://your-api.com/request', {
272
585
  });
273
586
  ```
274
587
 
588
+ #### 场景 2.5:使用代理数组 + 异常时自动轮换(推荐)
589
+
590
+ ```typescript
591
+ // 轻量级模式 + 代理数组(不连接 MongoDB)
592
+ const sdk = await createProxyRequest({
593
+ proxies: [
594
+ 'proxy1.example.com:8080:user1:pass1',
595
+ 'proxy2.example.com:8080:user2:pass2',
596
+ 'proxy3.example.com:8080:user3:pass3'
597
+ ],
598
+ proxyStrategy: 'failover', // 故障转移策略
599
+ maxRetries: 3,
600
+ timeout: 30
601
+ });
602
+
603
+ // 发送请求,如果代理失败会自动轮换到下一个代理
604
+ const response = await sdk.post('http://your-api.com/request', {
605
+ url: 'https://api.example.com/data',
606
+ method: 'GET',
607
+ timeout: 10
608
+ });
609
+ ```
610
+
275
611
  #### 场景 3:需要代理管理功能
276
612
 
277
613
  ```typescript
@@ -365,7 +701,34 @@ const response = await sdk.post('http://your-api.com/request', {
365
701
  });
366
702
  ```
367
703
 
368
- #### 2. 自动使用代理管理器选择的代理(仅完整模式)
704
+ #### 2. 使用代理数组(支持异常时自动轮换)
705
+
706
+ ```typescript
707
+ // 创建 SDK 时传入代理数组
708
+ const sdk = await createProxyRequest({
709
+ proxies: [
710
+ 'proxy1.example.com:8080:user1:pass1',
711
+ 'proxy2.example.com:8080:user2:pass2',
712
+ 'proxy3.example.com:8080:user3:pass3'
713
+ ],
714
+ proxyStrategy: 'sequential', // 顺序策略
715
+ maxRetries: 3
716
+ });
717
+
718
+ // 发送请求,会自动使用代理管理器选择的代理
719
+ // 如果代理失败,会自动轮换到下一个代理并重试
720
+ const response = await sdk.post('http://your-api.com/request', {
721
+ url: 'https://api.example.com/data',
722
+ method: 'GET',
723
+ timeout: 10
724
+ });
725
+
726
+ // 查看当前使用的代理
727
+ console.log('当前代理:', sdk.getCurrentProxy());
728
+ console.log('可用代理:', sdk.getAvailableProxies());
729
+ ```
730
+
731
+ #### 3. 自动使用代理管理器选择的代理(完整模式)
369
732
 
370
733
  ```typescript
371
734
  // 先添加代理到管理器
@@ -381,7 +744,7 @@ const response = await sdk.post('http://your-api.com/request', {
381
744
  });
382
745
  ```
383
746
 
384
- #### 3. 代理优先级
747
+ #### 4. 代理优先级
385
748
 
386
749
  代理使用遵循以下优先级:
387
750
 
@@ -389,7 +752,63 @@ const response = await sdk.post('http://your-api.com/request', {
389
752
  2. **代理管理器自动选择** - 如果启用了代理管理且没有指定请求级代理
390
753
  3. **无代理** - 如果都没有,则直接请求(不使用代理)
391
754
 
392
- #### 4. 检查代理管理功能状态
755
+ #### 5. 异常时自动轮换
756
+
757
+ 当请求失败时(超时、连接错误等),系统会自动轮换到下一个代理并重试:
758
+
759
+ ```typescript
760
+ const sdk = await createProxyRequest({
761
+ proxies: [
762
+ 'proxy1.example.com:8080:user1:pass1',
763
+ 'proxy2.example.com:8080:user2:pass2',
764
+ 'proxy3.example.com:8080:user3:pass3'
765
+ ],
766
+ proxyStrategy: 'failover', // 推荐使用故障转移策略
767
+ maxRetries: 3 // 最多重试3次,每次失败会自动轮换代理
768
+ });
769
+
770
+ // 如果 proxy1 失败,会自动尝试 proxy2,再失败会尝试 proxy3
771
+ const response = await sdk.get('https://api.example.com/data');
772
+ ```
773
+
774
+ **轮换机制说明:**
775
+
776
+ - 只有在使用代理管理器选择的代理时才会轮换(如果请求中直接指定了代理,不会轮换)
777
+ - 支持两种重试间隔策略:
778
+ - **指数退避策略**(默认):每次重试前等待时间递增,公式为 `retryDelayBase × retryDelayMultiplier^(attempt-1)`
779
+ - 默认值:基础延迟 1000ms,倍数 2
780
+ - 示例:第1次重试等待 1000ms,第2次等待 2000ms,第3次等待 4000ms
781
+ - **固定间隔策略**:设置 `retryDelay` 后,每次重试前等待固定时间
782
+ - 示例:设置 `retryDelay: 2000`,每次重试都等待 2000ms
783
+ - 支持三种代理策略,每种策略的轮换方式不同:
784
+ - **sequential**:按顺序切换到下一个代理
785
+ - **random**:从剩余未使用的代理中随机选择
786
+ - **failover**:自动选择表现最好的代理(推荐)
787
+
788
+ **不同策略的轮换行为:**
789
+
790
+ | 策略 | 首次选择 | 失败后轮换 | 特点 |
791
+ |------|---------|-----------|------|
792
+ | sequential | 第一个代理 | 按顺序切换到下一个 | 简单、可预测 |
793
+ | random | 随机选择 | 从剩余代理中随机选择 | 分散负载 |
794
+ | failover | 最优代理 | 选择下一个最优代理 | 智能、高效 ⭐ |
795
+
796
+ **故障检测:**
797
+
798
+ 系统会自动检测以下类型的错误并触发代理轮换:
799
+
800
+ - 连接超时(TimeoutError)
801
+ - 连接被拒绝(ECONNREFUSED)
802
+ - 网络错误(网络相关关键词)
803
+ - HTTP 错误(根据配置)
804
+
805
+ **代理状态管理:**
806
+
807
+ - 连续失败超过阈值的代理会被标记为无效
808
+ - 无效代理不会参与选择,直到恢复
809
+ - 代理恢复后(成功请求),会自动重新启用
810
+
811
+ #### 6. 检查代理管理功能状态
393
812
 
394
813
  ```typescript
395
814
  // 检查是否启用了代理管理功能
package/dist/Request.d.ts CHANGED
@@ -6,6 +6,9 @@ export declare class Request {
6
6
  private proxyManager;
7
7
  private logLevel;
8
8
  private hasProxyManager;
9
+ private readonly retryDelay;
10
+ private readonly retryDelayBase;
11
+ private readonly retryDelayMultiplier;
9
12
  constructor(options?: RequestInitOptions);
10
13
  /**
11
14
  * 设置日志等级
@@ -1 +1 @@
1
- {"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../src/Request.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,YAAY,EAEZ,UAAU,EACV,QAAQ,EACT,MAAM,SAAS,CAAC;AAIjB,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,eAAe,CAAkB;gBAG7B,OAAO,GAAE,kBAAuB;IA6B5C;;KAEC;IACM,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAUzC;;OAEG;IACI,WAAW,IAAI,QAAQ;IAS9B;;MAEE;IACF,OAAO,CAAC,GAAG;IAiBX,eAAe;YACD,WAAW;IAkCzB;;OAEG;YACW,oBAAoB;IAuGlC,sBAAsB;IACtB,OAAO,CAAC,iBAAiB;IAMZ,GAAG,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAed,IAAI,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAQd,GAAG,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAQd,MAAM,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAQd,KAAK,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAQ3B,aAAa;IACA,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,UAAU,CAAC;QACnB,OAAO,EAAE,cAAc,CAAA;KACxB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAuE5B,mBAAmB;IACnB,OAAO,CAAC,aAAa;IAkBd,eAAe,IAAI,MAAM,GAAG,IAAI;IAO1B,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO3C,eAAe,IAAI,IAAI;IAOvB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAOzC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOlD,uBAAuB,IAAI,MAAM,EAAE;IAO1C;;OAEG;IACI,kBAAkB,IAAI,OAAO;CAGrC;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Request.d.ts","sourceRoot":"","sources":["../src/Request.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,YAAY,EAEZ,UAAU,EACV,QAAQ,EACT,MAAM,SAAS,CAAC;AAIjB,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;gBAGlC,OAAO,GAAE,kBAAuB;IAyC5C;;KAEC;IACM,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAUzC;;OAEG;IACI,WAAW,IAAI,QAAQ;IAS9B;;MAEE;IACF,OAAO,CAAC,GAAG;IAiBX,eAAe;YACD,WAAW;IAkCzB;;OAEG;YACW,oBAAoB;IAuGlC,sBAAsB;IACtB,OAAO,CAAC,iBAAiB;IAMZ,GAAG,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAed,IAAI,CAAC,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAQd,GAAG,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAQd,MAAM,CAAC,CAAC,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAQd,KAAK,CAAC,CAAC,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAQ3B,aAAa;IACA,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,UAAU,CAAC;QACnB,OAAO,EAAE,cAAc,CAAA;KACxB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAyF5B,mBAAmB;IACnB,OAAO,CAAC,aAAa;IAkBd,eAAe,IAAI,MAAM,GAAG,IAAI;IAO1B,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO3C,eAAe,IAAI,IAAI;IAOvB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAOzC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOlD,uBAAuB,IAAI,MAAM,EAAE;IAO1C;;OAEG;IACI,kBAAkB,IAAI,OAAO;CAGrC;AAED,eAAe,OAAO,CAAC"}
package/dist/index.d.ts CHANGED
@@ -20,6 +20,11 @@ export declare class ProxyRequestSDK {
20
20
  timeout?: number;
21
21
  proxyStrategy?: ProxyStrategy;
22
22
  logLevel?: LogLevel;
23
+ proxies?: string[];
24
+ proxy?: string;
25
+ retryDelay?: number;
26
+ retryDelayBase?: number;
27
+ retryDelayMultiplier?: number;
23
28
  proxyCheckOptions?: {
24
29
  mainUrl: string;
25
30
  testUrls?: string[];
@@ -30,6 +35,7 @@ export declare class ProxyRequestSDK {
30
35
  maxResponseTime?: number;
31
36
  };
32
37
  proxyCheckEnabled?: boolean;
38
+ proxyLimit?: number;
33
39
  instanceId?: string;
34
40
  });
35
41
  /**
@@ -103,6 +109,11 @@ export declare function initializeServices(options: {
103
109
  timeout?: number;
104
110
  proxyStrategy?: ProxyStrategy;
105
111
  logLevel?: LogLevel;
112
+ proxies?: string[];
113
+ proxy?: string;
114
+ retryDelay?: number;
115
+ retryDelayBase?: number;
116
+ retryDelayMultiplier?: number;
106
117
  proxyCheckOptions?: {
107
118
  mainUrl: string;
108
119
  testUrls?: string[];
@@ -122,6 +133,11 @@ export declare function createProxyRequest(options: {
122
133
  maxConcurrentChecks?: number;
123
134
  proxyStrategy?: ProxyStrategy;
124
135
  logLevel?: LogLevel;
136
+ proxies?: string[];
137
+ proxy?: string;
138
+ retryDelay?: number;
139
+ retryDelayBase?: number;
140
+ retryDelayMultiplier?: number;
125
141
  proxyCheckOptions?: {
126
142
  mainUrl: string;
127
143
  testUrls?: string[];
@@ -132,6 +148,7 @@ export declare function createProxyRequest(options: {
132
148
  maxResponseTime?: number;
133
149
  };
134
150
  proxyCheckEnabled?: boolean;
151
+ proxyLimit?: number;
135
152
  instanceId?: string;
136
153
  }): Promise<ProxyRequestSDK>;
137
154
  export declare function registerCoreServices(options: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}