@dappworks/kit 0.4.101 → 0.4.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{PromiseState-0df0d219.d.ts → PromiseState-yojg0WLR.d.ts} +3 -3
- package/dist/aiem.d.mts +34 -9
- package/dist/aiem.mjs +71 -22
- package/dist/aiem.mjs.map +1 -1
- package/dist/{chunk-TMFAGW4V.mjs → chunk-AIZ7XDNV.mjs} +14 -14
- package/dist/chunk-AIZ7XDNV.mjs.map +1 -0
- package/dist/{chunk-ESZELIL2.mjs → chunk-HRYH37UI.mjs} +2 -2
- package/dist/{chunk-EDHGL232.mjs → chunk-QWHU3HBK.mjs} +2 -2
- package/dist/{chunk-6F7H4PAA.mjs → chunk-R4SQKVDQ.mjs} +1 -1
- package/dist/{chunk-LHKOQ765.mjs → chunk-SVPD6PC6.mjs} +4 -4
- package/dist/{chunk-FDCTH5PZ.mjs → chunk-WS43BV7Y.mjs} +2 -2
- package/dist/{chunk-UEX27FDZ.mjs → chunk-XJMRAPHI.mjs} +13 -12
- package/dist/chunk-XJMRAPHI.mjs.map +1 -0
- package/dist/dev.d.mts +1 -1
- package/dist/dev.mjs +2 -2
- package/dist/experimental.d.mts +7 -5
- package/dist/experimental.mjs +3 -3
- package/dist/form.d.mts +4 -4
- package/dist/form.mjs +4 -4
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +5 -5
- package/dist/inspector.d.mts +1 -1
- package/dist/inspector.mjs +1 -1
- package/dist/jsontable.d.mts +2 -2
- package/dist/jsontable.mjs +4 -4
- package/dist/metrics.d.mts +1 -1
- package/dist/metrics.mjs +4 -4
- package/dist/plugins.d.mts +6 -6
- package/dist/plugins.mjs +4 -4
- package/dist/{root-2d8aeada.d.ts → root-C3lZnoCI.d.ts} +5 -1
- package/dist/ui.mjs +3 -3
- package/dist/utils.d.mts +9 -4
- package/dist/utils.mjs +1 -1
- package/package.json +3 -3
- package/dist/chunk-TMFAGW4V.mjs.map +0 -1
- package/dist/chunk-UEX27FDZ.mjs.map +0 -1
- /package/dist/{PaginationState-c19e621a.d.ts → PaginationState-Bmrrw0ky.d.ts} +0 -0
- /package/dist/{chunk-ESZELIL2.mjs.map → chunk-HRYH37UI.mjs.map} +0 -0
- /package/dist/{chunk-EDHGL232.mjs.map → chunk-QWHU3HBK.mjs.map} +0 -0
- /package/dist/{chunk-6F7H4PAA.mjs.map → chunk-R4SQKVDQ.mjs.map} +0 -0
- /package/dist/{chunk-LHKOQ765.mjs.map → chunk-SVPD6PC6.mjs.map} +0 -0
- /package/dist/{chunk-FDCTH5PZ.mjs.map → chunk-WS43BV7Y.mjs.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import { c as BooleanState, B as BaseState } from './root-
|
|
2
|
+
import { c as BooleanState, B as BaseState } from './root-C3lZnoCI.js';
|
|
3
3
|
|
|
4
4
|
interface Events {
|
|
5
5
|
data: (data: any) => void;
|
|
@@ -22,10 +22,10 @@ declare class PromiseState<T extends (...args: any[]) => Promise<any>, U = Retur
|
|
|
22
22
|
successMsg: string;
|
|
23
23
|
errMsg: string;
|
|
24
24
|
loadingLock: boolean;
|
|
25
|
-
event: EventEmitter
|
|
25
|
+
event: EventEmitter<[never]>;
|
|
26
26
|
on<E extends keyof Events>(event: E, listener: Events[E]): this;
|
|
27
27
|
once<E extends keyof Events>(event: E, listener: Events[E]): this;
|
|
28
|
-
use<E extends keyof Events>(event: E, listener: Events[E]): () => EventEmitter
|
|
28
|
+
use<E extends keyof Events>(event: E, listener: Events[E]): () => EventEmitter<[never]>;
|
|
29
29
|
emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>): void;
|
|
30
30
|
init: () => Promise<void>;
|
|
31
31
|
currentIndex: BaseState;
|
package/dist/aiem.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Abi, Chain, GetContractReturnType, PublicClient, HttpTransport, WalletClient } from 'viem';
|
|
2
|
-
import
|
|
1
|
+
import { Abi, Chain, GetContractReturnType, PublicClient, HttpTransport, WalletClient, AbiFunction } from 'viem';
|
|
2
|
+
import TTLCache from '@isaacs/ttlcache';
|
|
3
3
|
|
|
4
4
|
declare class Cache {
|
|
5
|
-
kv:
|
|
6
|
-
wrap<T>(key: string, fn: () => T | Promise<T>): T | Promise<T>;
|
|
5
|
+
kv: TTLCache<string, any>;
|
|
6
|
+
wrap<T>(key: string, fn: () => T | Promise<T>, config?: TTLCache.Options<any, any>): T | Promise<T>;
|
|
7
7
|
}
|
|
8
8
|
declare class AIem<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends {
|
|
9
9
|
[K in keyof Contracts]?: {
|
|
@@ -11,21 +11,46 @@ declare class AIem<Contracts extends Record<string, Abi>, Chains extends Record<
|
|
|
11
11
|
};
|
|
12
12
|
}> {
|
|
13
13
|
static cache?: Cache;
|
|
14
|
-
|
|
14
|
+
cache?: Cache;
|
|
15
|
+
contractMap?: Contracts;
|
|
15
16
|
chainMap?: Chains;
|
|
16
|
-
nameMap
|
|
17
|
+
nameMap?: Addrs;
|
|
17
18
|
contracts: {
|
|
18
19
|
[K in keyof Addrs & keyof Contracts]: {
|
|
19
20
|
[KK in keyof Addrs[K]]: GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>, any, any>;
|
|
20
21
|
};
|
|
21
22
|
};
|
|
22
|
-
|
|
23
|
+
funcMap?: {
|
|
24
|
+
[key: string]: {
|
|
25
|
+
ttl?: number;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
get _cache(): Cache;
|
|
23
29
|
getWallet?: () => WalletClient;
|
|
24
|
-
|
|
30
|
+
static Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends {
|
|
31
|
+
[K in keyof Contracts]?: {
|
|
32
|
+
[key: string]: `${string}-0x${string}`;
|
|
33
|
+
};
|
|
34
|
+
}>(args: Pick<AIem<Contracts, Chains, Addrs>, "contractMap" | "chainMap" | "nameMap" | "getWallet" | "cache" | "funcMap">): AIem<Contracts, Chains, Addrs>;
|
|
35
|
+
Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends {
|
|
36
|
+
[K in keyof Contracts]?: {
|
|
37
|
+
[key: string]: `${string}-0x${string}`;
|
|
38
|
+
};
|
|
39
|
+
}>(args: Pick<AIem<Contracts, Chains, Addrs>, "contractMap" | "chainMap" | "nameMap" | "getWallet" | "cache" | "funcMap">): AIem<Contracts, Chains, Addrs>;
|
|
40
|
+
constructor(args?: Pick<AIem<Contracts, Chains, Addrs>, "contractMap" | "chainMap" | "nameMap" | "getWallet" | "cache" | "funcMap">);
|
|
25
41
|
PubClient<C extends keyof Chains>(chainId: C): PublicClient<HttpTransport, Chain, any, any>;
|
|
26
42
|
Get<K extends keyof Contracts, C extends keyof Chains, Addr extends `0x${string}`>(contractName: K, chainId: C, address: Addr): GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>>;
|
|
43
|
+
getContract({ client, address, abi }: {
|
|
44
|
+
client: {
|
|
45
|
+
public: PublicClient<HttpTransport, Chain, any, any>;
|
|
46
|
+
wallet?: WalletClient;
|
|
47
|
+
};
|
|
48
|
+
address: `0x${string}`;
|
|
49
|
+
abi: any;
|
|
50
|
+
}): any;
|
|
27
51
|
static init(): AIem<any, any, any>;
|
|
28
52
|
static Get<TAbi extends Abi = any>(abi: TAbi, chainId: any, address: any, wallet?: WalletClient): GetContractReturnType<TAbi, PublicClient<HttpTransport, Chain, any, any>>;
|
|
29
53
|
}
|
|
54
|
+
type ReadFunctionKeys<T extends Abi> = T[number] extends infer U ? U extends AbiFunction ? U['stateMutability'] extends 'view' | 'pure' ? U['name'] : never : never : never;
|
|
30
55
|
|
|
31
|
-
export { AIem, Cache };
|
|
56
|
+
export { AIem, Cache, type ReadFunctionKeys };
|
package/dist/aiem.mjs
CHANGED
|
@@ -1,46 +1,53 @@
|
|
|
1
|
-
import { __objRest } from './chunk-
|
|
1
|
+
import { __objRest } from './chunk-R4SQKVDQ.mjs';
|
|
2
2
|
import { createPublicClient, http, getContract } from 'viem';
|
|
3
|
-
import QuickLRU from 'quick-lru';
|
|
4
3
|
import md5 from 'md5';
|
|
5
|
-
import { mainnet, iotex, bsc, polygon } from 'viem/chains';
|
|
4
|
+
import { mainnet, iotex, bsc, polygon, iotexTestnet } from 'viem/chains';
|
|
5
|
+
import TTLCache from '@isaacs/ttlcache';
|
|
6
6
|
|
|
7
7
|
mainnet.rpcUrls.default.http = ["https://rpc.ankr.com/eth"];
|
|
8
8
|
mainnet.rpcUrls.default.webSocket = ["wss://ethereum-rpc.publicnode.com"];
|
|
9
9
|
var Cache = class {
|
|
10
10
|
constructor() {
|
|
11
|
-
this.kv = new
|
|
11
|
+
this.kv = new TTLCache({ max: 1e4, ttl: 1e3 * 60 });
|
|
12
12
|
}
|
|
13
|
-
wrap(key, fn) {
|
|
13
|
+
wrap(key, fn, config = {}) {
|
|
14
14
|
if (this.kv.has(key)) {
|
|
15
|
+
console.log(`load ${key} from cache`);
|
|
15
16
|
return this.kv.get(key);
|
|
16
17
|
}
|
|
17
18
|
const result = fn();
|
|
18
19
|
if (result instanceof Promise) {
|
|
19
20
|
const promiseResult = result.then((res) => {
|
|
20
|
-
this.kv.set(key, res);
|
|
21
|
+
this.kv.set(key, res, config);
|
|
21
22
|
return res;
|
|
22
23
|
});
|
|
23
|
-
this.kv.set(key, promiseResult);
|
|
24
|
+
this.kv.set(key, promiseResult, config);
|
|
24
25
|
return promiseResult;
|
|
25
26
|
} else {
|
|
26
|
-
this.kv.set(key, result);
|
|
27
|
+
this.kv.set(key, result, config);
|
|
27
28
|
return result;
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
};
|
|
31
32
|
var _AIem = class _AIem {
|
|
32
|
-
constructor(args) {
|
|
33
|
+
constructor(args = {}) {
|
|
34
|
+
this.cache = new Cache();
|
|
33
35
|
//@ts-ignore
|
|
34
36
|
this.chainMap = {
|
|
35
37
|
[iotex.id]: iotex,
|
|
36
38
|
[mainnet.id]: mainnet,
|
|
37
39
|
[bsc.id]: bsc,
|
|
38
|
-
[polygon.id]: polygon
|
|
40
|
+
[polygon.id]: polygon,
|
|
41
|
+
[iotexTestnet.id]: iotexTestnet
|
|
39
42
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
this.funcMap = {
|
|
44
|
+
"totalSupply": { ttl: 15 * 1e3 },
|
|
45
|
+
"symbol": { ttl: 60 * 1e3 },
|
|
46
|
+
"name": { ttl: 60 * 1e3 },
|
|
47
|
+
"decimals": { ttl: 60 * 1e3 },
|
|
48
|
+
"balanceOf": { ttl: 5 * 1e3 }
|
|
49
|
+
};
|
|
50
|
+
this.Set(args);
|
|
44
51
|
this.contracts = new Proxy({}, {
|
|
45
52
|
//@ts-ignore
|
|
46
53
|
get: (target, contractName) => {
|
|
@@ -52,8 +59,8 @@ var _AIem = class _AIem {
|
|
|
52
59
|
target[contractName] = new Proxy({}, {
|
|
53
60
|
//@ts-ignore
|
|
54
61
|
get: (innerTarget, contractAlias) => {
|
|
55
|
-
var
|
|
56
|
-
const addressStr = (
|
|
62
|
+
var _a;
|
|
63
|
+
const addressStr = (_a = this.nameMap[contractName]) == null ? void 0 : _a[contractAlias];
|
|
57
64
|
if (!addressStr) {
|
|
58
65
|
throw new Error(`Alias ${String(contractAlias)} for contract ${String(contractName)} not found`);
|
|
59
66
|
}
|
|
@@ -65,9 +72,20 @@ var _AIem = class _AIem {
|
|
|
65
72
|
}
|
|
66
73
|
});
|
|
67
74
|
}
|
|
68
|
-
get
|
|
75
|
+
get _cache() {
|
|
69
76
|
return _AIem.cache;
|
|
70
77
|
}
|
|
78
|
+
static Set(args) {
|
|
79
|
+
return this.init().Set(args);
|
|
80
|
+
}
|
|
81
|
+
Set(args) {
|
|
82
|
+
const _a = args || {}, { chainMap = {}, contractMap = {}, funcMap } = _a, rest = __objRest(_a, ["chainMap", "contractMap", "funcMap"]);
|
|
83
|
+
this.chainMap = Object.assign({}, this.chainMap || {}, chainMap);
|
|
84
|
+
this.contractMap = Object.assign({}, this.contractMap || {}, contractMap);
|
|
85
|
+
this.funcMap = Object.assign({}, this.funcMap || {}, funcMap);
|
|
86
|
+
Object.assign(this, rest);
|
|
87
|
+
return this;
|
|
88
|
+
}
|
|
71
89
|
// WsClient<C extends keyof Chains>(chainId: C): PublicClient<WebSocketTransport, Chain, any, any> {
|
|
72
90
|
// //@ts-ignore
|
|
73
91
|
// return this.cache.wrap(`wsClient-${String(chainId)}`, () => {
|
|
@@ -82,7 +100,7 @@ var _AIem = class _AIem {
|
|
|
82
100
|
// })
|
|
83
101
|
// }
|
|
84
102
|
PubClient(chainId) {
|
|
85
|
-
return this.
|
|
103
|
+
return this._cache.wrap(`publicClient-${String(chainId)}`, () => {
|
|
86
104
|
return createPublicClient({
|
|
87
105
|
//@ts-ignore
|
|
88
106
|
chain: this.chainMap[chainId],
|
|
@@ -94,10 +112,10 @@ var _AIem = class _AIem {
|
|
|
94
112
|
Get(contractName, chainId, address) {
|
|
95
113
|
const wallet = this.getWallet ? this.getWallet() : null;
|
|
96
114
|
const cacheKey = `contract: ${contractName}-${chainId}-${address}-${wallet ? wallet.account.address : wallet}`;
|
|
97
|
-
return this.
|
|
115
|
+
return this._cache.wrap(cacheKey, () => {
|
|
98
116
|
const contract = this.contractMap[contractName];
|
|
99
117
|
const pubClient = this.PubClient(chainId);
|
|
100
|
-
return getContract({
|
|
118
|
+
return this.getContract({
|
|
101
119
|
client: {
|
|
102
120
|
//@ts-ignore
|
|
103
121
|
public: pubClient,
|
|
@@ -109,6 +127,37 @@ var _AIem = class _AIem {
|
|
|
109
127
|
});
|
|
110
128
|
});
|
|
111
129
|
}
|
|
130
|
+
getContract({
|
|
131
|
+
client,
|
|
132
|
+
address,
|
|
133
|
+
abi
|
|
134
|
+
}) {
|
|
135
|
+
const handler = {
|
|
136
|
+
get: (target, funcName) => {
|
|
137
|
+
if (typeof target[funcName] === "function") {
|
|
138
|
+
return async (...args) => {
|
|
139
|
+
var _a;
|
|
140
|
+
const methodConfig = (_a = this.funcMap) == null ? void 0 : _a[funcName];
|
|
141
|
+
const cacheKey = `method:${client.public.chain.id}-${address}-${String(funcName)}-${JSON.stringify(args)}`;
|
|
142
|
+
if (methodConfig) {
|
|
143
|
+
return this.cache.wrap(cacheKey, () => {
|
|
144
|
+
return target[funcName](...args);
|
|
145
|
+
}, methodConfig);
|
|
146
|
+
}
|
|
147
|
+
return target[funcName](...args);
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
return new Proxy(target[funcName], handler);
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const contract = getContract({
|
|
154
|
+
//@ts-ignore
|
|
155
|
+
client,
|
|
156
|
+
address,
|
|
157
|
+
abi
|
|
158
|
+
});
|
|
159
|
+
return new Proxy(contract, handler);
|
|
160
|
+
}
|
|
112
161
|
static init() {
|
|
113
162
|
if (!globalThis.aiem) {
|
|
114
163
|
globalThis.aiem = new _AIem();
|
|
@@ -119,9 +168,9 @@ var _AIem = class _AIem {
|
|
|
119
168
|
static Get(abi, chainId, address, wallet) {
|
|
120
169
|
const aiem = this.init();
|
|
121
170
|
const cacheKey = `contract ${md5(JSON.stringify(abi))}-${chainId}-${address}-${wallet ? wallet.account.address : null}`;
|
|
122
|
-
return aiem.
|
|
171
|
+
return aiem._cache.wrap(cacheKey, () => {
|
|
123
172
|
const pubClient = aiem.PubClient(chainId);
|
|
124
|
-
return getContract({
|
|
173
|
+
return aiem.getContract({
|
|
125
174
|
client: {
|
|
126
175
|
//@ts-ignore
|
|
127
176
|
public: pubClient,
|
package/dist/aiem.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../aiem.ts"],"names":["_a"],"mappings":"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","sourcesContent":["import { type Chain, type GetContractReturnType, createPublicClient, getContract, http, type Abi, PublicClient, HttpTransport, WalletClient } from 'viem'\nimport QuickLRU from 'quick-lru';\nimport md5 from \"md5\"\nimport { iotex, mainnet, bsc, polygon } from 'viem/chains'\n\n\n//@ts-ignore\nmainnet.rpcUrls.default.http = ['https://rpc.ankr.com/eth']\n//@ts-ignore\nmainnet.rpcUrls.default.webSocket = [\"wss://ethereum-rpc.publicnode.com\"]\n\n\n\n\nexport class Cache {\n kv = new QuickLRU<string, any>({ maxSize: 10000 });\n\n wrap<T>(key: string, fn: () => T | Promise<T>): T | Promise<T> {\n if (this.kv.has(key)) {\n return this.kv.get(key);\n }\n\n const result = fn();\n if (result instanceof Promise) {\n const promiseResult = result.then(res => {\n this.kv.set(key, res);\n return res;\n });\n this.kv.set(key, promiseResult);\n return promiseResult;\n } else {\n this.kv.set(key, result);\n return result;\n }\n }\n}\n\nexport class AIem<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }> {\n static cache?: Cache = new Cache()\n contractMap: Contracts\n //@ts-ignore\n chainMap?: Chains = {\n [iotex.id]: iotex,\n [mainnet.id]: mainnet,\n [bsc.id]: bsc,\n [polygon.id]: polygon\n }\n nameMap: Addrs\n contracts: {\n [K in keyof Addrs & keyof Contracts]: {\n //@ts-ignore\n [KK in keyof Addrs[K]]: GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>, any, any>\n }\n }\n\n get cache() {\n return AIem.cache\n }\n\n getWallet?: () => WalletClient\n\n constructor(args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\">) {\n\n const { chainMap = {}, contractMap = {}, ...rest } = args || {}\n //@ts-ignore\n this.chainMap = Object.assign({}, this.chainMap || {}, chainMap)\n //@ts-ignore\n this.contractMap = Object.assign({}, this.contractMap || {}, contractMap)\n\n Object.assign(this, rest)\n\n\n this.contracts = new Proxy({}, {\n //@ts-ignore\n get: (target: any, contractName: keyof Addrs & keyof Contracts) => {\n if (target[contractName]) return target[contractName]\n\n if (!this.nameMap[contractName]) {\n throw new Error(`Contract ${String(contractName)} not found`);\n }\n\n target[contractName] = new Proxy({}, {\n //@ts-ignore\n get: (innerTarget: any, contractAlias: keyof Addrs[keyof Addrs]) => {\n const addressStr = this.nameMap[contractName]?.[contractAlias];\n if (!addressStr) {\n throw new Error(`Alias ${String(contractAlias)} for contract ${String(contractName)} not found`);\n }\n const [chainId, address] = addressStr.split('-');\n\n\n // Assuming getContractInstance is a function that retrieves a contract instance\n return this.Get(contractName, String(chainId), address as `0x${string}`);\n }\n });\n return target[contractName];\n }\n }) as any;\n\n }\n\n // WsClient<C extends keyof Chains>(chainId: C): PublicClient<WebSocketTransport, Chain, any, any> {\n // //@ts-ignore\n // return this.cache.wrap(`wsClient-${String(chainId)}`, () => {\n // // const wsUrl = this.chainMap[chainId]?.rpcUrls?.default?.webSocket?.[0]\n // // if (!wsUrl) throw new Error(`rpcUrls.default.webSocket[0] is not defined for chainId ${String(chainId)}`)\n // // //@ts-ignore\n // return createPublicClient({\n // //@ts-ignore\n // chain: this.chainMap[chainId],\n // transport: webSocket()\n // }) as PublicClient<WebSocketTransport, Chain, any, any>\n // })\n // }\n\n\n PubClient<C extends keyof Chains>(chainId: C): PublicClient<HttpTransport, Chain, any, any> {\n //@ts-ignore\n return this.cache.wrap(`publicClient-${String(chainId)}`, () => {\n //@ts-ignore\n return createPublicClient({\n //@ts-ignore\n chain: this.chainMap[chainId],\n transport: http()\n }) as PublicClient<HttpTransport, Chain, any, any>\n })\n }\n\n\n //@ts-ignore\n Get<K extends keyof Contracts, C extends keyof Chains, Addr extends `0x${string}`>(contractName: K, chainId: C, address: Addr): GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>> {\n const wallet = this.getWallet ? this.getWallet() : null\n //@ts-ignore\n const cacheKey = `contract: ${contractName}-${chainId}-${address}-${wallet ? wallet.account.address : wallet}`\n return this.cache.wrap(cacheKey, () => {\n //@ts-ignore\n const contract = this.contractMap[contractName];\n //@ts-ignore\n const pubClient = this.PubClient(chainId)\n\n //@ts-ignore\n return getContract({\n client: {\n //@ts-ignore\n public: pubClient,\n //@ts-ignore\n wallet\n },\n address,\n abi: contract\n })\n }) as any\n }\n\n\n static init(): AIem<any, any, any> {\n if (!globalThis.aiem) {\n //@ts-ignore\n globalThis.aiem = new AIem();\n }\n\n return globalThis.aiem;\n }\n\n //@ts-ignore\n static Get<TAbi extends Abi = any>(abi: TAbi, chainId: any, address: any, wallet?: WalletClient): GetContractReturnType<TAbi, PublicClient<HttpTransport, Chain, any, any>> {\n const aiem = this.init()\n const cacheKey = `contract ${md5(JSON.stringify(abi))}-${chainId}-${address}-${wallet ? wallet.account.address : null}`\n return aiem.cache.wrap(cacheKey, () => {\n //@ts-ignore\n const pubClient = aiem.PubClient(chainId)\n\n //@ts-ignore\n return getContract({\n client: {\n //@ts-ignore\n public: pubClient,\n //@ts-ignore\n wallet\n },\n address,\n abi\n })\n }) as any\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../aiem.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Chain, type GetContractReturnType, createPublicClient, getContract, http, type Abi, PublicClient, HttpTransport, WalletClient, AbiFunction } from 'viem'\nimport md5 from \"md5\"\nimport { iotex, mainnet, bsc, polygon, iotexTestnet, } from 'viem/chains'\nimport TTLCache from '@isaacs/ttlcache'\n\n//@ts-ignore\nmainnet.rpcUrls.default.http = ['https://rpc.ankr.com/eth']\n//@ts-ignore\nmainnet.rpcUrls.default.webSocket = [\"wss://ethereum-rpc.publicnode.com\"]\n\n\n\n\nexport class Cache {\n kv = new TTLCache<string, any>({ max: 10000, ttl: 1000 * 60, });\n\n wrap<T>(key: string, fn: () => T | Promise<T>, config: TTLCache.Options<any, any> = {}): T | Promise<T> {\n if (this.kv.has(key)) {\n console.log(`load ${key} from cache`)\n return this.kv.get(key);\n }\n\n const result = fn();\n if (result instanceof Promise) {\n const promiseResult = result.then(res => {\n this.kv.set(key, res, config);\n return res;\n });\n this.kv.set(key, promiseResult, config);\n return promiseResult;\n } else {\n this.kv.set(key, result, config);\n return result;\n }\n }\n}\n\n\nexport class AIem<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }> {\n static cache?: Cache = new Cache()\n cache?: Cache = new Cache()\n contractMap?: Contracts\n //@ts-ignore\n chainMap?: Chains = {\n [iotex.id]: iotex,\n [mainnet.id]: mainnet,\n [bsc.id]: bsc,\n [polygon.id]: polygon,\n [iotexTestnet.id]: iotexTestnet,\n }\n nameMap?: Addrs\n contracts: {\n [K in keyof Addrs & keyof Contracts]: {\n //@ts-ignore\n [KK in keyof Addrs[K]]: GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>, any, any>\n }\n }\n funcMap?: { [key: string]: { ttl?: number } } = {\n \"totalSupply\": { ttl: 15 * 1000 },\n \"symbol\": { ttl: 60 * 1000 },\n \"name\": { ttl: 60 * 1000 },\n \"decimals\": { ttl: 60 * 1000 },\n \"balanceOf\": { ttl: 5 * 1000 }\n }\n\n\n get _cache() {\n return AIem.cache\n }\n\n\n //@ts-ignore\n getWallet?: () => WalletClient\n\n static Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }>(args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\" | \"cache\" | \"funcMap\">) {\n return this.init().Set(args)\n }\n\n Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends { [K in keyof Contracts]?: { [key: string]: `${string}-0x${string}` } }>(args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\" | \"cache\" | \"funcMap\">): AIem<Contracts, Chains, Addrs> {\n const { chainMap = {}, contractMap = {}, funcMap, ...rest } = args || {}\n //@ts-ignore\n this.chainMap = Object.assign({}, this.chainMap || {}, chainMap)\n //@ts-ignore\n this.contractMap = Object.assign({}, this.contractMap || {}, contractMap)\n //@ts-ignore\n this.funcMap = Object.assign({}, this.funcMap || {}, funcMap)\n\n Object.assign(this, rest)\n return this as any\n }\n\n\n constructor(args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\" | \"cache\" | \"funcMap\"> = {}) {\n\n\n this.Set(args)\n\n this.contracts = new Proxy({}, {\n //@ts-ignore\n get: (target: any, contractName: keyof Addrs & keyof Contracts) => {\n if (target[contractName]) return target[contractName]\n\n if (!this.nameMap[contractName]) {\n throw new Error(`Contract ${String(contractName)} not found`);\n }\n\n target[contractName] = new Proxy({}, {\n //@ts-ignore\n get: (innerTarget: any, contractAlias: keyof Addrs[keyof Addrs]) => {\n const addressStr = this.nameMap[contractName]?.[contractAlias];\n if (!addressStr) {\n throw new Error(`Alias ${String(contractAlias)} for contract ${String(contractName)} not found`);\n }\n const [chainId, address] = addressStr.split('-');\n\n\n // Assuming getContractInstance is a function that retrieves a contract instance\n return this.Get(contractName, String(chainId), address as `0x${string}`);\n }\n });\n return target[contractName];\n }\n }) as any;\n\n }\n\n // WsClient<C extends keyof Chains>(chainId: C): PublicClient<WebSocketTransport, Chain, any, any> {\n // //@ts-ignore\n // return this.cache.wrap(`wsClient-${String(chainId)}`, () => {\n // // const wsUrl = this.chainMap[chainId]?.rpcUrls?.default?.webSocket?.[0]\n // // if (!wsUrl) throw new Error(`rpcUrls.default.webSocket[0] is not defined for chainId ${String(chainId)}`)\n // // //@ts-ignore\n // return createPublicClient({\n // //@ts-ignore\n // chain: this.chainMap[chainId],\n // transport: webSocket()\n // }) as PublicClient<WebSocketTransport, Chain, any, any>\n // })\n // }\n\n\n PubClient<C extends keyof Chains>(chainId: C): PublicClient<HttpTransport, Chain, any, any> {\n //@ts-ignore\n return this._cache.wrap(`publicClient-${String(chainId)}`, () => {\n //@ts-ignore\n return createPublicClient({\n //@ts-ignore\n chain: this.chainMap[chainId],\n transport: http()\n }) as PublicClient<HttpTransport, Chain, any, any>\n })\n }\n\n\n //@ts-ignore\n Get<K extends keyof Contracts, C extends keyof Chains, Addr extends `0x${string}`>(contractName: K, chainId: C, address: Addr): GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>> {\n const wallet = this.getWallet ? this.getWallet() : null\n //@ts-ignore\n const cacheKey = `contract: ${contractName}-${chainId}-${address}-${wallet ? wallet.account.address : wallet}`\n return this._cache.wrap(cacheKey, () => {\n //@ts-ignore\n const contract = this.contractMap[contractName];\n //@ts-ignore\n const pubClient = this.PubClient(chainId)\n\n //@ts-ignore\n return this.getContract({\n client: {\n //@ts-ignore\n public: pubClient,\n //@ts-ignore\n wallet\n },\n address,\n abi: contract\n })\n }) as any\n }\n\n getContract({\n client,\n address,\n abi\n }: {\n client: {\n public: PublicClient<HttpTransport, Chain, any, any>\n wallet?: WalletClient\n }\n address: `0x${string}`\n abi: any,\n }) {\n const handler = {\n get: (target: any, funcName: any) => {\n if (typeof target[funcName] === 'function') {\n return async (...args: any[]) => {\n const methodConfig = this.funcMap?.[funcName as string];\n const cacheKey = `method:${client.public.chain.id}-${address}-${String(funcName)}-${JSON.stringify(args)}`;\n\n if (methodConfig) {\n return this.cache.wrap(cacheKey, () => {\n return target[funcName](...args);\n }, methodConfig);\n }\n\n return target[funcName](...args);\n };\n }\n return new Proxy(target[funcName], handler)\n }\n }\n\n //@ts-ignore\n const contract = getContract({\n //@ts-ignore\n client,\n address,\n abi\n })\n return new Proxy(contract, handler) as any\n }\n\n\n static init(): AIem<any, any, any> {\n if (!globalThis.aiem) {\n //@ts-ignore\n globalThis.aiem = new AIem();\n }\n\n return globalThis.aiem;\n }\n\n //@ts-ignore\n static Get<TAbi extends Abi = any>(abi: TAbi, chainId: any, address: any, wallet?: WalletClient): GetContractReturnType<TAbi, PublicClient<HttpTransport, Chain, any, any>> {\n const aiem = this.init()\n\n const cacheKey = `contract ${md5(JSON.stringify(abi))}-${chainId}-${address}-${wallet ? wallet.account.address : null}`\n return aiem._cache.wrap(cacheKey, () => {\n //@ts-ignore\n const pubClient = aiem.PubClient(chainId)\n\n //@ts-ignore\n return aiem.getContract({\n client: {\n //@ts-ignore\n public: pubClient,\n //@ts-ignore\n wallet\n },\n address,\n abi\n })\n }) as any\n }\n}\n\n\nexport type ReadFunctionKeys<T extends Abi> = T[number] extends infer U\n ? U extends AbiFunction\n ? U['stateMutability'] extends 'view' | 'pure'\n ? U['name']\n : never\n : never\n : never;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { __spreadValues } from './chunk-
|
|
1
|
+
import { __spreadValues } from './chunk-R4SQKVDQ.mjs';
|
|
2
2
|
|
|
3
|
-
//
|
|
3
|
+
// node_modules/clsx/dist/clsx.mjs
|
|
4
4
|
function r(e) {
|
|
5
5
|
var t, f, n = "";
|
|
6
6
|
if ("string" == typeof e || "number" == typeof e)
|
|
@@ -20,7 +20,7 @@ function clsx() {
|
|
|
20
20
|
return n;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
//
|
|
23
|
+
// node_modules/tailwind-merge/dist/lib/tw-join.mjs
|
|
24
24
|
function twJoin() {
|
|
25
25
|
var index = 0;
|
|
26
26
|
var argument;
|
|
@@ -53,7 +53,7 @@ function toValue(mix) {
|
|
|
53
53
|
return string;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
//
|
|
56
|
+
// node_modules/tailwind-merge/dist/lib/class-utils.mjs
|
|
57
57
|
var CLASS_PART_SEPARATOR = "-";
|
|
58
58
|
function createClassUtils(config) {
|
|
59
59
|
var classMap = createClassMap(config);
|
|
@@ -182,7 +182,7 @@ function getPrefixedClassGroupEntries(classGroupEntries, prefix) {
|
|
|
182
182
|
});
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
//
|
|
185
|
+
// node_modules/tailwind-merge/dist/lib/lru-cache.mjs
|
|
186
186
|
function createLruCache(maxCacheSize) {
|
|
187
187
|
if (maxCacheSize < 1) {
|
|
188
188
|
return {
|
|
@@ -226,7 +226,7 @@ function createLruCache(maxCacheSize) {
|
|
|
226
226
|
};
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
//
|
|
229
|
+
// node_modules/tailwind-merge/dist/lib/modifier-utils.mjs
|
|
230
230
|
var IMPORTANT_MODIFIER = "!";
|
|
231
231
|
function createSplitModifiers(config) {
|
|
232
232
|
var separator = config.separator || ":";
|
|
@@ -288,7 +288,7 @@ function sortModifiers(modifiers) {
|
|
|
288
288
|
return sortedModifiers;
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
-
//
|
|
291
|
+
// node_modules/tailwind-merge/dist/lib/config-utils.mjs
|
|
292
292
|
function createConfigUtils(config) {
|
|
293
293
|
return __spreadValues({
|
|
294
294
|
cache: createLruCache(config.cacheSize),
|
|
@@ -296,7 +296,7 @@ function createConfigUtils(config) {
|
|
|
296
296
|
}, createClassUtils(config));
|
|
297
297
|
}
|
|
298
298
|
|
|
299
|
-
//
|
|
299
|
+
// node_modules/tailwind-merge/dist/lib/merge-classlist.mjs
|
|
300
300
|
var SPLIT_CLASSES_REGEX = /\s+/;
|
|
301
301
|
function mergeClassList(classList, configUtils) {
|
|
302
302
|
var splitModifiers = configUtils.splitModifiers, getClassGroupId = configUtils.getClassGroupId, getConflictingClassGroupIds = configUtils.getConflictingClassGroupIds;
|
|
@@ -349,7 +349,7 @@ function mergeClassList(classList, configUtils) {
|
|
|
349
349
|
}).join(" ");
|
|
350
350
|
}
|
|
351
351
|
|
|
352
|
-
//
|
|
352
|
+
// node_modules/tailwind-merge/dist/lib/create-tailwind-merge.mjs
|
|
353
353
|
function createTailwindMerge() {
|
|
354
354
|
for (var _len = arguments.length, createConfig = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
355
355
|
createConfig[_key] = arguments[_key];
|
|
@@ -383,7 +383,7 @@ function createTailwindMerge() {
|
|
|
383
383
|
};
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
//
|
|
386
|
+
// node_modules/tailwind-merge/dist/lib/from-theme.mjs
|
|
387
387
|
function fromTheme(key) {
|
|
388
388
|
var themeGetter = function themeGetter2(theme) {
|
|
389
389
|
return theme[key] || [];
|
|
@@ -392,7 +392,7 @@ function fromTheme(key) {
|
|
|
392
392
|
return themeGetter;
|
|
393
393
|
}
|
|
394
394
|
|
|
395
|
-
//
|
|
395
|
+
// node_modules/tailwind-merge/dist/lib/validators.mjs
|
|
396
396
|
var arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
|
|
397
397
|
var fractionRegex = /^\d+\/\d+$/;
|
|
398
398
|
var stringLengths = /* @__PURE__ */ new Set(["px", "full", "screen"]);
|
|
@@ -464,7 +464,7 @@ function isShadow(value) {
|
|
|
464
464
|
return shadowRegex.test(value);
|
|
465
465
|
}
|
|
466
466
|
|
|
467
|
-
//
|
|
467
|
+
// node_modules/tailwind-merge/dist/lib/default-config.mjs
|
|
468
468
|
function getDefaultConfig() {
|
|
469
469
|
var colors = fromTheme("colors");
|
|
470
470
|
var spacing = fromTheme("spacing");
|
|
@@ -2501,7 +2501,7 @@ function getDefaultConfig() {
|
|
|
2501
2501
|
};
|
|
2502
2502
|
}
|
|
2503
2503
|
|
|
2504
|
-
//
|
|
2504
|
+
// node_modules/tailwind-merge/dist/lib/tw-merge.mjs
|
|
2505
2505
|
var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
|
|
2506
2506
|
|
|
2507
2507
|
// lib/utils.ts
|
|
@@ -2511,4 +2511,4 @@ function cn(...inputs) {
|
|
|
2511
2511
|
|
|
2512
2512
|
export { cn };
|
|
2513
2513
|
//# sourceMappingURL=out.js.map
|
|
2514
|
-
//# sourceMappingURL=chunk-
|
|
2514
|
+
//# sourceMappingURL=chunk-AIZ7XDNV.mjs.map
|