@dappworks/kit 0.4.93 → 0.4.95
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-yojg0WLR.d.ts → PromiseState-CShJQq2E.d.ts} +1 -1
- package/dist/aiem.d.mts +2 -1
- package/dist/aiem.mjs +11 -7
- package/dist/aiem.mjs.map +1 -1
- package/dist/{chunk-QWHU3HBK.mjs → chunk-AHRJMPR2.mjs} +2 -2
- package/dist/{chunk-XAIZMT2F.mjs → chunk-I7IKSQ2E.mjs} +40 -40
- package/dist/chunk-I7IKSQ2E.mjs.map +1 -0
- package/dist/{chunk-XJMRAPHI.mjs → chunk-MEVJ3CPW.mjs} +6 -7
- package/dist/chunk-MEVJ3CPW.mjs.map +1 -0
- package/dist/{chunk-WS43BV7Y.mjs → chunk-UAX4462R.mjs} +2 -2
- package/dist/dev.d.mts +1 -1
- package/dist/dev.mjs +1 -1
- package/dist/experimental.d.mts +1 -1
- package/dist/experimental.mjs +2 -2
- package/dist/form.d.mts +1 -1
- package/dist/form.mjs +3 -3
- package/dist/index.d.mts +4 -134
- package/dist/index.mjs +7 -93
- package/dist/index.mjs.map +1 -1
- package/dist/inspector.d.mts +1 -1
- package/dist/plugins.d.mts +2 -2
- package/dist/plugins.mjs +2 -2
- package/dist/{root-C3lZnoCI.d.ts → root-ChXX09d6.d.ts} +0 -4
- package/package.json +12 -4
- package/dist/chunk-XAIZMT2F.mjs.map +0 -1
- package/dist/chunk-XJMRAPHI.mjs.map +0 -1
- /package/dist/{chunk-QWHU3HBK.mjs.map → chunk-AHRJMPR2.mjs.map} +0 -0
- /package/dist/{chunk-WS43BV7Y.mjs.map → chunk-UAX4462R.mjs.map} +0 -0
package/dist/aiem.d.mts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { Abi, Chain, GetContractReturnType, PublicClient, HttpTransport, WalletClient } from 'viem';
|
|
2
|
+
import QuickLRU from 'quick-lru';
|
|
2
3
|
|
|
3
4
|
declare class Cache {
|
|
4
|
-
kv:
|
|
5
|
+
kv: QuickLRU<string, any>;
|
|
5
6
|
wrap<T>(key: string, fn: () => T | Promise<T>): T | Promise<T>;
|
|
6
7
|
}
|
|
7
8
|
declare class AIem<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends {
|
package/dist/aiem.mjs
CHANGED
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import './chunk-R4SQKVDQ.mjs';
|
|
2
2
|
import { createPublicClient, http, getContract } from 'viem';
|
|
3
|
+
import QuickLRU from 'quick-lru';
|
|
3
4
|
|
|
4
5
|
var Cache = class {
|
|
5
6
|
constructor() {
|
|
6
|
-
this.kv = {};
|
|
7
|
+
this.kv = new QuickLRU({ maxSize: 1e4 });
|
|
7
8
|
}
|
|
8
9
|
wrap(key, fn) {
|
|
9
|
-
if (this.kv
|
|
10
|
-
return this.kv
|
|
10
|
+
if (this.kv.has(key)) {
|
|
11
|
+
return this.kv.get(key);
|
|
11
12
|
}
|
|
12
13
|
const result = fn();
|
|
13
14
|
if (result instanceof Promise) {
|
|
14
|
-
|
|
15
|
-
this.kv
|
|
15
|
+
const promiseResult = result.then((res) => {
|
|
16
|
+
this.kv.set(key, res);
|
|
16
17
|
return res;
|
|
17
18
|
});
|
|
19
|
+
this.kv.set(key, promiseResult);
|
|
20
|
+
return promiseResult;
|
|
18
21
|
} else {
|
|
19
|
-
this.kv
|
|
22
|
+
this.kv.set(key, result);
|
|
20
23
|
return result;
|
|
21
24
|
}
|
|
22
25
|
}
|
|
@@ -74,7 +77,8 @@ var AIem = class {
|
|
|
74
77
|
//@ts-ignore
|
|
75
78
|
Get(contractName, chainId, address) {
|
|
76
79
|
const wallet = this.getWallet ? this.getWallet() : null;
|
|
77
|
-
|
|
80
|
+
const cacheKey = `contract: ${contractName}-${chainId}-${address}-${wallet ? wallet.account.address : wallet}`;
|
|
81
|
+
return this.cache.wrap(cacheKey, () => {
|
|
78
82
|
const contract = this.contractMap[contractName];
|
|
79
83
|
const pubClient = this.PubClient(chainId);
|
|
80
84
|
return getContract({
|
package/dist/aiem.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../aiem.ts"],"names":[],"mappings":";;;AAAA,SAAiD,oBAAoB,aAAa,YAAiE;
|
|
1
|
+
{"version":3,"sources":["../aiem.ts"],"names":[],"mappings":";;;AAAA,SAAiD,oBAAoB,aAAa,YAAiE;AACnJ,OAAO,cAAc;AAGd,IAAM,QAAN,MAAY;AAAA,EAAZ;AACL,cAAK,IAAI,SAAsB,EAAE,SAAS,IAAM,CAAC;AAAA;AAAA,EAEjD,KAAQ,KAAa,IAA0C;AAC7D,QAAI,KAAK,GAAG,IAAI,GAAG,GAAG;AACpB,aAAO,KAAK,GAAG,IAAI,GAAG;AAAA,IACxB;AAEA,UAAM,SAAS,GAAG;AAClB,QAAI,kBAAkB,SAAS;AAC7B,YAAM,gBAAgB,OAAO,KAAK,SAAO;AACvC,aAAK,GAAG,IAAI,KAAK,GAAG;AACpB,eAAO;AAAA,MACT,CAAC;AACD,WAAK,GAAG,IAAI,KAAK,aAAa;AAC9B,aAAO;AAAA,IACT,OAAO;AACL,WAAK,GAAG,IAAI,KAAK,MAAM;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,OAAN,MAA+K;AAAA,EAcpL,YAAY,MAA4G;AAbxH,iBAAgB,IAAI,MAAM;AAcxB,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;AAvD9E;AAwDY,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,UAAM,WAAW,aAAa,YAAY,IAAI,OAAO,IAAI,OAAO,IAAI,SAAS,OAAO,QAAQ,UAAU,MAAM;AAC5G,WAAO,KAAK,MAAM,KAAK,UAAU,MAAM;AAErC,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'\nimport QuickLRU from 'quick-lru';\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 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\" | \"cache\">) {\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 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 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"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ToastPlugin } from './chunk-4YCP5CJ4.mjs';
|
|
2
|
-
import { RootStore } from './chunk-
|
|
2
|
+
import { RootStore } from './chunk-MEVJ3CPW.mjs';
|
|
3
3
|
import { makeAutoObservable } from 'mobx';
|
|
4
4
|
import { EventEmitter } from 'events';
|
|
5
5
|
import { useEffect } from 'react';
|
|
@@ -194,4 +194,4 @@ var PromiseState = class {
|
|
|
194
194
|
|
|
195
195
|
export { BooleanState, NumberState, PromiseState, Store, StringState, ValueState };
|
|
196
196
|
//# sourceMappingURL=out.js.map
|
|
197
|
-
//# sourceMappingURL=chunk-
|
|
197
|
+
//# sourceMappingURL=chunk-AHRJMPR2.mjs.map
|
|
@@ -1,49 +1,11 @@
|
|
|
1
1
|
import { _ } from './chunk-MGU3KYGC.mjs';
|
|
2
2
|
import BN, { BigNumber } from 'bignumber.js';
|
|
3
|
+
import { makeAutoObservable } from 'mobx';
|
|
3
4
|
import JSONFormat from 'json-format';
|
|
4
5
|
import copy from 'copy-to-clipboard';
|
|
5
6
|
import numeral from 'numeral';
|
|
6
7
|
import { from } from '@iotexproject/iotex-address-ts';
|
|
7
|
-
import { makeAutoObservable } from 'mobx';
|
|
8
|
-
|
|
9
|
-
var BigNumberState = class {
|
|
10
|
-
constructor(args) {
|
|
11
|
-
this.value = new BN(0);
|
|
12
|
-
this.loading = false;
|
|
13
|
-
this.decimals = 18;
|
|
14
|
-
this.fixed = 6;
|
|
15
|
-
Object.assign(this, args);
|
|
16
|
-
makeAutoObservable(this, {
|
|
17
|
-
getFormat: false
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
get format() {
|
|
21
|
-
if (this.loading)
|
|
22
|
-
return "...";
|
|
23
|
-
return this.getFormat();
|
|
24
|
-
}
|
|
25
|
-
getFormat({ decimals = this.decimals, fixed = this.fixed } = {}) {
|
|
26
|
-
if (this.loading)
|
|
27
|
-
return "...";
|
|
28
|
-
if (this.formatter)
|
|
29
|
-
return this.formatter(this);
|
|
30
|
-
return helper.number.toPrecisionFloor(new BN(this.value).dividedBy(10 ** decimals).toFixed(), {
|
|
31
|
-
decimals: fixed
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
setDecimals(decimals) {
|
|
35
|
-
this.decimals = decimals;
|
|
36
|
-
}
|
|
37
|
-
setValue(value) {
|
|
38
|
-
this.value = value;
|
|
39
|
-
this.setLoading(false);
|
|
40
|
-
}
|
|
41
|
-
setLoading(val) {
|
|
42
|
-
this.loading = val;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
8
|
|
|
46
|
-
// lib/helper.ts
|
|
47
9
|
var valMap = {
|
|
48
10
|
undefined: "",
|
|
49
11
|
null: "",
|
|
@@ -353,6 +315,44 @@ var helper = {
|
|
|
353
315
|
}
|
|
354
316
|
};
|
|
355
317
|
|
|
318
|
+
// store/standard/BigNumberState.ts
|
|
319
|
+
var BigNumberState = class {
|
|
320
|
+
constructor(args) {
|
|
321
|
+
this.value = new BN(0);
|
|
322
|
+
this.loading = false;
|
|
323
|
+
this.decimals = 18;
|
|
324
|
+
this.fixed = 6;
|
|
325
|
+
Object.assign(this, args);
|
|
326
|
+
makeAutoObservable(this, {
|
|
327
|
+
getFormat: false
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
get format() {
|
|
331
|
+
if (this.loading)
|
|
332
|
+
return "...";
|
|
333
|
+
return this.getFormat();
|
|
334
|
+
}
|
|
335
|
+
getFormat({ decimals = this.decimals, fixed = this.fixed } = {}) {
|
|
336
|
+
if (this.loading)
|
|
337
|
+
return "...";
|
|
338
|
+
if (this.formatter)
|
|
339
|
+
return this.formatter(this);
|
|
340
|
+
return helper.number.toPrecisionFloor(new BN(this.value).dividedBy(10 ** decimals).toFixed(), {
|
|
341
|
+
decimals: fixed
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
setDecimals(decimals) {
|
|
345
|
+
this.decimals = decimals;
|
|
346
|
+
}
|
|
347
|
+
setValue(value) {
|
|
348
|
+
this.value = value;
|
|
349
|
+
this.setLoading(false);
|
|
350
|
+
}
|
|
351
|
+
setLoading(val) {
|
|
352
|
+
this.loading = val;
|
|
353
|
+
}
|
|
354
|
+
};
|
|
355
|
+
|
|
356
356
|
export { BigNumberState, helper };
|
|
357
357
|
//# sourceMappingURL=out.js.map
|
|
358
|
-
//# sourceMappingURL=chunk-
|
|
358
|
+
//# sourceMappingURL=chunk-I7IKSQ2E.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../store/standard/BigNumberState.ts","../lib/helper.ts"],"names":["BigNumber"],"mappings":"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","sourcesContent":["import BigNumber from \"bignumber.js\";\nimport { makeAutoObservable } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\n\nexport class BigNumberState {\n value = new BigNumber(0);\n loading = false;\n decimals = 18;\n fixed = 6;\n formatter?: Function;\n constructor(args: Partial<BigNumberState>) {\n Object.assign(this, args);\n makeAutoObservable(this, {\n getFormat: false,\n });\n }\n get format() {\n if (this.loading) return \"...\";\n return this.getFormat();\n }\n\n getFormat({ decimals = this.decimals, fixed = this.fixed }: { decimals?: number; fixed?: number } = {}) {\n if (this.loading) return \"...\";\n if (this.formatter) return this.formatter(this);\n return helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** decimals).toFixed(), {\n decimals: fixed,\n });\n }\n\n setDecimals(decimals: number) {\n this.decimals = decimals;\n }\n\n setValue(value: BigNumber) {\n this.value = value;\n this.setLoading(false);\n }\n\n setLoading(val) {\n this.loading = val;\n }\n}\n","import BN, { BigNumber } from \"bignumber.js\";\nimport JSONFormat from \"json-format\";\nimport { _ } from \"./lodash\";\nimport copy from \"copy-to-clipboard\";\nimport numeral from \"numeral\";\nimport { from } from \"@iotexproject/iotex-address-ts\";\nimport { BigNumberState } from \"../store/standard/BigNumberState\";\n\nconst valMap = {\n undefined: \"\",\n null: \"\",\n false: false,\n};\n\nexport const helper = {\n env: {\n isIopayMobile: () => navigator.userAgent && (navigator.userAgent.includes(\"IoPayAndroid\") || navigator.userAgent.includes(\"IoPayiOs\")),\n isBrowser: () => typeof window === \"object\",\n onBrowser(func) {\n if (this.isBrowser()) {\n func();\n }\n },\n },\n promise: {\n async sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n },\n async runAsync<T, U = Error>(promise: Promise<T>): Promise<[U | null, T | null]> {\n return promise.then<[null, T]>((data: T) => [null, data]).catch<[U, null]>((err) => [err, null]);\n },\n },\n object: {\n crawlObject(object, options) {\n const newObj = JSON.parse(JSON.stringify(object));\n return helper.object.crawl(newObj, options);\n },\n crawl(object, options) {\n Object.keys(object).forEach((i) => {\n if (typeof object[i] === \"object\") {\n helper.object.crawl(object[i], options);\n } else {\n const handler = options[typeof object[i]];\n if (handler) {\n object[i] = handler(object[i]);\n }\n }\n });\n return object;\n },\n },\n json: {\n isJsonString(str: string) {\n if (!str || typeof str !== \"string\") return false;\n if (!str?.includes(\"{\")) return false;\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n },\n safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n },\n },\n deepAssign(target, ...sources) {\n sources.forEach((source) => {\n Object.keys(source).forEach((key) => {\n let descriptor = Object.getOwnPropertyDescriptor(source, key);\n if (descriptor && descriptor?.get) {\n return Object.defineProperty(target, key, descriptor);\n }\n const targetValue = target[key];\n let sourceValue = source[key];\n if (helper.isObject(targetValue) && helper.isObject(sourceValue)) {\n try {\n target[key] = helper.deepAssign(targetValue, sourceValue);\n } catch (e) {\n target[key] = Object.assign(targetValue, sourceValue);\n }\n } else {\n target[key] = sourceValue;\n }\n });\n });\n return target;\n },\n isObject(value) {\n return value != null && typeof value === \"object\";\n },\n deepMerge(obj, newObj) {\n const newVal = _.mergeWith(obj, newObj, (...args) => {\n const [objValue, srcValue] = args;\n if (typeof srcValue === \"object\") {\n return helper.deepMerge(objValue, srcValue);\n }\n return srcValue || valMap[srcValue];\n });\n return newVal;\n },\n img: {\n parse(src: string | undefined) {\n if (!src) return \"/img-404.svg\";\n if (src?.startsWith(\"ipfs\")) {\n return \"https://ipfs.io/ipfs/\" + src.split(\"://\")[1];\n }\n return src;\n },\n },\n string: {\n copy(str: string) {\n copy(str);\n },\n fristUpper(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n firstUpperCase(str: string) {\n return str.replace(/^\\S/, (s) => s.toUpperCase());\n },\n toFixString(str, length) {\n if (str && str.length > length) {\n return str.substr(0, length) + \"...\";\n } else {\n return str;\n }\n },\n truncate(fullStr = \"\", strLen, separator) {\n if (fullStr.length <= strLen) return fullStr;\n\n separator = separator || \"...\";\n\n var sepLen = separator.length,\n charsToShow = strLen - sepLen,\n frontChars = Math.ceil(charsToShow / 2),\n backChars = Math.floor(charsToShow / 2);\n\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n },\n validAbi(abi: string): { abi: any[]; address: string } {\n try {\n JSON.parse(abi);\n const _abi = helper.json.safeParse(abi);\n if (!_abi) {\n return { abi: [], address: \"\" };\n }\n if (Array.isArray(_abi)) {\n return { abi: _abi, address: \"\" };\n } else if (_abi.abi && _abi.address) {\n return { abi: _abi.abi, address: _abi.address };\n } else if (_abi.abi && !_abi.addresses) {\n return { abi: _abi.abi, address: \"\" };\n }\n return { abi: [], address: \"\" };\n } catch (error) {\n return { abi: [], address: \"\" };\n }\n },\n random(count: number) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let result = \"\";\n for (let i = 0; i < count; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n },\n },\n download: {\n downloadByBlob(name: string, blob: Blob) {\n const a = document.createElement(\"a\");\n const href = window.URL.createObjectURL(blob);\n a.href = href;\n a.download = name;\n a.click();\n },\n downloadJSON(name: string, jsonObj: object) {\n try {\n const jsonStr: string = JSONFormat(jsonObj);\n const blob = new Blob([jsonStr], { type: \"application/json\" });\n this.downloadByBlob(name + \".json\", blob);\n } catch (error) {\n console.error(error);\n }\n },\n },\n number: {\n countNonZeroNumbers: (str: string) => {\n let index = 0;\n const length = str.length;\n for (; index < length && (str[index] === \"0\" || str[index] === \".\"); index += 1);\n return length - index - Number(str.includes(\".\"));\n },\n numberWithCommas(num: number) {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n getBN: (value: number | string | BN) => {\n return value instanceof BN ? value : typeof value === \"string\" ? new BN(Number(value)) : new BN(value);\n },\n toPrecisionFloor: (str: number | string, options?: { decimals?: number; format?: string; toLocalString?: boolean }) => {\n const { decimals = 6, format = \"\", toLocalString = false } = options || {};\n if (!str || isNaN(Number(str))) return \"\";\n\n if (helper.number.countNonZeroNumbers(String(str)) <= decimals) return String(str);\n const numStr = new BN(str).toFixed();\n let result = \"\";\n let index = 0;\n const numLength = numStr.length;\n\n for (; numStr[index] === \"0\" && index < numLength; index += 1);\n\n if (index === numLength) return \"0\";\n\n if (numStr[index] === \".\") {\n // number < 0\n result = \"0\";\n for (; (numStr[index] === \"0\" || numStr[index] === \".\") && index < numLength; index += 1) {\n result = result + numStr[index];\n }\n }\n let resultNumLength = 0;\n for (; index < numLength && (resultNumLength < decimals || !result.includes(\".\")); index += 1) {\n result = result + numStr[index];\n\n if (numStr[index] !== \".\") resultNumLength += 1;\n }\n if (format) {\n return numeral(Number(result)).format(format);\n }\n\n if (toLocalString) {\n return helper.number.numberWithCommas(Number(new BN(result).toFixed()));\n }\n\n return new BN(result).toFixed();\n },\n\n //format: '0,0'\n warpBigNumber(value: string, decimals = 18, options?: { format?: string; fallback?: string; min?: number }) {\n const { format = \"0.0\", fallback = \"0.000\", min } = options || {};\n if (!value) {\n return {\n value: \"...\",\n format: \"...\",\n decimals: \"0\",\n isZero: true,\n };\n }\n const BigNumberResponse = new BigNumberState({ value: new BigNumber(value), decimals });\n return {\n value: BigNumberResponse.value.toFixed(0),\n originFormat: BigNumberResponse.value.div(10 ** decimals).toFixed(),\n format: helper.number.numberFormat(BigNumberResponse.value.div(10 ** decimals).toFixed(), format, { fallback, min }),\n decimals: String(BigNumberResponse.decimals),\n isZero: BigNumberResponse.value.isZero(),\n };\n },\n //http://numeraljs.com/ format params does not need to deal with decimal places\n //format: '$0,0' '0a' '0,0' '0,0$'\n numberFormat(str: string | number, format: string = \"0,0\", options: { min?: number; fallback?: string } = {}): string {\n const { fallback = \"0.00\" } = options || {};\n\n if (!str || isNaN(Number(str))) return fallback;\n const numStr = new BigNumber(str).toFixed();\n const countNonZeroNumbers = (_str: string) => {\n const decimalPointIndex = _str.indexOf(\".\");\n if (decimalPointIndex === -1) {\n return 0;\n }\n const decimalPart = _str.substring(decimalPointIndex + 1);\n let trailingZerosCount = 0;\n for (let i = 0; i < decimalPart.length; i++) {\n if (decimalPart[i] === \"0\") {\n trailingZerosCount++;\n } else {\n break;\n }\n }\n return trailingZerosCount;\n };\n\n const fractionDigits = countNonZeroNumbers(format);\n const numberFractionDigits = countNonZeroNumbers(numStr);\n if (options?.min) {\n if (new BigNumber(numStr).isLessThan(new BigNumber(options?.min || 0))) {\n return `< ${numeral(options?.min).format(format)}`;\n }\n }\n const fullStr = new BigNumber(numStr).toFixed();\n let preStr = numeral(fullStr.split(\".\")[0]).format(format.split(\".\")[0]);\n const fractionStr = fullStr.split(\".\")?.[1]?.slice(0, fractionDigits + numberFractionDigits);\n\n if (numberFractionDigits >= fractionDigits) {\n return (preStr + \".\" + fractionStr).replace(/\\.?0+$/, \"\");\n }\n\n if (fractionStr?.[fractionDigits - 1] == \"9\") {\n return (preStr + \".\" + fractionStr.slice(0, fractionDigits - 1) + \"9\").replace(/\\.?0+$/, \"\");\n }\n\n const resultStr = numeral(new BigNumber(numStr).toString()).format(format);\n return resultStr.replace(/\\.?0+$/, \"\");\n },\n },\n address: {\n convertAddress: (addressMode: \"io\" | \"0x\", address: string = \"\"): string => {\n try {\n if (addressMode == \"0x\" && helper.address.validateIoAddress(address)) {\n return from(address).stringEth();\n }\n if (addressMode == \"io\" && helper.address.validateEthAddress(address)) {\n return from(address).string();\n }\n } catch (error) {}\n return address;\n },\n validateEthAddress: (address: string) => /^0x[a-fA-F0-9]{40}$/.test(address),\n validateIoAddress: (address: string) => /^io[a-zA-Z0-9]{39}$/.test(address),\n validateAddress: (address: string) => helper.address.validateEthAddress(address) || helper.address.validateIoAddress(address),\n },\n};\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { makeObservable, makeAutoObservable } from 'mobx';
|
|
3
|
-
import { useLocalObservable } from 'mobx-react-lite';
|
|
4
3
|
|
|
5
4
|
// store/root.ts
|
|
6
5
|
var MyEmitter = class extends EventEmitter {
|
|
@@ -103,13 +102,13 @@ var RootStore = class _RootStore {
|
|
|
103
102
|
static Get(store, config = {}) {
|
|
104
103
|
return this.init().get(store, config);
|
|
105
104
|
}
|
|
106
|
-
static Local(func, config = {}, ann) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
105
|
+
// static Local<T>(func: () => T, config: { sid?: string; args?: Partial<T> } = {}, ann?: any): T {
|
|
106
|
+
// const val = useLocalObservable(func, ann);
|
|
107
|
+
// RootStore.init().instance["Local." + config.sid] = val;
|
|
108
|
+
// return val;
|
|
109
|
+
// }
|
|
111
110
|
};
|
|
112
111
|
|
|
113
112
|
export { RootStore };
|
|
114
113
|
//# sourceMappingURL=out.js.map
|
|
115
|
-
//# sourceMappingURL=chunk-
|
|
114
|
+
//# sourceMappingURL=chunk-MEVJ3CPW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../store/root.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter } from \"events\";\nimport { makeAutoObservable, makeObservable } from \"mobx\";\nimport type TypedEmitter from \"typed-emitter\";\nimport { type Store, type StoreClass } from \"./standard/base\";\n\nexport type EventMap = {\n \"*\": (args: any) => void;\n add: (store: Store) => void;\n};\n\nexport class MyEmitter extends EventEmitter {\n // metas: Record<string, { count: number }> = {};\n _events: Record<string, any>;\n emit(type: any, ...args: any[]) {\n if (process.env.NODE_ENV == \"development\") {\n super.emit(\"*\", { type, args });\n }\n // if (!this.metas[type]) {\n // this.metas[type] = { count: 0 };\n // }\n // this.metas[type].count++;\n return super.emit(type, ...args) || super.emit(\"\", ...args);\n }\n constructor() {\n super();\n makeObservable(this, {\n // metas: true,\n });\n }\n}\n\nexport class RootStore<T extends EventMap = any> {\n instanceMap = new Map<Function, Map<string, Store>>();\n instance: Record<string, Store> = {};\n\n providers: Store[] = [];\n\n events: TypedEmitter<T> = new MyEmitter() as TypedEmitter<T>;\n isInited = false;\n\n static init<T extends EventMap>(args: Partial<RootStore<T>> = {}): RootStore<T> {\n if (!globalThis.store) {\n //@ts-ignore\n globalThis.store = new RootStore(args);\n }\n\n return globalThis.store;\n }\n\n add(store: Store, { sid }: { sid?: string } = {}) {\n if (store.disabled) {\n return;\n }\n\n const instanceMapId = sid ? sid : \"singleton\";\n const instanceId = sid ? sid : store.sid;\n\n if (!this.has(store.constructor)) {\n this.instanceMap.set(store.constructor, new Map());\n }\n\n if (this.instanceMap.get(store.constructor).get(instanceMapId)) {\n console.error(`Store ${store.sid} already exists`);\n return;\n throw new Error(`Store ${store.sid} already exists`);\n }\n if (store.autoObservable) {\n makeAutoObservable(store);\n }\n if (store.provider) {\n this.providers.push(store);\n }\n if (store.onNewStore) {\n this.events.on(\"add\", (e: Store) => {\n store.onNewStore({ rootStore: this, store: e });\n });\n }\n\n if (store.onAdded) {\n store.onAdded({ rootStore: this });\n }\n if (store.stores) {\n this.addStores(store.stores);\n }\n\n if (store.events) {\n Object.entries(store.events).forEach(([event, val]) => {\n this.events.on(val.name as any, val.handler);\n });\n }\n\n // if (helper.env.isBrowser && store.onKeyBindings) {\n // const res = store.onKeyBindings()\n // res.forEach(({ key, fn }: { key: string[], fn: (ev: KeyboardEvent) => void }) => {\n // useEffect(() => {\n // window.addEventListener(\"keydown\", fn);\n // return () => {\n // window.removeEventListener(\"keydown\", fn);\n // }\n // }, [])\n // })\n // }\n\n this.instanceMap.get(store.constructor).set(instanceMapId, store);\n this.instance[instanceId] = store;\n //@ts-ignore\n this.events.emit(\"add\", store);\n\n if (store.init) {\n store.init();\n }\n // this.crawlStore(store);\n }\n\n addStores(store: Store[]) {\n store.forEach((i) => this.add(i));\n return this;\n }\n\n get<T extends Store>(store: StoreClass<T>, config: { sid?: string; args?: Partial<T> } = {}): T {\n const instanceMapId = config.sid ? config.sid : \"singleton\";\n const valid = this.instanceMap.has(store) && this.instanceMap.get(store).has(instanceMapId);\n if (!valid) {\n this.add(new store(config.args || {}), config);\n }\n return this.instanceMap.get(store).get(instanceMapId) as T;\n }\n\n public has(store: Function): boolean {\n return this.instanceMap.has(store);\n }\n\n constructor(args: Partial<RootStore<T>> = {}) {\n Object.assign(this, args);\n makeObservable(this, {\n providers: true,\n });\n this.crawlStore(this);\n }\n\n crawlStore(obj: Object) {\n Object.values(obj).forEach((value) => {\n if (value?.sid) {\n this.add(value);\n }\n });\n }\n\n static Get<T extends Store>(store: StoreClass<T>, config: { sid?: string; args?: Partial<T> } = {}): T {\n return this.init().get(store, config);\n }\n\n // static Local<T>(func: () => T, config: { sid?: string; args?: Partial<T> } = {}, ann?: any): T {\n // const val = useLocalObservable(func, ann);\n // RootStore.init().instance[\"Local.\" + config.sid] = val;\n // return val;\n // }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RootStore } from './chunk-
|
|
1
|
+
import { RootStore } from './chunk-MEVJ3CPW.mjs';
|
|
2
2
|
|
|
3
3
|
// store/index.ts
|
|
4
4
|
var rootStore = RootStore.init();
|
|
@@ -6,4 +6,4 @@ var useStore = () => RootStore.init();
|
|
|
6
6
|
|
|
7
7
|
export { rootStore, useStore };
|
|
8
8
|
//# sourceMappingURL=out.js.map
|
|
9
|
-
//# sourceMappingURL=chunk-
|
|
9
|
+
//# sourceMappingURL=chunk-UAX4462R.mjs.map
|
package/dist/dev.d.mts
CHANGED
package/dist/dev.mjs
CHANGED
package/dist/experimental.d.mts
CHANGED
package/dist/experimental.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PromiseState } from './chunk-
|
|
1
|
+
import { PromiseState } from './chunk-AHRJMPR2.mjs';
|
|
2
2
|
import './chunk-4YCP5CJ4.mjs';
|
|
3
|
-
import { RootStore } from './chunk-
|
|
3
|
+
import { RootStore } from './chunk-MEVJ3CPW.mjs';
|
|
4
4
|
import { _ } from './chunk-MGU3KYGC.mjs';
|
|
5
5
|
import { __objRest, __spreadValues, __spreadProps } from './chunk-R4SQKVDQ.mjs';
|
|
6
6
|
import React from 'react';
|
package/dist/form.d.mts
CHANGED
|
@@ -4,7 +4,7 @@ import { UiSchema, RJSFSchema, WidgetProps, Widget } from '@rjsf/utils';
|
|
|
4
4
|
import * as _rjsf_validator_ajv8_lib_validator from '@rjsf/validator-ajv8/lib/validator';
|
|
5
5
|
import Form, { IChangeEvent } from '@rjsf/core';
|
|
6
6
|
import { EditorProps } from '@monaco-editor/react';
|
|
7
|
-
import { S as Store, R as RootStore } from './root-
|
|
7
|
+
import { S as Store, R as RootStore } from './root-ChXX09d6.js';
|
|
8
8
|
import EventEmitter from 'events';
|
|
9
9
|
import 'typed-emitter';
|
|
10
10
|
|
package/dist/form.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { useStore } from './chunk-
|
|
2
|
-
import { RootStore } from './chunk-
|
|
3
|
-
import { helper } from './chunk-
|
|
1
|
+
import { useStore } from './chunk-UAX4462R.mjs';
|
|
2
|
+
import { RootStore } from './chunk-MEVJ3CPW.mjs';
|
|
3
|
+
import { helper } from './chunk-I7IKSQ2E.mjs';
|
|
4
4
|
import { _ } from './chunk-MGU3KYGC.mjs';
|
|
5
5
|
import { cn } from './chunk-AIZ7XDNV.mjs';
|
|
6
6
|
import { __objRest, __spreadValues, __spreadProps } from './chunk-R4SQKVDQ.mjs';
|
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { R as RootStore, E as EventMap } from './root-
|
|
2
|
-
export { B as BaseState, c as BooleanState, N as NumberState, S as Store, a as StoreClass, b as StringState, V as ValueState } from './root-
|
|
3
|
-
export { P as PromiseState } from './PromiseState-
|
|
1
|
+
import { R as RootStore, E as EventMap } from './root-ChXX09d6.js';
|
|
2
|
+
export { B as BaseState, c as BooleanState, N as NumberState, S as Store, a as StoreClass, b as StringState, V as ValueState } from './root-ChXX09d6.js';
|
|
3
|
+
export { P as PromiseState } from './PromiseState-CShJQq2E.js';
|
|
4
4
|
import * as mobx from 'mobx';
|
|
5
5
|
import BigNumber from 'bignumber.js';
|
|
6
6
|
export { P as PaginationState } from './PaginationState-Bmrrw0ky.js';
|
|
7
7
|
import React from 'react';
|
|
8
|
-
import DataLoader from 'dataloader';
|
|
9
|
-
import { Table } from 'dexie';
|
|
10
8
|
import 'typed-emitter';
|
|
11
9
|
import 'events';
|
|
12
10
|
|
|
@@ -100,132 +98,4 @@ declare const AppProvider: (({ children }: {
|
|
|
100
98
|
displayName: string;
|
|
101
99
|
};
|
|
102
100
|
|
|
103
|
-
|
|
104
|
-
kv: Table<{
|
|
105
|
-
key: string;
|
|
106
|
-
value: {
|
|
107
|
-
value: any;
|
|
108
|
-
expiration: number;
|
|
109
|
-
};
|
|
110
|
-
}, any, {
|
|
111
|
-
key: string;
|
|
112
|
-
value: {
|
|
113
|
-
value: any;
|
|
114
|
-
expiration: number;
|
|
115
|
-
};
|
|
116
|
-
}>;
|
|
117
|
-
kv_get: DataLoader<string, {
|
|
118
|
-
value: any;
|
|
119
|
-
expiration: number;
|
|
120
|
-
}, string>;
|
|
121
|
-
kv_set: DataLoader<{
|
|
122
|
-
key: string;
|
|
123
|
-
value: any;
|
|
124
|
-
ttl: number;
|
|
125
|
-
}, {
|
|
126
|
-
key: string;
|
|
127
|
-
value: any;
|
|
128
|
-
ttl: number;
|
|
129
|
-
}, {
|
|
130
|
-
key: string;
|
|
131
|
-
value: any;
|
|
132
|
-
ttl: number;
|
|
133
|
-
}>;
|
|
134
|
-
options: {
|
|
135
|
-
ttl: number;
|
|
136
|
-
prefix: string;
|
|
137
|
-
};
|
|
138
|
-
get(_key: any): Promise<any>;
|
|
139
|
-
getRaw(_key: any): Promise<any>;
|
|
140
|
-
set(_key: any, value: any, options?: {
|
|
141
|
-
ttl?: number;
|
|
142
|
-
}): Promise<this>;
|
|
143
|
-
delete(key: any): Promise<void>;
|
|
144
|
-
clear(): Promise<void>;
|
|
145
|
-
wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>(key: any, fn: T, args?: {
|
|
146
|
-
ttl?: number;
|
|
147
|
-
alowStale?: boolean;
|
|
148
|
-
}): Promise<Awaited<U>>;
|
|
149
|
-
}
|
|
150
|
-
declare const cache: DexieCache;
|
|
151
|
-
|
|
152
|
-
declare const helper: {
|
|
153
|
-
env: {
|
|
154
|
-
isIopayMobile: () => boolean;
|
|
155
|
-
isBrowser: () => boolean;
|
|
156
|
-
onBrowser(func: any): void;
|
|
157
|
-
};
|
|
158
|
-
promise: {
|
|
159
|
-
sleep(ms: any): Promise<unknown>;
|
|
160
|
-
runAsync<T, U = Error>(promise: Promise<T>): Promise<[U | null, T | null]>;
|
|
161
|
-
};
|
|
162
|
-
object: {
|
|
163
|
-
crawlObject(object: any, options: any): any;
|
|
164
|
-
crawl(object: any, options: any): any;
|
|
165
|
-
};
|
|
166
|
-
json: {
|
|
167
|
-
isJsonString(str: string): boolean;
|
|
168
|
-
safeParse(val: any): any;
|
|
169
|
-
};
|
|
170
|
-
deepAssign(target: any, ...sources: any[]): any;
|
|
171
|
-
isObject(value: any): boolean;
|
|
172
|
-
deepMerge(obj: any, newObj: any): any;
|
|
173
|
-
img: {
|
|
174
|
-
parse(src: string | undefined): string;
|
|
175
|
-
};
|
|
176
|
-
string: {
|
|
177
|
-
copy(str: string): void;
|
|
178
|
-
fristUpper(str: string): string;
|
|
179
|
-
firstUpperCase(str: string): string;
|
|
180
|
-
toFixString(str: any, length: any): any;
|
|
181
|
-
truncate(fullStr: string, strLen: any, separator: any): string;
|
|
182
|
-
validAbi(abi: string): {
|
|
183
|
-
abi: any[];
|
|
184
|
-
address: string;
|
|
185
|
-
};
|
|
186
|
-
random(count: number): string;
|
|
187
|
-
};
|
|
188
|
-
download: {
|
|
189
|
-
downloadByBlob(name: string, blob: Blob): void;
|
|
190
|
-
downloadJSON(name: string, jsonObj: object): void;
|
|
191
|
-
};
|
|
192
|
-
number: {
|
|
193
|
-
countNonZeroNumbers: (str: string) => number;
|
|
194
|
-
numberWithCommas(num: number): string;
|
|
195
|
-
getBN: (value: number | string | BigNumber) => BigNumber;
|
|
196
|
-
toPrecisionFloor: (str: number | string, options?: {
|
|
197
|
-
decimals?: number;
|
|
198
|
-
format?: string;
|
|
199
|
-
toLocalString?: boolean;
|
|
200
|
-
}) => any;
|
|
201
|
-
warpBigNumber(value: string, decimals?: number, options?: {
|
|
202
|
-
format?: string;
|
|
203
|
-
fallback?: string;
|
|
204
|
-
min?: number;
|
|
205
|
-
}): {
|
|
206
|
-
value: string;
|
|
207
|
-
format: string;
|
|
208
|
-
decimals: string;
|
|
209
|
-
isZero: boolean;
|
|
210
|
-
originFormat?: undefined;
|
|
211
|
-
} | {
|
|
212
|
-
value: string;
|
|
213
|
-
originFormat: string;
|
|
214
|
-
format: string;
|
|
215
|
-
decimals: string;
|
|
216
|
-
isZero: boolean;
|
|
217
|
-
};
|
|
218
|
-
numberFormat(str: string | number, format?: string, options?: {
|
|
219
|
-
min?: number;
|
|
220
|
-
fallback?: string;
|
|
221
|
-
}): string;
|
|
222
|
-
};
|
|
223
|
-
address: {
|
|
224
|
-
convertAddress: (addressMode: "io" | "0x", address?: string) => string;
|
|
225
|
-
validateEthAddress: (address: string) => boolean;
|
|
226
|
-
validateIoAddress: (address: string) => boolean;
|
|
227
|
-
validateAddress: (address: string) => boolean;
|
|
228
|
-
};
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
export { AppProvider, BigNumberInputState, BigNumberState, EventMap, ObjectPool, PromiseHook, RootStore, StorageState, cache, helper, rootStore, useStore };
|
|
101
|
+
export { AppProvider, BigNumberInputState, BigNumberState, EventMap, ObjectPool, PromiseHook, RootStore, StorageState, rootStore, useStore };
|
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { BooleanState, NumberState, PromiseState, Store, StringState, ValueState } from './chunk-
|
|
1
|
+
export { BooleanState, NumberState, PromiseState, Store, StringState, ValueState } from './chunk-AHRJMPR2.mjs';
|
|
2
2
|
import './chunk-4YCP5CJ4.mjs';
|
|
3
|
-
export { rootStore, useStore } from './chunk-
|
|
4
|
-
import { RootStore } from './chunk-
|
|
5
|
-
export { RootStore } from './chunk-
|
|
6
|
-
import { helper } from './chunk-
|
|
7
|
-
export { BigNumberState
|
|
3
|
+
export { rootStore, useStore } from './chunk-UAX4462R.mjs';
|
|
4
|
+
import { RootStore } from './chunk-MEVJ3CPW.mjs';
|
|
5
|
+
export { RootStore } from './chunk-MEVJ3CPW.mjs';
|
|
6
|
+
import { helper } from './chunk-I7IKSQ2E.mjs';
|
|
7
|
+
export { BigNumberState } from './chunk-I7IKSQ2E.mjs';
|
|
8
8
|
export { PaginationState } from './chunk-ONVPCAMQ.mjs';
|
|
9
9
|
import './chunk-MGU3KYGC.mjs';
|
|
10
10
|
import './chunk-R4SQKVDQ.mjs';
|
|
@@ -12,8 +12,6 @@ import { observable, makeAutoObservable } from 'mobx';
|
|
|
12
12
|
import BigNumber from 'bignumber.js';
|
|
13
13
|
import React from 'react';
|
|
14
14
|
import { observer } from 'mobx-react-lite';
|
|
15
|
-
import DataLoader from 'dataloader';
|
|
16
|
-
import { Dexie } from 'dexie';
|
|
17
15
|
|
|
18
16
|
//@ts-ignore
|
|
19
17
|
observable();
|
|
@@ -209,91 +207,7 @@ var AppProvider = observer(({ children }) => {
|
|
|
209
207
|
return /* @__PURE__ */ React.createElement(Component, { rootStore: rootStore2, key: store.sid });
|
|
210
208
|
}), children && children);
|
|
211
209
|
});
|
|
212
|
-
var DexieStorage = class extends Dexie {
|
|
213
|
-
constructor() {
|
|
214
|
-
super("cache");
|
|
215
|
-
this.version(1).stores({
|
|
216
|
-
kv: "key, value"
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
var dexie = new DexieStorage();
|
|
221
|
-
var DexieCache = class {
|
|
222
|
-
constructor() {
|
|
223
|
-
this.kv = dexie.kv;
|
|
224
|
-
this.kv_get = new DataLoader(
|
|
225
|
-
async (ids) => {
|
|
226
|
-
const res = await this.kv.bulkGet(ids);
|
|
227
|
-
return res.map((i) => i == null ? void 0 : i.value);
|
|
228
|
-
},
|
|
229
|
-
{ cache: false }
|
|
230
|
-
);
|
|
231
|
-
this.kv_set = new DataLoader(
|
|
232
|
-
async (ids) => {
|
|
233
|
-
const now = /* @__PURE__ */ new Date();
|
|
234
|
-
await this.kv.bulkPut(ids.map((i) => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })));
|
|
235
|
-
return ids;
|
|
236
|
-
},
|
|
237
|
-
{ cache: false }
|
|
238
|
-
);
|
|
239
|
-
this.options = {
|
|
240
|
-
ttl: 60 * 1e3,
|
|
241
|
-
prefix: ""
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
async get(_key) {
|
|
245
|
-
const key = this.options.prefix + _key;
|
|
246
|
-
console.time("get " + key);
|
|
247
|
-
const res = await this.kv_get.load(key);
|
|
248
|
-
console.timeEnd("get " + key);
|
|
249
|
-
const data = res == null ? void 0 : res.value;
|
|
250
|
-
if (!data)
|
|
251
|
-
return;
|
|
252
|
-
return data == null ? void 0 : data.value;
|
|
253
|
-
}
|
|
254
|
-
async getRaw(_key) {
|
|
255
|
-
const key = this.options.prefix + _key;
|
|
256
|
-
console.time("get " + key);
|
|
257
|
-
const res = await this.kv_get.load(key);
|
|
258
|
-
console.timeEnd("get " + key);
|
|
259
|
-
const data = res == null ? void 0 : res.value;
|
|
260
|
-
if (!data)
|
|
261
|
-
return;
|
|
262
|
-
return data;
|
|
263
|
-
}
|
|
264
|
-
async set(_key, value, options) {
|
|
265
|
-
const key = this.options.prefix + _key;
|
|
266
|
-
this.kv_set.load({ key, value, ttl: (options == null ? void 0 : options.ttl) || this.options.ttl });
|
|
267
|
-
return this;
|
|
268
|
-
}
|
|
269
|
-
async delete(key) {
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
async clear() {
|
|
273
|
-
}
|
|
274
|
-
async wrap(key, fn, args) {
|
|
275
|
-
let data = await this.kv_get.load(key);
|
|
276
|
-
if ((data == null ? void 0 : data.expiration) && new Date(data.expiration) <= /* @__PURE__ */ new Date()) {
|
|
277
|
-
if (args == null ? void 0 : args.alowStale) {
|
|
278
|
-
fn().then((value) => {
|
|
279
|
-
this.kv_set.load({ key, value, ttl: (args == null ? void 0 : args.ttl) || this.options.ttl });
|
|
280
|
-
}).catch((err) => {
|
|
281
|
-
console.error(err);
|
|
282
|
-
});
|
|
283
|
-
} else {
|
|
284
|
-
data = null;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
if (!data) {
|
|
288
|
-
const value = await fn();
|
|
289
|
-
this.kv_set.load({ key, value, ttl: (args == null ? void 0 : args.ttl) || this.options.ttl });
|
|
290
|
-
return value;
|
|
291
|
-
}
|
|
292
|
-
return data.value;
|
|
293
|
-
}
|
|
294
|
-
};
|
|
295
|
-
var cache = new DexieCache();
|
|
296
210
|
|
|
297
|
-
export { AppProvider, BigNumberInputState, ObjectPool, PromiseHook, StorageState
|
|
211
|
+
export { AppProvider, BigNumberInputState, ObjectPool, PromiseHook, StorageState };
|
|
298
212
|
//# sourceMappingURL=out.js.map
|
|
299
213
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberInputState.ts","../store/standard/StorageState.ts","../store/standard/ObjectPool.ts","../module/AppProvider.tsx","../lib/dexie.ts"],"names":["makeAutoObservable","rootStore"],"mappings":"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","sourcesContent":["\n\nimport { makeAutoObservable, observable } from 'mobx';\n\nexport class KV {\n //@ts-ignore\n static datas = observable();\n}\n\nexport abstract class ContractBase {\n // chainId?: number;\n // address?: string;\n\n}\n\nexport type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T\n\nexport type PromiseHookData<T, U> = { value: Awaited<U>; get: T; call: T, loading: boolean }\n\nexport class PromiseHook {\n static entities = observable([]);\n static Get<T extends ContractBase>(cls: ContractClass<T>): (args: { args: Partial<T>; id?: string, select?: { [key in keyof Partial<T>]: boolean }, unselect?: { [key in keyof Partial<T>]: boolean } }) => Promise<T & { refresh: () => Promise<void> }> {\n try {\n return async ({ args, select, id, unselect }) => {\n let instance: any\n //@ts-ignore\n if (!id || !this.entities[id]) {\n instance = new cls(args);\n\n instance.refresh = async () => {\n const hooks = Object.entries(instance)\n .filter((i) => {\n if (!this.isPromiseHook(instance[i[0]])) return false\n if (select && !select[i[0]]) return false\n if (unselect && unselect[i[0]]) return false\n return true\n }).map(i => {\n const hook = instance[i[0]]\n return hook\n })\n\n await Promise.all(hooks.map((i) => i.call()));\n }\n if (id) {\n //@ts-ignore\n this.entities[id] = instance\n }\n } else {\n instance = this.entities[id!]\n }\n\n\n await instance.refresh()\n return instance;\n };\n } catch (e) {\n throw e\n }\n }\n\n\n static isPromiseHook(target) {\n return target?._type == \"promiseHook\"\n }\n\n\n //ttl : ms\n static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue }: { func: T; defaultValue?: Awaited<U>; }): PromiseHookData<T, U> {\n let context;\n const call = () => {\n context.loading = true;\n if (!context._call) {\n context._call = func()\n .then((i) => {\n context.value = i;\n context.loading = false;\n context._call = null\n return i\n })\n .catch((i) => {\n console.error(i, func);\n context.value = defaultValue\n context._call = null\n context.loading = false;\n throw i;\n });\n }\n\n\n return context._call\n };\n const get = async () => {\n if (!context.value) {\n\n return call();\n }\n return context.value;\n };\n\n if (!context) {\n context = observable({\n _type: 'promiseHook',\n _value: defaultValue,\n get value() {\n return context['_value'];\n },\n set value(val) {\n context['_value'] = val;\n },\n get,\n loading: false,\n call,\n defaultValue,\n toJSON() {\n return context.value\n },\n toString() {\n return context.value\n },\n });\n }\n\n return context;\n }\n\n}\n","import BigNumber from 'bignumber.js';\nimport { makeAutoObservable } from 'mobx';\nimport { helper } from '../../lib/helper';\nexport class BigNumberInputState {\n value = new BigNumber(0);\n format = '';\n loading = false;\n decimals = 18;\n formatter?: Function;\n constructor(args: Partial<BigNumberInputState>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n get noDecimasValue(): BigNumber {\n return new BigNumber(this.value).dividedBy(10 ** this.decimals);\n }\n setValue(value: any) {\n this.value = new BigNumber(value);\n // this.format = helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** this.decimals).toFixed());\n this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.setLoading(false);\n }\n setFormat(val: any) {\n this.format = val;\n // this.format = helper.number.toPrecisionFloor(this.format);\n // this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);\n }\n setLoading(val: boolean) {\n this.loading = val;\n }\n setDecimals(val: number) {\n this.decimals = val;\n }\n get isZero(): boolean {\n return this.value.isZero() && this.format == '';\n }\n}\n","import { makeAutoObservable } from 'mobx';\n\nexport class StorageState<T> {\n key: string;\n value: T | any = null;\n default: T | any = null;\n constructor(args: Partial<StorageState<T>>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n this.load();\n }\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n load() {\n try {\n const value = window?.localStorage?.getItem(this.key);\n this.value = StorageState.safeParse(value);\n if (this.value == null) {\n this.value = this.default;\n }\n return this.value;\n } catch (error) {\n console.error(error)\n return null\n }\n }\n\n save(value?: T) {\n try {\n if (value !== null || value !== undefined) {\n this.value = value;\n }\n window?.localStorage.setItem(this.key, JSON.stringify(value));\n } catch (error) {\n console.error(error)\n return null\n }\n }\n\n setValue(value?: T) {\n this.save(value);\n }\n\n clear() {\n try {\n localStorage.removeItem(this.key);\n } catch (error) {\n return null\n }\n }\n}\n","export class ObjectPool {\n static pool: { [key: string]: any } = {};\n\n static get<T extends (...args: any[]) => any, U = ReturnType<T>>(key: string, func: T): U {\n if (!ObjectPool.pool[key]) {\n ObjectPool.pool[key] = func();\n }\n return ObjectPool.pool[key];\n }\n}","import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { RootStore } from \"../store/root\";\n\nexport const AppProvider = observer(({ children }: { children?: React.ReactNode }) => {\n const rootStore = RootStore.init()\n return (\n <>\n {rootStore.providers.map((store) => {\n const Component: any = store.provider;\n return <Component rootStore={rootStore} key={store.sid} />;\n })}\n {children && children}\n </>\n )\n})","import DataLoader from \"dataloader\";\nimport { Dexie, type Table } from \"dexie\";\n\nexport class DexieStorage extends Dexie {\n kv: Table<{ key: string; value: { value: any; expiration: number } }>;\n\n constructor() {\n super(\"cache\");\n this.version(1).stores({\n kv: \"key, value\",\n });\n }\n}\nexport const dexie = new DexieStorage();\n\nexport class DexieCache {\n kv = dexie.kv;\n kv_get = new DataLoader(\n async (ids: string[]) => {\n const res = await this.kv.bulkGet(ids);\n return res.map((i) => i?.value);\n },\n { cache: false },\n );\n kv_set = new DataLoader(\n async (ids: { key: string; value: any; ttl: number }[]) => {\n const now = new Date();\n await this.kv.bulkPut(ids.map((i) => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })));\n return ids;\n },\n { cache: false },\n );\n options = {\n ttl: 60 * 1000,\n prefix: \"\",\n };\n\n async get(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data?.value;\n }\n\n async getRaw(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data;\n }\n\n async set(_key, value, options?: { ttl?: number }) {\n const key = this.options.prefix + _key;\n this.kv_set.load({ key, value, ttl: options?.ttl || this.options.ttl });\n\n return this;\n }\n\n async delete(key) {\n // return this.dataloader.load(['del', key]);\n return;\n }\n\n async clear() {}\n\n async wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>(key, fn: T, args?: { ttl?: number; alowStale?: boolean }): Promise<Awaited<U>> {\n let data = await this.kv_get.load(key);\n if (data?.expiration && new Date(data.expiration) <= new Date()) {\n // console.log(\"cache expired\", key)\n\n if (args?.alowStale) {\n fn()\n .then((value) => {\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n })\n .catch((err) => {\n console.error(err);\n });\n } else {\n //@ts-ignore\n data = null;\n }\n }\n if (!data) {\n // console.log(\"miss cache\", key)\n const value = await fn();\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n return value;\n }\n return data.value;\n }\n}\n\nexport const cache = new DexieCache();\n"]}
|
|
1
|
+
{"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberInputState.ts","../store/standard/StorageState.ts","../store/standard/ObjectPool.ts","../module/AppProvider.tsx"],"names":["makeAutoObservable","rootStore"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAA6B,kBAAkB;AAExC,IAAM,KAAN,MAAS;AAGhB;AAAA;AAHa,GAEJ,QAAQ,WAAW;AAarB,IAAM,cAAN,MAAkB;AAAA,EAEvB,OAAO,IAA4B,KAAuN;AACxP,QAAI;AACF,aAAO,OAAO,EAAE,MAAM,QAAQ,IAAI,SAAS,MAAM;AAC/C,YAAI;AAEJ,YAAI,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,GAAG;AAC7B,qBAAW,IAAI,IAAI,IAAI;AAEvB,mBAAS,UAAU,YAAY;AAC7B,kBAAM,QAAQ,OAAO,QAAQ,QAAQ,EAClC,OAAO,CAAC,MAAM;AACb,kBAAI,CAAC,KAAK,cAAc,SAAS,EAAE,CAAC,CAAC,CAAC;AAAG,uBAAO;AAChD,kBAAI,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAAG,uBAAO;AACpC,kBAAI,YAAY,SAAS,EAAE,CAAC,CAAC;AAAG,uBAAO;AACvC,qBAAO;AAAA,YACT,CAAC,EAAE,IAAI,OAAK;AACV,oBAAM,OAAO,SAAS,EAAE,CAAC,CAAC;AAC1B,qBAAO;AAAA,YACT,CAAC;AAEH,kBAAM,QAAQ,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAAA,UAC9C;AACA,cAAI,IAAI;AAEN,iBAAK,SAAS,EAAE,IAAI;AAAA,UACtB;AAAA,QACF,OAAO;AACL,qBAAW,KAAK,SAAS,EAAG;AAAA,QAC9B;AAGA,cAAM,SAAS,QAAQ;AACvB,eAAO;AAAA,MACT;AAAA,IACF,SAAS,GAAG;AACV,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAGA,OAAO,cAAc,QAAQ;AAC3B,YAAO,iCAAQ,UAAS;AAAA,EAC1B;AAAA;AAAA,EAIA,OAAO,KAAoE,EAAE,MAAM,aAAa,GAAmE;AACjK,QAAI;AACJ,UAAM,OAAO,MAAM;AACjB,cAAQ,UAAU;AAClB,UAAI,CAAC,QAAQ,OAAO;AAClB,gBAAQ,QAAQ,KAAK,EAClB,KAAK,CAAC,MAAM;AACX,kBAAQ,QAAQ;AAChB,kBAAQ,UAAU;AAClB,kBAAQ,QAAQ;AAChB,iBAAO;AAAA,QACT,CAAC,EACA,MAAM,CAAC,MAAM;AACZ,kBAAQ,MAAM,GAAG,IAAI;AACrB,kBAAQ,QAAQ;AAChB,kBAAQ,QAAQ;AAChB,kBAAQ,UAAU;AAClB,gBAAM;AAAA,QACR,CAAC;AAAA,MACL;AAGA,aAAO,QAAQ;AAAA,IACjB;AACA,UAAM,MAAM,YAAY;AACtB,UAAI,CAAC,QAAQ,OAAO;AAElB,eAAO,KAAK;AAAA,MACd;AACA,aAAO,QAAQ;AAAA,IACjB;AAEA,QAAI,CAAC,SAAS;AACZ,gBAAU,WAAW;AAAA,QACnB,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,IAAI,QAAQ;AACV,iBAAO,QAAQ,QAAQ;AAAA,QACzB;AAAA,QACA,IAAI,MAAM,KAAK;AACb,kBAAQ,QAAQ,IAAI;AAAA,QACtB;AAAA,QACA;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,SAAS;AACP,iBAAO,QAAQ;AAAA,QACjB;AAAA,QACA,WAAW;AACT,iBAAO,QAAQ;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AAEF;AA1Ga,YACJ,WAAW,WAAW,CAAC,CAAC;;;ACpBjC,OAAO,eAAe;AACtB,SAAS,sBAAAA,2BAA0B;AAE5B,IAAM,sBAAN,MAA0B;AAAA,EAM/B,YAAY,MAAoC;AALhD,iBAAQ,IAAI,UAAU,CAAC;AACvB,kBAAS;AACT,mBAAU;AACV,oBAAW;AAGT,WAAO,OAAO,MAAM,IAAI;AACxB,IAAAA,oBAAmB,IAAI;AAAA,EACzB;AAAA,EACA,IAAI,iBAA4B;AAC9B,WAAO,IAAI,UAAU,KAAK,KAAK,EAAE,UAAU,MAAM,KAAK,QAAQ;AAAA,EAChE;AAAA,EACA,SAAS,OAAY;AACnB,SAAK,QAAQ,IAAI,UAAU,KAAK;AAEhC,SAAK,SAAS,OAAO,OAAO,cAAc,KAAK,MAAM,QAAQ,GAAG,KAAK,UAAU,EAAE,QAAQ,SAAS,UAAU,GAAG,CAAC,EAAE;AAClH,SAAK,WAAW,KAAK;AAAA,EACvB;AAAA,EACA,UAAU,KAAU;AAClB,SAAK,SAAS;AAGd,SAAK,QAAQ,IAAI,UAAU,GAAG,EAAE,aAAa,MAAM,KAAK,QAAQ;AAAA,EAClE;AAAA,EACA,WAAW,KAAc;AACvB,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,YAAY,KAAa;AACvB,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,IAAI,SAAkB;AACpB,WAAO,KAAK,MAAM,OAAO,KAAK,KAAK,UAAU;AAAA,EAC/C;AACF;;;ACrCA,SAAS,sBAAAA,2BAA0B;AAE5B,IAAM,eAAN,MAAM,cAAgB;AAAA,EAI3B,YAAY,MAAgC;AAF5C,iBAAiB;AACjB,mBAAmB;AAEjB,WAAO,OAAO,MAAM,IAAI;AACxB,IAAAA,oBAAmB,IAAI;AACvB,SAAK,KAAK;AAAA,EACZ;AAAA,EAEA,OAAO,UAAU,KAAU;AACzB,QAAI;AACF,aAAO,KAAK,MAAM,GAAG;AAAA,IACvB,SAAS,OAAO;AACd,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,OAAO;AApBT;AAqBI,QAAI;AACF,YAAM,SAAQ,sCAAQ,iBAAR,mBAAsB,QAAQ,KAAK;AACjD,WAAK,QAAQ,cAAa,UAAU,KAAK;AACzC,UAAI,KAAK,SAAS,MAAM;AACtB,aAAK,QAAQ,KAAK;AAAA,MACpB;AACA,aAAO,KAAK;AAAA,IACd,SAAS,OAAO;AACd,cAAQ,MAAM,KAAK;AACnB,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,KAAK,OAAW;AACd,QAAI;AACF,UAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,aAAK,QAAQ;AAAA,MACf;AACA,uCAAQ,aAAa,QAAQ,KAAK,KAAK,KAAK,UAAU,KAAK;AAAA,IAC7D,SAAS,OAAO;AACd,cAAQ,MAAM,KAAK;AACnB,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,SAAS,OAAW;AAClB,SAAK,KAAK,KAAK;AAAA,EACjB;AAAA,EAEA,QAAQ;AACN,QAAI;AACF,mBAAa,WAAW,KAAK,GAAG;AAAA,IAClC,SAAS,OAAO;AACd,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACzDO,IAAM,cAAN,MAAM,YAAW;AAAA,EAGtB,OAAO,IAA0D,KAAa,MAAY;AACxF,QAAI,CAAC,YAAW,KAAK,GAAG,GAAG;AACzB,kBAAW,KAAK,GAAG,IAAI,KAAK;AAAA,IAC9B;AACA,WAAO,YAAW,KAAK,GAAG;AAAA,EAC5B;AACF;AATa,YACJ,OAA+B,CAAC;AADlC,IAAM,aAAN;;;ACAP,OAAO,WAAW;AAClB,SAAS,gBAAgB;AAGlB,IAAM,cAAc,SAAS,CAAC,EAAE,SAAS,MAAsC;AACpF,QAAMC,aAAY,UAAU,KAAK;AACjC,SACE,0DACGA,WAAU,UAAU,IAAI,CAAC,UAAU;AAClC,UAAM,YAAiB,MAAM;AAC7B,WAAO,oCAAC,aAAU,WAAWA,YAAW,KAAK,MAAM,KAAK;AAAA,EAC1D,CAAC,GACA,YAAY,QACf;AAEJ,CAAC","sourcesContent":["\n\nimport { makeAutoObservable, observable } from 'mobx';\n\nexport class KV {\n //@ts-ignore\n static datas = observable();\n}\n\nexport abstract class ContractBase {\n // chainId?: number;\n // address?: string;\n\n}\n\nexport type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T\n\nexport type PromiseHookData<T, U> = { value: Awaited<U>; get: T; call: T, loading: boolean }\n\nexport class PromiseHook {\n static entities = observable([]);\n static Get<T extends ContractBase>(cls: ContractClass<T>): (args: { args: Partial<T>; id?: string, select?: { [key in keyof Partial<T>]: boolean }, unselect?: { [key in keyof Partial<T>]: boolean } }) => Promise<T & { refresh: () => Promise<void> }> {\n try {\n return async ({ args, select, id, unselect }) => {\n let instance: any\n //@ts-ignore\n if (!id || !this.entities[id]) {\n instance = new cls(args);\n\n instance.refresh = async () => {\n const hooks = Object.entries(instance)\n .filter((i) => {\n if (!this.isPromiseHook(instance[i[0]])) return false\n if (select && !select[i[0]]) return false\n if (unselect && unselect[i[0]]) return false\n return true\n }).map(i => {\n const hook = instance[i[0]]\n return hook\n })\n\n await Promise.all(hooks.map((i) => i.call()));\n }\n if (id) {\n //@ts-ignore\n this.entities[id] = instance\n }\n } else {\n instance = this.entities[id!]\n }\n\n\n await instance.refresh()\n return instance;\n };\n } catch (e) {\n throw e\n }\n }\n\n\n static isPromiseHook(target) {\n return target?._type == \"promiseHook\"\n }\n\n\n //ttl : ms\n static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue }: { func: T; defaultValue?: Awaited<U>; }): PromiseHookData<T, U> {\n let context;\n const call = () => {\n context.loading = true;\n if (!context._call) {\n context._call = func()\n .then((i) => {\n context.value = i;\n context.loading = false;\n context._call = null\n return i\n })\n .catch((i) => {\n console.error(i, func);\n context.value = defaultValue\n context._call = null\n context.loading = false;\n throw i;\n });\n }\n\n\n return context._call\n };\n const get = async () => {\n if (!context.value) {\n\n return call();\n }\n return context.value;\n };\n\n if (!context) {\n context = observable({\n _type: 'promiseHook',\n _value: defaultValue,\n get value() {\n return context['_value'];\n },\n set value(val) {\n context['_value'] = val;\n },\n get,\n loading: false,\n call,\n defaultValue,\n toJSON() {\n return context.value\n },\n toString() {\n return context.value\n },\n });\n }\n\n return context;\n }\n\n}\n","import BigNumber from 'bignumber.js';\nimport { makeAutoObservable } from 'mobx';\nimport { helper } from '../../lib/helper';\nexport class BigNumberInputState {\n value = new BigNumber(0);\n format = '';\n loading = false;\n decimals = 18;\n formatter?: Function;\n constructor(args: Partial<BigNumberInputState>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n get noDecimasValue(): BigNumber {\n return new BigNumber(this.value).dividedBy(10 ** this.decimals);\n }\n setValue(value: any) {\n this.value = new BigNumber(value);\n // this.format = helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** this.decimals).toFixed());\n this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.setLoading(false);\n }\n setFormat(val: any) {\n this.format = val;\n // this.format = helper.number.toPrecisionFloor(this.format);\n // this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);\n }\n setLoading(val: boolean) {\n this.loading = val;\n }\n setDecimals(val: number) {\n this.decimals = val;\n }\n get isZero(): boolean {\n return this.value.isZero() && this.format == '';\n }\n}\n","import { makeAutoObservable } from 'mobx';\n\nexport class StorageState<T> {\n key: string;\n value: T | any = null;\n default: T | any = null;\n constructor(args: Partial<StorageState<T>>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n this.load();\n }\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n load() {\n try {\n const value = window?.localStorage?.getItem(this.key);\n this.value = StorageState.safeParse(value);\n if (this.value == null) {\n this.value = this.default;\n }\n return this.value;\n } catch (error) {\n console.error(error)\n return null\n }\n }\n\n save(value?: T) {\n try {\n if (value !== null || value !== undefined) {\n this.value = value;\n }\n window?.localStorage.setItem(this.key, JSON.stringify(value));\n } catch (error) {\n console.error(error)\n return null\n }\n }\n\n setValue(value?: T) {\n this.save(value);\n }\n\n clear() {\n try {\n localStorage.removeItem(this.key);\n } catch (error) {\n return null\n }\n }\n}\n","export class ObjectPool {\n static pool: { [key: string]: any } = {};\n\n static get<T extends (...args: any[]) => any, U = ReturnType<T>>(key: string, func: T): U {\n if (!ObjectPool.pool[key]) {\n ObjectPool.pool[key] = func();\n }\n return ObjectPool.pool[key];\n }\n}","import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { RootStore } from \"../store/root\";\n\nexport const AppProvider = observer(({ children }: { children?: React.ReactNode }) => {\n const rootStore = RootStore.init()\n return (\n <>\n {rootStore.providers.map((store) => {\n const Component: any = store.provider;\n return <Component rootStore={rootStore} key={store.sid} />;\n })}\n {children && children}\n </>\n )\n})"]}
|
package/dist/inspector.d.mts
CHANGED
package/dist/plugins.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { S as Store } from './root-
|
|
1
|
+
import { S as Store } from './root-ChXX09d6.js';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import * as react_hot_toast from 'react-hot-toast';
|
|
4
|
-
import { P as PromiseState } from './PromiseState-
|
|
4
|
+
import { P as PromiseState } from './PromiseState-CShJQq2E.js';
|
|
5
5
|
import 'typed-emitter';
|
|
6
6
|
import 'events';
|
|
7
7
|
|
package/dist/plugins.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { ToastPlugin } from './chunk-4YCP5CJ4.mjs';
|
|
2
|
-
import { useStore, rootStore } from './chunk-
|
|
3
|
-
import './chunk-
|
|
2
|
+
import { useStore, rootStore } from './chunk-UAX4462R.mjs';
|
|
3
|
+
import './chunk-MEVJ3CPW.mjs';
|
|
4
4
|
import { cn } from './chunk-AIZ7XDNV.mjs';
|
|
5
5
|
import { __spreadProps, __spreadValues } from './chunk-R4SQKVDQ.mjs';
|
|
6
6
|
import { makeAutoObservable } from 'mobx';
|
|
@@ -100,10 +100,6 @@ declare class RootStore<T extends EventMap = any> {
|
|
|
100
100
|
sid?: string;
|
|
101
101
|
args?: Partial<T>;
|
|
102
102
|
}): T;
|
|
103
|
-
static Local<T>(func: () => T, config?: {
|
|
104
|
-
sid?: string;
|
|
105
|
-
args?: Partial<T>;
|
|
106
|
-
}, ann?: any): T;
|
|
107
103
|
}
|
|
108
104
|
|
|
109
105
|
export { type BaseState as B, type EventMap as E, NumberState as N, RootStore as R, Store as S, ValueState as V, type StoreClass as a, StringState as b, BooleanState as c };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dappworks/kit",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.95",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.mts",
|
|
@@ -51,6 +51,10 @@
|
|
|
51
51
|
"./aiem": {
|
|
52
52
|
"import": "./dist/aiem.mjs",
|
|
53
53
|
"require": "./dist/aiem.js"
|
|
54
|
+
},
|
|
55
|
+
"./utils": {
|
|
56
|
+
"import": "./dist/utils.mjs",
|
|
57
|
+
"require": "./dist/utils.js"
|
|
54
58
|
}
|
|
55
59
|
},
|
|
56
60
|
"typesVersions": {
|
|
@@ -84,6 +88,9 @@
|
|
|
84
88
|
],
|
|
85
89
|
"aiem": [
|
|
86
90
|
"./dist/aiem.d.mts"
|
|
91
|
+
],
|
|
92
|
+
"utils": [
|
|
93
|
+
"./dist/utils.d.mts"
|
|
87
94
|
]
|
|
88
95
|
}
|
|
89
96
|
},
|
|
@@ -123,8 +130,8 @@
|
|
|
123
130
|
"react-dom": ">=18.2.0",
|
|
124
131
|
"react-draggable": ">=4.0.0",
|
|
125
132
|
"react-hot-toast": ">=2.0.0",
|
|
126
|
-
"typed-emitter": "
|
|
127
|
-
"viem": "
|
|
133
|
+
"typed-emitter": ">=2.0.0",
|
|
134
|
+
"viem": ">=2.16.5"
|
|
128
135
|
},
|
|
129
136
|
"author": "uuz",
|
|
130
137
|
"license": "ISC",
|
|
@@ -136,6 +143,7 @@
|
|
|
136
143
|
"registry": "https://registry.npmjs.org/"
|
|
137
144
|
},
|
|
138
145
|
"dependencies": {
|
|
139
|
-
"@internationalized/date": "^3.5.4"
|
|
146
|
+
"@internationalized/date": "^3.5.4",
|
|
147
|
+
"quick-lru": "^7.0.0"
|
|
140
148
|
}
|
|
141
149
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/helper.ts","../store/standard/BigNumberState.ts"],"names":["BigNumber"],"mappings":"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","sourcesContent":["import BN, { BigNumber } from \"bignumber.js\";\nimport JSONFormat from \"json-format\";\nimport { _ } from \"./lodash\";\nimport copy from \"copy-to-clipboard\";\nimport numeral from \"numeral\";\nimport { from } from \"@iotexproject/iotex-address-ts\";\nimport { BigNumberState } from \"../store/standard/BigNumberState\";\n\nconst valMap = {\n undefined: \"\",\n null: \"\",\n false: false,\n};\n\nexport const helper = {\n env: {\n isIopayMobile: () => navigator.userAgent && (navigator.userAgent.includes(\"IoPayAndroid\") || navigator.userAgent.includes(\"IoPayiOs\")),\n isBrowser: () => typeof window === \"object\",\n onBrowser(func) {\n if (this.isBrowser()) {\n func();\n }\n },\n },\n promise: {\n async sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n },\n async runAsync<T, U = Error>(promise: Promise<T>): Promise<[U | null, T | null]> {\n return promise.then<[null, T]>((data: T) => [null, data]).catch<[U, null]>((err) => [err, null]);\n },\n },\n object: {\n crawlObject(object, options) {\n const newObj = JSON.parse(JSON.stringify(object));\n return helper.object.crawl(newObj, options);\n },\n crawl(object, options) {\n Object.keys(object).forEach((i) => {\n if (typeof object[i] === \"object\") {\n helper.object.crawl(object[i], options);\n } else {\n const handler = options[typeof object[i]];\n if (handler) {\n object[i] = handler(object[i]);\n }\n }\n });\n return object;\n },\n },\n json: {\n isJsonString(str: string) {\n if (!str || typeof str !== \"string\") return false;\n if (!str?.includes(\"{\")) return false;\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n },\n safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n },\n },\n deepAssign(target, ...sources) {\n sources.forEach((source) => {\n Object.keys(source).forEach((key) => {\n let descriptor = Object.getOwnPropertyDescriptor(source, key);\n if (descriptor && descriptor?.get) {\n return Object.defineProperty(target, key, descriptor);\n }\n const targetValue = target[key];\n let sourceValue = source[key];\n if (helper.isObject(targetValue) && helper.isObject(sourceValue)) {\n try {\n target[key] = helper.deepAssign(targetValue, sourceValue);\n } catch (e) {\n target[key] = Object.assign(targetValue, sourceValue);\n }\n } else {\n target[key] = sourceValue;\n }\n });\n });\n return target;\n },\n isObject(value) {\n return value != null && typeof value === \"object\";\n },\n deepMerge(obj, newObj) {\n const newVal = _.mergeWith(obj, newObj, (...args) => {\n const [objValue, srcValue] = args;\n if (typeof srcValue === \"object\") {\n return helper.deepMerge(objValue, srcValue);\n }\n return srcValue || valMap[srcValue];\n });\n return newVal;\n },\n img: {\n parse(src: string | undefined) {\n if (!src) return \"/img-404.svg\";\n if (src?.startsWith(\"ipfs\")) {\n return \"https://ipfs.io/ipfs/\" + src.split(\"://\")[1];\n }\n return src;\n },\n },\n string: {\n copy(str: string) {\n copy(str);\n },\n fristUpper(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n firstUpperCase(str: string) {\n return str.replace(/^\\S/, (s) => s.toUpperCase());\n },\n toFixString(str, length) {\n if (str && str.length > length) {\n return str.substr(0, length) + \"...\";\n } else {\n return str;\n }\n },\n truncate(fullStr = \"\", strLen, separator) {\n if (fullStr.length <= strLen) return fullStr;\n\n separator = separator || \"...\";\n\n var sepLen = separator.length,\n charsToShow = strLen - sepLen,\n frontChars = Math.ceil(charsToShow / 2),\n backChars = Math.floor(charsToShow / 2);\n\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n },\n validAbi(abi: string): { abi: any[]; address: string } {\n try {\n JSON.parse(abi);\n const _abi = helper.json.safeParse(abi);\n if (!_abi) {\n return { abi: [], address: \"\" };\n }\n if (Array.isArray(_abi)) {\n return { abi: _abi, address: \"\" };\n } else if (_abi.abi && _abi.address) {\n return { abi: _abi.abi, address: _abi.address };\n } else if (_abi.abi && !_abi.addresses) {\n return { abi: _abi.abi, address: \"\" };\n }\n return { abi: [], address: \"\" };\n } catch (error) {\n return { abi: [], address: \"\" };\n }\n },\n random(count: number) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let result = \"\";\n for (let i = 0; i < count; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n },\n },\n download: {\n downloadByBlob(name: string, blob: Blob) {\n const a = document.createElement(\"a\");\n const href = window.URL.createObjectURL(blob);\n a.href = href;\n a.download = name;\n a.click();\n },\n downloadJSON(name: string, jsonObj: object) {\n try {\n const jsonStr: string = JSONFormat(jsonObj);\n const blob = new Blob([jsonStr], { type: \"application/json\" });\n this.downloadByBlob(name + \".json\", blob);\n } catch (error) {\n console.error(error);\n }\n },\n },\n number: {\n countNonZeroNumbers: (str: string) => {\n let index = 0;\n const length = str.length;\n for (; index < length && (str[index] === \"0\" || str[index] === \".\"); index += 1);\n return length - index - Number(str.includes(\".\"));\n },\n numberWithCommas(num: number) {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n getBN: (value: number | string | BN) => {\n return value instanceof BN ? value : typeof value === \"string\" ? new BN(Number(value)) : new BN(value);\n },\n toPrecisionFloor: (str: number | string, options?: { decimals?: number; format?: string; toLocalString?: boolean }) => {\n const { decimals = 6, format = \"\", toLocalString = false } = options || {};\n if (!str || isNaN(Number(str))) return \"\";\n\n if (helper.number.countNonZeroNumbers(String(str)) <= decimals) return String(str);\n const numStr = new BN(str).toFixed();\n let result = \"\";\n let index = 0;\n const numLength = numStr.length;\n\n for (; numStr[index] === \"0\" && index < numLength; index += 1);\n\n if (index === numLength) return \"0\";\n\n if (numStr[index] === \".\") {\n // number < 0\n result = \"0\";\n for (; (numStr[index] === \"0\" || numStr[index] === \".\") && index < numLength; index += 1) {\n result = result + numStr[index];\n }\n }\n let resultNumLength = 0;\n for (; index < numLength && (resultNumLength < decimals || !result.includes(\".\")); index += 1) {\n result = result + numStr[index];\n\n if (numStr[index] !== \".\") resultNumLength += 1;\n }\n if (format) {\n return numeral(Number(result)).format(format);\n }\n\n if (toLocalString) {\n return helper.number.numberWithCommas(Number(new BN(result).toFixed()));\n }\n\n return new BN(result).toFixed();\n },\n\n //format: '0,0'\n warpBigNumber(value: string, decimals = 18, options?: { format?: string; fallback?: string; min?: number }) {\n const { format = \"0.0\", fallback = \"0.000\", min } = options || {};\n if (!value) {\n return {\n value: \"...\",\n format: \"...\",\n decimals: \"0\",\n isZero: true,\n };\n }\n const BigNumberResponse = new BigNumberState({ value: new BigNumber(value), decimals });\n return {\n value: BigNumberResponse.value.toFixed(0),\n originFormat: BigNumberResponse.value.div(10 ** decimals).toFixed(),\n format: helper.number.numberFormat(BigNumberResponse.value.div(10 ** decimals).toFixed(), format, { fallback, min }),\n decimals: String(BigNumberResponse.decimals),\n isZero: BigNumberResponse.value.isZero(),\n };\n },\n //http://numeraljs.com/ format params does not need to deal with decimal places\n //format: '$0,0' '0a' '0,0' '0,0$'\n numberFormat(str: string | number, format: string = \"0,0\", options: { min?: number; fallback?: string } = {}): string {\n const { fallback = \"0.00\" } = options || {};\n\n if (!str || isNaN(Number(str))) return fallback;\n const numStr = new BigNumber(str).toFixed();\n const countNonZeroNumbers = (_str: string) => {\n const decimalPointIndex = _str.indexOf(\".\");\n if (decimalPointIndex === -1) {\n return 0;\n }\n const decimalPart = _str.substring(decimalPointIndex + 1);\n let trailingZerosCount = 0;\n for (let i = 0; i < decimalPart.length; i++) {\n if (decimalPart[i] === \"0\") {\n trailingZerosCount++;\n } else {\n break;\n }\n }\n return trailingZerosCount;\n };\n\n const fractionDigits = countNonZeroNumbers(format);\n const numberFractionDigits = countNonZeroNumbers(numStr);\n if (options?.min) {\n if (new BigNumber(numStr).isLessThan(new BigNumber(options?.min || 0))) {\n return `< ${numeral(options?.min).format(format)}`;\n }\n }\n const fullStr = new BigNumber(numStr).toFixed();\n let preStr = numeral(fullStr.split(\".\")[0]).format(format.split(\".\")[0]);\n const fractionStr = fullStr.split(\".\")?.[1]?.slice(0, fractionDigits + numberFractionDigits);\n\n if (numberFractionDigits >= fractionDigits) {\n return (preStr + \".\" + fractionStr).replace(/\\.?0+$/, \"\");\n }\n\n if (fractionStr?.[fractionDigits - 1] == \"9\") {\n return (preStr + \".\" + fractionStr.slice(0, fractionDigits - 1) + \"9\").replace(/\\.?0+$/, \"\");\n }\n\n const resultStr = numeral(new BigNumber(numStr).toString()).format(format);\n return resultStr.replace(/\\.?0+$/, \"\");\n },\n },\n address: {\n convertAddress: (addressMode: \"io\" | \"0x\", address: string = \"\"): string => {\n try {\n if (addressMode == \"0x\" && helper.address.validateIoAddress(address)) {\n return from(address).stringEth();\n }\n if (addressMode == \"io\" && helper.address.validateEthAddress(address)) {\n return from(address).string();\n }\n } catch (error) {}\n return address;\n },\n validateEthAddress: (address: string) => /^0x[a-fA-F0-9]{40}$/.test(address),\n validateIoAddress: (address: string) => /^io[a-zA-Z0-9]{39}$/.test(address),\n validateAddress: (address: string) => helper.address.validateEthAddress(address) || helper.address.validateIoAddress(address),\n },\n};\n","import BigNumber from \"bignumber.js\";\nimport { makeAutoObservable } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\n\nexport class BigNumberState {\n value = new BigNumber(0);\n loading = false;\n decimals = 18;\n fixed = 6;\n formatter?: Function;\n constructor(args: Partial<BigNumberState>) {\n Object.assign(this, args);\n makeAutoObservable(this, {\n getFormat: false,\n });\n }\n get format() {\n if (this.loading) return \"...\";\n return this.getFormat();\n }\n\n getFormat({ decimals = this.decimals, fixed = this.fixed }: { decimals?: number; fixed?: number } = {}) {\n if (this.loading) return \"...\";\n if (this.formatter) return this.formatter(this);\n return helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** decimals).toFixed(), {\n decimals: fixed,\n });\n }\n\n setDecimals(decimals: number) {\n this.decimals = decimals;\n }\n\n setValue(value: BigNumber) {\n this.value = value;\n this.setLoading(false);\n }\n\n setLoading(val) {\n this.loading = val;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../store/root.ts"],"names":[],"mappings":";AAAA,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB,sBAAsB;AAGnD,SAAS,0BAA0B;AAO5B,IAAM,YAAN,cAAwB,aAAa;AAAA,EAG1C,KAAK,SAAc,MAAa;AAC9B,QAAI,QAAQ,IAAI,YAAY,eAAe;AACzC,YAAM,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC;AAAA,IAChC;AAKA,WAAO,MAAM,KAAK,MAAM,GAAG,IAAI,KAAK,MAAM,KAAK,IAAI,GAAG,IAAI;AAAA,EAC5D;AAAA,EACA,cAAc;AACZ,UAAM;AACN,mBAAe,MAAM;AAAA;AAAA,IAErB,CAAC;AAAA,EACH;AACF;AAEO,IAAM,YAAN,MAAM,WAAoC;AAAA,EAqG/C,YAAY,OAA8B,CAAC,GAAG;AApG9C,uBAAc,oBAAI,IAAkC;AACpD,oBAAkC,CAAC;AAEnC,qBAAqB,CAAC;AAEtB,kBAA0B,IAAI,UAAU;AACxC,oBAAW;AA+FT,WAAO,OAAO,MAAM,IAAI;AACxB,mBAAe,MAAM;AAAA,MACnB,WAAW;AAAA,IACb,CAAC;AACD,SAAK,WAAW,IAAI;AAAA,EACtB;AAAA,EAlGA,OAAO,KAAyB,OAA8B,CAAC,GAAiB;AAC9E,QAAI,CAAC,WAAW,OAAO;AAErB,iBAAW,QAAQ,IAAI,WAAU,IAAI;AAAA,IACvC;AAEA,WAAO,WAAW;AAAA,EACpB;AAAA,EAEA,IAAI,OAAc,EAAE,IAAI,IAAsB,CAAC,GAAG;AAChD,QAAI,MAAM,UAAU;AAClB;AAAA,IACF;AAEA,UAAM,gBAAgB,MAAM,MAAM;AAClC,UAAM,aAAa,MAAM,MAAM,MAAM;AAErC,QAAI,CAAC,KAAK,IAAI,MAAM,WAAW,GAAG;AAChC,WAAK,YAAY,IAAI,MAAM,aAAa,oBAAI,IAAI,CAAC;AAAA,IACnD;AAEA,QAAI,KAAK,YAAY,IAAI,MAAM,WAAW,EAAE,IAAI,aAAa,GAAG;AAC9D,cAAQ,MAAM,SAAS,MAAM,GAAG,iBAAiB;AACjD;AACA,YAAM,IAAI,MAAM,SAAS,MAAM,GAAG,iBAAiB;AAAA,IACrD;AACA,QAAI,MAAM,gBAAgB;AACxB,yBAAmB,KAAK;AAAA,IAC1B;AACA,QAAI,MAAM,UAAU;AAClB,WAAK,UAAU,KAAK,KAAK;AAAA,IAC3B;AACA,QAAI,MAAM,YAAY;AACpB,WAAK,OAAO,GAAG,OAAO,CAAC,MAAa;AAClC,cAAM,WAAW,EAAE,WAAW,MAAM,OAAO,EAAE,CAAC;AAAA,MAChD,CAAC;AAAA,IACH;AAEA,QAAI,MAAM,SAAS;AACjB,YAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,IACnC;AACA,QAAI,MAAM,QAAQ;AAChB,WAAK,UAAU,MAAM,MAAM;AAAA,IAC7B;AAEA,QAAI,MAAM,QAAQ;AAChB,aAAO,QAAQ,MAAM,MAAM,EAAE,QAAQ,CAAC,CAAC,OAAO,GAAG,MAAM;AACrD,aAAK,OAAO,GAAG,IAAI,MAAa,IAAI,OAAO;AAAA,MAC7C,CAAC;AAAA,IACH;AAcA,SAAK,YAAY,IAAI,MAAM,WAAW,EAAE,IAAI,eAAe,KAAK;AAChE,SAAK,SAAS,UAAU,IAAI;AAE5B,SAAK,OAAO,KAAK,OAAO,KAAK;AAE7B,QAAI,MAAM,MAAM;AACd,YAAM,KAAK;AAAA,IACb;AAAA,EAEF;AAAA,EAEA,UAAU,OAAgB;AACxB,UAAM,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC;AAChC,WAAO;AAAA,EACT;AAAA,EAEA,IAAqB,OAAsB,SAA8C,CAAC,GAAM;AAC9F,UAAM,gBAAgB,OAAO,MAAM,OAAO,MAAM;AAChD,UAAM,QAAQ,KAAK,YAAY,IAAI,KAAK,KAAK,KAAK,YAAY,IAAI,KAAK,EAAE,IAAI,aAAa;AAC1F,QAAI,CAAC,OAAO;AACV,WAAK,IAAI,IAAI,MAAM,OAAO,QAAQ,CAAC,CAAC,GAAG,MAAM;AAAA,IAC/C;AACA,WAAO,KAAK,YAAY,IAAI,KAAK,EAAE,IAAI,aAAa;AAAA,EACtD;AAAA,EAEO,IAAI,OAA0B;AACnC,WAAO,KAAK,YAAY,IAAI,KAAK;AAAA,EACnC;AAAA,EAUA,WAAW,KAAa;AACtB,WAAO,OAAO,GAAG,EAAE,QAAQ,CAAC,UAAU;AACpC,UAAI,+BAAO,KAAK;AACd,aAAK,IAAI,KAAK;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,IAAqB,OAAsB,SAA8C,CAAC,GAAM;AACrG,WAAO,KAAK,KAAK,EAAE,IAAI,OAAO,MAAM;AAAA,EACtC;AAAA,EAEA,OAAO,MAAS,MAAe,SAA8C,CAAC,GAAG,KAAc;AAC7F,UAAM,MAAM,mBAAmB,MAAM,GAAG;AACxC,eAAU,KAAK,EAAE,SAAS,WAAW,OAAO,GAAG,IAAI;AACnD,WAAO;AAAA,EACT;AACF","sourcesContent":["import { EventEmitter } from \"events\";\nimport { makeAutoObservable, makeObservable } from \"mobx\";\nimport type TypedEmitter from \"typed-emitter\";\nimport { type Store, type StoreClass } from \"./standard/base\";\nimport { useLocalObservable } from \"mobx-react-lite\";\n\nexport type EventMap = {\n \"*\": (args: any) => void;\n add: (store: Store) => void;\n};\n\nexport class MyEmitter extends EventEmitter {\n // metas: Record<string, { count: number }> = {};\n _events: Record<string, any>;\n emit(type: any, ...args: any[]) {\n if (process.env.NODE_ENV == \"development\") {\n super.emit(\"*\", { type, args });\n }\n // if (!this.metas[type]) {\n // this.metas[type] = { count: 0 };\n // }\n // this.metas[type].count++;\n return super.emit(type, ...args) || super.emit(\"\", ...args);\n }\n constructor() {\n super();\n makeObservable(this, {\n // metas: true,\n });\n }\n}\n\nexport class RootStore<T extends EventMap = any> {\n instanceMap = new Map<Function, Map<string, Store>>();\n instance: Record<string, Store> = {};\n\n providers: Store[] = [];\n\n events: TypedEmitter<T> = new MyEmitter() as TypedEmitter<T>;\n isInited = false;\n\n static init<T extends EventMap>(args: Partial<RootStore<T>> = {}): RootStore<T> {\n if (!globalThis.store) {\n //@ts-ignore\n globalThis.store = new RootStore(args);\n }\n\n return globalThis.store;\n }\n\n add(store: Store, { sid }: { sid?: string } = {}) {\n if (store.disabled) {\n return;\n }\n\n const instanceMapId = sid ? sid : \"singleton\";\n const instanceId = sid ? sid : store.sid;\n\n if (!this.has(store.constructor)) {\n this.instanceMap.set(store.constructor, new Map());\n }\n\n if (this.instanceMap.get(store.constructor).get(instanceMapId)) {\n console.error(`Store ${store.sid} already exists`);\n return;\n throw new Error(`Store ${store.sid} already exists`);\n }\n if (store.autoObservable) {\n makeAutoObservable(store);\n }\n if (store.provider) {\n this.providers.push(store);\n }\n if (store.onNewStore) {\n this.events.on(\"add\", (e: Store) => {\n store.onNewStore({ rootStore: this, store: e });\n });\n }\n\n if (store.onAdded) {\n store.onAdded({ rootStore: this });\n }\n if (store.stores) {\n this.addStores(store.stores);\n }\n\n if (store.events) {\n Object.entries(store.events).forEach(([event, val]) => {\n this.events.on(val.name as any, val.handler);\n });\n }\n\n // if (helper.env.isBrowser && store.onKeyBindings) {\n // const res = store.onKeyBindings()\n // res.forEach(({ key, fn }: { key: string[], fn: (ev: KeyboardEvent) => void }) => {\n // useEffect(() => {\n // window.addEventListener(\"keydown\", fn);\n // return () => {\n // window.removeEventListener(\"keydown\", fn);\n // }\n // }, [])\n // })\n // }\n\n this.instanceMap.get(store.constructor).set(instanceMapId, store);\n this.instance[instanceId] = store;\n //@ts-ignore\n this.events.emit(\"add\", store);\n\n if (store.init) {\n store.init();\n }\n // this.crawlStore(store);\n }\n\n addStores(store: Store[]) {\n store.forEach((i) => this.add(i));\n return this;\n }\n\n get<T extends Store>(store: StoreClass<T>, config: { sid?: string; args?: Partial<T> } = {}): T {\n const instanceMapId = config.sid ? config.sid : \"singleton\";\n const valid = this.instanceMap.has(store) && this.instanceMap.get(store).has(instanceMapId);\n if (!valid) {\n this.add(new store(config.args || {}), config);\n }\n return this.instanceMap.get(store).get(instanceMapId) as T;\n }\n\n public has(store: Function): boolean {\n return this.instanceMap.has(store);\n }\n\n constructor(args: Partial<RootStore<T>> = {}) {\n Object.assign(this, args);\n makeObservable(this, {\n providers: true,\n });\n this.crawlStore(this);\n }\n\n crawlStore(obj: Object) {\n Object.values(obj).forEach((value) => {\n if (value?.sid) {\n this.add(value);\n }\n });\n }\n\n static Get<T extends Store>(store: StoreClass<T>, config: { sid?: string; args?: Partial<T> } = {}): T {\n return this.init().get(store, config);\n }\n\n static Local<T>(func: () => T, config: { sid?: string; args?: Partial<T> } = {}, ann?: any): T {\n const val = useLocalObservable(func, ann);\n RootStore.init().instance[\"Local.\" + config.sid] = val;\n return val;\n }\n}\n"]}
|
|
File without changes
|
|
File without changes
|