@explorins/pers-sdk 1.6.3 → 1.6.6
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 +63 -37
- package/dist/analytics/index.d.ts +0 -16
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics.cjs +5 -73
- package/dist/analytics.cjs.map +1 -1
- package/dist/analytics.js +1 -72
- package/dist/analytics.js.map +1 -1
- package/dist/business/index.d.ts +0 -24
- package/dist/business/index.d.ts.map +1 -1
- package/dist/business.cjs +5 -273
- package/dist/business.cjs.map +1 -1
- package/dist/business.js +1 -272
- package/dist/business.js.map +1 -1
- package/dist/campaign/api/campaign-api.d.ts +3 -13
- package/dist/campaign/api/campaign-api.d.ts.map +1 -1
- package/dist/campaign/index.d.ts +0 -34
- package/dist/campaign/index.d.ts.map +1 -1
- package/dist/campaign.cjs +5 -470
- package/dist/campaign.cjs.map +1 -1
- package/dist/campaign.js +1 -469
- package/dist/campaign.js.map +1 -1
- package/dist/chunks/analytics-service-CitlimKJ.cjs +49 -0
- package/dist/chunks/analytics-service-CitlimKJ.cjs.map +1 -0
- package/dist/chunks/analytics-service-CxyrOwel.js +46 -0
- package/dist/chunks/analytics-service-CxyrOwel.js.map +1 -0
- package/dist/chunks/{token-sdk-BW4kkJb3.js → base-token-service-BSXDwrcq.js} +138 -204
- package/dist/chunks/base-token-service-BSXDwrcq.js.map +1 -0
- package/dist/chunks/{token-sdk-CiAbOb6c.cjs → base-token-service-CYuqPPs0.cjs} +140 -207
- package/dist/chunks/base-token-service-CYuqPPs0.cjs.map +1 -0
- package/dist/chunks/business-service-Cq3-oksM.cjs +241 -0
- package/dist/chunks/business-service-Cq3-oksM.cjs.map +1 -0
- package/dist/chunks/business-service-DrC-TNGa.js +238 -0
- package/dist/chunks/business-service-DrC-TNGa.js.map +1 -0
- package/dist/chunks/campaign-service-CWK9I388.cjs +403 -0
- package/dist/chunks/campaign-service-CWK9I388.cjs.map +1 -0
- package/dist/chunks/campaign-service-Dd7gMjC9.js +400 -0
- package/dist/chunks/campaign-service-Dd7gMjC9.js.map +1 -0
- package/dist/chunks/donation-service-CyJS4DIZ.js +47 -0
- package/dist/chunks/donation-service-CyJS4DIZ.js.map +1 -0
- package/dist/chunks/donation-service-D-xFrONi.cjs +50 -0
- package/dist/chunks/donation-service-D-xFrONi.cjs.map +1 -0
- package/dist/chunks/{index-CJ9Jfa4A.js → explorer.utils-Ckll15ja.js} +108 -172
- package/dist/chunks/explorer.utils-Ckll15ja.js.map +1 -0
- package/dist/chunks/{index-CzEluQmf.cjs → explorer.utils-GpskbLl1.cjs} +106 -174
- package/dist/chunks/explorer.utils-GpskbLl1.cjs.map +1 -0
- package/dist/chunks/index-BtDNXaFq.js +13 -0
- package/dist/chunks/index-BtDNXaFq.js.map +1 -0
- package/dist/chunks/index-CMk3Aqkk.cjs +15 -0
- package/dist/chunks/index-CMk3Aqkk.cjs.map +1 -0
- package/dist/chunks/payment-service-B4qx0qiE.cjs +220 -0
- package/dist/chunks/payment-service-B4qx0qiE.cjs.map +1 -0
- package/dist/chunks/payment-service-DfCBFosx.js +217 -0
- package/dist/chunks/payment-service-DfCBFosx.js.map +1 -0
- package/dist/chunks/pers-sdk-CajYwGkL.cjs +5850 -0
- package/dist/chunks/pers-sdk-CajYwGkL.cjs.map +1 -0
- package/dist/chunks/pers-sdk-eO4XUi8w.js +5817 -0
- package/dist/chunks/pers-sdk-eO4XUi8w.js.map +1 -0
- package/dist/chunks/redemption-service-7qbeQxEM.cjs +330 -0
- package/dist/chunks/redemption-service-7qbeQxEM.cjs.map +1 -0
- package/dist/chunks/redemption-service-BT0J5Iy7.js +327 -0
- package/dist/chunks/redemption-service-BT0J5Iy7.js.map +1 -0
- package/dist/chunks/tenant-service-Ba7xrWED.cjs +171 -0
- package/dist/chunks/tenant-service-Ba7xrWED.cjs.map +1 -0
- package/dist/chunks/tenant-service-DELk412y.js +168 -0
- package/dist/chunks/tenant-service-DELk412y.js.map +1 -0
- package/dist/chunks/token-service-BWScn8Qa.cjs +208 -0
- package/dist/chunks/token-service-BWScn8Qa.cjs.map +1 -0
- package/dist/chunks/token-service-CpVwC5Eb.js +205 -0
- package/dist/chunks/token-service-CpVwC5Eb.js.map +1 -0
- package/dist/chunks/user-service-D1Rn4U8u.cjs +153 -0
- package/dist/chunks/user-service-D1Rn4U8u.cjs.map +1 -0
- package/dist/chunks/user-service-D6mTa_WZ.js +150 -0
- package/dist/chunks/user-service-D6mTa_WZ.js.map +1 -0
- package/dist/chunks/{index-BfOoX87y.cjs → web3-chain-service-BYkj61DN.cjs} +1 -33
- package/dist/chunks/web3-chain-service-BYkj61DN.cjs.map +1 -0
- package/dist/chunks/{index-CM21r58m.js → web3-chain-service-DN6tJmvK.js} +2 -31
- package/dist/chunks/web3-chain-service-DN6tJmvK.js.map +1 -0
- package/dist/core/auth/auth-provider.interface.d.ts +32 -69
- package/dist/core/auth/auth-provider.interface.d.ts.map +1 -1
- package/dist/core/auth/default-auth-provider.d.ts +15 -58
- package/dist/core/auth/default-auth-provider.d.ts.map +1 -1
- package/dist/core/auth/index.d.ts +10 -12
- package/dist/core/auth/index.d.ts.map +1 -1
- package/dist/core/auth/refresh-manager.d.ts +18 -0
- package/dist/core/auth/refresh-manager.d.ts.map +1 -0
- package/dist/core/auth/services/auth-service.d.ts +11 -6
- package/dist/core/auth/services/auth-service.d.ts.map +1 -1
- package/dist/core/auth/token-storage.d.ts +27 -47
- package/dist/core/auth/token-storage.d.ts.map +1 -1
- package/dist/core/errors/index.d.ts +1 -5
- package/dist/core/errors/index.d.ts.map +1 -1
- package/dist/core/index.d.ts +4 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/pers-api-client.d.ts +10 -126
- package/dist/core/pers-api-client.d.ts.map +1 -1
- package/dist/core/pers-config.d.ts +8 -3
- package/dist/core/pers-config.d.ts.map +1 -1
- package/dist/core/utils/jwt.function.d.ts.map +1 -1
- package/dist/core.cjs +22 -17
- package/dist/core.cjs.map +1 -1
- package/dist/core.js +13 -13
- package/dist/donation/index.d.ts +0 -15
- package/dist/donation/index.d.ts.map +1 -1
- package/dist/donation.cjs +5 -75
- package/dist/donation.cjs.map +1 -1
- package/dist/donation.js +1 -74
- package/dist/donation.js.map +1 -1
- package/dist/index.cjs +51 -56
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +16 -15
- package/dist/index.js.map +1 -1
- package/dist/managers/analytics-manager.d.ts +290 -10
- package/dist/managers/analytics-manager.d.ts.map +1 -1
- package/dist/managers/auth-manager.d.ts +123 -23
- package/dist/managers/auth-manager.d.ts.map +1 -1
- package/dist/managers/business-manager.d.ts +273 -18
- package/dist/managers/business-manager.d.ts.map +1 -1
- package/dist/managers/campaign-manager.d.ts +585 -46
- package/dist/managers/campaign-manager.d.ts.map +1 -1
- package/dist/managers/donation-manager.d.ts +5 -5
- package/dist/managers/donation-manager.d.ts.map +1 -1
- package/dist/managers/file-manager.d.ts +430 -13
- package/dist/managers/file-manager.d.ts.map +1 -1
- package/dist/managers/purchase-manager.d.ts +340 -15
- package/dist/managers/purchase-manager.d.ts.map +1 -1
- package/dist/managers/redemption-manager.d.ts +450 -27
- package/dist/managers/redemption-manager.d.ts.map +1 -1
- package/dist/managers/tenant-manager.d.ts +5 -5
- package/dist/managers/tenant-manager.d.ts.map +1 -1
- package/dist/managers/token-manager.d.ts +245 -21
- package/dist/managers/token-manager.d.ts.map +1 -1
- package/dist/managers/transaction-manager.d.ts +447 -18
- package/dist/managers/transaction-manager.d.ts.map +1 -1
- package/dist/managers/user-manager.d.ts +216 -14
- package/dist/managers/user-manager.d.ts.map +1 -1
- package/dist/managers/web3-manager.d.ts +4 -4
- package/dist/managers/web3-manager.d.ts.map +1 -1
- package/dist/package.json +9 -2
- package/dist/payment/index.d.ts +0 -21
- package/dist/payment/index.d.ts.map +1 -1
- package/dist/payment.cjs +5 -255
- package/dist/payment.cjs.map +1 -1
- package/dist/payment.js +1 -254
- package/dist/payment.js.map +1 -1
- package/dist/pers-sdk.d.ts +141 -34
- package/dist/pers-sdk.d.ts.map +1 -1
- package/dist/redemption/index.d.ts +0 -25
- package/dist/redemption/index.d.ts.map +1 -1
- package/dist/redemption.cjs +5 -365
- package/dist/redemption.cjs.map +1 -1
- package/dist/redemption.js +1 -364
- package/dist/redemption.js.map +1 -1
- package/dist/tenant/index.d.ts +0 -22
- package/dist/tenant/index.d.ts.map +1 -1
- package/dist/tenant.cjs +5 -203
- package/dist/tenant.cjs.map +1 -1
- package/dist/tenant.js +1 -202
- package/dist/tenant.js.map +1 -1
- package/dist/token.cjs +6 -6
- package/dist/token.js +2 -2
- package/dist/transaction/index.d.ts +0 -22
- package/dist/transaction/index.d.ts.map +1 -1
- package/dist/transaction.cjs +0 -40
- package/dist/transaction.cjs.map +1 -1
- package/dist/transaction.js +1 -40
- package/dist/transaction.js.map +1 -1
- package/dist/user/index.d.ts +0 -25
- package/dist/user/index.d.ts.map +1 -1
- package/dist/user.cjs +5 -185
- package/dist/user.cjs.map +1 -1
- package/dist/user.js +1 -184
- package/dist/user.js.map +1 -1
- package/dist/web3/index.d.ts +0 -11
- package/dist/web3/index.d.ts.map +1 -1
- package/dist/web3-chain/index.d.ts +0 -9
- package/dist/web3-chain/index.d.ts.map +1 -1
- package/dist/web3-chain/services/getWeb3FCD.service.d.ts.map +1 -1
- package/dist/web3-chain.cjs +5 -5
- package/dist/web3-chain.js +2 -1
- package/dist/web3-chain.js.map +1 -1
- package/dist/web3.cjs +6 -10
- package/dist/web3.cjs.map +1 -1
- package/dist/web3.js +1 -4
- package/dist/web3.js.map +1 -1
- package/package.json +9 -2
- package/dist/chunks/base-token-service-D0KANDgM.js +0 -139
- package/dist/chunks/base-token-service-D0KANDgM.js.map +0 -1
- package/dist/chunks/base-token-service-zNfPjHRx.cjs +0 -141
- package/dist/chunks/base-token-service-zNfPjHRx.cjs.map +0 -1
- package/dist/chunks/index-BfOoX87y.cjs.map +0 -1
- package/dist/chunks/index-CJ9Jfa4A.js.map +0 -1
- package/dist/chunks/index-CM21r58m.js.map +0 -1
- package/dist/chunks/index-CzEluQmf.cjs.map +0 -1
- package/dist/chunks/pers-sdk-DbPwFKrf.cjs +0 -3378
- package/dist/chunks/pers-sdk-DbPwFKrf.cjs.map +0 -1
- package/dist/chunks/pers-sdk-Z6MKeFBX.js +0 -3353
- package/dist/chunks/pers-sdk-Z6MKeFBX.js.map +0 -1
- package/dist/chunks/token-sdk-BW4kkJb3.js.map +0 -1
- package/dist/chunks/token-sdk-CiAbOb6c.cjs.map +0 -1
- package/dist/core/auth/auth-constants.d.ts +0 -33
- package/dist/core/auth/auth-constants.d.ts.map +0 -1
- package/dist/core/auth/auth-errors.d.ts +0 -8
- package/dist/core/auth/auth-errors.d.ts.map +0 -1
- package/dist/core/auth/create-auth-provider.d.ts +0 -27
- package/dist/core/auth/create-auth-provider.d.ts.map +0 -1
- package/dist/core/auth/token-refresh.d.ts +0 -91
- package/dist/core/auth/token-refresh.d.ts.map +0 -1
|
@@ -1,47 +1,115 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { convertAbiToInterface, createSafeContract, getAccountTokenBalance, getTokenUri, getTokenOfOwnerByIndex } from '@explorins/web3-ts/ethers';
|
|
1
|
+
import { createSafeContract, getAccountTokenBalance, getTokenUri, getTokenOfOwnerByIndex, convertAbiToInterface } from '@explorins/web3-ts/ethers';
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Detects the runtime environment to handle platform-specific behaviors
|
|
8
|
-
* for bundling and module resolution.
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Detects the current runtime environment
|
|
4
|
+
* Web3InfrastructureApi - Infrastructure implementation for blockchain operations
|
|
5
|
+
* Uses @explorins/web3-ts for Web3 interactions
|
|
12
6
|
*/
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
7
|
+
class Web3InfrastructureApi {
|
|
8
|
+
constructor(web3ChainService) {
|
|
9
|
+
this.web3ChainService = web3ChainService;
|
|
10
|
+
}
|
|
11
|
+
async getTokenBalance(request) {
|
|
12
|
+
try {
|
|
13
|
+
if (request.tokenId !== null)
|
|
14
|
+
request.tokenId = request.tokenId.toString();
|
|
15
|
+
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
16
|
+
console.log(`[getTokenBalance] Ethers provider obtained, creating contract instance...`, ethersProvider);
|
|
17
|
+
const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
18
|
+
return await getAccountTokenBalance(contract, request.accountAddress, request.tokenId);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error(`Failed to get token balance for ${request.accountAddress} for ${request.contractAddress} and tokenId ${request.tokenId}, return 0 instead:`, error);
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async getTokenUri(request) {
|
|
26
|
+
try {
|
|
27
|
+
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
28
|
+
const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
29
|
+
const tokenId = Number(request.tokenId);
|
|
30
|
+
const tokenUri = await getTokenUri(contract, tokenId);
|
|
31
|
+
return String(tokenUri);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.error(`Failed to get token URI for tokenId ${request.tokenId}:`, error);
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async getTokenOfOwnerByIndex(request) {
|
|
39
|
+
try {
|
|
40
|
+
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
41
|
+
const tokenContract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
42
|
+
const tokenId = await getTokenOfOwnerByIndex(tokenContract, request.accountAddress, request.tokenIndex);
|
|
43
|
+
return String(tokenId);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error(`Failed to get token by index ${request.tokenIndex} for ${request.accountAddress}:`, error);
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
33
50
|
}
|
|
51
|
+
|
|
34
52
|
/**
|
|
35
|
-
*
|
|
36
|
-
|
|
37
|
-
const environment = detectEnvironment();
|
|
38
|
-
/**
|
|
39
|
-
* Warns if we're in an environment that might have bundling issues
|
|
53
|
+
* IPFSInfrastructureApi - Infrastructure implementation for IPFS operations
|
|
54
|
+
* Uses Web3ChainService for IPFS gateway resolution
|
|
40
55
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
56
|
+
class IPFSInfrastructureApi {
|
|
57
|
+
constructor(web3ChainService) {
|
|
58
|
+
this.web3ChainService = web3ChainService;
|
|
59
|
+
this.defaultIpfsGatewayDomain = 'pers.mypinata.cloud';
|
|
60
|
+
}
|
|
61
|
+
async getIpfsGatewayDomain(chainId) {
|
|
62
|
+
try {
|
|
63
|
+
const chainData = await this.web3ChainService.getChainDataWithCache(chainId);
|
|
64
|
+
return chainData.ipfsGatewayDomain || this.defaultIpfsGatewayDomain;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.warn(`Failed to get chain data for chainId ${chainId}, using default IPFS gateway:`, error);
|
|
68
|
+
return this.defaultIpfsGatewayDomain;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async resolveIPFSUrl(url, chainId) {
|
|
72
|
+
if (url.startsWith('ipfs://')) {
|
|
73
|
+
const gateway = await this.getIpfsGatewayDomain(chainId);
|
|
74
|
+
return url.replace('ipfs://', `https://${gateway}/ipfs/`);
|
|
75
|
+
}
|
|
76
|
+
return url;
|
|
77
|
+
}
|
|
78
|
+
async fetchAndProcessMetadata(tokenUri, chainId) {
|
|
79
|
+
try {
|
|
80
|
+
const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);
|
|
81
|
+
const response = await fetch(resolvedUri);
|
|
82
|
+
if (!response.ok) {
|
|
83
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
84
|
+
}
|
|
85
|
+
const metadata = await response.json();
|
|
86
|
+
// Process and return clean metadata
|
|
87
|
+
return {
|
|
88
|
+
name: metadata.name || '',
|
|
89
|
+
description: metadata.description || '',
|
|
90
|
+
image: metadata.image ? await this.resolveIPFSUrl(metadata.image, chainId) : '',
|
|
91
|
+
attributes: metadata.attributes || [],
|
|
92
|
+
animation_url: metadata.animation_url ? await this.resolveIPFSUrl(metadata.animation_url, chainId) : undefined,
|
|
93
|
+
external_url: metadata.external_url || undefined
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
console.error('Error fetching metadata:', error);
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async fetchFromUrl(url) {
|
|
102
|
+
try {
|
|
103
|
+
const response = await fetch(url);
|
|
104
|
+
if (!response.ok) {
|
|
105
|
+
throw new Error(`Failed to fetch from ${url}: ${response.statusText}`);
|
|
106
|
+
}
|
|
107
|
+
return await response.json();
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
console.error(`Error fetching from URL ${url}:`, error);
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
45
113
|
}
|
|
46
114
|
}
|
|
47
115
|
|
|
@@ -423,119 +491,6 @@ class Web3ApplicationService {
|
|
|
423
491
|
}
|
|
424
492
|
}
|
|
425
493
|
|
|
426
|
-
/**
|
|
427
|
-
* Web3InfrastructureApi - Infrastructure implementation for blockchain operations
|
|
428
|
-
* Uses @explorins/web3-ts for Web3 interactions
|
|
429
|
-
*/
|
|
430
|
-
class Web3InfrastructureApi {
|
|
431
|
-
constructor(web3ChainService) {
|
|
432
|
-
this.web3ChainService = web3ChainService;
|
|
433
|
-
}
|
|
434
|
-
async getTokenBalance(request) {
|
|
435
|
-
try {
|
|
436
|
-
if (request.tokenId !== null)
|
|
437
|
-
request.tokenId = request.tokenId.toString();
|
|
438
|
-
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
439
|
-
console.log(`[getTokenBalance] Ethers provider obtained, creating contract instance...`, ethersProvider);
|
|
440
|
-
const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
441
|
-
return await getAccountTokenBalance(contract, request.accountAddress, request.tokenId);
|
|
442
|
-
}
|
|
443
|
-
catch (error) {
|
|
444
|
-
console.error(`Failed to get token balance for ${request.accountAddress} for ${request.contractAddress} and tokenId ${request.tokenId}, return 0 instead:`, error);
|
|
445
|
-
return 0;
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
async getTokenUri(request) {
|
|
449
|
-
try {
|
|
450
|
-
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
451
|
-
const contract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
452
|
-
const tokenId = Number(request.tokenId);
|
|
453
|
-
const tokenUri = await getTokenUri(contract, tokenId);
|
|
454
|
-
return String(tokenUri);
|
|
455
|
-
}
|
|
456
|
-
catch (error) {
|
|
457
|
-
console.error(`Failed to get token URI for tokenId ${request.tokenId}:`, error);
|
|
458
|
-
throw error;
|
|
459
|
-
}
|
|
460
|
-
}
|
|
461
|
-
async getTokenOfOwnerByIndex(request) {
|
|
462
|
-
try {
|
|
463
|
-
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
464
|
-
const tokenContract = createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
465
|
-
const tokenId = await getTokenOfOwnerByIndex(tokenContract, request.accountAddress, request.tokenIndex);
|
|
466
|
-
return String(tokenId);
|
|
467
|
-
}
|
|
468
|
-
catch (error) {
|
|
469
|
-
console.error(`Failed to get token by index ${request.tokenIndex} for ${request.accountAddress}:`, error);
|
|
470
|
-
throw error;
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
/**
|
|
476
|
-
* IPFSInfrastructureApi - Infrastructure implementation for IPFS operations
|
|
477
|
-
* Uses Web3ChainService for IPFS gateway resolution
|
|
478
|
-
*/
|
|
479
|
-
class IPFSInfrastructureApi {
|
|
480
|
-
constructor(web3ChainService) {
|
|
481
|
-
this.web3ChainService = web3ChainService;
|
|
482
|
-
this.defaultIpfsGatewayDomain = 'pers.mypinata.cloud';
|
|
483
|
-
}
|
|
484
|
-
async getIpfsGatewayDomain(chainId) {
|
|
485
|
-
try {
|
|
486
|
-
const chainData = await this.web3ChainService.getChainDataWithCache(chainId);
|
|
487
|
-
return chainData.ipfsGatewayDomain || this.defaultIpfsGatewayDomain;
|
|
488
|
-
}
|
|
489
|
-
catch (error) {
|
|
490
|
-
console.warn(`Failed to get chain data for chainId ${chainId}, using default IPFS gateway:`, error);
|
|
491
|
-
return this.defaultIpfsGatewayDomain;
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
async resolveIPFSUrl(url, chainId) {
|
|
495
|
-
if (url.startsWith('ipfs://')) {
|
|
496
|
-
const gateway = await this.getIpfsGatewayDomain(chainId);
|
|
497
|
-
return url.replace('ipfs://', `https://${gateway}/ipfs/`);
|
|
498
|
-
}
|
|
499
|
-
return url;
|
|
500
|
-
}
|
|
501
|
-
async fetchAndProcessMetadata(tokenUri, chainId) {
|
|
502
|
-
try {
|
|
503
|
-
const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);
|
|
504
|
-
const response = await fetch(resolvedUri);
|
|
505
|
-
if (!response.ok) {
|
|
506
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
507
|
-
}
|
|
508
|
-
const metadata = await response.json();
|
|
509
|
-
// Process and return clean metadata
|
|
510
|
-
return {
|
|
511
|
-
name: metadata.name || '',
|
|
512
|
-
description: metadata.description || '',
|
|
513
|
-
image: metadata.image ? await this.resolveIPFSUrl(metadata.image, chainId) : '',
|
|
514
|
-
attributes: metadata.attributes || [],
|
|
515
|
-
animation_url: metadata.animation_url ? await this.resolveIPFSUrl(metadata.animation_url, chainId) : undefined,
|
|
516
|
-
external_url: metadata.external_url || undefined
|
|
517
|
-
};
|
|
518
|
-
}
|
|
519
|
-
catch (error) {
|
|
520
|
-
console.error('Error fetching metadata:', error);
|
|
521
|
-
return null;
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
async fetchFromUrl(url) {
|
|
525
|
-
try {
|
|
526
|
-
const response = await fetch(url);
|
|
527
|
-
if (!response.ok) {
|
|
528
|
-
throw new Error(`Failed to fetch from ${url}: ${response.statusText}`);
|
|
529
|
-
}
|
|
530
|
-
return await response.json();
|
|
531
|
-
}
|
|
532
|
-
catch (error) {
|
|
533
|
-
console.error(`Error fetching from URL ${url}:`, error);
|
|
534
|
-
throw error;
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
|
|
539
494
|
/**
|
|
540
495
|
* Generate explorer URL for a given address or transaction
|
|
541
496
|
*
|
|
@@ -592,24 +547,5 @@ async function getExplorerUrlByChainId(getChainData, chainId, address, type) {
|
|
|
592
547
|
return getExplorerUrl(chainData, address, type);
|
|
593
548
|
}
|
|
594
549
|
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
warnIfProblematicEnvironment('Web3 functionality');
|
|
598
|
-
const web3ChainSDK = createWeb3ChainSDK(apiClient);
|
|
599
|
-
// Create Web3ApplicationService - main entry point for all Web3 operations
|
|
600
|
-
const web3InfrastructureApi = new Web3InfrastructureApi(web3ChainSDK.service);
|
|
601
|
-
const ipfsInfrastructureApi = new IPFSInfrastructureApi(web3ChainSDK.service);
|
|
602
|
-
const web3ApplicationService = new Web3ApplicationService(web3InfrastructureApi, ipfsInfrastructureApi);
|
|
603
|
-
// Clean SDK - all functions route through Web3ApplicationService
|
|
604
|
-
return {
|
|
605
|
-
getTokenBalance: (request) => web3ApplicationService.getSpecificTokenBalance(request),
|
|
606
|
-
getTokenMetadata: (request) => web3ApplicationService.getTokenMetadata(request),
|
|
607
|
-
getTokenCollection: (request) => web3ApplicationService.getTokenCollection(request),
|
|
608
|
-
resolveIPFSUrl: (url, chainId) => web3ApplicationService.resolveIPFSUrl(url, chainId),
|
|
609
|
-
fetchAndProcessMetadata: (tokenUri, chainId) => web3ApplicationService.fetchAndProcessMetadata(tokenUri, chainId),
|
|
610
|
-
applicationService: web3ApplicationService
|
|
611
|
-
};
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
export { IPFSInfrastructureApi as I, Web3ApplicationService as W, Web3InfrastructureApi as a, getExplorerUrlByChainId as b, createWeb3SDK as c, detectEnvironment as d, environment as e, getExplorerUrl as g, warnIfProblematicEnvironment as w };
|
|
615
|
-
//# sourceMappingURL=index-CJ9Jfa4A.js.map
|
|
550
|
+
export { IPFSInfrastructureApi as I, Web3ApplicationService as W, Web3InfrastructureApi as a, getExplorerUrlByChainId as b, getExplorerUrl as g };
|
|
551
|
+
//# sourceMappingURL=explorer.utils-Ckll15ja.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explorer.utils-Ckll15ja.js","sources":["../../src/web3/infrastructure/api/web3-api.ts","../../src/web3/infrastructure/api/ipfs-api.ts","../../src/web3/domain/services/token-domain.service.ts","../../src/web3/domain/services/metadata-domain.service.ts","../../src/web3/domain/services/contract-domain.service.ts","../../src/web3/application/web3-application.service.ts","../../src/web3/utils/explorer.utils.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":[],"mappings":"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"}
|
|
@@ -1,49 +1,117 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var web3Chain = require('./index-BfOoX87y.cjs');
|
|
4
3
|
var ethers = require('@explorins/web3-ts/ethers');
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* Detects the runtime environment to handle platform-specific behaviors
|
|
10
|
-
* for bundling and module resolution.
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Detects the current runtime environment
|
|
6
|
+
* Web3InfrastructureApi - Infrastructure implementation for blockchain operations
|
|
7
|
+
* Uses @explorins/web3-ts for Web3 interactions
|
|
14
8
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
9
|
+
class Web3InfrastructureApi {
|
|
10
|
+
constructor(web3ChainService) {
|
|
11
|
+
this.web3ChainService = web3ChainService;
|
|
12
|
+
}
|
|
13
|
+
async getTokenBalance(request) {
|
|
14
|
+
try {
|
|
15
|
+
if (request.tokenId !== null)
|
|
16
|
+
request.tokenId = request.tokenId.toString();
|
|
17
|
+
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
18
|
+
console.log(`[getTokenBalance] Ethers provider obtained, creating contract instance...`, ethersProvider);
|
|
19
|
+
const contract = ethers.createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
20
|
+
return await ethers.getAccountTokenBalance(contract, request.accountAddress, request.tokenId);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(`Failed to get token balance for ${request.accountAddress} for ${request.contractAddress} and tokenId ${request.tokenId}, return 0 instead:`, error);
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async getTokenUri(request) {
|
|
28
|
+
try {
|
|
29
|
+
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
30
|
+
const contract = ethers.createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
31
|
+
const tokenId = Number(request.tokenId);
|
|
32
|
+
const tokenUri = await ethers.getTokenUri(contract, tokenId);
|
|
33
|
+
return String(tokenUri);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
console.error(`Failed to get token URI for tokenId ${request.tokenId}:`, error);
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async getTokenOfOwnerByIndex(request) {
|
|
41
|
+
try {
|
|
42
|
+
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
43
|
+
const tokenContract = ethers.createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
44
|
+
const tokenId = await ethers.getTokenOfOwnerByIndex(tokenContract, request.accountAddress, request.tokenIndex);
|
|
45
|
+
return String(tokenId);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error(`Failed to get token by index ${request.tokenIndex} for ${request.accountAddress}:`, error);
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
35
52
|
}
|
|
53
|
+
|
|
36
54
|
/**
|
|
37
|
-
*
|
|
38
|
-
|
|
39
|
-
const environment = detectEnvironment();
|
|
40
|
-
/**
|
|
41
|
-
* Warns if we're in an environment that might have bundling issues
|
|
55
|
+
* IPFSInfrastructureApi - Infrastructure implementation for IPFS operations
|
|
56
|
+
* Uses Web3ChainService for IPFS gateway resolution
|
|
42
57
|
*/
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
58
|
+
class IPFSInfrastructureApi {
|
|
59
|
+
constructor(web3ChainService) {
|
|
60
|
+
this.web3ChainService = web3ChainService;
|
|
61
|
+
this.defaultIpfsGatewayDomain = 'pers.mypinata.cloud';
|
|
62
|
+
}
|
|
63
|
+
async getIpfsGatewayDomain(chainId) {
|
|
64
|
+
try {
|
|
65
|
+
const chainData = await this.web3ChainService.getChainDataWithCache(chainId);
|
|
66
|
+
return chainData.ipfsGatewayDomain || this.defaultIpfsGatewayDomain;
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.warn(`Failed to get chain data for chainId ${chainId}, using default IPFS gateway:`, error);
|
|
70
|
+
return this.defaultIpfsGatewayDomain;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async resolveIPFSUrl(url, chainId) {
|
|
74
|
+
if (url.startsWith('ipfs://')) {
|
|
75
|
+
const gateway = await this.getIpfsGatewayDomain(chainId);
|
|
76
|
+
return url.replace('ipfs://', `https://${gateway}/ipfs/`);
|
|
77
|
+
}
|
|
78
|
+
return url;
|
|
79
|
+
}
|
|
80
|
+
async fetchAndProcessMetadata(tokenUri, chainId) {
|
|
81
|
+
try {
|
|
82
|
+
const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);
|
|
83
|
+
const response = await fetch(resolvedUri);
|
|
84
|
+
if (!response.ok) {
|
|
85
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
86
|
+
}
|
|
87
|
+
const metadata = await response.json();
|
|
88
|
+
// Process and return clean metadata
|
|
89
|
+
return {
|
|
90
|
+
name: metadata.name || '',
|
|
91
|
+
description: metadata.description || '',
|
|
92
|
+
image: metadata.image ? await this.resolveIPFSUrl(metadata.image, chainId) : '',
|
|
93
|
+
attributes: metadata.attributes || [],
|
|
94
|
+
animation_url: metadata.animation_url ? await this.resolveIPFSUrl(metadata.animation_url, chainId) : undefined,
|
|
95
|
+
external_url: metadata.external_url || undefined
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
console.error('Error fetching metadata:', error);
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async fetchFromUrl(url) {
|
|
104
|
+
try {
|
|
105
|
+
const response = await fetch(url);
|
|
106
|
+
if (!response.ok) {
|
|
107
|
+
throw new Error(`Failed to fetch from ${url}: ${response.statusText}`);
|
|
108
|
+
}
|
|
109
|
+
return await response.json();
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
console.error(`Error fetching from URL ${url}:`, error);
|
|
113
|
+
throw error;
|
|
114
|
+
}
|
|
47
115
|
}
|
|
48
116
|
}
|
|
49
117
|
|
|
@@ -425,119 +493,6 @@ class Web3ApplicationService {
|
|
|
425
493
|
}
|
|
426
494
|
}
|
|
427
495
|
|
|
428
|
-
/**
|
|
429
|
-
* Web3InfrastructureApi - Infrastructure implementation for blockchain operations
|
|
430
|
-
* Uses @explorins/web3-ts for Web3 interactions
|
|
431
|
-
*/
|
|
432
|
-
class Web3InfrastructureApi {
|
|
433
|
-
constructor(web3ChainService) {
|
|
434
|
-
this.web3ChainService = web3ChainService;
|
|
435
|
-
}
|
|
436
|
-
async getTokenBalance(request) {
|
|
437
|
-
try {
|
|
438
|
-
if (request.tokenId !== null)
|
|
439
|
-
request.tokenId = request.tokenId.toString();
|
|
440
|
-
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
441
|
-
console.log(`[getTokenBalance] Ethers provider obtained, creating contract instance...`, ethersProvider);
|
|
442
|
-
const contract = ethers.createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
443
|
-
return await ethers.getAccountTokenBalance(contract, request.accountAddress, request.tokenId);
|
|
444
|
-
}
|
|
445
|
-
catch (error) {
|
|
446
|
-
console.error(`Failed to get token balance for ${request.accountAddress} for ${request.contractAddress} and tokenId ${request.tokenId}, return 0 instead:`, error);
|
|
447
|
-
return 0;
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
async getTokenUri(request) {
|
|
451
|
-
try {
|
|
452
|
-
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
453
|
-
const contract = ethers.createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
454
|
-
const tokenId = Number(request.tokenId);
|
|
455
|
-
const tokenUri = await ethers.getTokenUri(contract, tokenId);
|
|
456
|
-
return String(tokenUri);
|
|
457
|
-
}
|
|
458
|
-
catch (error) {
|
|
459
|
-
console.error(`Failed to get token URI for tokenId ${request.tokenId}:`, error);
|
|
460
|
-
throw error;
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
async getTokenOfOwnerByIndex(request) {
|
|
464
|
-
try {
|
|
465
|
-
const ethersProvider = await this.web3ChainService.getEthersProviderByChainId(request.chainId);
|
|
466
|
-
const tokenContract = ethers.createSafeContract(request.contractAddress, request.abi, ethersProvider);
|
|
467
|
-
const tokenId = await ethers.getTokenOfOwnerByIndex(tokenContract, request.accountAddress, request.tokenIndex);
|
|
468
|
-
return String(tokenId);
|
|
469
|
-
}
|
|
470
|
-
catch (error) {
|
|
471
|
-
console.error(`Failed to get token by index ${request.tokenIndex} for ${request.accountAddress}:`, error);
|
|
472
|
-
throw error;
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
/**
|
|
478
|
-
* IPFSInfrastructureApi - Infrastructure implementation for IPFS operations
|
|
479
|
-
* Uses Web3ChainService for IPFS gateway resolution
|
|
480
|
-
*/
|
|
481
|
-
class IPFSInfrastructureApi {
|
|
482
|
-
constructor(web3ChainService) {
|
|
483
|
-
this.web3ChainService = web3ChainService;
|
|
484
|
-
this.defaultIpfsGatewayDomain = 'pers.mypinata.cloud';
|
|
485
|
-
}
|
|
486
|
-
async getIpfsGatewayDomain(chainId) {
|
|
487
|
-
try {
|
|
488
|
-
const chainData = await this.web3ChainService.getChainDataWithCache(chainId);
|
|
489
|
-
return chainData.ipfsGatewayDomain || this.defaultIpfsGatewayDomain;
|
|
490
|
-
}
|
|
491
|
-
catch (error) {
|
|
492
|
-
console.warn(`Failed to get chain data for chainId ${chainId}, using default IPFS gateway:`, error);
|
|
493
|
-
return this.defaultIpfsGatewayDomain;
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
async resolveIPFSUrl(url, chainId) {
|
|
497
|
-
if (url.startsWith('ipfs://')) {
|
|
498
|
-
const gateway = await this.getIpfsGatewayDomain(chainId);
|
|
499
|
-
return url.replace('ipfs://', `https://${gateway}/ipfs/`);
|
|
500
|
-
}
|
|
501
|
-
return url;
|
|
502
|
-
}
|
|
503
|
-
async fetchAndProcessMetadata(tokenUri, chainId) {
|
|
504
|
-
try {
|
|
505
|
-
const resolvedUri = await this.resolveIPFSUrl(tokenUri, chainId);
|
|
506
|
-
const response = await fetch(resolvedUri);
|
|
507
|
-
if (!response.ok) {
|
|
508
|
-
throw new Error(`HTTP error! status: ${response.status}`);
|
|
509
|
-
}
|
|
510
|
-
const metadata = await response.json();
|
|
511
|
-
// Process and return clean metadata
|
|
512
|
-
return {
|
|
513
|
-
name: metadata.name || '',
|
|
514
|
-
description: metadata.description || '',
|
|
515
|
-
image: metadata.image ? await this.resolveIPFSUrl(metadata.image, chainId) : '',
|
|
516
|
-
attributes: metadata.attributes || [],
|
|
517
|
-
animation_url: metadata.animation_url ? await this.resolveIPFSUrl(metadata.animation_url, chainId) : undefined,
|
|
518
|
-
external_url: metadata.external_url || undefined
|
|
519
|
-
};
|
|
520
|
-
}
|
|
521
|
-
catch (error) {
|
|
522
|
-
console.error('Error fetching metadata:', error);
|
|
523
|
-
return null;
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
async fetchFromUrl(url) {
|
|
527
|
-
try {
|
|
528
|
-
const response = await fetch(url);
|
|
529
|
-
if (!response.ok) {
|
|
530
|
-
throw new Error(`Failed to fetch from ${url}: ${response.statusText}`);
|
|
531
|
-
}
|
|
532
|
-
return await response.json();
|
|
533
|
-
}
|
|
534
|
-
catch (error) {
|
|
535
|
-
console.error(`Error fetching from URL ${url}:`, error);
|
|
536
|
-
throw error;
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
}
|
|
540
|
-
|
|
541
496
|
/**
|
|
542
497
|
* Generate explorer URL for a given address or transaction
|
|
543
498
|
*
|
|
@@ -594,32 +549,9 @@ async function getExplorerUrlByChainId(getChainData, chainId, address, type) {
|
|
|
594
549
|
return getExplorerUrl(chainData, address, type);
|
|
595
550
|
}
|
|
596
551
|
|
|
597
|
-
function createWeb3SDK(apiClient) {
|
|
598
|
-
// Warn about potential bundling issues in web environments
|
|
599
|
-
warnIfProblematicEnvironment('Web3 functionality');
|
|
600
|
-
const web3ChainSDK = web3Chain.createWeb3ChainSDK(apiClient);
|
|
601
|
-
// Create Web3ApplicationService - main entry point for all Web3 operations
|
|
602
|
-
const web3InfrastructureApi = new Web3InfrastructureApi(web3ChainSDK.service);
|
|
603
|
-
const ipfsInfrastructureApi = new IPFSInfrastructureApi(web3ChainSDK.service);
|
|
604
|
-
const web3ApplicationService = new Web3ApplicationService(web3InfrastructureApi, ipfsInfrastructureApi);
|
|
605
|
-
// Clean SDK - all functions route through Web3ApplicationService
|
|
606
|
-
return {
|
|
607
|
-
getTokenBalance: (request) => web3ApplicationService.getSpecificTokenBalance(request),
|
|
608
|
-
getTokenMetadata: (request) => web3ApplicationService.getTokenMetadata(request),
|
|
609
|
-
getTokenCollection: (request) => web3ApplicationService.getTokenCollection(request),
|
|
610
|
-
resolveIPFSUrl: (url, chainId) => web3ApplicationService.resolveIPFSUrl(url, chainId),
|
|
611
|
-
fetchAndProcessMetadata: (tokenUri, chainId) => web3ApplicationService.fetchAndProcessMetadata(tokenUri, chainId),
|
|
612
|
-
applicationService: web3ApplicationService
|
|
613
|
-
};
|
|
614
|
-
}
|
|
615
|
-
|
|
616
552
|
exports.IPFSInfrastructureApi = IPFSInfrastructureApi;
|
|
617
553
|
exports.Web3ApplicationService = Web3ApplicationService;
|
|
618
554
|
exports.Web3InfrastructureApi = Web3InfrastructureApi;
|
|
619
|
-
exports.createWeb3SDK = createWeb3SDK;
|
|
620
|
-
exports.detectEnvironment = detectEnvironment;
|
|
621
|
-
exports.environment = environment;
|
|
622
555
|
exports.getExplorerUrl = getExplorerUrl;
|
|
623
556
|
exports.getExplorerUrlByChainId = getExplorerUrlByChainId;
|
|
624
|
-
|
|
625
|
-
//# sourceMappingURL=index-CzEluQmf.cjs.map
|
|
557
|
+
//# sourceMappingURL=explorer.utils-GpskbLl1.cjs.map
|