@dappworks/kit 0.4.117 → 0.4.119

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.
@@ -4,46 +4,7 @@ import JSONFormat from 'json-format';
4
4
  import copy from 'copy-to-clipboard';
5
5
  import numeral from 'numeral';
6
6
  import { from } from '@iotexproject/iotex-address-ts';
7
- import { makeAutoObservable } from 'mobx';
8
7
 
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
-
46
- // lib/helper.ts
47
8
  var valMap = {
48
9
  undefined: "",
49
10
  null: "",
@@ -277,11 +238,12 @@ var helper = {
277
238
  return {
278
239
  value: "...",
279
240
  format: "...",
241
+ originFormat: "...",
280
242
  decimals: "0",
281
243
  isZero: true
282
244
  };
283
245
  }
284
- const BigNumberResponse = new BigNumberState({ value: new BigNumber(value), decimals });
246
+ const BigNumberResponse = { value: new BigNumber(value), decimals };
285
247
  return {
286
248
  value: BigNumberResponse.value.toFixed(0),
287
249
  originFormat: BigNumberResponse.value.div(10 ** decimals).toFixed(),
@@ -353,6 +315,6 @@ var helper = {
353
315
  }
354
316
  };
355
317
 
356
- export { BigNumberState, helper };
318
+ export { helper };
357
319
  //# sourceMappingURL=out.js.map
358
- //# sourceMappingURL=chunk-EWPP7VNZ.mjs.map
320
+ //# sourceMappingURL=chunk-Q3AD5RHQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../lib/helper.ts"],"names":[],"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\";\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 originFormat: \"...\",\n decimals: \"0\",\n isZero: true,\n };\n }\n const BigNumberResponse = { 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"]}
package/dist/dev.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { helper } from './chunk-EWPP7VNZ.mjs';
1
+ import { helper } from './chunk-Q3AD5RHQ.mjs';
2
2
  import { _ } from './chunk-MGU3KYGC.mjs';
3
3
  import { cn } from './chunk-AIZ7XDNV.mjs';
4
4
  import { __objRest, __spreadProps, __spreadValues } from './chunk-R4SQKVDQ.mjs';
package/dist/form.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { useStore } from './chunk-WS43BV7Y.mjs';
2
2
  import { RootStore } from './chunk-XJMRAPHI.mjs';
3
- import { helper } from './chunk-EWPP7VNZ.mjs';
3
+ import { helper } from './chunk-Q3AD5RHQ.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.mjs CHANGED
@@ -3,13 +3,12 @@ import './chunk-4YCP5CJ4.mjs';
3
3
  export { rootStore, useStore } from './chunk-WS43BV7Y.mjs';
4
4
  import { RootStore } from './chunk-XJMRAPHI.mjs';
5
5
  export { RootStore } from './chunk-XJMRAPHI.mjs';
6
- import { helper } from './chunk-EWPP7VNZ.mjs';
7
- export { BigNumberState } from './chunk-EWPP7VNZ.mjs';
6
+ import { helper } from './chunk-Q3AD5RHQ.mjs';
8
7
  export { PaginationState } from './chunk-ONVPCAMQ.mjs';
9
8
  import './chunk-MGU3KYGC.mjs';
10
9
  import './chunk-R4SQKVDQ.mjs';
11
10
  import { observable, makeAutoObservable } from 'mobx';
12
- import BigNumber from 'bignumber.js';
11
+ import BigNumber2 from 'bignumber.js';
13
12
  import React from 'react';
14
13
  import { observer } from 'mobx-react-lite';
15
14
 
@@ -109,9 +108,45 @@ var PromiseHook = class {
109
108
  }
110
109
  };
111
110
  PromiseHook.entities = observable([]);
111
+ var BigNumberState = class {
112
+ constructor(args) {
113
+ this.value = new BigNumber2(0);
114
+ this.loading = false;
115
+ this.decimals = 18;
116
+ this.fixed = 6;
117
+ Object.assign(this, args);
118
+ makeAutoObservable(this, {
119
+ getFormat: false
120
+ });
121
+ }
122
+ get format() {
123
+ if (this.loading)
124
+ return "...";
125
+ return this.getFormat();
126
+ }
127
+ getFormat({ decimals = this.decimals, fixed = this.fixed } = {}) {
128
+ if (this.loading)
129
+ return "...";
130
+ if (this.formatter)
131
+ return this.formatter(this);
132
+ return helper.number.toPrecisionFloor(new BigNumber2(this.value).dividedBy(10 ** decimals).toFixed(), {
133
+ decimals: fixed
134
+ });
135
+ }
136
+ setDecimals(decimals) {
137
+ this.decimals = decimals;
138
+ }
139
+ setValue(value) {
140
+ this.value = value;
141
+ this.setLoading(false);
142
+ }
143
+ setLoading(val) {
144
+ this.loading = val;
145
+ }
146
+ };
112
147
  var BigNumberInputState = class {
113
148
  constructor(args) {
114
- this.value = new BigNumber(0);
149
+ this.value = new BigNumber2(0);
115
150
  this.format = "";
116
151
  this.loading = false;
117
152
  this.decimals = 18;
@@ -119,16 +154,16 @@ var BigNumberInputState = class {
119
154
  makeAutoObservable(this);
120
155
  }
121
156
  get noDecimasValue() {
122
- return new BigNumber(this.value).dividedBy(10 ** this.decimals);
157
+ return new BigNumber2(this.value).dividedBy(10 ** this.decimals);
123
158
  }
124
159
  setValue(value) {
125
- this.value = new BigNumber(value);
160
+ this.value = new BigNumber2(value);
126
161
  this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: "0.000", fallback: "" }).format;
127
162
  this.setLoading(false);
128
163
  }
129
164
  setFormat(val) {
130
165
  this.format = val;
131
- this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);
166
+ this.value = new BigNumber2(val).multipliedBy(10 ** this.decimals);
132
167
  }
133
168
  setLoading(val) {
134
169
  this.loading = val;
@@ -211,6 +246,6 @@ var AppProvider = observer(({ children }) => {
211
246
  }), children && children);
212
247
  });
213
248
 
214
- export { AppProvider, BigNumberInputState, ObjectPool, PromiseHook, StorageState };
249
+ export { AppProvider, BigNumberInputState, BigNumberState, ObjectPool, PromiseHook, StorageState };
215
250
  //# sourceMappingURL=out.js.map
216
251
  //# sourceMappingURL=index.mjs.map
@@ -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"],"names":["makeAutoObservable","rootStore"],"mappings":"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","sourcesContent":["\n\nimport { 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; func: T, loading: boolean, errorRetry: number };\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 //@ts-ignore\n if (i[1].lazy) 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, lazy }: { func: T; defaultValue?: Awaited<U>; lazy?: boolean }): PromiseHookData<T, U> {\n let context;\n const call = (args) => {\n context.loading = true;\n if (!context._call) {\n context._call = func(args)\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 (args: any) => {\n if (!context.value) {\n\n return call(args);\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 lazy,\n\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})"]}
1
+ {"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberState.ts","../store/standard/BigNumberInputState.ts","../store/standard/StorageState.ts","../store/standard/ObjectPool.ts","../module/AppProvider.tsx"],"names":["BigNumber","makeAutoObservable","rootStore"],"mappings":"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","sourcesContent":["\n\nimport { 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; func: T, loading: boolean, errorRetry: number };\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 //@ts-ignore\n if (i[1].lazy) 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, lazy }: { func: T; defaultValue?: Awaited<U>; lazy?: boolean }): PromiseHookData<T, U> {\n let context;\n const call = (args) => {\n context.loading = true;\n if (!context._call) {\n context._call = func(args)\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 (args: any) => {\n if (!context.value) {\n\n return call(args);\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 lazy,\n\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\";\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 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/utils.d.mts CHANGED
@@ -107,13 +107,7 @@ declare const helper: {
107
107
  }): {
108
108
  value: string;
109
109
  format: string;
110
- decimals: string;
111
- isZero: boolean;
112
- originFormat?: undefined;
113
- } | {
114
- value: string;
115
110
  originFormat: string;
116
- format: string;
117
111
  decimals: string;
118
112
  isZero: boolean;
119
113
  };
package/dist/utils.mjs CHANGED
@@ -1,94 +1,6 @@
1
- export { helper } from './chunk-EWPP7VNZ.mjs';
1
+ export { cache } from './chunk-7MDKCI65.mjs';
2
+ export { helper } from './chunk-Q3AD5RHQ.mjs';
2
3
  import './chunk-MGU3KYGC.mjs';
3
4
  import './chunk-R4SQKVDQ.mjs';
4
- import DataLoader from 'dataloader';
5
- import { Dexie } from 'dexie';
6
-
7
- var DexieStorage = class extends Dexie {
8
- constructor() {
9
- super("cache");
10
- this.version(1).stores({
11
- kv: "key, value"
12
- });
13
- }
14
- };
15
- var dexie = new DexieStorage();
16
- var DexieCache = class {
17
- constructor() {
18
- this.kv = dexie.kv;
19
- this.kv_get = new DataLoader(
20
- async (ids) => {
21
- const res = await this.kv.bulkGet(ids);
22
- return res.map((i) => i == null ? void 0 : i.value);
23
- },
24
- { cache: false }
25
- );
26
- this.kv_set = new DataLoader(
27
- async (ids) => {
28
- const now = /* @__PURE__ */ new Date();
29
- await this.kv.bulkPut(ids.map((i) => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })));
30
- return ids;
31
- },
32
- { cache: false }
33
- );
34
- this.options = {
35
- ttl: 60 * 1e3,
36
- prefix: ""
37
- };
38
- }
39
- async get(_key) {
40
- const key = this.options.prefix + _key;
41
- console.time("get " + key);
42
- const res = await this.kv_get.load(key);
43
- console.timeEnd("get " + key);
44
- const data = res == null ? void 0 : res.value;
45
- if (!data)
46
- return;
47
- return data == null ? void 0 : data.value;
48
- }
49
- async getRaw(_key) {
50
- const key = this.options.prefix + _key;
51
- console.time("get " + key);
52
- const res = await this.kv_get.load(key);
53
- console.timeEnd("get " + key);
54
- const data = res == null ? void 0 : res.value;
55
- if (!data)
56
- return;
57
- return data;
58
- }
59
- async set(_key, value, options) {
60
- const key = this.options.prefix + _key;
61
- this.kv_set.load({ key, value, ttl: (options == null ? void 0 : options.ttl) || this.options.ttl });
62
- return this;
63
- }
64
- async delete(key) {
65
- return;
66
- }
67
- async clear() {
68
- }
69
- async wrap(key, fn, args) {
70
- let data = await this.kv_get.load(key);
71
- if ((data == null ? void 0 : data.expiration) && new Date(data.expiration) <= /* @__PURE__ */ new Date()) {
72
- if (args == null ? void 0 : args.alowStale) {
73
- fn().then((value) => {
74
- this.kv_set.load({ key, value, ttl: (args == null ? void 0 : args.ttl) || this.options.ttl });
75
- }).catch((err) => {
76
- console.error(err);
77
- });
78
- } else {
79
- data = null;
80
- }
81
- }
82
- if (!data) {
83
- const value = await fn();
84
- this.kv_set.load({ key, value, ttl: (args == null ? void 0 : args.ttl) || this.options.ttl });
85
- return value;
86
- }
87
- return data.value;
88
- }
89
- };
90
- var cache = new DexieCache();
91
-
92
- export { cache };
93
5
  //# sourceMappingURL=out.js.map
94
6
  //# sourceMappingURL=utils.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../lib/dexie.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,gBAAgB;AACvB,SAAS,aAAyB;AAE3B,IAAM,eAAN,cAA2B,MAAM;AAAA,EAGtC,cAAc;AACZ,UAAM,OAAO;AACb,SAAK,QAAQ,CAAC,EAAE,OAAO;AAAA,MACrB,IAAI;AAAA,IACN,CAAC;AAAA,EACH;AACF;AACO,IAAM,QAAQ,IAAI,aAAa;AAE/B,IAAM,aAAN,MAAiB;AAAA,EAAjB;AACL,cAAK,MAAM;AACX,kBAAS,IAAI;AAAA,MACX,OAAO,QAAkB;AACvB,cAAM,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG;AACrC,eAAO,IAAI,IAAI,CAAC,MAAM,uBAAG,KAAK;AAAA,MAChC;AAAA,MACA,EAAE,OAAO,MAAM;AAAA,IACjB;AACA,kBAAS,IAAI;AAAA,MACX,OAAO,QAAoD;AACzD,cAAM,MAAM,oBAAI,KAAK;AACrB,cAAM,KAAK,GAAG,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,OAAO,EAAE,OAAO,EAAE,OAAO,YAAY,IAAI,QAAQ,IAAI,QAAQ,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;AACjI,eAAO;AAAA,MACT;AAAA,MACA,EAAE,OAAO,MAAM;AAAA,IACjB;AACA,mBAAU;AAAA,MACR,KAAK,KAAK;AAAA,MACV,QAAQ;AAAA,IACV;AAAA;AAAA,EAEA,MAAM,IAAI,MAAM;AACd,UAAM,MAAM,KAAK,QAAQ,SAAS;AAClC,YAAQ,KAAK,SAAS,GAAG;AACzB,UAAM,MAAM,MAAM,KAAK,OAAO,KAAK,GAAG;AACtC,YAAQ,QAAQ,SAAS,GAAG;AAC5B,UAAM,OAAO,2BAAK;AAClB,QAAI,CAAC;AAAM;AACX,WAAO,6BAAM;AAAA,EACf;AAAA,EAEA,MAAM,OAAO,MAAM;AACjB,UAAM,MAAM,KAAK,QAAQ,SAAS;AAClC,YAAQ,KAAK,SAAS,GAAG;AACzB,UAAM,MAAM,MAAM,KAAK,OAAO,KAAK,GAAG;AACtC,YAAQ,QAAQ,SAAS,GAAG;AAC5B,UAAM,OAAO,2BAAK;AAClB,QAAI,CAAC;AAAM;AACX,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,MAAM,OAAO,SAA4B;AACjD,UAAM,MAAM,KAAK,QAAQ,SAAS;AAClC,SAAK,OAAO,KAAK,EAAE,KAAK,OAAO,MAAK,mCAAS,QAAO,KAAK,QAAQ,IAAI,CAAC;AAEtE,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,KAAK;AAEhB;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ;AAAA,EAAC;AAAA,EAEf,MAAM,KAAoE,KAAK,IAAO,MAAmE;AACvJ,QAAI,OAAO,MAAM,KAAK,OAAO,KAAK,GAAG;AACrC,SAAI,6BAAM,eAAc,IAAI,KAAK,KAAK,UAAU,KAAK,oBAAI,KAAK,GAAG;AAG/D,UAAI,6BAAM,WAAW;AACnB,WAAG,EACA,KAAK,CAAC,UAAU;AACf,eAAK,OAAO,KAAK,EAAE,KAAK,OAAO,MAAK,6BAAM,QAAO,KAAK,QAAQ,IAAI,CAAC;AAAA,QACrE,CAAC,EACA,MAAM,CAAC,QAAQ;AACd,kBAAQ,MAAM,GAAG;AAAA,QACnB,CAAC;AAAA,MACL,OAAO;AAEL,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAI,CAAC,MAAM;AAET,YAAM,QAAQ,MAAM,GAAG;AACvB,WAAK,OAAO,KAAK,EAAE,KAAK,OAAO,MAAK,6BAAM,QAAO,KAAK,QAAQ,IAAI,CAAC;AACnE,aAAO;AAAA,IACT;AACA,WAAO,KAAK;AAAA,EACd;AACF;AAEO,IAAM,QAAQ,IAAI,WAAW","sourcesContent":["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":[],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dappworks/kit",
3
- "version": "0.4.117",
3
+ "version": "0.4.119",
4
4
  "description": "",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.mts",
@@ -136,6 +136,7 @@
136
136
  "author": "uuz",
137
137
  "license": "ISC",
138
138
  "devDependencies": {
139
+ "currency.js": "^2.0.4",
139
140
  "tsup": "^7.2.0"
140
141
  },
141
142
  "publishConfig": {
@@ -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"]}