@dappworks/kit 0.5.40 → 0.5.42

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 (85) hide show
  1. package/dist/PaginationState-Bmrrw0ky.d.mts +17 -0
  2. package/dist/PromiseState-8EAu4Zv4.d.mts +57 -0
  3. package/dist/StorageState-qapaHguM.d.mts +48 -0
  4. package/dist/aiem.d.mts +167 -0
  5. package/dist/aiem.mjs +5 -5
  6. package/dist/aiem.mjs.map +1 -1
  7. package/dist/{chunk-MPNSYZJU.mjs → chunk-2B3FO5P6.mjs} +5 -5
  8. package/dist/chunk-2B3FO5P6.mjs.map +1 -0
  9. package/dist/{chunk-2HNXZE3X.mjs → chunk-6HA5WR5H.mjs} +372 -401
  10. package/dist/chunk-6HA5WR5H.mjs.map +1 -0
  11. package/dist/{chunk-QA3E2PJT.mjs → chunk-AFXQRBS6.mjs} +3 -3
  12. package/dist/chunk-AFXQRBS6.mjs.map +1 -0
  13. package/dist/{chunk-O3FWAAEG.mjs → chunk-FLACAHWH.mjs} +7 -8
  14. package/dist/chunk-FLACAHWH.mjs.map +1 -0
  15. package/dist/chunk-GKAU4P5I.mjs +1 -1
  16. package/dist/chunk-GKAU4P5I.mjs.map +1 -1
  17. package/dist/{chunk-B7RV4C5E.mjs → chunk-GPPSD2BO.mjs} +4 -6
  18. package/dist/chunk-GPPSD2BO.mjs.map +1 -0
  19. package/dist/chunk-IMOLRP7I.mjs +1 -1
  20. package/dist/chunk-IMOLRP7I.mjs.map +1 -1
  21. package/dist/chunk-K7LFG5BA.mjs +2 -2
  22. package/dist/chunk-K7LFG5BA.mjs.map +1 -1
  23. package/dist/{chunk-2N4HH4ZF.mjs → chunk-NCGC2KDE.mjs} +4 -6
  24. package/dist/chunk-NCGC2KDE.mjs.map +1 -0
  25. package/dist/chunk-ONVPCAMQ.mjs +1 -1
  26. package/dist/chunk-ONVPCAMQ.mjs.map +1 -1
  27. package/dist/{chunk-PZ3VSAOC.mjs → chunk-TEVYTENF.mjs} +3 -3
  28. package/dist/chunk-TEVYTENF.mjs.map +1 -0
  29. package/dist/{chunk-2WRRZVUW.mjs → chunk-UMFAEQ5S.mjs} +30 -55
  30. package/dist/chunk-UMFAEQ5S.mjs.map +1 -0
  31. package/dist/{chunk-R4N52NI2.mjs → chunk-VDDGCMCB.mjs} +38 -28
  32. package/dist/chunk-VDDGCMCB.mjs.map +1 -0
  33. package/dist/chunk-XSGTWROT.mjs +1 -1
  34. package/dist/chunk-XSGTWROT.mjs.map +1 -1
  35. package/dist/{chunk-R4SQKVDQ.mjs → chunk-YOSPWY5K.mjs} +2 -2
  36. package/dist/chunk-YOSPWY5K.mjs.map +1 -0
  37. package/dist/dev.d.mts +26 -0
  38. package/dist/dev.mjs +6 -8
  39. package/dist/dev.mjs.map +1 -1
  40. package/dist/experimental.d.mts +190 -0
  41. package/dist/experimental.mjs +6 -8
  42. package/dist/experimental.mjs.map +1 -1
  43. package/dist/form.d.mts +384 -0
  44. package/dist/form.mjs +15 -19
  45. package/dist/form.mjs.map +1 -1
  46. package/dist/index-CUKoRIdy.d.mts +3 -0
  47. package/dist/index.d.mts +90 -0
  48. package/dist/index.mjs +8 -8
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/inspector.d.mts +15 -0
  51. package/dist/inspector.mjs +3 -4
  52. package/dist/inspector.mjs.map +1 -1
  53. package/dist/jsoncomponent.d.mts +22 -0
  54. package/dist/jsoncomponent.mjs +2 -2
  55. package/dist/jsoncomponent.mjs.map +1 -1
  56. package/dist/jsontable.d.mts +126 -0
  57. package/dist/jsontable.mjs +5 -5
  58. package/dist/jsontable.mjs.map +1 -1
  59. package/dist/metrics.d.mts +121 -0
  60. package/dist/metrics.mjs +6 -6
  61. package/dist/metrics.mjs.map +1 -1
  62. package/dist/plugins.d.mts +118 -0
  63. package/dist/plugins.mjs +5 -5
  64. package/dist/plugins.mjs.map +1 -1
  65. package/dist/root-BPMUmS6H.d.mts +111 -0
  66. package/dist/ui.d.mts +29 -0
  67. package/dist/ui.mjs +5 -6
  68. package/dist/ui.mjs.map +1 -1
  69. package/dist/utils.d.mts +232 -0
  70. package/dist/utils.mjs +4 -4
  71. package/dist/utils.mjs.map +1 -1
  72. package/dist/wallet.d.mts +198 -0
  73. package/dist/wallet.mjs +58 -16
  74. package/dist/wallet.mjs.map +1 -1
  75. package/package.json +4 -3
  76. package/dist/chunk-2HNXZE3X.mjs.map +0 -1
  77. package/dist/chunk-2N4HH4ZF.mjs.map +0 -1
  78. package/dist/chunk-2WRRZVUW.mjs.map +0 -1
  79. package/dist/chunk-B7RV4C5E.mjs.map +0 -1
  80. package/dist/chunk-MPNSYZJU.mjs.map +0 -1
  81. package/dist/chunk-O3FWAAEG.mjs.map +0 -1
  82. package/dist/chunk-PZ3VSAOC.mjs.map +0 -1
  83. package/dist/chunk-QA3E2PJT.mjs.map +0 -1
  84. package/dist/chunk-R4N52NI2.mjs.map +0 -1
  85. package/dist/chunk-R4SQKVDQ.mjs.map +0 -1
@@ -0,0 +1,232 @@
1
+ import DataLoader from 'dataloader';
2
+ import { Table } from 'dexie';
3
+ import BigNumber from 'bignumber.js';
4
+ import * as lodash from 'lodash';
5
+
6
+ declare class DexieCache {
7
+ kv: Table<{
8
+ key: string;
9
+ value: {
10
+ value: any;
11
+ expiration: number;
12
+ };
13
+ }, any, {
14
+ key: string;
15
+ value: {
16
+ value: any;
17
+ expiration: number;
18
+ };
19
+ }>;
20
+ kv_get: DataLoader<string, {
21
+ value: any;
22
+ expiration: number;
23
+ }, string>;
24
+ kv_set: DataLoader<{
25
+ key: string;
26
+ value: any;
27
+ ttl: number;
28
+ }, {
29
+ key: string;
30
+ value: any;
31
+ ttl: number;
32
+ }, {
33
+ key: string;
34
+ value: any;
35
+ ttl: number;
36
+ }>;
37
+ options: {
38
+ ttl: number;
39
+ prefix: string;
40
+ };
41
+ get(_key: any): Promise<any>;
42
+ getRaw(_key: any): Promise<any>;
43
+ set(_key: any, value: any, options?: {
44
+ ttl?: number;
45
+ }): Promise<this>;
46
+ delete(key: any): Promise<void>;
47
+ clear(): Promise<void>;
48
+ wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>(key: any, fn: T, args?: {
49
+ ttl?: number;
50
+ alowStale?: boolean;
51
+ }): Promise<Awaited<U>>;
52
+ }
53
+ declare const cache: DexieCache;
54
+
55
+ declare const helper: {
56
+ env: {
57
+ isBrower: boolean;
58
+ isIopayMobile: boolean;
59
+ onBrowser(func: any): void;
60
+ isPc(): boolean;
61
+ isInIframe(): boolean;
62
+ };
63
+ promise: {
64
+ sleep(ms: any): Promise<unknown>;
65
+ runAsync<T, U = Error>(promise: Promise<T>): Promise<[U | null, T | null]>;
66
+ };
67
+ object: {
68
+ crawlObject(object: any, options: any): any;
69
+ crawl(object: any, options: any): any;
70
+ };
71
+ json: {
72
+ isJsonString(str: string): boolean;
73
+ safeParse(val: any): any;
74
+ };
75
+ deepAssign(target: any, ...sources: any[]): any;
76
+ isObject(value: any): boolean;
77
+ deepMerge(obj: any, newObj: any): any;
78
+ img: {
79
+ parse(src: string | undefined): string;
80
+ };
81
+ string: {
82
+ copy(str: string): void;
83
+ fristUpper(str: string): string;
84
+ firstUpperCase(str: string): string;
85
+ toFixString(str: any, length: any): any;
86
+ truncate(fullStr: string, strLen: any, separator: any): string;
87
+ validAbi(abi: string): {
88
+ abi: any[];
89
+ address: string;
90
+ };
91
+ random(count: number): string;
92
+ };
93
+ download: {
94
+ downloadByBlob(name: string, blob: Blob): void;
95
+ downloadJSON(name: string, jsonObj: object): void;
96
+ };
97
+ number: {
98
+ countNonZeroNumbers: (str: string) => number;
99
+ numberWithCommas(num: number): string;
100
+ getBN: (value: number | string | BigNumber) => BigNumber;
101
+ toPrecisionFloor: (str: number | string, options?: {
102
+ decimals?: number;
103
+ format?: string;
104
+ toLocalString?: boolean;
105
+ }) => any;
106
+ warpBigNumber(value: string, decimals?: number, options?: {
107
+ format?: string;
108
+ fallback?: string;
109
+ min?: number;
110
+ }): {
111
+ value: string;
112
+ format: string;
113
+ originFormat: string;
114
+ decimals: string;
115
+ };
116
+ numberFormat(str: string | number, format?: string, options?: {
117
+ min?: number;
118
+ fallback?: string;
119
+ }): string;
120
+ };
121
+ address: {
122
+ convertAddress: (addressMode: "io" | "0x", address?: string) => string;
123
+ validateEthAddress: (address: string) => boolean;
124
+ validateIoAddress: (address: string) => boolean;
125
+ validateAddress: (address: string) => boolean;
126
+ };
127
+ };
128
+
129
+ declare const _: {
130
+ throttle: {
131
+ <T extends (...args: any) => any>(func: T, wait?: number, options?: lodash.ThrottleSettingsLeading): lodash.DebouncedFuncLeading<T>;
132
+ <T_1 extends (...args: any) => any>(func: T_1, wait?: number, options?: lodash.ThrottleSettings): lodash.DebouncedFunc<T_1>;
133
+ };
134
+ debounce: {
135
+ <T_2 extends (...args: any) => any>(func: T_2, wait: number, options: lodash.DebounceSettingsLeading): lodash.DebouncedFuncLeading<T_2>;
136
+ <T_3 extends (...args: any) => any>(func: T_3, wait?: number, options?: lodash.DebounceSettings): lodash.DebouncedFunc<T_3>;
137
+ };
138
+ each: {
139
+ <T_4>(collection: T_4[], iteratee?: lodash.ArrayIterator<T_4, any>): T_4[];
140
+ (collection: string, iteratee?: lodash.StringIterator<any>): string;
141
+ <T_5>(collection: lodash.List<T_5>, iteratee?: lodash.ListIterator<T_5, any>): lodash.List<T_5>;
142
+ <T_6 extends object>(collection: T_6, iteratee?: lodash.ObjectIterator<T_6, any>): T_6;
143
+ <T_7, TArray extends T_7[]>(collection: TArray & T_7[], iteratee?: lodash.ArrayIterator<T_7, any>): TArray;
144
+ <TString extends string>(collection: TString, iteratee?: lodash.StringIterator<any>): TString;
145
+ <T_8, TList extends lodash.List<T_8>>(collection: TList & lodash.List<T_8>, iteratee?: lodash.ListIterator<T_8, any>): TList;
146
+ <T_9 extends object>(collection: T_9, iteratee?: lodash.ObjectIterator<T_9, any>): T_9;
147
+ };
148
+ flattenDeep: <T_10>(array: lodash.ListOfRecursiveArraysOrValues<T_10>) => lodash.Flat<T_10>[];
149
+ omitBy: {
150
+ <T_11>(object: lodash.Dictionary<T_11>, predicate?: lodash.ValueKeyIteratee<T_11>): lodash.Dictionary<T_11>;
151
+ <T_12>(object: lodash.NumericDictionary<T_12>, predicate?: lodash.ValueKeyIteratee<T_12>): lodash.NumericDictionary<T_12>;
152
+ <T_13 extends object>(object: T_13, predicate: lodash.ValueKeyIteratee<T_13[keyof T_13]>): Partial<T_13>;
153
+ };
154
+ isNil: (value: any) => value is null;
155
+ keyBy: {
156
+ <T_14>(collection: lodash.List<T_14>, iteratee?: lodash.ValueIterateeCustom<T_14, lodash.PropertyName>): lodash.Dictionary<T_14>;
157
+ <T_15 extends object>(collection: T_15, iteratee?: lodash.ValueIterateeCustom<T_15[keyof T_15], lodash.PropertyName>): lodash.Dictionary<T_15[keyof T_15]>;
158
+ };
159
+ mergeWith: {
160
+ <TObject, TSource>(object: TObject, source: TSource, customizer: (value: any, srcValue: any, key: string, object: any, source: any, stack: any) => any): TObject & TSource;
161
+ <TObject_1, TSource1, TSource2>(object: TObject_1, source1: TSource1, source2: TSource2, customizer: (value: any, srcValue: any, key: string, object: any, source: any, stack: any) => any): TObject_1 & TSource1 & TSource2;
162
+ <TObject_2, TSource1_1, TSource2_1, TSource3>(object: TObject_2, source1: TSource1_1, source2: TSource2_1, source3: TSource3, customizer: (value: any, srcValue: any, key: string, object: any, source: any, stack: any) => any): TObject_2 & TSource1_1 & TSource2_1 & TSource3;
163
+ <TObject_3, TSource1_2, TSource2_2, TSource3_1, TSource4>(object: TObject_3, source1: TSource1_2, source2: TSource2_2, source3: TSource3_1, source4: TSource4, customizer: (value: any, srcValue: any, key: string, object: any, source: any, stack: any) => any): TObject_3 & TSource1_2 & TSource2_2 & TSource3_1 & TSource4;
164
+ (object: any, ...otherArgs: any[]): any;
165
+ };
166
+ cloneDeep: <T_16>(value: T_16) => T_16;
167
+ groupBy: {
168
+ <T_17>(collection: lodash.List<T_17>, iteratee?: lodash.ValueIteratee<T_17>): lodash.Dictionary<T_17[]>;
169
+ <T_18 extends object>(collection: T_18, iteratee?: lodash.ValueIteratee<T_18[keyof T_18]>): lodash.Dictionary<T_18[keyof T_18][]>;
170
+ };
171
+ get: {
172
+ <TObject_4 extends object, TKey extends keyof TObject_4>(object: TObject_4, path: TKey | [TKey]): TObject_4[TKey];
173
+ <TObject_5 extends object, TKey_1 extends keyof TObject_5>(object: TObject_5, path: TKey_1 | [TKey_1]): TObject_5[TKey_1];
174
+ <TObject_6 extends object, TKey_2 extends keyof TObject_6, TDefault>(object: TObject_6, path: TKey_2 | [TKey_2], defaultValue: TDefault): TDefault | Exclude<TObject_6[TKey_2], undefined>;
175
+ <TObject_7 extends object, TKey1 extends keyof TObject_7, TKey2 extends keyof TObject_7[TKey1]>(object: TObject_7, path: [TKey1, TKey2]): TObject_7[TKey1][TKey2];
176
+ <TObject_8 extends object, TKey1_1 extends keyof TObject_8, TKey2_1 extends keyof NonNullable<TObject_8[TKey1_1]>>(object: TObject_8, path: [TKey1_1, TKey2_1]): NonNullable<TObject_8[TKey1_1]>[TKey2_1];
177
+ <TObject_9 extends object, TKey1_2 extends keyof TObject_9, TKey2_2 extends keyof NonNullable<TObject_9[TKey1_2]>, TDefault_1>(object: TObject_9, path: [TKey1_2, TKey2_2], defaultValue: TDefault_1): TDefault_1 | Exclude<NonNullable<TObject_9[TKey1_2]>[TKey2_2], undefined>;
178
+ <TObject_10 extends object, TKey1_3 extends keyof TObject_10, TKey2_3 extends keyof TObject_10[TKey1_3], TKey3 extends keyof TObject_10[TKey1_3][TKey2_3]>(object: TObject_10, path: [TKey1_3, TKey2_3, TKey3]): TObject_10[TKey1_3][TKey2_3][TKey3];
179
+ <TObject_11 extends object, TKey1_4 extends keyof TObject_11, TKey2_4 extends keyof NonNullable<TObject_11[TKey1_4]>, TKey3_1 extends keyof NonNullable<NonNullable<TObject_11[TKey1_4]>[TKey2_4]>>(object: TObject_11, path: [TKey1_4, TKey2_4, TKey3_1]): NonNullable<NonNullable<TObject_11[TKey1_4]>[TKey2_4]>[TKey3_1];
180
+ <TObject_12 extends object, TKey1_5 extends keyof TObject_12, TKey2_5 extends keyof NonNullable<TObject_12[TKey1_5]>, TKey3_2 extends keyof NonNullable<NonNullable<TObject_12[TKey1_5]>[TKey2_5]>, TDefault_2>(object: TObject_12, path: [TKey1_5, TKey2_5, TKey3_2], defaultValue: TDefault_2): TDefault_2 | Exclude<NonNullable<NonNullable<TObject_12[TKey1_5]>[TKey2_5]>[TKey3_2], undefined>;
181
+ <TObject_13 extends object, TKey1_6 extends keyof TObject_13, TKey2_6 extends keyof TObject_13[TKey1_6], TKey3_3 extends keyof TObject_13[TKey1_6][TKey2_6], TKey4 extends keyof TObject_13[TKey1_6][TKey2_6][TKey3_3]>(object: TObject_13, path: [TKey1_6, TKey2_6, TKey3_3, TKey4]): TObject_13[TKey1_6][TKey2_6][TKey3_3][TKey4];
182
+ <TObject_14 extends object, TKey1_7 extends keyof TObject_14, TKey2_7 extends keyof NonNullable<TObject_14[TKey1_7]>, TKey3_4 extends keyof NonNullable<NonNullable<TObject_14[TKey1_7]>[TKey2_7]>, TKey4_1 extends keyof NonNullable<NonNullable<NonNullable<TObject_14[TKey1_7]>[TKey2_7]>[TKey3_4]>>(object: TObject_14, path: [TKey1_7, TKey2_7, TKey3_4, TKey4_1]): NonNullable<NonNullable<NonNullable<TObject_14[TKey1_7]>[TKey2_7]>[TKey3_4]>[TKey4_1];
183
+ <TObject_15 extends object, TKey1_8 extends keyof TObject_15, TKey2_8 extends keyof NonNullable<TObject_15[TKey1_8]>, TKey3_5 extends keyof NonNullable<NonNullable<TObject_15[TKey1_8]>[TKey2_8]>, TKey4_2 extends keyof NonNullable<NonNullable<NonNullable<TObject_15[TKey1_8]>[TKey2_8]>[TKey3_5]>, TDefault_3>(object: TObject_15, path: [TKey1_8, TKey2_8, TKey3_5, TKey4_2], defaultValue: TDefault_3): TDefault_3 | Exclude<NonNullable<NonNullable<NonNullable<TObject_15[TKey1_8]>[TKey2_8]>[TKey3_5]>[TKey4_2], undefined>;
184
+ <T_19>(object: lodash.NumericDictionary<T_19>, path: number): T_19;
185
+ <T_20>(object: lodash.NumericDictionary<T_20>, path: number): T_20;
186
+ <T_21, TDefault_4>(object: lodash.NumericDictionary<T_21>, path: number, defaultValue: TDefault_4): T_21 | TDefault_4;
187
+ <TDefault_5>(object: null, path: lodash.PropertyPath, defaultValue: TDefault_5): TDefault_5;
188
+ (object: null, path: lodash.PropertyPath): undefined;
189
+ <TObject_16, TPath extends string>(data: TObject_16, path: TPath): string extends TPath ? any : lodash.GetFieldType<TObject_16, TPath, "Path">;
190
+ <TObject_17, TPath_1 extends string, TDefault_6 = lodash.GetFieldType<TObject_17, TPath_1, "Path">>(data: TObject_17, path: TPath_1, defaultValue: TDefault_6): TDefault_6 | Exclude<lodash.GetFieldType<TObject_17, TPath_1, "Path">, null>;
191
+ (object: any, path: lodash.PropertyPath, defaultValue?: any): any;
192
+ };
193
+ set: {
194
+ <T_22 extends object>(object: T_22, path: lodash.PropertyPath, value: any): T_22;
195
+ <TResult>(object: object, path: lodash.PropertyPath, value: any): TResult;
196
+ };
197
+ remove: <TList_1 extends lodash.MutableList<any>>(array: ((<X>() => X extends { [K in keyof TList_1]: TList_1[K]; } ? 1 : 2) extends <X_1>() => X_1 extends { -readonly [K_1 in keyof TList_1]: TList_1[K_1]; } ? 1 : 2 ? true : false) extends true ? TList_1 : never, predicate?: lodash.ListIteratee<TList_1[0]>) => TList_1[0][];
198
+ merge: {
199
+ <TObject_18, TSource_1>(object: TObject_18, source: TSource_1): TObject_18 & TSource_1;
200
+ <TObject_19, TSource1_3, TSource2_3>(object: TObject_19, source1: TSource1_3, source2: TSource2_3): TObject_19 & TSource1_3 & TSource2_3;
201
+ <TObject_20, TSource1_4, TSource2_4, TSource3_2>(object: TObject_20, source1: TSource1_4, source2: TSource2_4, source3: TSource3_2): TObject_20 & TSource1_4 & TSource2_4 & TSource3_2;
202
+ <TObject_21, TSource1_5, TSource2_5, TSource3_3, TSource4_1>(object: TObject_21, source1: TSource1_5, source2: TSource2_5, source3: TSource3_3, source4: TSource4_1): TObject_21 & TSource1_5 & TSource2_5 & TSource3_3 & TSource4_1;
203
+ (object: any, ...otherArgs: any[]): any;
204
+ };
205
+ isEqual: (value: any, other: any) => boolean;
206
+ uniqWith: <T_23>(array: lodash.List<T_23>, comparator?: lodash.Comparator<T_23>) => T_23[];
207
+ orderBy: {
208
+ <T_24>(collection: lodash.List<T_24>, iteratees?: lodash.Many<lodash.ListIterator<T_24, unknown>>, orders?: lodash.Many<boolean | "desc" | "asc">): T_24[];
209
+ <T_25>(collection: lodash.List<T_25>, iteratees?: lodash.Many<lodash.ListIteratee<T_25>>, orders?: lodash.Many<boolean | "desc" | "asc">): T_25[];
210
+ <T_26 extends object>(collection: T_26, iteratees?: lodash.Many<lodash.ObjectIterator<T_26, unknown>>, orders?: lodash.Many<boolean | "desc" | "asc">): T_26[keyof T_26][];
211
+ <T_27 extends object>(collection: T_27, iteratees?: lodash.Many<lodash.ObjectIteratee<T_27>>, orders?: lodash.Many<boolean | "desc" | "asc">): T_27[keyof T_27][];
212
+ };
213
+ map: {
214
+ <T_28 extends readonly [unknown, ...unknown[]], TResult_1>(collection: T_28, iteratee: lodash.TupleIterator<T_28, TResult_1>): { [K_2 in keyof T_28]: TResult_1; };
215
+ <T_29, TResult_2>(collection: T_29[], iteratee: lodash.ArrayIterator<T_29, TResult_2>): TResult_2[];
216
+ <T_30, TResult_3>(collection: lodash.List<T_30>, iteratee: lodash.ListIterator<T_30, TResult_3>): TResult_3[];
217
+ <T_31>(collection: lodash.Dictionary<T_31> | lodash.NumericDictionary<T_31>): T_31[];
218
+ <T_32 extends object, TResult_4>(collection: T_32, iteratee: lodash.ObjectIterator<T_32, TResult_4>): TResult_4[];
219
+ <T_33, K_3 extends keyof T_33>(collection: lodash.Dictionary<T_33> | lodash.NumericDictionary<T_33>, iteratee: K_3): T_33[K_3][];
220
+ <T_34>(collection: lodash.Dictionary<T_34> | lodash.NumericDictionary<T_34>, iteratee?: string): any[];
221
+ <T_35>(collection: lodash.Dictionary<T_35> | lodash.NumericDictionary<T_35>, iteratee?: object): boolean[];
222
+ };
223
+ zip: {
224
+ <T1, T2>(arrays1: lodash.List<T1>, arrays2: lodash.List<T2>): [T1, T2][];
225
+ <T1_1, T2_1, T3>(arrays1: lodash.List<T1_1>, arrays2: lodash.List<T2_1>, arrays3: lodash.List<T3>): [T1_1, T2_1, T3][];
226
+ <T1_2, T2_2, T3_1, T4>(arrays1: lodash.List<T1_2>, arrays2: lodash.List<T2_2>, arrays3: lodash.List<T3_1>, arrays4: lodash.List<T4>): [T1_2, T2_2, T3_1, T4][];
227
+ <T1_3, T2_3, T3_2, T4_1, T5>(arrays1: lodash.List<T1_3>, arrays2: lodash.List<T2_3>, arrays3: lodash.List<T3_2>, arrays4: lodash.List<T4_1>, arrays5: lodash.List<T5>): [T1_3, T2_3, T3_2, T4_1, T5][];
228
+ <T_36>(...arrays: lodash.List<T_36>[]): T_36[][];
229
+ };
230
+ };
231
+
232
+ export { _, cache, helper };
package/dist/utils.mjs CHANGED
@@ -1,6 +1,6 @@
1
- export { cache } from './chunk-2N4HH4ZF.mjs';
2
- export { helper } from './chunk-R4N52NI2.mjs';
1
+ export { cache } from './chunk-NCGC2KDE.mjs';
2
+ export { helper } from './chunk-VDDGCMCB.mjs';
3
3
  export { _ } from './chunk-K7LFG5BA.mjs';
4
- import './chunk-R4SQKVDQ.mjs';
5
- //# sourceMappingURL=out.js.map
4
+ import './chunk-YOSPWY5K.mjs';
5
+ //# sourceMappingURL=utils.mjs.map
6
6
  //# sourceMappingURL=utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"utils.mjs"}
@@ -0,0 +1,198 @@
1
+ import React from 'react';
2
+ import { Chain } from 'viem/chains';
3
+ import { a as PromiseHookData, S as StorageState } from './StorageState-qapaHguM.mjs';
4
+ import { S as Store } from './root-BPMUmS6H.mjs';
5
+ import { WalletClient, PublicClient, HttpTransport, TransactionReceipt } from 'viem';
6
+ import EventEmitter from 'events';
7
+ import { SwitchChainMutateAsync } from 'wagmi/query';
8
+ import * as wagmi from 'wagmi';
9
+ import { Config } from 'wagmi';
10
+ import { Chain as Chain$1 } from '@rainbow-me/rainbowkit';
11
+ import * as _rainbow_me_rainbowkit_dist_config_getDefaultConfig from '@rainbow-me/rainbowkit/dist/config/getDefaultConfig';
12
+ import 'mobx';
13
+ import 'typed-emitter';
14
+
15
+ declare const WalletProvider: (({ children, theme, appName, supportedChains, compatibleMode, rainbowKitProps, projectId }: {
16
+ children: React.ReactNode;
17
+ theme?: 'dark' | 'light';
18
+ appName?: string;
19
+ supportedChains?: Chain[];
20
+ compatibleMode?: boolean;
21
+ debug?: boolean;
22
+ rainbowKitProps?: any;
23
+ projectId?: string;
24
+ }) => React.JSX.Element) & {
25
+ displayName: string;
26
+ };
27
+
28
+ declare const AutoConnectIopayWallet: () => any;
29
+
30
+ type NetworkObject = {
31
+ name: string;
32
+ chainId: number;
33
+ rpcUrl: string;
34
+ logoUrl: string;
35
+ explorerUrl: string;
36
+ explorerName: string;
37
+ nativeCoin: string;
38
+ type: 'mainnet' | 'testnet';
39
+ };
40
+ type WalletTransactionHistoryType = {
41
+ chainId: number;
42
+ tx?: string;
43
+ msg: string;
44
+ timestamp: number;
45
+ type: string;
46
+ status: 'loading' | 'success' | 'fail';
47
+ };
48
+ type AddressMode = 'io' | '0x';
49
+ declare const iotex: Chain;
50
+ declare const iotexTestnet: Chain;
51
+
52
+ declare class WalletStore implements Store {
53
+ sid: string;
54
+ autoObservable: boolean;
55
+ account: `0x${string}`;
56
+ isSuccessDialogOpen: boolean;
57
+ get isInSafeApp(): boolean;
58
+ isLedger: boolean;
59
+ isConnect: boolean;
60
+ walletClient: WalletClient;
61
+ event: EventEmitter<[never]>;
62
+ switchChain: SwitchChainMutateAsync<Config, unknown> | undefined;
63
+ updateTicker: number;
64
+ addressMode: AddressMode;
65
+ isIoTeXChain: boolean;
66
+ setAddressMode(mode: AddressMode): void;
67
+ get accountFormat(): string;
68
+ get connectAccountEllipsisFormat(): string;
69
+ get accountEllipsisFormat(): string;
70
+ get supportedChains(): Chain$1[];
71
+ chain: Chain$1 | undefined;
72
+ openConnectModal: any;
73
+ disconnect: any;
74
+ balance: PromiseHookData<() => Promise<{
75
+ value: string;
76
+ format: string;
77
+ originFormat: string;
78
+ decimals: string;
79
+ }>, Promise<{
80
+ value: string;
81
+ format: string;
82
+ originFormat: string;
83
+ decimals: string;
84
+ }>>;
85
+ constructor(args?: Partial<WalletStore>);
86
+ use(): void;
87
+ private useWalletClientWithCompatibleMode;
88
+ useWalletClientWithoutCompatibleMode(): void;
89
+ get publicClient(): PublicClient<HttpTransport, Chain$1, any, any>;
90
+ set(args: Partial<WalletStore>): void;
91
+ toJSON(): {
92
+ account: `0x${string}`;
93
+ };
94
+ prepare(chainId?: number): Promise<WalletStore>;
95
+ waitForTransactionReceipt({ hash }: {
96
+ hash: any;
97
+ }): Promise<TransactionReceipt>;
98
+ static SendTx(...args: Parameters<WalletStore['sendTx']>): Promise<TransactionReceipt>;
99
+ static SendRawTx(...args: Parameters<WalletStore['sendRawTx']>): Promise<TransactionReceipt>;
100
+ sendTx({ chainId, tx, autoAlert, loadingText, successText, historyItem, showSuccessDialog, onSuccess, onError, }: {
101
+ chainId: number | string;
102
+ tx: any;
103
+ autoAlert?: boolean;
104
+ loadingText?: string;
105
+ successText?: string;
106
+ showSuccessDialog?: boolean;
107
+ historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;
108
+ onSuccess?: ({ receipt }: {
109
+ receipt: TransactionReceipt;
110
+ }) => Promise<void>;
111
+ onError?: (error: any) => void;
112
+ }): Promise<TransactionReceipt>;
113
+ sendRawTx({ chainId, address, data, value, autoAlert, onSended, onSuccess, onError, historyItem, loadingText, showSuccessDialog, }: {
114
+ loadingText?: string;
115
+ chainId: number | string;
116
+ address: string;
117
+ data: string | null;
118
+ value?: string;
119
+ autoRefresh?: boolean;
120
+ autoAlert?: boolean;
121
+ historyItem?: Pick<WalletTransactionHistoryType, 'msg' | 'type'>;
122
+ showTransactionSubmitDialog?: boolean;
123
+ showSuccessDialog?: boolean;
124
+ onSended?: ({ res }: {
125
+ res: TransactionReceipt;
126
+ }) => void;
127
+ onSuccess?: ({ res }: {
128
+ res: TransactionReceipt;
129
+ }) => void;
130
+ onError?: (error: any) => void;
131
+ }): Promise<TransactionReceipt | undefined>;
132
+ signMessage(message: string): Promise<string>;
133
+ }
134
+
135
+ declare class WalletRpcStore implements Store {
136
+ sid: string;
137
+ autoObservable: boolean;
138
+ curRpc: StorageState<unknown>;
139
+ isAutoSelectRpc: StorageState<unknown>;
140
+ customRpc: string;
141
+ rpcList: StorageState<unknown>;
142
+ showCustomRpc: boolean;
143
+ get currentRpc(): any;
144
+ addCustomRpc(): string;
145
+ addToMetamask(url: any): Promise<void>;
146
+ switchOrAddChain(chainId: number): Promise<unknown>;
147
+ addToMetamaskById(id: number): Promise<unknown>;
148
+ refresh(): void;
149
+ latencyColor(latency: number): "text-red-500" | "text-green-500" | "text-yellow-500";
150
+ testRpcFunction(url: string): Promise<{
151
+ url: string;
152
+ lentency: number;
153
+ height: number;
154
+ }>;
155
+ testRpc(): void;
156
+ removeRpc(name: string): void;
157
+ scoreIcon(score: number): React.JSX.Element;
158
+ get wallet(): WalletStore;
159
+ autoSelectRpc(): Promise<void>;
160
+ }
161
+ declare class WalletHistoryStore implements Store {
162
+ sid: string;
163
+ isRender: boolean;
164
+ autoObservable: boolean;
165
+ set(params: Partial<WalletHistoryStore>): void;
166
+ private history;
167
+ get historyList(): WalletTransactionHistoryType[];
168
+ recordHistory(item: WalletTransactionHistoryType): void;
169
+ updateHistoryStatusByTx(tx: string | null, status: 'loading' | 'success' | 'fail'): void;
170
+ clearHistory(): void;
171
+ }
172
+
173
+ declare class WalletConfigStore implements Store {
174
+ sid: string;
175
+ autoObservable: boolean;
176
+ appName: string;
177
+ projectId: string;
178
+ supportedChains: Chain$1[];
179
+ defaultChainId: number;
180
+ updateTicker: number;
181
+ walletUpdateTick: number;
182
+ isConnect: boolean;
183
+ isInSafeApp: boolean;
184
+ compatibleMode: boolean;
185
+ constructor(args: Partial<WalletConfigStore>);
186
+ set(params: Partial<WalletConfigStore>): void;
187
+ get reconnectOnMount(): boolean;
188
+ get rainbowKitConfig(): wagmi.Config<_rainbow_me_rainbowkit_dist_config_getDefaultConfig._chains, _rainbow_me_rainbowkit_dist_config_getDefaultConfig._transports, wagmi.CreateConnectorFn<unknown, Record<string, unknown>, Record<string, unknown>>[]>;
189
+ }
190
+
191
+ declare const RpcList: (() => React.JSX.Element) & {
192
+ displayName: string;
193
+ };
194
+
195
+ declare const ConnectLedger: () => Promise<void>;
196
+ declare const DisconnectLedger: () => void;
197
+
198
+ export { type AddressMode, AutoConnectIopayWallet, ConnectLedger, DisconnectLedger, type NetworkObject, RpcList, WalletConfigStore, WalletHistoryStore, WalletProvider, WalletRpcStore, WalletStore, type WalletTransactionHistoryType, iotex, iotexTestnet };
package/dist/wallet.mjs CHANGED
@@ -1,20 +1,20 @@
1
- import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-2WRRZVUW.mjs';
2
- export { ConnectLedger, DisconnectLedger, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-2WRRZVUW.mjs';
3
- import './chunk-B7RV4C5E.mjs';
4
- import './chunk-O3FWAAEG.mjs';
5
- import './chunk-2N4HH4ZF.mjs';
6
- import './chunk-PZ3VSAOC.mjs';
1
+ import { WalletConfigStore, WalletStore, WalletRpcStore } from './chunk-UMFAEQ5S.mjs';
2
+ export { ConnectLedger, DisconnectLedger, WalletConfigStore, WalletHistoryStore, WalletRpcStore, WalletStore } from './chunk-UMFAEQ5S.mjs';
3
+ import './chunk-GPPSD2BO.mjs';
4
+ import './chunk-FLACAHWH.mjs';
5
+ import './chunk-NCGC2KDE.mjs';
6
+ import './chunk-TEVYTENF.mjs';
7
7
  import { ToastPlugin } from './chunk-IMOLRP7I.mjs';
8
8
  import './chunk-GKAU4P5I.mjs';
9
9
  import { RootStore } from './chunk-XSGTWROT.mjs';
10
- import './chunk-R4N52NI2.mjs';
10
+ import { helper } from './chunk-VDDGCMCB.mjs';
11
11
  import './chunk-ONVPCAMQ.mjs';
12
12
  import './chunk-K7LFG5BA.mjs';
13
- import { __spreadValues } from './chunk-R4SQKVDQ.mjs';
13
+ import { __spreadValues } from './chunk-YOSPWY5K.mjs';
14
14
  import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';
15
15
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
16
- import React2, { useEffect } from 'react';
17
- import { WagmiProvider } from 'wagmi';
16
+ import React2, { useEffect, useState, useMemo, useCallback } from 'react';
17
+ import { WagmiProvider, useAccount, useConnect } from 'wagmi';
18
18
  import { iotex as iotex$1, iotexTestnet as iotexTestnet$1 } from 'viem/chains';
19
19
  import SafeAppsSDK from '@safe-global/safe-apps-sdk';
20
20
  import { observer } from 'mobx-react-lite';
@@ -27,6 +27,49 @@ var iotex = __spreadValues({
27
27
  var iotexTestnet = __spreadValues({
28
28
  iconUrl: "https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png"
29
29
  }, iotexTestnet$1);
30
+ var AutoConnectIopayWallet = () => {
31
+ const { isConnected } = useAccount();
32
+ const { connect, connectors } = useConnect();
33
+ const [hasTriedAutoConnect, setHasTriedAutoConnect] = useState(false);
34
+ const isIopayEnvironment = useMemo(() => {
35
+ if (typeof window === "undefined") return false;
36
+ return helper.env.isIopayMobile && !!window.ethereum;
37
+ }, []);
38
+ const iopayConnector = useMemo(() => {
39
+ return connectors.find(
40
+ (connector) => {
41
+ var _a, _b;
42
+ return ((_a = connector.id) == null ? void 0 : _a.toLowerCase().includes("iopay")) || ((_b = connector.name) == null ? void 0 : _b.toLowerCase().includes("iopay"));
43
+ }
44
+ );
45
+ }, [connectors]);
46
+ const attemptAutoConnect = useCallback(async () => {
47
+ if (!iopayConnector || !isIopayEnvironment) {
48
+ return;
49
+ }
50
+ try {
51
+ await connect({ connector: iopayConnector });
52
+ } catch (error) {
53
+ console.debug("Auto connect iopayWallet failed:", error);
54
+ }
55
+ }, [connect, iopayConnector, isIopayEnvironment]);
56
+ useEffect(() => {
57
+ if (hasTriedAutoConnect || isConnected || !isIopayEnvironment || !iopayConnector) {
58
+ if (!hasTriedAutoConnect && (!isIopayEnvironment || !iopayConnector)) {
59
+ setHasTriedAutoConnect(true);
60
+ }
61
+ return;
62
+ }
63
+ const timer = setTimeout(async () => {
64
+ await attemptAutoConnect();
65
+ setHasTriedAutoConnect(true);
66
+ }, 500);
67
+ return () => clearTimeout(timer);
68
+ }, [hasTriedAutoConnect, isConnected, isIopayEnvironment, iopayConnector, attemptAutoConnect]);
69
+ return null;
70
+ };
71
+
72
+ // module/Wallet/provider.tsx
30
73
  var queryClient = new QueryClient({
31
74
  defaultOptions: {
32
75
  queries: {
@@ -35,7 +78,7 @@ var queryClient = new QueryClient({
35
78
  }
36
79
  }
37
80
  });
38
- var WalletProvider = observer(({
81
+ var WalletProvider = observer((({
39
82
  children,
40
83
  theme,
41
84
  appName,
@@ -64,8 +107,8 @@ var WalletProvider = observer(({
64
107
  }
65
108
  });
66
109
  }, []);
67
- return /* @__PURE__ */ React2.createElement(WagmiProvider, { config: walletConfig.rainbowKitConfig, reconnectOnMount: walletConfig.reconnectOnMount }, /* @__PURE__ */ React2.createElement(QueryClientProvider, { client: queryClient }, /* @__PURE__ */ React2.createElement(RainbowKitProvider, __spreadValues({ locale: "en", theme: theme == "dark" ? darkTheme() : lightTheme() }, rainbowKitProps), children, compatibleMode ? /* @__PURE__ */ React2.createElement(WalletConnectcompatibleMode, null) : /* @__PURE__ */ React2.createElement(WalletConnect, null))));
68
- });
110
+ return /* @__PURE__ */ React2.createElement(WagmiProvider, { config: walletConfig.rainbowKitConfig, reconnectOnMount: walletConfig.reconnectOnMount }, /* @__PURE__ */ React2.createElement(QueryClientProvider, { client: queryClient }, /* @__PURE__ */ React2.createElement(RainbowKitProvider, __spreadValues({ locale: "en", theme: theme == "dark" ? darkTheme() : lightTheme() }, rainbowKitProps), children, /* @__PURE__ */ React2.createElement(AutoConnectIopayWallet, null), compatibleMode ? /* @__PURE__ */ React2.createElement(WalletConnectcompatibleMode, null) : /* @__PURE__ */ React2.createElement(WalletConnect, null))));
111
+ }));
69
112
  var WalletConnectcompatibleMode = () => {
70
113
  const wallet = RootStore.Get(WalletStore);
71
114
  wallet.use();
@@ -79,7 +122,6 @@ var WalletConnect = () => {
79
122
  };
80
123
  var RpcList = observer(() => {
81
124
  var _a, _b;
82
- RootStore.Get(WalletStore);
83
125
  const rpcStore = RootStore.Get(WalletRpcStore);
84
126
  useEffect(() => {
85
127
  rpcStore.testRpc();
@@ -121,6 +163,6 @@ var RpcList = observer(() => {
121
163
  ));
122
164
  });
123
165
 
124
- export { RpcList, WalletProvider, iotex, iotexTestnet };
125
- //# sourceMappingURL=out.js.map
166
+ export { AutoConnectIopayWallet, RpcList, WalletProvider, iotex, iotexTestnet };
167
+ //# sourceMappingURL=wallet.mjs.map
126
168
  //# sourceMappingURL=wallet.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../module/Wallet/provider.tsx","../module/Wallet/type.ts","../module/Wallet/RpcList/index.tsx"],"names":["observer","React","useEffect"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,oBAAoB,WAAW,kBAAkB;AAC1D,SAAS,aAAa,2BAA2B;AACjD,OAAO,SAAS,iBAAoC;AACpD,SAAwC,qBAAqB;;;ACH7D,SAAS,SAAS,QAAQ,gBAAgB,qBAAiC;AAwBpE,IAAM,QAAQ;AAAA,EACnB,SAAS;AAAA,GACN;AAEE,IAAM,eAAe;AAAA,EAC1B,SAAS;AAAA,GACN;;;ADpBL,OAAO,iBAAiB;AACxB,SAAS,gBAAgB;AACzB,IAAM,cAAc,IAAI,YAAY;AAAA,EAClC,gBAAgB;AAAA,IACd,SAAS;AAAA,MACP,iBAAiB;AAAA,MACjB,6BAA6B;AAAA,IAC/B;AAAA,EACF;AACF,CAAC;AACM,IAAM,iBAAiB,SAAU,CAAC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AACF,MASM;AAEJ,QAAM,eAAe,UAAU,IAAI,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,4CAAmB,CAAC,KAAK,EAAE,EAAE,CAAC;AAC/G,YAAU,MAAM;AACd,QAAI,SAAS;AACX,mBAAa,UAAU;AAAA,IACzB;AACA,QAAI,kBAAkB,QAAW;AAC/B,mBAAa,iBAAiB;AAAA,IAChC;AACA,QAAI,WAAW;AACb,mBAAa,YAAY;AAAA,IAC3B;AAAA,EACF,GAAG,CAAC,SAAS,gBAAgB,SAAS,CAAC;AACvC,YAAU,MAAM;AACd,UAAM,MAAM,IAAI,YAAY;AAC5B,QAAI,KAAK,mBAAmB,EAAE,KAAK,CAAC,EAAE,OAAO,MAAM;AACjD,UAAI,QAAQ;AACV,qBAAa,cAAc;AAAA,MAC7B;AAAA,IACF,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AACL,SACE,oCAAC,iBAAc,QAAQ,aAAa,kBAAkB,kBAAkB,aAAa,oBACnF,oCAAC,uBAAoB,QAAQ,eAC3B,oCAAC,qCAAmB,QAAO,MAAK,OAAO,SAAS,SAAS,UAAU,IAAI,WAAW,KAAO,kBACtF,UAEC,iBAAiB,oCAAC,iCAA4B,IAAK,oCAAC,mBAAc,CAEtE,CACF,CACF;AAEJ,CAAE;AAGK,IAAM,8BAA8B,MAAM;AAC/C,QAAM,SAAS,UAAU,IAAI,WAAW;AACxC,SAAO,IAAI;AACX,SAAO,wDAAE;AACX;AAEO,IAAM,gBAAgB,MAAM;AACjC,QAAM,SAAS,UAAU,IAAI,WAAW;AACxC,SAAO,qCAAqC;AAC5C,SAAO,IAAI;AACX,SAAO,wDAAE;AACX;;;AErFA,SAAS,YAAY;AACrB,SAAS,QAAQ,UAAgB,OAA6B,SAAS,gBAAgB,gBAAmC,OAAO,WAAW,WAAW,aAAa,aAAa,UAAU,eAAe;AAC1M,SAAS,YAAAA,iBAAoC;AAC7C,OAAOC,YAAW;AAClB,SAAS,aAAAC,kBAAiB;AAO1B,IAAM,UAAUF,UAAS,MAAM;AAX/B;AAYE,QAAM,SAAS,UAAU,IAAI,WAAW;AACxC,QAAM,WAAW,UAAU,IAAI,cAAc;AAC7C,EAAAE,WAAU,MAAM;AACd,aAAS,QAAQ;AAAA,EACnB,GAAG,CAAC,CAAC;AAEL,SACE,gBAAAD,OAAA,cAAC,SAAI,WAAU,eACb,gBAAAA,OAAA,cAAC,SAAI,WAAU,2BACb,gBAAAA,OAAA,cAAC,SAAI,WAAU,4CACb,gBAAAA,OAAA,cAAC,YAAS,MAAK,MAAK,YAAY,SAAS,gBAAgB,OAAO,eAAe,OAAK,SAAS,gBAAgB,KAAK,CAAC,KAAG,iBAAe,GACrI,gBAAAA,OAAA,cAAC,WAAQ,SAAS,gBAAAA,OAAA,cAAC,SAAI,WAAU,eAAY,yGAAuG,KAClJ,gBAAAA,OAAA,cAAC,QAAK,MAAK,eAAc,OAAM,MAAK,QAAO,MAAK,WAAU,iBAAgB,CAC5E,CACF,GAEA,gBAAAA,OAAA,cAAC,UAAO,cAAc,gBAAAA,OAAA,cAAC,QAAK,MAAK,oBAAmB,OAAM,MAAK,QAAO,MAAK,GAAI,WAAU,WAAU,SAAS,OAAK;AAC/G,aAAS,QAAQ;AAAA,EACnB,KAAG,MAAI,GACP,gBAAAA,OAAA,cAAC,WAAQ,WAAU,UAAS,QAAQ,IAAI,WAAS,MAAC,QAAQ,SAAS,eAAe,cAAc,CAAC,SAAS,SAAS,gBAAiB,QAClI,gBAAAA,OAAA,cAAC,sBACC,gBAAAA,OAAA,cAAC,UAAO,OAAM,WAAU,cAAc,gBAAAA,OAAA,cAAC,QAAK,MAAK,mBAAkB,OAAM,MAAK,QAAO,MAAK,GAAI,WAAU,UAAO,gBAAc,CAC/H,GACA,gBAAAA,OAAA,cAAC,sBACC,gBAAAA,OAAA,cAAC,SAAI,WAAU,eACb,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAU;AAAA,MACV,aAAY;AAAA,MACZ,OAAO,SAAS;AAAA,MAChB,eAAe,CAAC,UAAU;AACxB,iBAAS,YAAY;AAAA,MACvB;AAAA;AAAA,EACF,GACA,gBAAAA,OAAA,cAAC,UAAO,OAAM,WAAU,YAAY,CAAC,SAAS,WAAW,SAAS,OAAK,SAAS,aAAa,KAAG,MAAI,CACtG,CACF,CACF,CAEF,GAEA,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,eAAc;AAAA,MACd,qBAAqB,CAAC,SAAS,OAAO,KAAK;AAAA,MAC3C,cAAW;AAAA;AAAA,IAEX,gBAAAA,OAAA,cAAC,mBACC,gBAAAA,OAAA,cAAC,mBAAY,oBAAkB,GAC/B,gBAAAA,OAAA,cAAC,eAAY,OAAM,YAAS,OAAK,GACjC,gBAAAA,OAAA,cAAC,eAAY,OAAM,YAAS,QAAM,GAClC,gBAAAA,OAAA,cAAC,eAAY,OAAM,YAAS,SAAO,GACnC,gBAAAA,OAAA,cAAC,eAAY,OAAM,YAAS,QAAM,CACpC;AAAA,IACA,gBAAAA,OAAA,cAAC,kBAEG,oBAAS,YAAT,mBAAkB,UAAlB,mBAAyB,IAAI,CAAC,MAAM,UAAU;AAC5C,aAAO,gBAAAA,OAAA,cAAC,YAAS,WAAU,kBAAiB,KAAK,KAAK,MAAM,SAAS,OAAK;AACxE,iBAAS,OAAO,KAAK,KAAK,IAAI;AAC9B,kBAAU,IAAI,WAAW,EAAE,QAAQ,iBAAiB;AAAA,MACtD,KACE,gBAAAA,OAAA,cAAC,iBAAY,KAAK,IAAK,GACvB,gBAAAA,OAAA,cAAC,iBAAY,SAAS,UAAU,KAAK,OAAO,CAAE,GAC9C,gBAAAA,OAAA,cAAC,iBAAW,KAAK,MAAO,GACxB,gBAAAA,OAAA,cAAC,aAAU,WAAW,SAAS,aAAa,KAAK,OAAO,KAAI,KAAK,SAAQ,GAAC,GAC1E,gBAAAA,OAAA,cAAC,iBACC,gBAAAA,OAAA,cAAC,SAAI,WAAU,sCACb,gBAAAA,OAAA,cAAC,WAAQ,SAAQ,qBACf,gBAAAA,OAAA,cAAC,UAAK,WAAU,wDAAuD,SAAS,OAAK;AACnF,UAAE,gBAAgB;AAClB,iBAAS,cAAc,KAAK,IAAI;AAAA,MAClC,KACE,gBAAAA,OAAA,cAAC,QAAK,MAAK,uBAAsB,OAAM,MAAK,QAAO,MAAK,CAC1D,CACF,GAEE,KAAK,UAAU,gBAAAA,OAAA,cAAC,WAAQ,SAAQ,YAC9B,gBAAAA,OAAA,cAAC,UAAK,WAAU,wDAAuD,SAAS,OAAK;AACnF,UAAE,gBAAgB;AAClB,iBAAS,UAAU,KAAK,IAAI;AAAA,MAC9B,KACE,gBAAAA,OAAA,cAAC,QAAK,MAAK,uCAAsC,OAAM,MAAK,QAAO,MAAK,CAC1E,CACF,CAEJ,CACF,CACF;AAAA,IACF,EAEJ;AAAA,EACF,CACF;AAEJ,CAAC","sourcesContent":["import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useReconnect, useWalletClient, WagmiProvider } from 'wagmi';\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from '.';\nimport { WalletConfigStore } from './walletConfigStore'\nimport { reaction } from 'mobx';\nimport { type Chain } from \"viem/chains\";\nimport { iotex } from './type';\nimport SafeAppsSDK from '@safe-global/safe-apps-sdk';\nimport { observer } from 'mobx-react-lite';\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchInterval: 2500,\n refetchIntervalInBackground: false,\n },\n },\n});\nexport const WalletProvider = observer((({\n children,\n theme,\n appName,\n supportedChains,\n compatibleMode = true,\n rainbowKitProps,\n projectId\n}: {\n children: React.ReactNode,\n theme?: 'dark' | 'light',\n appName?: string,\n supportedChains?: Chain[],\n compatibleMode?: boolean,\n debug?: boolean,\n rainbowKitProps?: any,\n projectId?: string\n}) => {\n //@ts-ignore\n const walletConfig = RootStore.Get(WalletConfigStore, { args: { supportedChains: supportedChains ?? [iotex] } });\n useEffect(() => {\n if (appName) {\n walletConfig.appName = appName\n }\n if (compatibleMode != undefined) {\n walletConfig.compatibleMode = compatibleMode\n }\n if (projectId) {\n walletConfig.projectId = projectId\n }\n }, [appName, compatibleMode, projectId])\n useEffect(() => {\n const sdk = new SafeAppsSDK()\n sdk.safe.getEnvironmentInfo().then(({ origin }) => {\n if (origin) {\n walletConfig.isInSafeApp = true\n }\n })\n }, [])\n return (\n <WagmiProvider config={walletConfig.rainbowKitConfig} reconnectOnMount={walletConfig.reconnectOnMount}>\n <QueryClientProvider client={queryClient} >\n <RainbowKitProvider locale=\"en\" theme={theme == 'dark' ? darkTheme() : lightTheme()} {...rainbowKitProps}>\n {children}\n {\n compatibleMode ? <WalletConnectcompatibleMode /> : <WalletConnect />\n }\n </RainbowKitProvider>\n </QueryClientProvider>\n </WagmiProvider>\n );\n}));\n\n//There are problems with safeWallet calls in compatibility mode\nexport const WalletConnectcompatibleMode = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.use();\n return <></>;\n};\n\nexport const WalletConnect = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.useWalletClientWithoutCompatibleMode();\n wallet.use();\n return <></>;\n};\n","import { iotex as _iotex, iotexTestnet as _iotexTestnet, type Chain } from \"viem/chains\";\n\nexport type NetworkObject = {\n name: string;\n chainId: number;\n rpcUrl: string;\n logoUrl: string;\n explorerUrl: string;\n explorerName: string;\n nativeCoin: string;\n type: 'mainnet' | 'testnet';\n};\n\nexport type WalletTransactionHistoryType = {\n chainId: number;\n tx?: string;\n msg: string;\n timestamp: number;\n type: string;\n status: 'loading' | 'success' | 'fail';\n};\n\nexport type AddressMode = 'io' | '0x';\n\nexport const iotex = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotex,\n} as Chain;\nexport const iotexTestnet = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotexTestnet,\n} as Chain;;","import { Icon } from '@iconify/react';\nimport { Button, Checkbox, Chip, Input, Listbox, ListboxItem, Popover, PopoverContent, PopoverTrigger, Radio, RadioGroup, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip } from '@nextui-org/react';\nimport { observer, useLocalObservable } from 'mobx-react-lite';\nimport React from 'react';\nimport { useEffect } from 'react';\nimport { RootStore } from \"../../../store\";\nimport { WalletStore } from \"..\";\nimport { WalletRpcStore } from '../walletPluginStore';\nimport { ToastPlugin } from '../../Toast/Toast';\n\n\nconst RpcList = observer(() => {\n const wallet = RootStore.Get(WalletStore)\n const rpcStore = RootStore.Get(WalletRpcStore)\n useEffect(() => {\n rpcStore.testRpc()\n }, [])\n\n return (\n <div className='mb-3 mt-4'>\n <div className='w-full flex mb-2 mt-2'>\n <div className='flex items-center justify-center gap-2'>\n <Checkbox size='sm' isSelected={rpcStore.isAutoSelectRpc.value} onValueChange={e => rpcStore.isAutoSelectRpc.save(e)}>Auto select rpc</Checkbox>\n <Tooltip content={<div className='w-[300px]'>Once selected, if the current RPC cannot send a request, an available RPC will be automatically chosen.</div>}>\n <Icon icon=\"ph:question\" width=\"18\" height=\"18\" className='text-gray-500' />\n </Tooltip>\n </div>\n\n <Button startContent={<Icon icon=\"tabler:test-pipe\" width=\"18\" height=\"18\" />} className='ml-auto' onClick={e => {\n rpcStore.testRpc()\n }}>Test</Button>\n <Popover placement=\"bottom\" offset={20} showArrow isOpen={rpcStore.showCustomRpc} onOpenChange={(open) => rpcStore.showCustomRpc = (open)}>\n <PopoverTrigger>\n <Button color=\"primary\" startContent={<Icon icon=\"basil:add-solid\" width=\"18\" height=\"18\" />} className='ml-4'>Add custom rpc</Button>\n </PopoverTrigger>\n <PopoverContent>\n <div className=\"px-1 py-2\">\n <Input\n type=\"url\"\n className='mb-4'\n placeholder=\"https://rpc.com\"\n value={rpcStore.customRpc}\n onValueChange={(value) => {\n rpcStore.customRpc = value;\n }}\n />\n <Button color='primary' isDisabled={!rpcStore.customRpc} onClick={e => rpcStore.addCustomRpc()}>Save</Button>\n </div>\n </PopoverContent>\n </Popover>\n\n </div>\n\n <Table\n color=\"success\"\n selectionMode=\"single\"\n defaultSelectedKeys={[rpcStore.curRpc.value]}\n aria-label=\"Example static collection table\"\n >\n <TableHeader>\n <TableColumn>RPC Server Address</TableColumn>\n <TableColumn align='center'>Score</TableColumn>\n <TableColumn align='center'>Height</TableColumn>\n <TableColumn align='center'>Latency</TableColumn>\n <TableColumn align='center'>Action</TableColumn>\n </TableHeader>\n <TableBody >\n {\n rpcStore.rpcList?.value?.map((item, index) => {\n return <TableRow className='cursor-pointer' key={item.name} onClick={e => {\n rpcStore.curRpc.save(item.name)\n RootStore.Get(ToastPlugin).success('Set rpc success')\n }} >\n <TableCell >{item.name}</TableCell>\n <TableCell >{rpcStore.scoreIcon(item.latency)}</TableCell>\n <TableCell>{item.height}</TableCell>\n <TableCell className={rpcStore.latencyColor(item.latency)}>{item.latency}s</TableCell>\n <TableCell>\n <div className=\"relative flex items-center gap-2\">\n <Tooltip content=\"Add to metamask\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.addToMetamask(item.name)\n }}>\n <Icon icon=\"logos:metamask-icon\" width=\"18\" height=\"18\" />\n </span>\n </Tooltip>\n {\n item.custom && <Tooltip content=\"Remove\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.removeRpc(item.name)\n }}>\n <Icon icon=\"solar:trash-bin-minimalistic-broken\" width=\"20\" height=\"20\" />\n </span>\n </Tooltip>\n }\n </div>\n </TableCell>\n </TableRow>\n })\n }\n </TableBody>\n </Table>\n </div>\n );\n});\n\nexport { RpcList };\n"]}
1
+ {"version":3,"sources":["../module/Wallet/type.ts","../module/Wallet/AutoConnectIopayWallet.tsx","../module/Wallet/provider.tsx","../module/Wallet/RpcList/index.tsx"],"names":["_iotex","_iotexTestnet","useEffect","React","observer"],"mappings":"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","file":"wallet.mjs","sourcesContent":["import { iotex as _iotex, iotexTestnet as _iotexTestnet, type Chain } from \"viem/chains\";\n\nexport type NetworkObject = {\n name: string;\n chainId: number;\n rpcUrl: string;\n logoUrl: string;\n explorerUrl: string;\n explorerName: string;\n nativeCoin: string;\n type: 'mainnet' | 'testnet';\n};\n\nexport type WalletTransactionHistoryType = {\n chainId: number;\n tx?: string;\n msg: string;\n timestamp: number;\n type: string;\n status: 'loading' | 'success' | 'fail';\n};\n\nexport type AddressMode = 'io' | '0x';\n\nexport const iotex = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotex,\n} as Chain;\nexport const iotexTestnet = {\n iconUrl: 'https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png',\n ..._iotexTestnet,\n} as Chain;;","import { useEffect, useState, useCallback, useMemo } from 'react';\nimport { useConnect, useAccount } from 'wagmi';\nimport { helper } from '../../utils';\n\n// Auto connect iopayWallet when available\nexport const AutoConnectIopayWallet = () => {\n const { isConnected } = useAccount();\n const { connect, connectors } = useConnect();\n const [hasTriedAutoConnect, setHasTriedAutoConnect] = useState(false);\n\n // Memoize iopay detection to avoid repeated calculations\n const isIopayEnvironment = useMemo(() => {\n if (typeof window === 'undefined') return false;\n return helper.env.isIopayMobile && !!window.ethereum;\n }, []);\n\n // Memoize iopay connector lookup\n const iopayConnector = useMemo(() => {\n return connectors.find(\n (connector) =>\n connector.id?.toLowerCase().includes('iopay') ||\n connector.name?.toLowerCase().includes('iopay')\n );\n }, [connectors]);\n\n // Memoized auto connect function\n const attemptAutoConnect = useCallback(async () => {\n if (!iopayConnector || !isIopayEnvironment) {\n return;\n }\n\n try {\n await connect({ connector: iopayConnector });\n } catch (error) {\n // Silently handle connection failures (user rejection, etc.)\n console.debug('Auto connect iopayWallet failed:', error);\n }\n }, [connect, iopayConnector, isIopayEnvironment]);\n\n useEffect(() => {\n // Skip if already tried, already connected, or conditions not met\n if (hasTriedAutoConnect || isConnected || !isIopayEnvironment || !iopayConnector) {\n if (!hasTriedAutoConnect && (!isIopayEnvironment || !iopayConnector)) {\n setHasTriedAutoConnect(true);\n }\n return;\n }\n\n // Small delay to ensure wallet is fully initialized\n const timer = setTimeout(async () => {\n await attemptAutoConnect();\n setHasTriedAutoConnect(true);\n }, 500);\n\n return () => clearTimeout(timer);\n }, [hasTriedAutoConnect, isConnected, isIopayEnvironment, iopayConnector, attemptAutoConnect]);\n\n return null;\n};\n\n","import { RainbowKitProvider, darkTheme, lightTheme } from '@rainbow-me/rainbowkit';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect } from 'react';\nimport { WagmiProvider } from 'wagmi';\nimport { RootStore } from \"../../store\";\nimport { WalletStore } from '.';\nimport { WalletConfigStore } from './walletConfigStore'\nimport { type Chain } from \"viem/chains\";\nimport { iotex } from './type';\nimport SafeAppsSDK from '@safe-global/safe-apps-sdk';\nimport { observer } from 'mobx-react-lite';\nimport { AutoConnectIopayWallet } from './AutoConnectIopayWallet';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchInterval: 2500,\n refetchIntervalInBackground: false,\n },\n },\n});\n\nexport const WalletProvider = observer((({\n children,\n theme,\n appName,\n supportedChains,\n compatibleMode = true,\n rainbowKitProps,\n projectId\n}: {\n children: React.ReactNode,\n theme?: 'dark' | 'light',\n appName?: string,\n supportedChains?: Chain[],\n compatibleMode?: boolean,\n debug?: boolean,\n rainbowKitProps?: any,\n projectId?: string\n}) => {\n // @ts-ignore\n const walletConfig = RootStore.Get(WalletConfigStore, { args: { supportedChains: supportedChains ?? [iotex] } });\n useEffect(() => {\n if (appName) {\n walletConfig.appName = appName\n }\n if (compatibleMode != undefined) {\n walletConfig.compatibleMode = compatibleMode\n }\n if (projectId) {\n walletConfig.projectId = projectId\n }\n }, [appName, compatibleMode, projectId])\n useEffect(() => {\n const sdk = new SafeAppsSDK()\n sdk.safe.getEnvironmentInfo().then(({ origin }) => {\n if (origin) {\n walletConfig.isInSafeApp = true\n }\n })\n }, [])\n return (\n <WagmiProvider config={walletConfig.rainbowKitConfig} reconnectOnMount={walletConfig.reconnectOnMount}>\n <QueryClientProvider client={queryClient} >\n <RainbowKitProvider locale=\"en\" theme={theme == 'dark' ? darkTheme() : lightTheme()} {...rainbowKitProps}>\n {children}\n <AutoConnectIopayWallet />\n {\n compatibleMode ? <WalletConnectcompatibleMode /> : <WalletConnect />\n }\n </RainbowKitProvider>\n </QueryClientProvider>\n </WagmiProvider>\n );\n}));\n\n//There are problems with safeWallet calls in compatibility mode\nexport const WalletConnectcompatibleMode = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.use();\n return <></>;\n};\n\nexport const WalletConnect = () => {\n const wallet = RootStore.Get(WalletStore);\n wallet.useWalletClientWithoutCompatibleMode();\n wallet.use();\n return <></>;\n};\n","import { Icon } from '@iconify/react';\nimport { Button, Checkbox, Input, Popover, PopoverContent, PopoverTrigger, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Tooltip } from '@nextui-org/react';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { useEffect } from 'react';\nimport { RootStore } from \"../../../store\";\nimport { WalletStore } from \"..\";\nimport { WalletRpcStore } from '../walletPluginStore';\nimport { ToastPlugin } from '../../Toast/Toast';\n\n\nconst RpcList = observer(() => {\n const rpcStore = RootStore.Get(WalletRpcStore)\n useEffect(() => {\n rpcStore.testRpc()\n }, [])\n\n return (\n <div className='mb-3 mt-4'>\n <div className='w-full flex mb-2 mt-2'>\n <div className='flex items-center justify-center gap-2'>\n <Checkbox size='sm' isSelected={rpcStore.isAutoSelectRpc.value} onValueChange={e => rpcStore.isAutoSelectRpc.save(e)}>Auto select rpc</Checkbox>\n <Tooltip content={<div className='w-[300px]'>Once selected, if the current RPC cannot send a request, an available RPC will be automatically chosen.</div>}>\n <Icon icon=\"ph:question\" width=\"18\" height=\"18\" className='text-gray-500' />\n </Tooltip>\n </div>\n\n <Button startContent={<Icon icon=\"tabler:test-pipe\" width=\"18\" height=\"18\" />} className='ml-auto' onClick={e => {\n rpcStore.testRpc()\n }}>Test</Button>\n <Popover placement=\"bottom\" offset={20} showArrow isOpen={rpcStore.showCustomRpc} onOpenChange={(open) => rpcStore.showCustomRpc = (open)}>\n <PopoverTrigger>\n <Button color=\"primary\" startContent={<Icon icon=\"basil:add-solid\" width=\"18\" height=\"18\" />} className='ml-4'>Add custom rpc</Button>\n </PopoverTrigger>\n <PopoverContent>\n <div className=\"px-1 py-2\">\n <Input\n type=\"url\"\n className='mb-4'\n placeholder=\"https://rpc.com\"\n value={rpcStore.customRpc}\n onValueChange={(value) => {\n rpcStore.customRpc = value;\n }}\n />\n <Button color='primary' isDisabled={!rpcStore.customRpc} onClick={e => rpcStore.addCustomRpc()}>Save</Button>\n </div>\n </PopoverContent>\n </Popover>\n\n </div>\n\n <Table\n color=\"success\"\n selectionMode=\"single\"\n defaultSelectedKeys={[rpcStore.curRpc.value]}\n aria-label=\"Example static collection table\"\n >\n <TableHeader>\n <TableColumn>RPC Server Address</TableColumn>\n <TableColumn align='center'>Score</TableColumn>\n <TableColumn align='center'>Height</TableColumn>\n <TableColumn align='center'>Latency</TableColumn>\n <TableColumn align='center'>Action</TableColumn>\n </TableHeader>\n <TableBody >\n {\n rpcStore.rpcList?.value?.map((item, index) => {\n return <TableRow className='cursor-pointer' key={item.name} onClick={e => {\n rpcStore.curRpc.save(item.name)\n RootStore.Get(ToastPlugin).success('Set rpc success')\n }} >\n <TableCell >{item.name}</TableCell>\n <TableCell >{rpcStore.scoreIcon(item.latency)}</TableCell>\n <TableCell>{item.height}</TableCell>\n <TableCell className={rpcStore.latencyColor(item.latency)}>{item.latency}s</TableCell>\n <TableCell>\n <div className=\"relative flex items-center gap-2\">\n <Tooltip content=\"Add to metamask\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.addToMetamask(item.name)\n }}>\n <Icon icon=\"logos:metamask-icon\" width=\"18\" height=\"18\" />\n </span>\n </Tooltip>\n {\n item.custom && <Tooltip content=\"Remove\">\n <span className=\"text-lg text-danger cursor-pointer active:opacity-50\" onClick={e => {\n e.stopPropagation()\n rpcStore.removeRpc(item.name)\n }}>\n <Icon icon=\"solar:trash-bin-minimalistic-broken\" width=\"20\" height=\"20\" />\n </span>\n </Tooltip>\n }\n </div>\n </TableCell>\n </TableRow>\n })\n }\n </TableBody>\n </Table>\n </div>\n );\n});\n\nexport { RpcList };\n"]}