@explorins/pers-sdk 1.1.2 → 1.2.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.
- package/dist/analytics/api/analytics-api.d.ts +17 -0
- package/dist/analytics/api/analytics-api.d.ts.map +1 -0
- package/{src/analytics/index.ts → dist/analytics/index.d.ts} +28 -52
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/models/index.d.ts +61 -0
- package/dist/analytics/models/index.d.ts.map +1 -0
- package/dist/analytics/services/analytics-service.d.ts +19 -0
- package/dist/analytics/services/analytics-service.d.ts.map +1 -0
- package/dist/analytics.cjs +76 -0
- package/dist/analytics.cjs.map +1 -0
- package/dist/analytics.js +72 -0
- package/dist/analytics.js.map +1 -0
- package/dist/auth-admin/api/auth-admin-api.d.ts +27 -0
- package/dist/auth-admin/api/auth-admin-api.d.ts.map +1 -0
- package/dist/auth-admin/index.d.ts +26 -0
- package/dist/auth-admin/index.d.ts.map +1 -0
- package/dist/auth-admin/services/auth-admin-service.d.ts +23 -0
- package/dist/auth-admin/services/auth-admin-service.d.ts.map +1 -0
- package/dist/auth-admin.cjs +96 -0
- package/dist/auth-admin.cjs.map +1 -0
- package/dist/auth-admin.js +92 -0
- package/dist/auth-admin.js.map +1 -0
- package/dist/business/api/business-api.d.ts +133 -0
- package/dist/business/api/business-api.d.ts.map +1 -0
- package/dist/business/index.d.ts +34 -0
- package/dist/business/index.d.ts.map +1 -0
- package/dist/business/models/index.d.ts +8 -0
- package/dist/business/models/index.d.ts.map +1 -0
- package/dist/business/services/business-service.d.ts +51 -0
- package/dist/business/services/business-service.d.ts.map +1 -0
- package/dist/business.cjs +303 -0
- package/dist/business.cjs.map +1 -0
- package/dist/business.js +299 -0
- package/dist/business.js.map +1 -0
- package/dist/campaign/api/campaign-api.d.ts +213 -0
- package/dist/campaign/api/campaign-api.d.ts.map +1 -0
- package/dist/campaign/index.d.ts +44 -0
- package/dist/campaign/index.d.ts.map +1 -0
- package/dist/campaign/services/campaign-service.d.ts +88 -0
- package/dist/campaign/services/campaign-service.d.ts.map +1 -0
- package/dist/campaign.cjs +506 -0
- package/dist/campaign.cjs.map +1 -0
- package/dist/campaign.js +502 -0
- package/dist/campaign.js.map +1 -0
- package/dist/core/abstractions/http-client.d.ts +22 -0
- package/dist/core/abstractions/http-client.d.ts.map +1 -0
- package/dist/core/auth/auth-provider.interface.d.ts +12 -0
- package/dist/core/auth/auth-provider.interface.d.ts.map +1 -0
- package/dist/core/auth/create-auth-provider.d.ts +27 -0
- package/dist/core/auth/create-auth-provider.d.ts.map +1 -0
- package/dist/core/auth/simple-auth-config.interface.d.ts +15 -0
- package/dist/core/auth/simple-auth-config.interface.d.ts.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/pers-api-client.d.ts +54 -0
- package/dist/core/pers-api-client.d.ts.map +1 -0
- package/dist/core/pers-config.d.ts +38 -0
- package/dist/core/pers-config.d.ts.map +1 -0
- package/dist/core/utils/jwt.function.d.ts +2 -0
- package/dist/core/utils/jwt.function.d.ts.map +1 -0
- package/dist/core.cjs +506 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.js +497 -0
- package/dist/core.js.map +1 -0
- package/dist/donation/api/donation-api.d.ts +18 -0
- package/dist/donation/api/donation-api.d.ts.map +1 -0
- package/dist/donation/index.d.ts +25 -0
- package/dist/donation/index.d.ts.map +1 -0
- package/{src/donation/models/index.ts → dist/donation/models/index.d.ts} +8 -11
- package/dist/donation/models/index.d.ts.map +1 -0
- package/dist/donation/services/donation-service.d.ts +19 -0
- package/dist/donation/services/donation-service.d.ts.map +1 -0
- package/dist/donation.cjs +78 -0
- package/dist/donation.cjs.map +1 -0
- package/dist/donation.js +74 -0
- package/dist/donation.js.map +1 -0
- package/dist/index.cjs +4217 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4164 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json +129 -0
- package/dist/payment/api/payment-api.d.ts +105 -0
- package/dist/payment/api/payment-api.d.ts.map +1 -0
- package/dist/payment/index.d.ts +36 -0
- package/dist/payment/index.d.ts.map +1 -0
- package/dist/payment/models/index.d.ts +12 -0
- package/dist/payment/models/index.d.ts.map +1 -0
- package/dist/payment/services/payment-service.d.ts +40 -0
- package/dist/payment/services/payment-service.d.ts.map +1 -0
- package/dist/payment.cjs +258 -0
- package/dist/payment.cjs.map +1 -0
- package/dist/payment.js +254 -0
- package/dist/payment.js.map +1 -0
- package/dist/pers-sdk.d.ts +29 -0
- package/dist/pers-sdk.d.ts.map +1 -0
- package/dist/redemption/api/redemption-api.d.ts +147 -0
- package/dist/redemption/api/redemption-api.d.ts.map +1 -0
- package/dist/redemption/index.d.ts +35 -0
- package/dist/redemption/index.d.ts.map +1 -0
- package/dist/redemption/models/index.d.ts +8 -0
- package/dist/redemption/models/index.d.ts.map +1 -0
- package/dist/redemption/services/redemption-service.d.ts +56 -0
- package/dist/redemption/services/redemption-service.d.ts.map +1 -0
- package/dist/redemption.cjs +333 -0
- package/dist/redemption.cjs.map +1 -0
- package/dist/redemption.js +329 -0
- package/dist/redemption.js.map +1 -0
- package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts +18 -0
- package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts.map +1 -0
- package/dist/tenant/api/tenant-api.d.ts +56 -0
- package/dist/tenant/api/tenant-api.d.ts.map +1 -0
- package/dist/tenant/index.d.ts +34 -0
- package/dist/tenant/index.d.ts.map +1 -0
- package/dist/tenant/models/index.d.ts +11 -0
- package/dist/tenant/models/index.d.ts.map +1 -0
- package/dist/tenant/services/tenant-service.d.ts +46 -0
- package/dist/tenant/services/tenant-service.d.ts.map +1 -0
- package/dist/tenant.cjs +177 -0
- package/dist/tenant.cjs.map +1 -0
- package/dist/tenant.js +173 -0
- package/dist/tenant.js.map +1 -0
- package/dist/token/api/token-api.d.ts +64 -0
- package/dist/token/api/token-api.d.ts.map +1 -0
- package/dist/token/base/base-token-service.d.ts +87 -0
- package/dist/token/base/base-token-service.d.ts.map +1 -0
- package/dist/token/index.d.ts +13 -0
- package/dist/token/index.d.ts.map +1 -0
- package/dist/token/models/index.d.ts +18 -0
- package/dist/token/models/index.d.ts.map +1 -0
- package/dist/token/services/token-service.d.ts +68 -0
- package/dist/token/services/token-service.d.ts.map +1 -0
- package/dist/token/token-sdk.d.ts +140 -0
- package/dist/token/token-sdk.d.ts.map +1 -0
- package/dist/token.cjs +537 -0
- package/dist/token.cjs.map +1 -0
- package/dist/token.js +532 -0
- package/dist/token.js.map +1 -0
- package/dist/transaction/api/transaction-api.d.ts +133 -0
- package/dist/transaction/api/transaction-api.d.ts.map +1 -0
- package/dist/transaction/index.d.ts +38 -0
- package/dist/transaction/index.d.ts.map +1 -0
- package/dist/transaction/models/index.d.ts +42 -0
- package/dist/transaction/models/index.d.ts.map +1 -0
- package/dist/transaction/services/transaction-service.d.ts +56 -0
- package/dist/transaction/services/transaction-service.d.ts.map +1 -0
- package/dist/transaction.cjs +394 -0
- package/dist/transaction.cjs.map +1 -0
- package/dist/transaction.js +390 -0
- package/dist/transaction.js.map +1 -0
- package/dist/user/api/user-api.d.ts +56 -0
- package/dist/user/api/user-api.d.ts.map +1 -0
- package/dist/user/index.d.ts +36 -0
- package/dist/user/index.d.ts.map +1 -0
- package/{src/user/models/index.ts → dist/user/models/index.d.ts} +12 -10
- package/dist/user/models/index.d.ts.map +1 -0
- package/dist/user/services/user-service.d.ts +46 -0
- package/dist/user/services/user-service.d.ts.map +1 -0
- package/dist/user-status/api/user-status-api.d.ts +37 -0
- package/dist/user-status/api/user-status-api.d.ts.map +1 -0
- package/dist/user-status/index.d.ts +28 -0
- package/dist/user-status/index.d.ts.map +1 -0
- package/{src/user-status/models/index.ts → dist/user-status/models/index.d.ts} +8 -11
- package/dist/user-status/models/index.d.ts.map +1 -0
- package/dist/user-status/services/user-status-service.d.ts +26 -0
- package/dist/user-status/services/user-status-service.d.ts.map +1 -0
- package/dist/user-status.cjs +147 -0
- package/dist/user-status.cjs.map +1 -0
- package/dist/user-status.js +143 -0
- package/dist/user-status.js.map +1 -0
- package/dist/user.cjs +188 -0
- package/dist/user.cjs.map +1 -0
- package/dist/user.js +184 -0
- package/dist/user.js.map +1 -0
- package/dist/web3/api/web3-api.d.ts +27 -0
- package/dist/web3/api/web3-api.d.ts.map +1 -0
- package/dist/web3/index.d.ts +16 -0
- package/dist/web3/index.d.ts.map +1 -0
- package/dist/web3/models/index.d.ts +92 -0
- package/dist/web3/models/index.d.ts.map +1 -0
- package/dist/web3/services/web3-service.d.ts +21 -0
- package/dist/web3/services/web3-service.d.ts.map +1 -0
- package/dist/web3-chain/api/web3-chain-api.d.ts +19 -0
- package/dist/web3-chain/api/web3-chain-api.d.ts.map +1 -0
- package/dist/web3-chain/index.d.ts +17 -0
- package/dist/web3-chain/index.d.ts.map +1 -0
- package/{src/web3-chain/models/index.ts → dist/web3-chain/models/index.d.ts} +38 -45
- package/dist/web3-chain/models/index.d.ts.map +1 -0
- package/dist/web3-chain/services/getWeb3FCD.service.d.ts +8 -0
- package/dist/web3-chain/services/getWeb3FCD.service.d.ts.map +1 -0
- package/dist/web3-chain/services/provider.service.d.ts +15 -0
- package/dist/web3-chain/services/provider.service.d.ts.map +1 -0
- package/dist/web3-chain/services/public-http-provider.service.d.ts +8 -0
- package/dist/web3-chain/services/public-http-provider.service.d.ts.map +1 -0
- package/dist/web3-chain/services/web3-chain-service.d.ts +17 -0
- package/dist/web3-chain/services/web3-chain-service.d.ts.map +1 -0
- package/dist/web3-chain.cjs +316 -0
- package/dist/web3-chain.cjs.map +1 -0
- package/dist/web3-chain.js +310 -0
- package/dist/web3-chain.js.map +1 -0
- package/dist/web3.cjs +516 -0
- package/dist/web3.cjs.map +1 -0
- package/dist/web3.js +513 -0
- package/dist/web3.js.map +1 -0
- package/package.json +56 -72
- package/config/domains.js +0 -22
- package/explorins-pers-sdk-1.0.0-alpha.1.tgz +0 -0
- package/rollup.config.js +0 -74
- package/scripts/copy-declarations.js +0 -147
- package/src/analytics/api/analytics-api.ts +0 -24
- package/src/analytics/models/index.ts +0 -74
- package/src/analytics/services/analytics-service.ts +0 -28
- package/src/auth-admin/api/auth-admin-api.ts +0 -42
- package/src/auth-admin/index.ts +0 -47
- package/src/auth-admin/services/auth-admin-service.ts +0 -36
- package/src/business/api/business-api.ts +0 -234
- package/src/business/index.ts +0 -53
- package/src/business/models/index.ts +0 -13
- package/src/business/services/business-service.ts +0 -88
- package/src/campaign/api/campaign-api.ts +0 -376
- package/src/campaign/index.ts +0 -67
- package/src/campaign/services/campaign-service.ts +0 -164
- package/src/core/abstractions/http-client.ts +0 -24
- package/src/core/auth/auth-provider.interface.ts +0 -16
- package/src/core/auth/create-auth-provider.ts +0 -136
- package/src/core/auth/simple-auth-config.interface.ts +0 -15
- package/src/core/index.ts +0 -33
- package/src/core/pers-api-client.ts +0 -343
- package/src/core/pers-config.ts +0 -65
- package/src/core/utils/jwt.function.ts +0 -24
- package/src/donation/api/donation-api.ts +0 -24
- package/src/donation/index.ts +0 -47
- package/src/donation/services/donation-service.ts +0 -25
- package/src/index.ts +0 -55
- package/src/payment/api/payment-api.ts +0 -185
- package/src/payment/index.ts +0 -64
- package/src/payment/models/index.ts +0 -29
- package/src/payment/services/payment-service.ts +0 -70
- package/src/pers-sdk.ts +0 -45
- package/src/redemption/api/redemption-api.ts +0 -241
- package/src/redemption/index.ts +0 -60
- package/src/redemption/models/index.ts +0 -17
- package/src/redemption/services/redemption-service.ts +0 -103
- package/src/shared/interfaces/pers-shared-lib.interfaces.ts +0 -99
- package/src/tenant/api/tenant-api.ts +0 -92
- package/src/tenant/index.ts +0 -61
- package/src/tenant/models/index.ts +0 -20
- package/src/tenant/services/tenant-service.ts +0 -78
- package/src/token/api/token-api.ts +0 -129
- package/src/token/base/base-token-service.ts +0 -167
- package/src/token/index.ts +0 -38
- package/src/token/models/index.ts +0 -30
- package/src/token/services/token-service.ts +0 -125
- package/src/token/token-sdk.ts +0 -231
- package/src/transaction/api/transaction-api.ts +0 -296
- package/src/transaction/index.ts +0 -65
- package/src/transaction/models/index.ts +0 -60
- package/src/transaction/services/transaction-service.ts +0 -104
- package/src/user/api/user-api.ts +0 -98
- package/src/user/index.ts +0 -62
- package/src/user/services/user-service.ts +0 -75
- package/src/user-status/api/user-status-api.ts +0 -78
- package/src/user-status/index.ts +0 -55
- package/src/user-status/services/user-status-service.ts +0 -51
- package/src/web3/api/web3-api.ts +0 -68
- package/src/web3/index.ts +0 -38
- package/src/web3/models/index.ts +0 -150
- package/src/web3/services/web3-service.ts +0 -338
- package/src/web3-chain/api/web3-chain-api.ts +0 -42
- package/src/web3-chain/index.ts +0 -27
- package/src/web3-chain/services/getWeb3FCD.service.ts +0 -47
- package/src/web3-chain/services/provider.service.ts +0 -123
- package/src/web3-chain/services/public-http-provider.service.ts +0 -26
- package/src/web3-chain/services/web3-chain-service.ts +0 -131
- package/tsconfig.json +0 -28
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import Web3 from "web3";
|
|
2
|
-
import { ChainData, ChainType, ChainTypes } from "@explorins/web3-ts";
|
|
3
|
-
import { PublicHttpProviderService } from "./public-http-provider.service";
|
|
4
|
-
import { getWeb3ProviderFromChainData } from "./getWeb3FCD.service";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export class Web3ProviderService {
|
|
8
|
-
|
|
9
|
-
private _web3: Web3 | null = null;
|
|
10
|
-
private _currentChainId: number | null = null;
|
|
11
|
-
|
|
12
|
-
constructor(
|
|
13
|
-
private readonly publicHttpProviderService: PublicHttpProviderService,
|
|
14
|
-
) {
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
public async getWeb3(chainId: number, chainType: ChainType, privateChainData: ChainData | null = null) {
|
|
18
|
-
if (!this._web3 || this._currentChainId !== chainId) {
|
|
19
|
-
|
|
20
|
-
if(!chainId) throw new Error('ChainId not found')
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
this._currentChainId = chainId;
|
|
24
|
-
const provider = await this.getWeb3ByChainId(chainId, chainType, privateChainData);
|
|
25
|
-
this._web3 = this.convertToWeb3(provider);
|
|
26
|
-
} catch (error) {
|
|
27
|
-
console.error('Error getting web3 connection from chain id ' + chainId , error)
|
|
28
|
-
throw new Error('Error getting web3 connection from chain id ' + chainId)
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return this._web3 as Web3;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// Keep return type as 'any' to avoid TypeScript errors while still being adapted later
|
|
35
|
-
private getWeb3ByChainId(chainId: number, chainType: ChainType, privateChainData: ChainData | null = null): any {
|
|
36
|
-
// Rest of the method remains the same
|
|
37
|
-
if(chainType === ChainTypes.PRIVATE && privateChainData) {
|
|
38
|
-
//const privateProvider = this.privateChainProviderService.getProviderFromChainData(privateChainData)
|
|
39
|
-
const privateProvider = getWeb3ProviderFromChainData(privateChainData);
|
|
40
|
-
|
|
41
|
-
if(!privateProvider || privateProvider instanceof Error) throw new Error('Error getting web3 provider');
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return privateProvider;
|
|
45
|
-
|
|
46
|
-
} else {
|
|
47
|
-
|
|
48
|
-
const publicProvider = this.publicHttpProviderService.getProvider(chainId)
|
|
49
|
-
if(!publicProvider || publicProvider instanceof Error) throw new Error('Error getting web3 provider');
|
|
50
|
-
|
|
51
|
-
return publicProvider;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
private convertToWeb3(provider: unknown): Web3 {
|
|
56
|
-
if (provider instanceof Web3) {
|
|
57
|
-
return provider as Web3;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
if (provider && typeof provider === 'object' && 'web3Provider' in provider) {
|
|
61
|
-
const providerObj = provider as {
|
|
62
|
-
web3Provider?: unknown;
|
|
63
|
-
ethersProvider?: any;
|
|
64
|
-
isAuthenticated?: boolean;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
// If we want to user the web3Provider directly:
|
|
68
|
-
/*if (providerObj.web3Provider) {
|
|
69
|
-
return new Web3(providerObj.web3Provider as never);
|
|
70
|
-
}*/
|
|
71
|
-
|
|
72
|
-
if (providerObj.ethersProvider) {
|
|
73
|
-
|
|
74
|
-
const url = this.extractUrlFromEthersProvider(providerObj.ethersProvider);
|
|
75
|
-
const headers = this.extractHeadersFromEthersProvider(providerObj.ethersProvider);
|
|
76
|
-
|
|
77
|
-
const web3 = new Web3(url);
|
|
78
|
-
const currentProvider = web3.currentProvider as unknown as Record<string, unknown>;
|
|
79
|
-
|
|
80
|
-
if (currentProvider) {
|
|
81
|
-
currentProvider['url'] = url;
|
|
82
|
-
|
|
83
|
-
if (headers && Object.keys(headers).length > 0) {
|
|
84
|
-
currentProvider['request'] = async (payload: Record<string, unknown>): Promise<Record<string, unknown>> => {
|
|
85
|
-
const response = await fetch(url, {
|
|
86
|
-
method: 'POST',
|
|
87
|
-
headers: {
|
|
88
|
-
'Content-Type': 'application/json',
|
|
89
|
-
...headers
|
|
90
|
-
},
|
|
91
|
-
body: JSON.stringify(payload)
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
if (!response.ok) {
|
|
95
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return await response.json() as Record<string, unknown>;
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return web3;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return new Web3(provider as never);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
private extractUrlFromEthersProvider(ethersProvider: any): string {
|
|
112
|
-
return ethersProvider.connection?.url ||
|
|
113
|
-
ethersProvider._getConnection?.()?.url ||
|
|
114
|
-
ethersProvider.url ||
|
|
115
|
-
'';
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
private extractHeadersFromEthersProvider(ethersProvider: any): Record<string, string> {
|
|
119
|
-
return ethersProvider.connection?.headers ||
|
|
120
|
-
ethersProvider._getConnection?.()?.headers ||
|
|
121
|
-
{};
|
|
122
|
-
}
|
|
123
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import type { PublicWeb3ProviderData } from "@explorins/web3/types";
|
|
2
|
-
import type Web3 from "web3";
|
|
3
|
-
|
|
4
|
-
import { adaptToWeb3, getPublicWeb3ConnectionFromChainId } from "@explorins/web3-ts";
|
|
5
|
-
|
|
6
|
-
export class PublicHttpProviderService {
|
|
7
|
-
private $providerData: PublicWeb3ProviderData | null;
|
|
8
|
-
|
|
9
|
-
constructor(providerData: PublicWeb3ProviderData | null = null) {
|
|
10
|
-
this.$providerData = providerData;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public getProvider(chainId: number): Web3 {
|
|
14
|
-
const providerApiKey = this.$providerData ? this.$providerData?.apiKey || null : null;
|
|
15
|
-
if (!providerApiKey) throw new Error('Provider API key not found');
|
|
16
|
-
|
|
17
|
-
try {
|
|
18
|
-
// Use the adapter function instead of unsafe type casting
|
|
19
|
-
const provider = getPublicWeb3ConnectionFromChainId(chainId, 'infuraHttp', providerApiKey);
|
|
20
|
-
return adaptToWeb3(provider);
|
|
21
|
-
} catch (error) {
|
|
22
|
-
console.error('Error getting web3 connection from chain id ' + chainId, error);
|
|
23
|
-
throw new Error('Error getting web3 connection from chain id ' + chainId);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { Web3ChainApi } from '../api/web3-chain-api';
|
|
2
|
-
import { ChainData, CachedChainInstance } from '../models';
|
|
3
|
-
import type { Web3 } from 'web3';
|
|
4
|
-
import { isTokenExpired } from '../../core/utils/jwt.function';
|
|
5
|
-
import { Web3ProviderService } from './provider.service';
|
|
6
|
-
|
|
7
|
-
export class Web3ChainService {
|
|
8
|
-
|
|
9
|
-
private web3InstanceCache = new Map<number, CachedChainInstance>();
|
|
10
|
-
|
|
11
|
-
constructor(
|
|
12
|
-
private web3ChainApi: Web3ChainApi,
|
|
13
|
-
private providerService: Web3ProviderService
|
|
14
|
-
) {}
|
|
15
|
-
|
|
16
|
-
async getWeb3ByChainId(chainId: number): Promise<Web3> {
|
|
17
|
-
const cached = this.web3InstanceCache.get(chainId);
|
|
18
|
-
|
|
19
|
-
// ✅ SMART CACHE: Check if cache is valid based on token expiration
|
|
20
|
-
if (cached && !this.checkIsTokenExpired(cached.chainData.authHeader)) {
|
|
21
|
-
console.log(`♻️ [Web3ChainService] Using cached Web3 instance for chain ${chainId}`);
|
|
22
|
-
return cached.web3Instance;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// ✅ CREATE WITH ERROR RECOVERY: Handle auth errors gracefully
|
|
26
|
-
try {
|
|
27
|
-
console.log(`🔧 [Web3ChainService] Creating new Web3 instance for chain ${chainId}`);
|
|
28
|
-
const { web3, chainData } = await this.createWeb3Instance(chainId);
|
|
29
|
-
|
|
30
|
-
// ✅ CACHE NEW INSTANCE
|
|
31
|
-
this.web3InstanceCache.set(chainId, {
|
|
32
|
-
web3Instance: web3,
|
|
33
|
-
chainData: chainData,
|
|
34
|
-
createdAt: Date.now(),
|
|
35
|
-
chainId
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
return web3;
|
|
39
|
-
} catch (error) {
|
|
40
|
-
// ✅ AUTH ERROR RECOVERY: Clear cache and retry once
|
|
41
|
-
if (this.isAuthError(error)) {
|
|
42
|
-
console.warn(`🔄 [Web3ChainService] Auth error detected, clearing cache and retrying...`);
|
|
43
|
-
this.web3InstanceCache.delete(chainId);
|
|
44
|
-
|
|
45
|
-
// Retry once with fresh instance
|
|
46
|
-
const { web3, chainData } = await this.createWeb3Instance(chainId);
|
|
47
|
-
|
|
48
|
-
this.web3InstanceCache.set(chainId, {
|
|
49
|
-
web3Instance: web3,
|
|
50
|
-
chainData: chainData,
|
|
51
|
-
createdAt: Date.now(),
|
|
52
|
-
chainId
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
return web3;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
throw error;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
async getChainDataWithCache(chainId: number): Promise<ChainData> {
|
|
63
|
-
const cached = this.web3InstanceCache.get(chainId);
|
|
64
|
-
//const now = Date.now();
|
|
65
|
-
|
|
66
|
-
if (cached && !this.checkIsTokenExpired(cached.chainData.authHeader)) {
|
|
67
|
-
console.log(`♻️ [Web3ChainService] Using cached ChainData for chain ${chainId}`);
|
|
68
|
-
return cached.chainData;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// If not cached, fetch fresh data
|
|
72
|
-
const chainData = await this.getChainDataById(chainId);
|
|
73
|
-
if (!chainData) {
|
|
74
|
-
throw new Error(`Chain data not found for chainId: ${chainId}`);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return chainData;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private checkIsTokenExpired(authHeader?: string): boolean {
|
|
81
|
-
// ✅ NULL CHECK: Handle undefined case
|
|
82
|
-
if (!authHeader) {
|
|
83
|
-
return false; // No token means no expiration (public chains)
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// ✅ FUNCTION CALL: Use imported function, not method
|
|
87
|
-
return isTokenExpired(authHeader);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
private async createWeb3Instance(chainId: number): Promise<{ web3: Web3; chainData: ChainData }> {
|
|
91
|
-
const chainData = await this.getChainDataById(chainId);
|
|
92
|
-
|
|
93
|
-
if (!chainData) {
|
|
94
|
-
throw new Error(`Chain data not found for chainId: ${chainId}`);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// ✅ CRITICAL CHECK: Ensure authHeader is present for private chains
|
|
98
|
-
if (chainData.chainType === 'PRIVATE' && !chainData.authHeader) {
|
|
99
|
-
console.error('❌ [Web3ChainService] CRITICAL: Private chain missing authHeader!');
|
|
100
|
-
throw new Error(`Private chain ${chainId} missing authentication header`);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const web3 = await this.providerService.getWeb3(
|
|
104
|
-
chainId,
|
|
105
|
-
chainData.chainType || 'PUBLIC',
|
|
106
|
-
chainData
|
|
107
|
-
);
|
|
108
|
-
|
|
109
|
-
return { web3, chainData };
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// ✅ HELPER: Type-safe error checking
|
|
113
|
-
private isAuthError(error: unknown): boolean {
|
|
114
|
-
const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();
|
|
115
|
-
return (
|
|
116
|
-
message.includes('unauthorized') ||
|
|
117
|
-
message.includes('401') ||
|
|
118
|
-
message.includes('token expired') ||
|
|
119
|
-
message.includes('invalid token')
|
|
120
|
-
);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
async getChainDataById(chainId: number): Promise<ChainData | null> {
|
|
124
|
-
try {
|
|
125
|
-
return await this.web3ChainApi.getChainData(chainId);
|
|
126
|
-
} catch (error) {
|
|
127
|
-
console.error('❌ [SDK Web3ChainService] Error getting chain data for chainId:', chainId, error);
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2020",
|
|
4
|
-
"module": "ESNext",
|
|
5
|
-
"moduleResolution": "node",
|
|
6
|
-
"strict": true,
|
|
7
|
-
"esModuleInterop": true,
|
|
8
|
-
"skipLibCheck": true,
|
|
9
|
-
"forceConsistentCasingInFileNames": true,
|
|
10
|
-
"declaration": true,
|
|
11
|
-
"declarationMap": true,
|
|
12
|
-
"sourceMap": true,
|
|
13
|
-
"outDir": "./dist",
|
|
14
|
-
"baseUrl": ".",
|
|
15
|
-
"paths": {
|
|
16
|
-
"@explorins/pers-shared": ["../../framework/entities"]
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
"include": [
|
|
20
|
-
"src/**/*"
|
|
21
|
-
],
|
|
22
|
-
"exclude": [
|
|
23
|
-
"node_modules",
|
|
24
|
-
"dist",
|
|
25
|
-
"**/*.test.ts",
|
|
26
|
-
"**/*.spec.ts"
|
|
27
|
-
]
|
|
28
|
-
}
|