ton-provider-system 0.1.0 → 0.1.1
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/dist/index.cjs +239 -44
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +102 -84
- package/dist/index.d.ts +102 -84
- package/dist/index.js +238 -44
- package/dist/index.js.map +1 -1
- package/package.json +5 -4
- package/rpc.json +7 -22
package/dist/index.d.cts
CHANGED
|
@@ -797,89 +797,6 @@ declare function createDefaultRegistry(logger?: Logger): ProviderRegistry;
|
|
|
797
797
|
*/
|
|
798
798
|
declare function createRegistryFromData(data: RpcConfig, logger?: Logger): ProviderRegistry;
|
|
799
799
|
|
|
800
|
-
/**
|
|
801
|
-
* Unified Provider System - Health Checker
|
|
802
|
-
*
|
|
803
|
-
* Tests provider connectivity, measures latency, and compares block heights.
|
|
804
|
-
* Identifies stale, degraded, or offline providers.
|
|
805
|
-
*/
|
|
806
|
-
|
|
807
|
-
interface HealthCheckConfig {
|
|
808
|
-
/** Request timeout in milliseconds */
|
|
809
|
-
timeoutMs: number;
|
|
810
|
-
/** Maximum blocks behind before marking as stale */
|
|
811
|
-
maxBlocksBehind: number;
|
|
812
|
-
/** Latency threshold (ms) for degraded status */
|
|
813
|
-
degradedLatencyMs: number;
|
|
814
|
-
}
|
|
815
|
-
/**
|
|
816
|
-
* Health Checker
|
|
817
|
-
*
|
|
818
|
-
* Tests provider health by calling getMasterchainInfo and measuring
|
|
819
|
-
* latency and block height.
|
|
820
|
-
*/
|
|
821
|
-
declare class HealthChecker {
|
|
822
|
-
private config;
|
|
823
|
-
private logger;
|
|
824
|
-
private results;
|
|
825
|
-
private highestSeqno;
|
|
826
|
-
constructor(config?: Partial<HealthCheckConfig>, logger?: Logger);
|
|
827
|
-
/**
|
|
828
|
-
* Test a single provider's health
|
|
829
|
-
*/
|
|
830
|
-
testProvider(provider: ResolvedProvider): Promise<ProviderHealthResult>;
|
|
831
|
-
/**
|
|
832
|
-
* Test multiple providers in parallel with staggered batches
|
|
833
|
-
*/
|
|
834
|
-
testProviders(providers: ResolvedProvider[], batchSize?: number, batchDelayMs?: number): Promise<ProviderHealthResult[]>;
|
|
835
|
-
/**
|
|
836
|
-
* Get the last health result for a provider
|
|
837
|
-
*/
|
|
838
|
-
getResult(providerId: string, network: Network): ProviderHealthResult | undefined;
|
|
839
|
-
/**
|
|
840
|
-
* Get all results for a network
|
|
841
|
-
*/
|
|
842
|
-
getResultsForNetwork(network: Network): ProviderHealthResult[];
|
|
843
|
-
/**
|
|
844
|
-
* Get available providers for a network (status = available or degraded)
|
|
845
|
-
*/
|
|
846
|
-
getAvailableProviders(network: Network): ProviderHealthResult[];
|
|
847
|
-
/**
|
|
848
|
-
* Get the best provider for a network (lowest latency among available)
|
|
849
|
-
*/
|
|
850
|
-
getBestProvider(network: Network): ProviderHealthResult | undefined;
|
|
851
|
-
/**
|
|
852
|
-
* Get highest known seqno for a network
|
|
853
|
-
*/
|
|
854
|
-
getHighestSeqno(network: Network): number;
|
|
855
|
-
/**
|
|
856
|
-
* Clear all results
|
|
857
|
-
*/
|
|
858
|
-
clearResults(): void;
|
|
859
|
-
/**
|
|
860
|
-
* Mark a provider as degraded (e.g., on 429 error)
|
|
861
|
-
*/
|
|
862
|
-
markDegraded(providerId: string, network: Network, error?: string): void;
|
|
863
|
-
/**
|
|
864
|
-
* Mark a provider as offline
|
|
865
|
-
*/
|
|
866
|
-
markOffline(providerId: string, network: Network, error?: string): void;
|
|
867
|
-
private getResultKey;
|
|
868
|
-
/**
|
|
869
|
-
* Get endpoint URL for a provider (handles dynamic providers like Orbs)
|
|
870
|
-
*/
|
|
871
|
-
private getEndpoint;
|
|
872
|
-
/**
|
|
873
|
-
* Call getMasterchainInfo API
|
|
874
|
-
*/
|
|
875
|
-
private callGetMasterchainInfo;
|
|
876
|
-
private sleep;
|
|
877
|
-
}
|
|
878
|
-
/**
|
|
879
|
-
* Create a health checker with default configuration
|
|
880
|
-
*/
|
|
881
|
-
declare function createHealthChecker(config?: Partial<HealthCheckConfig>, logger?: Logger): HealthChecker;
|
|
882
|
-
|
|
883
800
|
/**
|
|
884
801
|
* Unified Provider System - Rate Limiter
|
|
885
802
|
*
|
|
@@ -1030,6 +947,104 @@ declare function createRateLimiter(rps: number, logger?: Logger): TokenBucketRat
|
|
|
1030
947
|
*/
|
|
1031
948
|
declare function createRateLimiterManager(logger?: Logger): RateLimiterManager;
|
|
1032
949
|
|
|
950
|
+
/**
|
|
951
|
+
* Unified Provider System - Health Checker
|
|
952
|
+
*
|
|
953
|
+
* Tests provider connectivity, measures latency, and compares block heights.
|
|
954
|
+
* Identifies stale, degraded, or offline providers.
|
|
955
|
+
*/
|
|
956
|
+
|
|
957
|
+
interface HealthCheckConfig {
|
|
958
|
+
/** Request timeout in milliseconds */
|
|
959
|
+
timeoutMs: number;
|
|
960
|
+
/** Maximum blocks behind before marking as stale */
|
|
961
|
+
maxBlocksBehind: number;
|
|
962
|
+
/** Latency threshold (ms) for degraded status */
|
|
963
|
+
degradedLatencyMs: number;
|
|
964
|
+
}
|
|
965
|
+
/**
|
|
966
|
+
* Health Checker
|
|
967
|
+
*
|
|
968
|
+
* Tests provider health by calling getMasterchainInfo and measuring
|
|
969
|
+
* latency and block height.
|
|
970
|
+
*/
|
|
971
|
+
declare class HealthChecker {
|
|
972
|
+
private config;
|
|
973
|
+
private logger;
|
|
974
|
+
private results;
|
|
975
|
+
private highestSeqno;
|
|
976
|
+
private rateLimiter;
|
|
977
|
+
constructor(config?: Partial<HealthCheckConfig>, logger?: Logger, rateLimiter?: RateLimiterManager);
|
|
978
|
+
/**
|
|
979
|
+
* Set rate limiter (can be set after construction)
|
|
980
|
+
*/
|
|
981
|
+
setRateLimiter(rateLimiter: RateLimiterManager | null): void;
|
|
982
|
+
/**
|
|
983
|
+
* Test a single provider's health
|
|
984
|
+
*/
|
|
985
|
+
testProvider(provider: ResolvedProvider): Promise<ProviderHealthResult>;
|
|
986
|
+
/**
|
|
987
|
+
* Test multiple providers in parallel with staggered batches
|
|
988
|
+
*
|
|
989
|
+
* @param batchSize - Number of providers to test in parallel (default: 2)
|
|
990
|
+
* @param batchDelayMs - Delay between batches in milliseconds (default: 500 to avoid rate limits)
|
|
991
|
+
*/
|
|
992
|
+
testProviders(providers: ResolvedProvider[], batchSize?: number, batchDelayMs?: number): Promise<ProviderHealthResult[]>;
|
|
993
|
+
/**
|
|
994
|
+
* Get the last health result for a provider
|
|
995
|
+
*/
|
|
996
|
+
getResult(providerId: string, network: Network): ProviderHealthResult | undefined;
|
|
997
|
+
/**
|
|
998
|
+
* Get all results for a network
|
|
999
|
+
*/
|
|
1000
|
+
getResultsForNetwork(network: Network): ProviderHealthResult[];
|
|
1001
|
+
/**
|
|
1002
|
+
* Get available providers for a network (status = available or degraded)
|
|
1003
|
+
*/
|
|
1004
|
+
getAvailableProviders(network: Network): ProviderHealthResult[];
|
|
1005
|
+
/**
|
|
1006
|
+
* Get the best provider for a network (lowest latency among available)
|
|
1007
|
+
*/
|
|
1008
|
+
getBestProvider(network: Network): ProviderHealthResult | undefined;
|
|
1009
|
+
/**
|
|
1010
|
+
* Get highest known seqno for a network
|
|
1011
|
+
*/
|
|
1012
|
+
getHighestSeqno(network: Network): number;
|
|
1013
|
+
/**
|
|
1014
|
+
* Clear all results
|
|
1015
|
+
*/
|
|
1016
|
+
clearResults(): void;
|
|
1017
|
+
/**
|
|
1018
|
+
* Mark a provider as degraded (e.g., on 429 error)
|
|
1019
|
+
*/
|
|
1020
|
+
markDegraded(providerId: string, network: Network, error?: string): void;
|
|
1021
|
+
/**
|
|
1022
|
+
* Mark a provider as offline
|
|
1023
|
+
*/
|
|
1024
|
+
markOffline(providerId: string, network: Network, error?: string): void;
|
|
1025
|
+
private getResultKey;
|
|
1026
|
+
/**
|
|
1027
|
+
* Get endpoint URL for a provider (handles dynamic providers like Orbs)
|
|
1028
|
+
*/
|
|
1029
|
+
private getEndpoint;
|
|
1030
|
+
/**
|
|
1031
|
+
* Normalize endpoint for provider-specific requirements
|
|
1032
|
+
*
|
|
1033
|
+
* Note: normalizeV2Endpoint now handles all provider-specific cases correctly,
|
|
1034
|
+
* including Tatum (/jsonRPC), OnFinality (/public or /rpc), QuickNode, and GetBlock.
|
|
1035
|
+
*/
|
|
1036
|
+
private normalizeEndpointForProvider;
|
|
1037
|
+
/**
|
|
1038
|
+
* Call getMasterchainInfo API with provider-specific handling
|
|
1039
|
+
*/
|
|
1040
|
+
private callGetMasterchainInfo;
|
|
1041
|
+
private sleep;
|
|
1042
|
+
}
|
|
1043
|
+
/**
|
|
1044
|
+
* Create a health checker with default configuration
|
|
1045
|
+
*/
|
|
1046
|
+
declare function createHealthChecker(config?: Partial<HealthCheckConfig>, logger?: Logger, rateLimiter?: RateLimiterManager): HealthChecker;
|
|
1047
|
+
|
|
1033
1048
|
/**
|
|
1034
1049
|
* Unified Provider System - Provider Selector
|
|
1035
1050
|
*
|
|
@@ -1522,7 +1537,10 @@ declare function createBrowserAdapterForNetwork(network: Network, configPath?: s
|
|
|
1522
1537
|
* - toncenter.com: POST to /api/v2/jsonRPC
|
|
1523
1538
|
* - Chainstack: POST to /api/v2/jsonRPC (needs /jsonRPC suffix!)
|
|
1524
1539
|
* - TON Access (orbs): Already returns correct JSON-RPC endpoint
|
|
1525
|
-
* - QuickNode:
|
|
1540
|
+
* - QuickNode: Needs /jsonRPC appended to base URL
|
|
1541
|
+
* - GetBlock: Needs /jsonRPC appended to base URL
|
|
1542
|
+
* - Tatum: Gateway URLs need /jsonRPC appended (gateway.tatum.io/jsonRPC)
|
|
1543
|
+
* - OnFinality: Uses /public or /rpc path with query params - preserve query params
|
|
1526
1544
|
*/
|
|
1527
1545
|
declare function normalizeV2Endpoint(endpoint: string): string;
|
|
1528
1546
|
/**
|
package/dist/index.d.ts
CHANGED
|
@@ -797,89 +797,6 @@ declare function createDefaultRegistry(logger?: Logger): ProviderRegistry;
|
|
|
797
797
|
*/
|
|
798
798
|
declare function createRegistryFromData(data: RpcConfig, logger?: Logger): ProviderRegistry;
|
|
799
799
|
|
|
800
|
-
/**
|
|
801
|
-
* Unified Provider System - Health Checker
|
|
802
|
-
*
|
|
803
|
-
* Tests provider connectivity, measures latency, and compares block heights.
|
|
804
|
-
* Identifies stale, degraded, or offline providers.
|
|
805
|
-
*/
|
|
806
|
-
|
|
807
|
-
interface HealthCheckConfig {
|
|
808
|
-
/** Request timeout in milliseconds */
|
|
809
|
-
timeoutMs: number;
|
|
810
|
-
/** Maximum blocks behind before marking as stale */
|
|
811
|
-
maxBlocksBehind: number;
|
|
812
|
-
/** Latency threshold (ms) for degraded status */
|
|
813
|
-
degradedLatencyMs: number;
|
|
814
|
-
}
|
|
815
|
-
/**
|
|
816
|
-
* Health Checker
|
|
817
|
-
*
|
|
818
|
-
* Tests provider health by calling getMasterchainInfo and measuring
|
|
819
|
-
* latency and block height.
|
|
820
|
-
*/
|
|
821
|
-
declare class HealthChecker {
|
|
822
|
-
private config;
|
|
823
|
-
private logger;
|
|
824
|
-
private results;
|
|
825
|
-
private highestSeqno;
|
|
826
|
-
constructor(config?: Partial<HealthCheckConfig>, logger?: Logger);
|
|
827
|
-
/**
|
|
828
|
-
* Test a single provider's health
|
|
829
|
-
*/
|
|
830
|
-
testProvider(provider: ResolvedProvider): Promise<ProviderHealthResult>;
|
|
831
|
-
/**
|
|
832
|
-
* Test multiple providers in parallel with staggered batches
|
|
833
|
-
*/
|
|
834
|
-
testProviders(providers: ResolvedProvider[], batchSize?: number, batchDelayMs?: number): Promise<ProviderHealthResult[]>;
|
|
835
|
-
/**
|
|
836
|
-
* Get the last health result for a provider
|
|
837
|
-
*/
|
|
838
|
-
getResult(providerId: string, network: Network): ProviderHealthResult | undefined;
|
|
839
|
-
/**
|
|
840
|
-
* Get all results for a network
|
|
841
|
-
*/
|
|
842
|
-
getResultsForNetwork(network: Network): ProviderHealthResult[];
|
|
843
|
-
/**
|
|
844
|
-
* Get available providers for a network (status = available or degraded)
|
|
845
|
-
*/
|
|
846
|
-
getAvailableProviders(network: Network): ProviderHealthResult[];
|
|
847
|
-
/**
|
|
848
|
-
* Get the best provider for a network (lowest latency among available)
|
|
849
|
-
*/
|
|
850
|
-
getBestProvider(network: Network): ProviderHealthResult | undefined;
|
|
851
|
-
/**
|
|
852
|
-
* Get highest known seqno for a network
|
|
853
|
-
*/
|
|
854
|
-
getHighestSeqno(network: Network): number;
|
|
855
|
-
/**
|
|
856
|
-
* Clear all results
|
|
857
|
-
*/
|
|
858
|
-
clearResults(): void;
|
|
859
|
-
/**
|
|
860
|
-
* Mark a provider as degraded (e.g., on 429 error)
|
|
861
|
-
*/
|
|
862
|
-
markDegraded(providerId: string, network: Network, error?: string): void;
|
|
863
|
-
/**
|
|
864
|
-
* Mark a provider as offline
|
|
865
|
-
*/
|
|
866
|
-
markOffline(providerId: string, network: Network, error?: string): void;
|
|
867
|
-
private getResultKey;
|
|
868
|
-
/**
|
|
869
|
-
* Get endpoint URL for a provider (handles dynamic providers like Orbs)
|
|
870
|
-
*/
|
|
871
|
-
private getEndpoint;
|
|
872
|
-
/**
|
|
873
|
-
* Call getMasterchainInfo API
|
|
874
|
-
*/
|
|
875
|
-
private callGetMasterchainInfo;
|
|
876
|
-
private sleep;
|
|
877
|
-
}
|
|
878
|
-
/**
|
|
879
|
-
* Create a health checker with default configuration
|
|
880
|
-
*/
|
|
881
|
-
declare function createHealthChecker(config?: Partial<HealthCheckConfig>, logger?: Logger): HealthChecker;
|
|
882
|
-
|
|
883
800
|
/**
|
|
884
801
|
* Unified Provider System - Rate Limiter
|
|
885
802
|
*
|
|
@@ -1030,6 +947,104 @@ declare function createRateLimiter(rps: number, logger?: Logger): TokenBucketRat
|
|
|
1030
947
|
*/
|
|
1031
948
|
declare function createRateLimiterManager(logger?: Logger): RateLimiterManager;
|
|
1032
949
|
|
|
950
|
+
/**
|
|
951
|
+
* Unified Provider System - Health Checker
|
|
952
|
+
*
|
|
953
|
+
* Tests provider connectivity, measures latency, and compares block heights.
|
|
954
|
+
* Identifies stale, degraded, or offline providers.
|
|
955
|
+
*/
|
|
956
|
+
|
|
957
|
+
interface HealthCheckConfig {
|
|
958
|
+
/** Request timeout in milliseconds */
|
|
959
|
+
timeoutMs: number;
|
|
960
|
+
/** Maximum blocks behind before marking as stale */
|
|
961
|
+
maxBlocksBehind: number;
|
|
962
|
+
/** Latency threshold (ms) for degraded status */
|
|
963
|
+
degradedLatencyMs: number;
|
|
964
|
+
}
|
|
965
|
+
/**
|
|
966
|
+
* Health Checker
|
|
967
|
+
*
|
|
968
|
+
* Tests provider health by calling getMasterchainInfo and measuring
|
|
969
|
+
* latency and block height.
|
|
970
|
+
*/
|
|
971
|
+
declare class HealthChecker {
|
|
972
|
+
private config;
|
|
973
|
+
private logger;
|
|
974
|
+
private results;
|
|
975
|
+
private highestSeqno;
|
|
976
|
+
private rateLimiter;
|
|
977
|
+
constructor(config?: Partial<HealthCheckConfig>, logger?: Logger, rateLimiter?: RateLimiterManager);
|
|
978
|
+
/**
|
|
979
|
+
* Set rate limiter (can be set after construction)
|
|
980
|
+
*/
|
|
981
|
+
setRateLimiter(rateLimiter: RateLimiterManager | null): void;
|
|
982
|
+
/**
|
|
983
|
+
* Test a single provider's health
|
|
984
|
+
*/
|
|
985
|
+
testProvider(provider: ResolvedProvider): Promise<ProviderHealthResult>;
|
|
986
|
+
/**
|
|
987
|
+
* Test multiple providers in parallel with staggered batches
|
|
988
|
+
*
|
|
989
|
+
* @param batchSize - Number of providers to test in parallel (default: 2)
|
|
990
|
+
* @param batchDelayMs - Delay between batches in milliseconds (default: 500 to avoid rate limits)
|
|
991
|
+
*/
|
|
992
|
+
testProviders(providers: ResolvedProvider[], batchSize?: number, batchDelayMs?: number): Promise<ProviderHealthResult[]>;
|
|
993
|
+
/**
|
|
994
|
+
* Get the last health result for a provider
|
|
995
|
+
*/
|
|
996
|
+
getResult(providerId: string, network: Network): ProviderHealthResult | undefined;
|
|
997
|
+
/**
|
|
998
|
+
* Get all results for a network
|
|
999
|
+
*/
|
|
1000
|
+
getResultsForNetwork(network: Network): ProviderHealthResult[];
|
|
1001
|
+
/**
|
|
1002
|
+
* Get available providers for a network (status = available or degraded)
|
|
1003
|
+
*/
|
|
1004
|
+
getAvailableProviders(network: Network): ProviderHealthResult[];
|
|
1005
|
+
/**
|
|
1006
|
+
* Get the best provider for a network (lowest latency among available)
|
|
1007
|
+
*/
|
|
1008
|
+
getBestProvider(network: Network): ProviderHealthResult | undefined;
|
|
1009
|
+
/**
|
|
1010
|
+
* Get highest known seqno for a network
|
|
1011
|
+
*/
|
|
1012
|
+
getHighestSeqno(network: Network): number;
|
|
1013
|
+
/**
|
|
1014
|
+
* Clear all results
|
|
1015
|
+
*/
|
|
1016
|
+
clearResults(): void;
|
|
1017
|
+
/**
|
|
1018
|
+
* Mark a provider as degraded (e.g., on 429 error)
|
|
1019
|
+
*/
|
|
1020
|
+
markDegraded(providerId: string, network: Network, error?: string): void;
|
|
1021
|
+
/**
|
|
1022
|
+
* Mark a provider as offline
|
|
1023
|
+
*/
|
|
1024
|
+
markOffline(providerId: string, network: Network, error?: string): void;
|
|
1025
|
+
private getResultKey;
|
|
1026
|
+
/**
|
|
1027
|
+
* Get endpoint URL for a provider (handles dynamic providers like Orbs)
|
|
1028
|
+
*/
|
|
1029
|
+
private getEndpoint;
|
|
1030
|
+
/**
|
|
1031
|
+
* Normalize endpoint for provider-specific requirements
|
|
1032
|
+
*
|
|
1033
|
+
* Note: normalizeV2Endpoint now handles all provider-specific cases correctly,
|
|
1034
|
+
* including Tatum (/jsonRPC), OnFinality (/public or /rpc), QuickNode, and GetBlock.
|
|
1035
|
+
*/
|
|
1036
|
+
private normalizeEndpointForProvider;
|
|
1037
|
+
/**
|
|
1038
|
+
* Call getMasterchainInfo API with provider-specific handling
|
|
1039
|
+
*/
|
|
1040
|
+
private callGetMasterchainInfo;
|
|
1041
|
+
private sleep;
|
|
1042
|
+
}
|
|
1043
|
+
/**
|
|
1044
|
+
* Create a health checker with default configuration
|
|
1045
|
+
*/
|
|
1046
|
+
declare function createHealthChecker(config?: Partial<HealthCheckConfig>, logger?: Logger, rateLimiter?: RateLimiterManager): HealthChecker;
|
|
1047
|
+
|
|
1033
1048
|
/**
|
|
1034
1049
|
* Unified Provider System - Provider Selector
|
|
1035
1050
|
*
|
|
@@ -1522,7 +1537,10 @@ declare function createBrowserAdapterForNetwork(network: Network, configPath?: s
|
|
|
1522
1537
|
* - toncenter.com: POST to /api/v2/jsonRPC
|
|
1523
1538
|
* - Chainstack: POST to /api/v2/jsonRPC (needs /jsonRPC suffix!)
|
|
1524
1539
|
* - TON Access (orbs): Already returns correct JSON-RPC endpoint
|
|
1525
|
-
* - QuickNode:
|
|
1540
|
+
* - QuickNode: Needs /jsonRPC appended to base URL
|
|
1541
|
+
* - GetBlock: Needs /jsonRPC appended to base URL
|
|
1542
|
+
* - Tatum: Gateway URLs need /jsonRPC appended (gateway.tatum.io/jsonRPC)
|
|
1543
|
+
* - OnFinality: Uses /public or /rpc path with query params - preserve query params
|
|
1526
1544
|
*/
|
|
1527
1545
|
declare function normalizeV2Endpoint(endpoint: string): string;
|
|
1528
1546
|
/**
|