@dappworks/kit 0.4.91 → 0.4.92
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/aiem.d.mts +3 -2
- package/dist/aiem.mjs +14 -12
- package/dist/aiem.mjs.map +1 -1
- package/package.json +1 -1
package/dist/aiem.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Abi, Chain, GetContractReturnType, PublicClient, HttpTransport } from 'viem';
|
|
1
|
+
import { Abi, Chain, GetContractReturnType, PublicClient, HttpTransport, WalletClient } from 'viem';
|
|
2
2
|
|
|
3
3
|
declare class Cache {
|
|
4
4
|
kv: Record<string, any>;
|
|
@@ -18,7 +18,8 @@ declare class AIem<Contracts extends Record<string, Abi>, Chains extends Record<
|
|
|
18
18
|
[KK in keyof Addrs[K]]: GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>, any, any>;
|
|
19
19
|
};
|
|
20
20
|
};
|
|
21
|
-
|
|
21
|
+
getWallet?: () => WalletClient;
|
|
22
|
+
constructor(args: Pick<AIem<Contracts, Chains, Addrs>, "contractMap" | "chainMap" | "nameMap" | "getWallet">);
|
|
22
23
|
PubClient<C extends keyof Chains>(chainId: C): PublicClient<HttpTransport, Chain, any, any>;
|
|
23
24
|
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>>;
|
|
24
25
|
}
|
package/dist/aiem.mjs
CHANGED
|
@@ -37,15 +37,12 @@ var AIem = class {
|
|
|
37
37
|
//@ts-ignore
|
|
38
38
|
get: (innerTarget, contractAlias) => {
|
|
39
39
|
var _a;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
throw new Error(`Alias ${String(contractAlias)} for contract ${String(contractName)} not found`);
|
|
44
|
-
}
|
|
45
|
-
const [chainId, address] = addressStr.split("-");
|
|
46
|
-
innerTarget[contractAlias] = this.Get(contractName, String(chainId), address);
|
|
40
|
+
const addressStr = (_a = this.nameMap[contractName]) == null ? void 0 : _a[contractAlias];
|
|
41
|
+
if (!addressStr) {
|
|
42
|
+
throw new Error(`Alias ${String(contractAlias)} for contract ${String(contractName)} not found`);
|
|
47
43
|
}
|
|
48
|
-
|
|
44
|
+
const [chainId, address] = addressStr.split("-");
|
|
45
|
+
return this.Get(contractName, String(chainId), address);
|
|
49
46
|
}
|
|
50
47
|
});
|
|
51
48
|
return target[contractName];
|
|
@@ -76,12 +73,17 @@ var AIem = class {
|
|
|
76
73
|
}
|
|
77
74
|
//@ts-ignore
|
|
78
75
|
Get(contractName, chainId, address) {
|
|
79
|
-
|
|
76
|
+
const wallet = this.getWallet ? this.getWallet() : null;
|
|
77
|
+
return this.cache.wrap(`contract: ${contractName}-${chainId}-${address}-${wallet ? wallet.account.address : wallet}`, () => {
|
|
80
78
|
const contract = this.contractMap[contractName];
|
|
81
|
-
const
|
|
79
|
+
const pubClient = this.PubClient(chainId);
|
|
82
80
|
return getContract({
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
client: {
|
|
82
|
+
//@ts-ignore
|
|
83
|
+
public: pubClient,
|
|
84
|
+
//@ts-ignore
|
|
85
|
+
wallet
|
|
86
|
+
},
|
|
85
87
|
address,
|
|
86
88
|
abi: contract
|
|
87
89
|
});
|
package/dist/aiem.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../aiem.ts"],"names":[],"mappings":";;;AAAA,SAAiD,oBAAoB,aAAa,
|
|
1
|
+
{"version":3,"sources":["../aiem.ts"],"names":[],"mappings":";;;AAAA,SAAiD,oBAAoB,aAAa,YAAiE;AAE5I,IAAM,QAAN,MAAY;AAAA,EAAZ;AACL,cAA0B,CAAC;AAAA;AAAA,EAE3B,KAAQ,KAAa,IAA0C;AAC7D,QAAI,KAAK,GAAG,GAAG,GAAG;AAChB,aAAO,KAAK,GAAG,GAAG;AAAA,IACpB;AAEA,UAAM,SAAS,GAAG;AAClB,QAAI,kBAAkB,SAAS;AAC7B,aAAO,OAAO,KAAK,SAAO;AACxB,aAAK,GAAG,GAAG,IAAI;AACf,eAAO;AAAA,MACT,CAAC;AAAA,IACH,OAAO;AACL,WAAK,GAAG,GAAG,IAAI;AACf,aAAO;AAAA,IACT;AAAA,EACF;AACF;AACO,IAAM,OAAN,MAA+K;AAAA,EAcpL,YAAY,MAAkG;AAb9G,SAAQ,QAAe,IAAI,MAAM;AAc/B,WAAO,OAAO,MAAM,IAAI;AAExB,SAAK,YAAY,IAAI,MAAM,CAAC,GAAG;AAAA;AAAA,MAE7B,KAAK,CAAC,QAAa,iBAAgD;AACjE,YAAI,OAAO,YAAY;AAAG,iBAAO,OAAO,YAAY;AAEpD,YAAI,CAAC,KAAK,QAAQ,YAAY,GAAG;AAC/B,gBAAM,IAAI,MAAM,YAAY,OAAO,YAAY,CAAC,YAAY;AAAA,QAC9D;AAEA,eAAO,YAAY,IAAI,IAAI,MAAM,CAAC,GAAG;AAAA;AAAA,UAEnC,KAAK,CAAC,aAAkB,kBAA4C;AAlD9E;AAmDY,kBAAM,cAAa,UAAK,QAAQ,YAAY,MAAzB,mBAA6B;AAChD,gBAAI,CAAC,YAAY;AACf,oBAAM,IAAI,MAAM,SAAS,OAAO,aAAa,CAAC,iBAAiB,OAAO,YAAY,CAAC,YAAY;AAAA,YACjG;AACA,kBAAM,CAAC,SAAS,OAAO,IAAI,WAAW,MAAM,GAAG;AAI/C,mBAAO,KAAK,IAAI,cAAc,OAAO,OAAO,GAAG,OAAwB;AAAA,UACzE;AAAA,QACF,CAAC;AACD,eAAO,OAAO,YAAY;AAAA,MAC5B;AAAA,IACF,CAAC;AAAA,EAEH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,UAAkC,SAA0D;AAE1F,WAAO,KAAK,MAAM,KAAK,gBAAgB,OAAO,OAAO,CAAC,IAAI,MAAM;AAE9D,aAAO,mBAAmB;AAAA;AAAA,QAExB,OAAO,KAAK,SAAS,OAAO;AAAA,QAC5B,WAAW,KAAK;AAAA,MAClB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA;AAAA,EAIA,IAAmF,cAAiB,SAAY,SAAkG;AAChN,UAAM,SAAS,KAAK,YAAY,KAAK,UAAU,IAAI;AAEnD,WAAO,KAAK,MAAM,KAAK,aAAa,YAAY,IAAI,OAAO,IAAI,OAAO,IAAI,SAAS,OAAO,QAAQ,UAAU,MAAM,IAAI,MAAM;AAE1H,YAAM,WAAW,KAAK,YAAY,YAAY;AAE9C,YAAM,YAAY,KAAK,UAAU,OAAO;AAExC,aAAO,YAAY;AAAA,QACjB,QAAQ;AAAA;AAAA,UAEN,QAAQ;AAAA;AAAA,UAER;AAAA,QACF;AAAA,QACA;AAAA,QACA,KAAK;AAAA,MACP,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF","sourcesContent":["import { type Chain, type GetContractReturnType, createPublicClient, getContract, http, type Abi, PublicClient, HttpTransport, WalletClient } from 'viem'\n\nexport class Cache {\n kv: Record<string, any> = {};\n\n wrap<T>(key: string, fn: () => T | Promise<T>): T | Promise<T> {\n if (this.kv[key]) {\n return this.kv[key];\n }\n\n const result = fn();\n if (result instanceof Promise) {\n return result.then(res => {\n this.kv[key] = res;\n return res;\n });\n } else {\n this.kv[key] = result;\n return result;\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 private cache: Cache = new Cache()\n contractMap: Contracts\n chainMap: Chains\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 getWallet?: () => WalletClient\n\n constructor(args: Pick<AIem<Contracts, Chains, Addrs>, \"contractMap\" | \"chainMap\" | \"nameMap\" | \"getWallet\">) {\n Object.assign(this, 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 return this.cache.wrap(`contract: ${contractName}-${chainId}-${address}-${wallet ? wallet.account.address : wallet}`, () => {\n //@ts-ignore\n const contract = this.contractMap[contractName];\n //@ts-ignore\n const pubClient = this.PubClient(chainId)\n\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"]}
|