@explorins/pers-sdk 1.6.0 → 1.6.2

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.
Files changed (70) hide show
  1. package/dist/chunks/index-BfOoX87y.cjs +337 -0
  2. package/dist/chunks/index-BfOoX87y.cjs.map +1 -0
  3. package/dist/chunks/index-CJ9Jfa4A.js +615 -0
  4. package/dist/chunks/index-CJ9Jfa4A.js.map +1 -0
  5. package/dist/chunks/index-CM21r58m.js +331 -0
  6. package/dist/chunks/index-CM21r58m.js.map +1 -0
  7. package/dist/chunks/index-CzEluQmf.cjs +625 -0
  8. package/dist/chunks/index-CzEluQmf.cjs.map +1 -0
  9. package/dist/chunks/{pers-sdk-UNKbbSC_.cjs → pers-sdk-C3Sc2hyn.cjs} +398 -4
  10. package/dist/chunks/pers-sdk-C3Sc2hyn.cjs.map +1 -0
  11. package/dist/chunks/{pers-sdk-gnQ_VcEq.js → pers-sdk-CoKZ7rHG.js} +393 -5
  12. package/dist/chunks/pers-sdk-CoKZ7rHG.js.map +1 -0
  13. package/dist/core.cjs +12 -5
  14. package/dist/core.cjs.map +1 -1
  15. package/dist/core.js +6 -2
  16. package/dist/core.js.map +1 -1
  17. package/dist/file/api/file-api.d.ts +35 -0
  18. package/dist/file/api/file-api.d.ts.map +1 -0
  19. package/dist/file/api/index.d.ts +2 -0
  20. package/dist/file/api/index.d.ts.map +1 -0
  21. package/dist/file/index.d.ts +9 -0
  22. package/dist/file/index.d.ts.map +1 -0
  23. package/dist/file/models/index.d.ts +26 -0
  24. package/dist/file/models/index.d.ts.map +1 -0
  25. package/dist/file/services/file-service.d.ts +57 -0
  26. package/dist/file/services/file-service.d.ts.map +1 -0
  27. package/dist/file/services/index.d.ts +2 -0
  28. package/dist/file/services/index.d.ts.map +1 -0
  29. package/dist/index.cjs +19 -13
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/index.d.ts +1 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +4 -6
  34. package/dist/index.js.map +1 -1
  35. package/dist/managers/file-manager.d.ts +55 -0
  36. package/dist/managers/file-manager.d.ts.map +1 -0
  37. package/dist/managers/index.d.ts +3 -0
  38. package/dist/managers/index.d.ts.map +1 -1
  39. package/dist/managers/tenant-manager.d.ts +8 -0
  40. package/dist/managers/tenant-manager.d.ts.map +1 -1
  41. package/dist/managers/user-status-manager.d.ts +40 -0
  42. package/dist/managers/user-status-manager.d.ts.map +1 -0
  43. package/dist/managers/web3-manager.d.ts +76 -0
  44. package/dist/managers/web3-manager.d.ts.map +1 -0
  45. package/dist/package.json +1 -1
  46. package/dist/pers-sdk.d.ts +37 -1
  47. package/dist/pers-sdk.d.ts.map +1 -1
  48. package/dist/web3/index.d.ts +1 -0
  49. package/dist/web3/index.d.ts.map +1 -1
  50. package/dist/web3/utils/explorer.utils.d.ts +21 -0
  51. package/dist/web3/utils/explorer.utils.d.ts.map +1 -0
  52. package/dist/web3-chain.cjs +8 -307
  53. package/dist/web3-chain.cjs.map +1 -1
  54. package/dist/web3-chain.js +2 -305
  55. package/dist/web3-chain.js.map +1 -1
  56. package/dist/web3.cjs +9 -516
  57. package/dist/web3.cjs.map +1 -1
  58. package/dist/web3.js +3 -516
  59. package/dist/web3.js.map +1 -1
  60. package/package.json +1 -1
  61. package/dist/chunks/environment-C2AkkLPd.js +0 -46
  62. package/dist/chunks/environment-C2AkkLPd.js.map +0 -1
  63. package/dist/chunks/environment-CRROnwAY.cjs +0 -50
  64. package/dist/chunks/environment-CRROnwAY.cjs.map +0 -1
  65. package/dist/chunks/jwt.function-BYiyl-z_.cjs +0 -25
  66. package/dist/chunks/jwt.function-BYiyl-z_.cjs.map +0 -1
  67. package/dist/chunks/jwt.function-d6jPtBqI.js +0 -23
  68. package/dist/chunks/jwt.function-d6jPtBqI.js.map +0 -1
  69. package/dist/chunks/pers-sdk-UNKbbSC_.cjs.map +0 -1
  70. package/dist/chunks/pers-sdk-gnQ_VcEq.js.map +0 -1
@@ -0,0 +1,625 @@
1
+ 'use strict';
2
+
3
+ var web3Chain = require('./index-BfOoX87y.cjs');
4
+ var ethers = require('@explorins/web3-ts/ethers');
5
+
6
+ /**
7
+ * Environment Detection Utility
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
14
+ */
15
+ function detectEnvironment() {
16
+ const isNode = typeof process !== 'undefined' &&
17
+ process.versions != null &&
18
+ process.versions.node != null &&
19
+ typeof globalThis.window === 'undefined';
20
+ const isBrowser = typeof globalThis.window !== 'undefined' &&
21
+ typeof globalThis.document !== 'undefined';
22
+ const isReactNative = typeof globalThis.navigator !== 'undefined' &&
23
+ typeof globalThis.navigator.product === 'string' &&
24
+ globalThis.navigator.product.toLowerCase() === 'reactnative';
25
+ const isWeb = isBrowser || isReactNative;
26
+ // Node.js streams: Only native in Node.js, need polyfills or avoidance in web
27
+ const needsNodeStreamPolyfills = isWeb;
28
+ return {
29
+ isNode,
30
+ isBrowser,
31
+ isReactNative,
32
+ isWeb,
33
+ needsNodeStreamPolyfills
34
+ };
35
+ }
36
+ /**
37
+ * Global environment info (cached)
38
+ */
39
+ const environment = detectEnvironment();
40
+ /**
41
+ * Warns if we're in an environment that might have bundling issues
42
+ */
43
+ function warnIfProblematicEnvironment(feature) {
44
+ if (environment.needsNodeStreamPolyfills) {
45
+ console.warn(`[PERS SDK] ${feature} may require additional polyfills in web environments. ` +
46
+ `If you encounter 'readable-stream' errors, ensure proper polyfills are configured.`);
47
+ }
48
+ }
49
+
50
+ /**
51
+ * TokenDomainService - Domain service for token operations
52
+ * Implements business logic for token balance, metadata, and collection operations
53
+ */
54
+ class TokenDomainService {
55
+ constructor(web3Api, metadataService, contractService) {
56
+ this.web3Api = web3Api;
57
+ this.metadataService = metadataService;
58
+ this.contractService = contractService;
59
+ }
60
+ async getTokenBalance(request) {
61
+ const balance = await this.web3Api.getTokenBalance({
62
+ accountAddress: request.accountAddress,
63
+ contractAddress: request.contractAddress,
64
+ abi: ethers.convertAbiToInterface(request.abi),
65
+ tokenId: request.tokenId,
66
+ chainId: request.chainId
67
+ });
68
+ return {
69
+ tokenId: request.tokenId,
70
+ balance,
71
+ hasBalance: balance > 0,
72
+ metadata: null
73
+ };
74
+ }
75
+ async getTokenWithMetadata(params) {
76
+ try {
77
+ const balance = await this.web3Api.getTokenBalance({
78
+ accountAddress: params.accountAddress,
79
+ contractAddress: params.contractAddress,
80
+ abi: ethers.convertAbiToInterface(params.abi),
81
+ tokenId: params.tokenId,
82
+ chainId: params.chainId
83
+ });
84
+ let metadata = null;
85
+ if (balance > 0) {
86
+ const tokenUri = await this.web3Api.getTokenUri({
87
+ contractAddress: params.contractAddress,
88
+ abi: ethers.convertAbiToInterface(params.abi),
89
+ tokenId: params.tokenId,
90
+ chainId: params.chainId
91
+ });
92
+ if (tokenUri) {
93
+ metadata = await this.metadataService.fetchAndProcessMetadata(tokenUri, params.chainId);
94
+ }
95
+ }
96
+ return {
97
+ tokenId: params.tokenId,
98
+ balance,
99
+ hasBalance: balance > 0,
100
+ metadata
101
+ };
102
+ }
103
+ catch (error) {
104
+ console.error('Error getting token with metadata:', error);
105
+ return {
106
+ tokenId: params.tokenId,
107
+ balance: 0,
108
+ hasBalance: false,
109
+ metadata: null
110
+ };
111
+ }
112
+ }
113
+ async getTokenCollection(params) {
114
+ params.abi = ethers.convertAbiToInterface(params.abi);
115
+ try {
116
+ const contractAnalysis = this.contractService.analyzeContract(params.abi);
117
+ const tokens = [];
118
+ if (!contractAnalysis.hasEnumeration && !contractAnalysis.isERC1155) {
119
+ console.warn('Contract does not support enumeration, cannot retrieve full collection');
120
+ return {
121
+ accountAddress: params.accountAddress,
122
+ contractAddress: params.contractAddress,
123
+ totalBalance: 0,
124
+ tokensRetrieved: 0,
125
+ tokens: [],
126
+ note: 'Contract does not support enumeration'
127
+ };
128
+ }
129
+ else if (contractAnalysis.isERC1155) {
130
+ const tokenIdsToProcess = params.tokenIds || [];
131
+ if (tokenIdsToProcess.length > 0) {
132
+ for (const tokenId of tokenIdsToProcess) {
133
+ const tokenBalance = await this.getTokenWithMetadata({
134
+ accountAddress: params.accountAddress,
135
+ contractAddress: params.contractAddress,
136
+ abi: params.abi,
137
+ tokenId,
138
+ chainId: params.chainId
139
+ });
140
+ tokens.push(tokenBalance);
141
+ }
142
+ }
143
+ console.log('ERC-1155 User balances:', tokens);
144
+ // ERC-1155: Cannot enumerate without knowing token IDs
145
+ // Would need to use events or provide specific token IDs
146
+ console.warn('ERC-1155 collection retrieval requires specific token IDs or event analysis');
147
+ return {
148
+ accountAddress: params.accountAddress,
149
+ contractAddress: params.contractAddress,
150
+ totalBalance: 0,
151
+ tokensRetrieved: 0,
152
+ tokens: tokens,
153
+ note: 'ERC-1155 collection retrieval requires specific token IDs. Use getTokenWithMetadata() for individual tokens.'
154
+ };
155
+ }
156
+ // Handle different token standards
157
+ if (contractAnalysis.isERC721) {
158
+ // ERC-721: Get user's total balance and enumerate through tokens
159
+ const userBalance = await this.web3Api.getTokenBalance({
160
+ accountAddress: params.accountAddress,
161
+ contractAddress: params.contractAddress,
162
+ abi: params.abi,
163
+ tokenId: null, // null for ERC-721 total balance
164
+ chainId: params.chainId
165
+ });
166
+ console.log(`ERC-721 User balance for ${params.accountAddress}:`, userBalance);
167
+ if (userBalance === 0) {
168
+ return {
169
+ accountAddress: params.accountAddress,
170
+ contractAddress: params.contractAddress,
171
+ totalBalance: 0,
172
+ tokensRetrieved: 0,
173
+ tokens: []
174
+ };
175
+ }
176
+ // Enumerate through user's tokens
177
+ const maxTokens = params.maxTokens || userBalance;
178
+ const tokensToRetrieve = Math.min(maxTokens, userBalance);
179
+ for (let i = 0; i < tokensToRetrieve; i++) {
180
+ try {
181
+ const tokenId = await this.web3Api.getTokenOfOwnerByIndex({
182
+ contractAddress: params.contractAddress,
183
+ abi: params.abi,
184
+ accountAddress: params.accountAddress,
185
+ tokenIndex: i,
186
+ chainId: params.chainId
187
+ });
188
+ const tokenWithMetadata = await this.getTokenWithMetadata({
189
+ accountAddress: params.accountAddress,
190
+ contractAddress: params.contractAddress,
191
+ abi: params.abi,
192
+ tokenId,
193
+ chainId: params.chainId
194
+ });
195
+ if (tokenWithMetadata.hasBalance) {
196
+ tokens.push(tokenWithMetadata);
197
+ }
198
+ }
199
+ catch (error) {
200
+ console.warn(`Error retrieving ERC-721 token at index ${i}:`, error);
201
+ continue;
202
+ }
203
+ }
204
+ }
205
+ else {
206
+ // Unknown standard
207
+ return {
208
+ accountAddress: params.accountAddress,
209
+ contractAddress: params.contractAddress,
210
+ totalBalance: 0,
211
+ tokensRetrieved: 0,
212
+ tokens: [],
213
+ note: 'Unsupported token standard for collection retrieval'
214
+ };
215
+ }
216
+ // Calculate total balance based on retrieved tokens
217
+ let totalBalance = 0;
218
+ if (contractAnalysis.isERC721) {
219
+ // For ERC-721, total balance is the number of unique tokens owned
220
+ totalBalance = tokens.length;
221
+ }
222
+ else {
223
+ // For other standards, sum up individual token balances
224
+ totalBalance = tokens.reduce((sum, token) => sum + token.balance, 0);
225
+ }
226
+ return {
227
+ accountAddress: params.accountAddress,
228
+ contractAddress: params.contractAddress,
229
+ totalBalance,
230
+ tokensRetrieved: tokens.length,
231
+ tokens
232
+ };
233
+ }
234
+ catch (error) {
235
+ console.error('Error getting token collection:', error);
236
+ return {
237
+ accountAddress: params.accountAddress,
238
+ contractAddress: params.contractAddress,
239
+ totalBalance: 0,
240
+ tokensRetrieved: 0,
241
+ tokens: [],
242
+ note: 'Error retrieving collection'
243
+ };
244
+ }
245
+ }
246
+ async getTokenMetadata(params) {
247
+ params.abi = ethers.convertAbiToInterface(params.abi);
248
+ try {
249
+ const tokenUri = await this.web3Api.getTokenUri({
250
+ contractAddress: params.contractAddress,
251
+ abi: params.abi,
252
+ tokenId: params.tokenId,
253
+ chainId: params.chainId
254
+ });
255
+ let metadata = null;
256
+ if (tokenUri) {
257
+ metadata = await this.metadataService.fetchAndProcessMetadata(tokenUri, params.chainId);
258
+ }
259
+ return {
260
+ tokenId: params.tokenId,
261
+ tokenUri,
262
+ metadata
263
+ };
264
+ }
265
+ catch (error) {
266
+ console.error('Error getting token metadata:', error);
267
+ return {
268
+ tokenId: params.tokenId,
269
+ tokenUri: null,
270
+ metadata: null
271
+ };
272
+ }
273
+ }
274
+ }
275
+
276
+ /**
277
+ * MetadataDomainService - Clean IPFS metadata resolution
278
+ */
279
+ class MetadataDomainService {
280
+ constructor(ipfsApi) {
281
+ this.ipfsApi = ipfsApi;
282
+ }
283
+ async fetchAndProcessMetadata(tokenUri, chainId) {
284
+ return this.ipfsApi.fetchAndProcessMetadata(tokenUri, chainId);
285
+ }
286
+ async resolveIPFSUrl(url, chainId) {
287
+ return this.ipfsApi.resolveIPFSUrl(url, chainId);
288
+ }
289
+ }
290
+
291
+ /**
292
+ * ContractDomainService - Clean contract analysis without external dependencies
293
+ */
294
+ class ContractDomainService {
295
+ constructor() { }
296
+ analyzeContract(abi) {
297
+ abi = ethers.convertAbiToInterface(abi);
298
+ const methods = abi.fragments.filter(item => item.type === 'function').map(item => item.name);
299
+ // ERC-721 detection
300
+ const hasOwnerOf = methods.includes('ownerOf');
301
+ const hasTokenURI = methods.includes('tokenURI');
302
+ const hasTransferFrom = methods.includes('transferFrom');
303
+ const isERC721 = hasOwnerOf && hasTokenURI && hasTransferFrom;
304
+ // ERC-1155 detection
305
+ const hasBalanceOfBatch = methods.includes('balanceOfBatch');
306
+ const hasSafeBatchTransferFrom = methods.includes('safeBatchTransferFrom');
307
+ const hasURI = methods.includes('uri');
308
+ const isERC1155 = hasBalanceOfBatch && hasSafeBatchTransferFrom && hasURI;
309
+ return {
310
+ hasEnumeration: methods.includes('tokenByIndex') && methods.includes('totalSupply'),
311
+ hasOwnerOf,
312
+ hasBalanceOf: methods.includes('balanceOf'),
313
+ hasTokenURI,
314
+ hasTransfer: methods.includes('transfer') || methods.includes('transferFrom'),
315
+ hasApprove: methods.includes('approve'),
316
+ isERC721,
317
+ isERC1155
318
+ };
319
+ }
320
+ }
321
+
322
+ /**
323
+ * Web3ApplicationService - Application layer entrance point
324
+ * Orchestrates domain services and provides clean public interface
325
+ * Simplified architecture with concrete classes
326
+ */
327
+ class Web3ApplicationService {
328
+ constructor(web3Api, ipfsApi) {
329
+ // Type-safe metadata conversion methods for ERC-721/ERC-1155 standards
330
+ this.metadataMapper = {
331
+ fromERCStandard: (ercMetadata) => ({
332
+ name: ercMetadata.name || '',
333
+ description: ercMetadata.description || '',
334
+ imageUrl: ercMetadata.image || '',
335
+ externalUrl: ercMetadata.external_url,
336
+ animationUrl: ercMetadata.animation_url,
337
+ animationUrlConverted: undefined, // Will be set by IPFS conversion
338
+ attributes: ercMetadata.attributes || [],
339
+ ...ercMetadata
340
+ }),
341
+ toERCStandard: (metadata) => ({
342
+ name: metadata.name,
343
+ description: metadata.description,
344
+ image: metadata.imageUrl,
345
+ animation_url: metadata.animationUrl,
346
+ external_url: metadata.externalUrl,
347
+ attributes: metadata.attributes,
348
+ ...Object.fromEntries(Object.entries(metadata).filter(([key]) => !['name', 'description', 'imageUrl', 'animationUrl', 'externalUrl', 'attributes', 'animationUrlConverted'].includes(key)))
349
+ })
350
+ };
351
+ // Create domain services with injected infrastructure dependencies
352
+ this.contractDomainService = new ContractDomainService();
353
+ this.metadataDomainService = new MetadataDomainService(ipfsApi);
354
+ this.tokenDomainService = new TokenDomainService(web3Api, this.metadataDomainService, this.contractDomainService);
355
+ }
356
+ /**
357
+ * Get balance and metadata for a specific token
358
+ */
359
+ async getSpecificTokenBalance(request) {
360
+ if (!request.tokenId) {
361
+ return this.tokenDomainService.getTokenBalance({
362
+ accountAddress: request.accountAddress || '',
363
+ contractAddress: request.contractAddress,
364
+ abi: request.abi,
365
+ tokenId: '',
366
+ chainId: request.chainId
367
+ });
368
+ }
369
+ return this.tokenDomainService.getTokenWithMetadata({
370
+ accountAddress: request.accountAddress || '',
371
+ contractAddress: request.contractAddress,
372
+ abi: request.abi,
373
+ tokenId: request.tokenId || '',
374
+ chainId: request.chainId
375
+ });
376
+ }
377
+ /**
378
+ * Get metadata for a specific token from on-chain
379
+ */
380
+ async getTokenMetadata(request) {
381
+ const domainResult = await this.tokenDomainService.getTokenMetadata({
382
+ contractAddress: request.contractAddress,
383
+ abi: request.abi,
384
+ tokenId: request.tokenId || '',
385
+ chainId: request.chainId
386
+ });
387
+ return domainResult.metadata;
388
+ }
389
+ /**
390
+ * Retrieve entire collection of tokens with balance and metadata
391
+ */
392
+ async getTokenCollection(request) {
393
+ return this.tokenDomainService.getTokenCollection({
394
+ accountAddress: request.accountAddress || '',
395
+ contractAddress: request.contractAddress,
396
+ abi: request.abi,
397
+ chainId: request.chainId,
398
+ maxTokens: request.maxTokens,
399
+ tokenIds: request.tokenIds
400
+ });
401
+ }
402
+ /**
403
+ * Resolve IPFS URLs to HTTPS if needed
404
+ */
405
+ async resolveIPFSUrl(url, chainId) {
406
+ return this.metadataDomainService.resolveIPFSUrl(url, chainId);
407
+ }
408
+ /**
409
+ * Fetch and process metadata from URI with IPFS conversion
410
+ */
411
+ async fetchAndProcessMetadata(tokenUri, chainId) {
412
+ const domainMetadata = await this.metadataDomainService.fetchAndProcessMetadata(tokenUri, chainId);
413
+ if (!domainMetadata)
414
+ return null;
415
+ // Convert from ERC token standard to our clean interface
416
+ const cleanMetadata = this.metadataMapper.fromERCStandard(domainMetadata);
417
+ // Add IPFS conversion if needed
418
+ if (cleanMetadata.animationUrl?.startsWith('ipfs://')) {
419
+ return {
420
+ ...cleanMetadata,
421
+ animationUrlConverted: await this.resolveIPFSUrl(cleanMetadata.animationUrl, chainId)
422
+ };
423
+ }
424
+ return cleanMetadata;
425
+ }
426
+ }
427
+
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
+ /**
542
+ * Generate explorer URL for a given address or transaction
543
+ *
544
+ * @param chainData - Chain data containing explorer URL and chain ID
545
+ * @param address - Address or transaction hash
546
+ * @param type - Type of explorer URL ('address' or 'tx')
547
+ * @returns Explorer URL string
548
+ */
549
+ function getExplorerUrl(chainData, address, type) {
550
+ if (chainData?.explorerUrl) {
551
+ return `${chainData.explorerUrl}/${type}/${address}`;
552
+ }
553
+ // Fallback to hardcoded URLs if no explorer URL in chain data
554
+ const chainId = chainData?.chainId;
555
+ let url = '';
556
+ switch (chainId) {
557
+ case 1:
558
+ url = `https://etherscan.io/${type}/${address}`;
559
+ break;
560
+ case 4:
561
+ url = `https://rinkeby.etherscan.io/${type}/${address}`;
562
+ break;
563
+ case 56:
564
+ url = `https://bscscan.com/${type}/${address}`;
565
+ break;
566
+ case 97:
567
+ url = `https://testnet.bscscan.com/${type}/${address}`;
568
+ break;
569
+ case 137:
570
+ url = `https://explorer-mainnet.maticvigil.com/${type}/${address}`;
571
+ break;
572
+ case 80001:
573
+ url = `https://explorer-mumbai.maticvigil.com/${type}/${address}`;
574
+ break;
575
+ case 80002:
576
+ url = `https://www.oklink.com/amoy/${type}/${address}`;
577
+ break;
578
+ default:
579
+ url = `https://etherscan.io/${type}/${address}`;
580
+ }
581
+ return url;
582
+ }
583
+ /**
584
+ * Generate explorer URL using chain ID (async version that fetches chain data)
585
+ *
586
+ * @param getChainData - Function to get chain data by ID
587
+ * @param chainId - Chain ID to get explorer URL for
588
+ * @param address - Address or transaction hash
589
+ * @param type - Type of explorer URL ('address' or 'tx')
590
+ * @returns Promise resolving to explorer URL string
591
+ */
592
+ async function getExplorerUrlByChainId(getChainData, chainId, address, type) {
593
+ const chainData = await getChainData(chainId);
594
+ return getExplorerUrl(chainData, address, type);
595
+ }
596
+
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
+ exports.IPFSInfrastructureApi = IPFSInfrastructureApi;
617
+ exports.Web3ApplicationService = Web3ApplicationService;
618
+ exports.Web3InfrastructureApi = Web3InfrastructureApi;
619
+ exports.createWeb3SDK = createWeb3SDK;
620
+ exports.detectEnvironment = detectEnvironment;
621
+ exports.environment = environment;
622
+ exports.getExplorerUrl = getExplorerUrl;
623
+ exports.getExplorerUrlByChainId = getExplorerUrlByChainId;
624
+ exports.warnIfProblematicEnvironment = warnIfProblematicEnvironment;
625
+ //# sourceMappingURL=index-CzEluQmf.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CzEluQmf.cjs","sources":["../../src/core/environment.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/infrastructure/api/web3-api.ts","../../src/web3/infrastructure/api/ipfs-api.ts","../../src/web3/utils/explorer.utils.ts","../../src/web3/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["convertAbiToInterface","createSafeContract","getAccountTokenBalance","getTokenUri","getTokenOfOwnerByIndex","createWeb3ChainSDK"],"mappings":"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"}