proxy-pool-manager 1.0.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.
@@ -0,0 +1,95 @@
1
+ import { AsyncQueueOptions, QueueStats, Task, LogLevel } from "./types";
2
+ declare class AsyncQueueSingleton<T = any> {
3
+ private static instances;
4
+ private concurrency;
5
+ private autoStart;
6
+ private onDrain;
7
+ private onError;
8
+ private onSuccess;
9
+ private taskHandler;
10
+ private instanceName;
11
+ private queue;
12
+ private isInitialized;
13
+ private logLevel;
14
+ constructor(name?: string, options?: AsyncQueueOptions<T>);
15
+ private defaultTaskHandler;
16
+ private initializeQueue;
17
+ add(task: Task, priority?: number): Promise<T>;
18
+ addBatch(tasks: Task[], priority?: number): Promise<T[]>;
19
+ updateConcurrency(newConcurrency: number): void;
20
+ pause(): this;
21
+ resume(): this;
22
+ get length(): number;
23
+ get running(): number;
24
+ get workersList(): any[];
25
+ get idle(): boolean;
26
+ get stats(): QueueStats;
27
+ getName(): string;
28
+ setTaskHandler(handler: (task: Task) => Promise<T>): void;
29
+ destroy(): void;
30
+ /**
31
+ * 统一的日志记录方法
32
+ */
33
+ private log;
34
+ /**
35
+ * 设置日志等级
36
+ */
37
+ setLogLevel(level: LogLevel): void;
38
+ /**
39
+ * 获取当前日志等级
40
+ */
41
+ getLogLevel(): LogLevel;
42
+ /**
43
+ * 获取指定名称的队列实例
44
+ * @param name 实例名称,用于区分不同用途的队列
45
+ * @param options 队列配置选项
46
+ */
47
+ static getInstance<T = any>(name?: string, options?: AsyncQueueOptions<T>): AsyncQueueSingleton<T>;
48
+ /**
49
+ * 获取所有实例名称列表
50
+ */
51
+ static getInstanceNames(): string[];
52
+ /**
53
+ * 获取所有实例的统计信息
54
+ */
55
+ static getAllInstancesStats(): Record<string, QueueStats>;
56
+ /**
57
+ * 销毁指定名称的实例
58
+ * @param name 实例名称,默认为 'default'
59
+ */
60
+ static destroyInstance(name?: string): void;
61
+ /**
62
+ * 销毁所有实例
63
+ */
64
+ static destroyAllInstances(): void;
65
+ /**
66
+ * 检查指定名称的实例是否存在
67
+ */
68
+ static hasInstance(name?: string): boolean;
69
+ /**
70
+ * 获取指定名称的实例(不创建新实例)
71
+ */
72
+ static getExistingInstance<T = any>(name?: string): AsyncQueueSingleton<T> | null;
73
+ /**
74
+ * 简化的debug日志
75
+ */
76
+ debug(message: string, data?: any): void;
77
+ /**
78
+ * 简化的info日志
79
+ */
80
+ info(message: string, data?: any): void;
81
+ /**
82
+ * 简化的warn日志
83
+ */
84
+ warn(message: string, data?: any): void;
85
+ /**
86
+ * 简化的error日志
87
+ */
88
+ error(message: string, data?: any): void;
89
+ /**
90
+ * 简化的verbose日志
91
+ */
92
+ verbose(message: string, data?: any): void;
93
+ }
94
+ export { AsyncQueueSingleton, AsyncQueueOptions, QueueStats, Task };
95
+ //# sourceMappingURL=AsyncQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncQueue.d.ts","sourceRoot":"","sources":["../src/AsyncQueue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import 'winston-daily-rotate-file';
2
+ import { LogLevel } from "./types";
3
+ export declare class DebugManager {
4
+ private static instance;
5
+ private logLevel;
6
+ private logger;
7
+ private readonly logLevelPriority;
8
+ private constructor();
9
+ static getInstance(): DebugManager;
10
+ private initializeLogger;
11
+ /**
12
+ * 将自定义日志等级映射到 winston 等级
13
+ */
14
+ private getWinstonLevel;
15
+ /**
16
+ * 设置日志等级(核心方法)
17
+ */
18
+ setLogLevel(level: LogLevel): void;
19
+ /**
20
+ * 获取当前日志等级
21
+ */
22
+ getLogLevel(): LogLevel;
23
+ private logInternal;
24
+ /**
25
+ * 统一的日志记录方法(核心修改 - 在这里统一过滤)
26
+ */
27
+ log(level: LogLevel, message: string, data?: any): void;
28
+ /**
29
+ * 简化的error日志
30
+ */
31
+ error(message: string, data?: any): void;
32
+ /**
33
+ * 简化的warn日志
34
+ */
35
+ warn(message: string, data?: any): void;
36
+ /**
37
+ * 简化的info日志
38
+ */
39
+ info(message: string, data?: any): void;
40
+ /**
41
+ * 简化的debug日志
42
+ */
43
+ debug(message: string, data?: any): void;
44
+ /**
45
+ * 简化的verbose日志
46
+ */
47
+ verbose(message: string, data?: any): void;
48
+ }
49
+ export declare const debugManager: DebugManager;
50
+ export declare const safeLog: any;
51
+ //# sourceMappingURL=DebugManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DebugManager.d.ts","sourceRoot":"","sources":["../src/DebugManager.ts"],"names":[],"mappings":"AAGA,OAAO,2BAA2B,CAAC;AAEnC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,qBAAa,YAAY;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,MAAM,CAAiB;IAG/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAO/B;IAEF,OAAO;WAIO,WAAW,IAAI,YAAY;IAOzC,OAAO,CAAC,gBAAgB;IAmDxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKzC;;OAEG;IACI,WAAW,IAAI,QAAQ;IAI9B,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAI9D;;OAEG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAI/C;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAI9C;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAI9C;;OAEG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;IAI/C;;OAEG;IACI,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI;CAGpD;AAED,eAAO,MAAM,YAAY,cAA6B,CAAC;AACvD,eAAO,MAAM,OAAO,KAAsC,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { LogLevel } from "./types";
2
+ import { MongoProxyManager } from "./mongoUtils";
3
+ export declare class ProxyUrlBulkInsertManager {
4
+ private mongoManager;
5
+ private batchSize;
6
+ private concurrency;
7
+ private debug;
8
+ constructor(mongoManager: MongoProxyManager, batchSize?: number, concurrency?: number, logLevel?: LogLevel);
9
+ setLogLevel(level: LogLevel): void;
10
+ getLogLevel(): LogLevel;
11
+ /**
12
+ * 自动设置 debug 模式(仅在 debug 为 true 时注册)
13
+ */
14
+ private setDebugMode;
15
+ /**
16
+ * 统一的日志记录方法(通过服务定位器)
17
+ */
18
+ private log;
19
+ /**
20
+ * 将URL数组拆分为多个批次
21
+ */
22
+ private chunkArray;
23
+ /**
24
+ * 并发处理批次
25
+ */
26
+ private processInBatches;
27
+ /**
28
+ * 从URL数组批量插入代理,仅添加数据库中不存在的记录
29
+ * @param proxyUrls 代理URL字符串数组
30
+ * @returns 实际插入的数量
31
+ */
32
+ bulkInsertFromUrls(proxyUrls: string[]): Promise<number>;
33
+ /**
34
+ * 处理单个URL批次,仅插入不存在的代理
35
+ */
36
+ private processUrlBatch;
37
+ }
38
+ //# sourceMappingURL=ProxyUrlBulkInsertManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyUrlBulkInsertManager.d.ts","sourceRoot":"","sources":["../src/ProxyUrlBulkInsertManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAIjD,qBAAa,yBAAyB;IAClC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAU;gBAInB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,GAAE,MAAY,EACvB,WAAW,GAAE,MAAU,EACvB,QAAQ,CAAC,EAAE,QAAQ;IAchB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAYlC,WAAW,IAAI,QAAQ;IAS9B;;GAED;IACC,OAAO,CAAC,YAAY;IA6BpB;;OAEG;IACH,OAAO,CAAC,GAAG;IAgBX;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;YACW,gBAAgB;IA2C9B;;;;OAIG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA4B9D;;OAEG;YACW,eAAe;CA2ChC"}
@@ -0,0 +1,50 @@
1
+ import { ProxyStrategy, RequestOptions, RequestInitOptions, HttpResponse, HTTPMethod, LogLevel } from "./types";
2
+ export declare class Request {
3
+ private readonly maxRetries;
4
+ private readonly proxyStrategy;
5
+ private readonly timeout;
6
+ private proxyManager;
7
+ private logLevel;
8
+ constructor(options?: RequestInitOptions);
9
+ /**
10
+ * 设置日志等级
11
+ */
12
+ setLogLevel(level: LogLevel): void;
13
+ /**
14
+ * 获取当前日志等级
15
+ */
16
+ getLogLevel(): LogLevel;
17
+ /**
18
+ * 统一的日志记录方法
19
+ */
20
+ private log;
21
+ /** 代理选择逻辑抽离 */
22
+ private selectProxy;
23
+ /**
24
+ * 执行单个请求(优化错误处理和重试逻辑)
25
+ */
26
+ private executeSingleRequest;
27
+ /** 验证状态码是否有效(可配置化) */
28
+ private isValidStatusCode;
29
+ get<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
30
+ post<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
31
+ put<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
32
+ delete<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
33
+ patch<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
34
+ /** 核心请求方法 */
35
+ request<T>(config: {
36
+ url: string;
37
+ method: HTTPMethod;
38
+ options: RequestOptions;
39
+ }): Promise<HttpResponse<T>>;
40
+ /** 获取状态码对应的文本描述 */
41
+ private getStatusText;
42
+ getCurrentProxy(): string | null;
43
+ rotateProxy(): Promise<string | null>;
44
+ resetProxyUsage(): void;
45
+ setProxyStrategy(strategy: ProxyStrategy): void;
46
+ checkProxy(proxy?: string): Promise<boolean>;
47
+ getAvailableProxiesList(): string[];
48
+ }
49
+ export default Request;
50
+ //# sourceMappingURL=Request.d.ts.map
@@ -0,0 +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,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAW;gBAGf,OAAO,GAAE,kBAAuB;IA4B5C;;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;IA0BzB;;OAEG;YACW,oBAAoB;IA2FlC,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;IAoE5B,mBAAmB;IACnB,OAAO,CAAC,aAAa;IAkBd,eAAe,IAAI,MAAM,GAAG,IAAI;IAI1B,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI3C,eAAe,IAAI,IAAI;IAIvB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAIzC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlD,uBAAuB,IAAI,MAAM,EAAE;CAG3C;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,94 @@
1
+ export declare class ServiceLocator {
2
+ private static services;
3
+ private static dependencies;
4
+ /**
5
+ * 统一的日志等级检查方法
6
+ */
7
+ private static shouldLog;
8
+ /**
9
+ * 针对高频服务的特殊日志过滤
10
+ */
11
+ private static shouldLogForService;
12
+ /**
13
+ * 获取服务
14
+ */
15
+ static get<T>(name: string): T;
16
+ /**
17
+ * 检查服务是否存在
18
+ */
19
+ static has(name: string): boolean;
20
+ /**
21
+ * 注册服务实例
22
+ */
23
+ static register<T>(name: string, service: T): void;
24
+ /**
25
+ * 注册服务工厂(延迟初始化)
26
+ */
27
+ static registerFactory<T>(name: string, factory: () => T): void;
28
+ /**
29
+ * 统一的日志记录方法
30
+ */
31
+ private static log;
32
+ /**
33
+ * 获取所有已注册的服务名称
34
+ */
35
+ static getAvailableServiceNames(): string[];
36
+ /**
37
+ * 获取服务统计信息
38
+ */
39
+ static getStats(): {
40
+ totalServices: number;
41
+ totalFactories: number;
42
+ serviceNames: string[];
43
+ factoryNames: string[];
44
+ };
45
+ /**
46
+ * 检查服务定位器是否已初始化
47
+ */
48
+ static isInitialized(): boolean;
49
+ /**
50
+ * 获取服务类型名称
51
+ */
52
+ private static getServiceType;
53
+ /**
54
+ * 批量注册服务
55
+ */
56
+ static registerMultiple(services: Record<string, any>): void;
57
+ /**
58
+ * 安全获取服务(不抛出异常)
59
+ */
60
+ static safeGet<T>(name: string, defaultValue?: T): T | undefined;
61
+ /**
62
+ * 重置服务定位器(用于测试)
63
+ */
64
+ static reset(): void;
65
+ /**
66
+ * 初始化服务定位器
67
+ */
68
+ static initialize(): void;
69
+ /**
70
+ * 清除所有服务(用于测试)
71
+ */
72
+ static clear(): void;
73
+ /**
74
+ * 移除特定服务
75
+ */
76
+ static removeService(name: string): boolean;
77
+ /**
78
+ * 获取服务实例(不触发工厂创建)
79
+ */
80
+ static getExistingInstance<T>(name: string): T | undefined;
81
+ /**
82
+ * 检查是否只有工厂方法
83
+ */
84
+ static hasOnlyFactory(name: string): boolean;
85
+ /**
86
+ * 获取服务数量统计
87
+ */
88
+ static getCounts(): {
89
+ instances: number;
90
+ factories: number;
91
+ total: number;
92
+ };
93
+ }
94
+ //# sourceMappingURL=ServiceLocator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceLocator.d.ts","sourceRoot":"","sources":["../src/ServiceLocator.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA0B;IACjD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAgC;IAE3D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IA4BxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAuBlC;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IA0C9B;;OAEG;IACH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAejC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI;IAYlD;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI;IAW/D;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,GAAG;IA+BlB;;OAEG;IACH,MAAM,CAAC,wBAAwB,IAAI,MAAM,EAAE;IAmB3C;;OAEG;IACH,MAAM,CAAC,QAAQ,IAAI;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB;IAmBD;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,OAAO;IAe/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAsB7B;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAa5D;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAYhE;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAMpB;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAMzB;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAapB;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAkB3C;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAO1D;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI5C;;OAEG;IACH,MAAM,CAAC,SAAS,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAW5E"}
@@ -0,0 +1,163 @@
1
+ import { ProxyUrlBulkInsertManager } from './ProxyUrlBulkInsertManager';
2
+ import { Request } from './Request';
3
+ import { ProxyManager } from './proxyManager';
4
+ import { MongoProxyManager } from './mongoUtils';
5
+ import { ServiceLocator } from './ServiceLocator';
6
+ import { DebugManager } from './DebugManager';
7
+ import { AsyncQueueSingleton } from './AsyncQueue';
8
+ import type { RequestOptions, HttpResponse, BrowserImpersonate, ProxyStrategy, ProxyItem, ProxyCheckOptions, ProxyManagerOptions, MongoConfig, LogLevel } from './types';
9
+ export { ProxyUrlBulkInsertManager, Request, ProxyManager, MongoProxyManager, ServiceLocator, DebugManager, AsyncQueueSingleton };
10
+ export type { RequestOptions, HttpResponse, BrowserImpersonate, ProxyStrategy, ProxyItem, ProxyCheckOptions, ProxyManagerOptions, MongoConfig };
11
+ export declare class ProxyRequestSDK {
12
+ private requestInstance;
13
+ private proxyManagerInstance;
14
+ private bulkInsertManager;
15
+ private isInitialized;
16
+ private instanceId;
17
+ constructor(options: {
18
+ mongoUri: string;
19
+ maxRetries?: number;
20
+ timeout?: number;
21
+ proxyStrategy?: ProxyStrategy;
22
+ logLevel?: LogLevel;
23
+ proxyCheckOptions: {
24
+ mainUrl: string;
25
+ testUrls?: string[];
26
+ timeout?: number;
27
+ successStatusCodes?: number[];
28
+ checkInterval?: number;
29
+ maxConsecutiveFails?: number;
30
+ maxResponseTime?: number;
31
+ };
32
+ instanceId?: string;
33
+ });
34
+ /**
35
+ * 统一的日志记录方法
36
+ */
37
+ private log;
38
+ /**
39
+ * 异步初始化
40
+ */
41
+ private initializeAsync;
42
+ /**
43
+ * 等待初始化完成
44
+ */
45
+ waitForReady(): Promise<void>;
46
+ /**
47
+ * 设置日志等级
48
+ */
49
+ setLogLevel(level: LogLevel): void;
50
+ /**
51
+ * 获取当前日志等级
52
+ */
53
+ getLogLevel(): LogLevel;
54
+ /**
55
+ * 获取服务注册信息
56
+ */
57
+ getServiceInfo(): Record<string, boolean>;
58
+ get<T>(url: string, params?: Record<string, string>, options?: RequestOptions): Promise<HttpResponse<T>>;
59
+ post<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
60
+ put<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
61
+ delete<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
62
+ patch<T>(url: string, options?: RequestOptions): Promise<HttpResponse<T>>;
63
+ request<T>(config: {
64
+ url: string;
65
+ method?: string;
66
+ data?: unknown;
67
+ options?: RequestOptions;
68
+ }): Promise<HttpResponse<T>>;
69
+ addProxy(proxyUrl: string): Promise<ProxyItem | null>;
70
+ deleteProxy(proxyUrl: string): Promise<boolean>;
71
+ getAvailableProxies(): string[];
72
+ getCurrentProxy(): string | null;
73
+ rotateProxy(): Promise<string | null>;
74
+ setProxyStrategy(strategy: ProxyStrategy): void;
75
+ checkProxy(proxy?: string): Promise<boolean>;
76
+ triggerProxyCheck(): Promise<void>;
77
+ bulkInsertProxies(proxyUrls: string[]): Promise<number>;
78
+ getProxyStats(): Promise<{
79
+ total: number;
80
+ valid: number;
81
+ invalid: number;
82
+ available: number;
83
+ }>;
84
+ getProxyDetails(proxyUrl: string): ProxyItem | undefined;
85
+ getQueueStats(): import("./types").QueueStats;
86
+ getInstanceId(): string;
87
+ destroy(): Promise<void>;
88
+ }
89
+ export default ProxyRequestSDK;
90
+ /**
91
+ * 安全的服务初始化函数,确保正确的初始化顺序
92
+ */
93
+ export declare function initializeServices(options: {
94
+ mongoUri: string;
95
+ proxyLimit?: number;
96
+ maxRetries?: number;
97
+ maxConcurrentChecks?: number;
98
+ timeout?: number;
99
+ proxyStrategy?: ProxyStrategy;
100
+ logLevel?: LogLevel;
101
+ proxyCheckOptions: {
102
+ mainUrl: string;
103
+ testUrls?: string[];
104
+ timeout?: number;
105
+ successStatusCodes?: number[];
106
+ checkInterval?: number;
107
+ maxConsecutiveFails?: number;
108
+ maxResponseTime?: number;
109
+ };
110
+ instanceId?: string;
111
+ }): Promise<ProxyRequestSDK>;
112
+ export declare function createProxyRequest(options: {
113
+ mongoUri: string;
114
+ maxRetries?: number;
115
+ timeout?: number;
116
+ maxConcurrentChecks?: number;
117
+ proxyStrategy?: ProxyStrategy;
118
+ logLevel?: LogLevel;
119
+ proxyCheckOptions: {
120
+ mainUrl: string;
121
+ testUrls?: string[];
122
+ timeout?: number;
123
+ successStatusCodes?: number[];
124
+ checkInterval?: number;
125
+ maxConsecutiveFails?: number;
126
+ maxResponseTime?: number;
127
+ };
128
+ instanceId?: string;
129
+ }): Promise<ProxyRequestSDK>;
130
+ export declare function registerCoreServices(options: {
131
+ mongoUri: string;
132
+ logLevel?: LogLevel;
133
+ instanceId?: string;
134
+ }): void;
135
+ export declare function registerRequestFactory(factory: () => Request, instanceId?: string): void;
136
+ export declare function registerProxyManagerFactory(factory: () => ProxyManager, instanceId?: string): void;
137
+ export declare function bulkInsertProxyUrls(options: {
138
+ mongoUri: string;
139
+ proxyUrls: string[];
140
+ batchSize?: number;
141
+ concurrency?: number;
142
+ logLevel?: LogLevel;
143
+ }): Promise<number>;
144
+ export declare function getStandaloneServices(options: {
145
+ mongoUri: string;
146
+ logLevel?: LogLevel;
147
+ instanceId?: string;
148
+ }): {
149
+ proxyManager: ProxyManager;
150
+ request: Request;
151
+ mongoManager: MongoProxyManager;
152
+ asyncQueue: AsyncQueueSingleton;
153
+ };
154
+ export declare function cleanupServices(): void;
155
+ export declare function checkServicesHealth(mongoUri: string, instanceId?: string): Promise<{
156
+ mongo: boolean;
157
+ proxyManager: boolean;
158
+ asyncQueues: string[];
159
+ services: Record<string, boolean>;
160
+ }>;
161
+ export declare const VERSION = "1.0.0";
162
+ export { getFormattedDate, getMainDirectory } from './utils';
163
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}