@meshconnect/uwc-core 0.9.3 → 0.10.0-snapshot.03fa2e7
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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/universal-wallet-connector.d.ts +2 -2
- package/dist/universal-wallet-connector.d.ts.map +1 -1
- package/dist/universal-wallet-connector.js +22 -6
- package/dist/universal-wallet-connector.js.map +1 -1
- package/dist/utils/to-base-units.d.ts +24 -0
- package/dist/utils/to-base-units.d.ts.map +1 -0
- package/dist/utils/to-base-units.js +57 -0
- package/dist/utils/to-base-units.js.map +1 -0
- package/package.json +5 -5
- package/src/index.ts +6 -0
- package/src/universal-wallet-connector.ts +26 -6
- package/src/utils/to-base-units.test.ts +123 -0
- package/src/utils/to-base-units.ts +67 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './universal-wallet-connector';
|
|
2
2
|
export * from './managers';
|
|
3
3
|
export * from './services';
|
|
4
|
+
export { toBaseUnits } from './utils/to-base-units';
|
|
5
|
+
export type { TronConnectorConfig, TronGridConfig, TronWalletId } from '@meshconnect/uwc-types';
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,YAAY,EACb,MAAM,wBAAwB,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { UniversalWalletConnectorState, Network, WalletMetadata, NetworkId, ConnectionMode, WalletConnectConfig, TonConnectConfig, TransactionRequest, TransactionResult, EVMCapabilities, SignatureType, EIP712TypedData } from '@meshconnect/uwc-types';
|
|
1
|
+
import type { UniversalWalletConnectorState, Network, WalletMetadata, NetworkId, ConnectionMode, WalletConnectConfig, TonConnectConfig, TransactionRequest, TransactionResult, EVMCapabilities, SignatureType, EIP712TypedData, TronConnectorConfig } from '@meshconnect/uwc-types';
|
|
2
2
|
export declare class UniversalWalletConnector {
|
|
3
3
|
private static instanceCount;
|
|
4
4
|
private static hasWarnedAboutMultipleInstances;
|
|
@@ -15,7 +15,7 @@ export declare class UniversalWalletConnector {
|
|
|
15
15
|
private usingIntegratedBrowser;
|
|
16
16
|
private detectionComplete;
|
|
17
17
|
private networkRpcMap;
|
|
18
|
-
constructor(networks: Network[], wallets?: WalletMetadata[], usingIntegratedBrowser?: boolean, walletConnectConfig?: WalletConnectConfig, tonConnectConfig?: TonConnectConfig);
|
|
18
|
+
constructor(networks: Network[], wallets?: WalletMetadata[], usingIntegratedBrowser?: boolean, walletConnectConfig?: WalletConnectConfig, tonConnectConfig?: TonConnectConfig, tronConnectorConfig?: TronConnectorConfig);
|
|
19
19
|
/**
|
|
20
20
|
* Discovers available wallets and updates the wallet metadata
|
|
21
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universal-wallet-connector.d.ts","sourceRoot":"","sources":["../src/universal-wallet-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,OAAO,EACP,cAAc,EACd,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAOhB,kBAAkB,EAClB,iBAAiB,EAEjB,eAAe,EACf,aAAa,EACb,eAAe,
|
|
1
|
+
{"version":3,"file":"universal-wallet-connector.d.ts","sourceRoot":"","sources":["../src/universal-wallet-connector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,OAAO,EACP,cAAc,EACd,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAOhB,kBAAkB,EAClB,iBAAiB,EAEjB,eAAe,EACf,aAAa,EACb,eAAe,EACf,mBAAmB,EACpB,MAAM,wBAAwB,CAAA;AAa/B,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAI;IAChC,OAAO,CAAC,MAAM,CAAC,+BAA+B,CAAQ;IAEtD,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,yBAAyB,CAA2B;IAC5D,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,iBAAiB,CAAmB;IAC5C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,aAAa,CAAe;gBAGlC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,cAAc,EAAO,EAC9B,sBAAsB,UAAQ,EAC9B,mBAAmB,CAAC,EAAE,mBAAmB,EACzC,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,mBAAmB,CAAC,EAAE,mBAAmB;IAoG3C;;OAEG;YACW,yBAAyB;IAkMvC,UAAU;IAIV,OAAO;IAIP,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAI3C,QAAQ,IAAI,6BAA6B;IAMzC,UAAU,IAAI,cAAc,EAAE;IAI9B,WAAW,IAAI,OAAO,EAAE;IAIlB,OAAO,CACX,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,IAAI,CAAC;IAKhB,gBAAgB,IAAI,MAAM,GAAG,SAAS;IAIhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD,4BAA4B;;;;IAI5B;;;;OAIG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA8B1D;;;;;;;OAOG;IACG,aAAa,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BhE;;;;OAIG;IACG,eAAe,CACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IA8B7B;;;;OAIG;IACG,qBAAqB,CAAC,YAAY,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAsB1E;;;;;OAKG;IACG,qBAAqB,CACzB,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,IAAI,CAAC;IAOhB;;;;;OAKG;IACH,yBAAyB,CACvB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,MAAM,GACf,OAAO;IA8CV,2BAA2B,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI;CAItE"}
|
|
@@ -25,7 +25,7 @@ export class UniversalWalletConnector {
|
|
|
25
25
|
usingIntegratedBrowser;
|
|
26
26
|
detectionComplete = false;
|
|
27
27
|
networkRpcMap;
|
|
28
|
-
constructor(networks, wallets = [], usingIntegratedBrowser = false, walletConnectConfig, tonConnectConfig) {
|
|
28
|
+
constructor(networks, wallets = [], usingIntegratedBrowser = false, walletConnectConfig, tonConnectConfig, tronConnectorConfig) {
|
|
29
29
|
// Track instance creation
|
|
30
30
|
UniversalWalletConnector.instanceCount++;
|
|
31
31
|
// Warn about multiple instances
|
|
@@ -51,7 +51,7 @@ export class UniversalWalletConnector {
|
|
|
51
51
|
this.networkRpcMap = createNetworkRpcMap(networks);
|
|
52
52
|
// Initialize connectors with RPC map
|
|
53
53
|
this.connectors = new Map();
|
|
54
|
-
this.injectedConnector = new InjectedConnector(this.networkRpcMap, this.wallets, tonConnectConfig);
|
|
54
|
+
this.injectedConnector = new InjectedConnector(this.networkRpcMap, this.wallets, tonConnectConfig, tronConnectorConfig, networks);
|
|
55
55
|
this.connectors.set('injected', this.injectedConnector);
|
|
56
56
|
if (tonConnectConfig) {
|
|
57
57
|
this.connectors.set('tonConnect', new TonConnectConnector(tonConnectConfig));
|
|
@@ -119,16 +119,32 @@ export class UniversalWalletConnector {
|
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
else if (namespace === 'tron') {
|
|
122
|
-
//
|
|
122
|
+
// Two id schemes can appear here:
|
|
123
|
+
// - Mesh-owned TronConnector: uuid === WalletMetadata.id
|
|
124
|
+
// (a stable TronWalletId like 'tronlink').
|
|
125
|
+
// - Legacy window-global discovery: uuid === `tron-${injectedId}`
|
|
126
|
+
// (e.g. 'tron-tronlink'), derived from the injection path.
|
|
123
127
|
const tronDetected = detected;
|
|
124
128
|
wallet = this.wallets.find(w => {
|
|
129
|
+
if (tronDetected.uuid === w.id)
|
|
130
|
+
return true;
|
|
125
131
|
const provider = this.usingIntegratedBrowser
|
|
126
132
|
? w.integratedBrowserInjectedProvider
|
|
127
133
|
: w.extensionInjectedProvider;
|
|
128
134
|
const injectedId = provider?.namespaceMetaData?.tron?.injectedId;
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
135
|
+
if (!injectedId)
|
|
136
|
+
return false;
|
|
137
|
+
// Mesh-owned connector reports the canonical injectedId —
|
|
138
|
+
// match it directly so catalog-driven wallets (whose `id`
|
|
139
|
+
// is a backend GUID, not a TronWalletId) are recognized.
|
|
140
|
+
if (tronDetected.injectedId &&
|
|
141
|
+
injectedId.toLowerCase() ===
|
|
142
|
+
tronDetected.injectedId.toLowerCase()) {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
// Legacy window-global discovery scheme: `tron-${injectedId}`.
|
|
146
|
+
return (tronDetected.uuid ===
|
|
147
|
+
`tron-${injectedId}`.toLowerCase().replace(/\./g, '-'));
|
|
132
148
|
});
|
|
133
149
|
}
|
|
134
150
|
else if (namespace === 'tvm') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"universal-wallet-connector.js","sourceRoot":"","sources":["../src/universal-wallet-connector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"universal-wallet-connector.js","sourceRoot":"","sources":["../src/universal-wallet-connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a decimal-string amount to base units using BigInt arithmetic.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the float-prone pattern `BigInt(Math.floor(amount * 10**decimals))`,
|
|
5
|
+
* which silently loses precision past ~15 significant digits — most painful
|
|
6
|
+
* at EVM's 18 decimals. Inputs over the target precision are rejected rather
|
|
7
|
+
* than silently rounded.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* toBaseUnits('1.5', 18) // 1500000000000000000n
|
|
11
|
+
* toBaseUnits('5', 6) // 5000000n
|
|
12
|
+
* toBaseUnits('0.1', 9) // 100000000n
|
|
13
|
+
*
|
|
14
|
+
* @param amount - Decimal string (e.g. `'1.5'`). Numbers are accepted via
|
|
15
|
+
* `String(amount)` but discouraged: pass strings to avoid float-binary
|
|
16
|
+
* surprises like `0.1 + 0.2`. Scientific notation and `NaN`/`Infinity`
|
|
17
|
+
* are rejected.
|
|
18
|
+
* @param decimals - Non-negative integer; number of decimal places in the
|
|
19
|
+
* smallest unit (e.g. 18 for ETH/wei, 6 for USDC, 9 for SOL/lamports).
|
|
20
|
+
* @throws If `amount` is malformed, has more fractional digits than
|
|
21
|
+
* `decimals` (silent truncation is rejected), or `decimals` is invalid.
|
|
22
|
+
*/
|
|
23
|
+
export declare function toBaseUnits(amount: string | number, decimals: number): bigint;
|
|
24
|
+
//# sourceMappingURL=to-base-units.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-base-units.d.ts","sourceRoot":"","sources":["../../src/utils/to-base-units.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4C7E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a decimal-string amount to base units using BigInt arithmetic.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the float-prone pattern `BigInt(Math.floor(amount * 10**decimals))`,
|
|
5
|
+
* which silently loses precision past ~15 significant digits — most painful
|
|
6
|
+
* at EVM's 18 decimals. Inputs over the target precision are rejected rather
|
|
7
|
+
* than silently rounded.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* toBaseUnits('1.5', 18) // 1500000000000000000n
|
|
11
|
+
* toBaseUnits('5', 6) // 5000000n
|
|
12
|
+
* toBaseUnits('0.1', 9) // 100000000n
|
|
13
|
+
*
|
|
14
|
+
* @param amount - Decimal string (e.g. `'1.5'`). Numbers are accepted via
|
|
15
|
+
* `String(amount)` but discouraged: pass strings to avoid float-binary
|
|
16
|
+
* surprises like `0.1 + 0.2`. Scientific notation and `NaN`/`Infinity`
|
|
17
|
+
* are rejected.
|
|
18
|
+
* @param decimals - Non-negative integer; number of decimal places in the
|
|
19
|
+
* smallest unit (e.g. 18 for ETH/wei, 6 for USDC, 9 for SOL/lamports).
|
|
20
|
+
* @throws If `amount` is malformed, has more fractional digits than
|
|
21
|
+
* `decimals` (silent truncation is rejected), or `decimals` is invalid.
|
|
22
|
+
*/
|
|
23
|
+
export function toBaseUnits(amount, decimals) {
|
|
24
|
+
if (!Number.isInteger(decimals) || decimals < 0) {
|
|
25
|
+
throw new Error(`toBaseUnits: decimals must be a non-negative integer, got ${decimals}`);
|
|
26
|
+
}
|
|
27
|
+
if (typeof amount === 'number' && !Number.isFinite(amount)) {
|
|
28
|
+
throw new Error(`toBaseUnits: amount must be finite, got ${amount}`);
|
|
29
|
+
}
|
|
30
|
+
const raw = typeof amount === 'number' ? String(amount) : amount;
|
|
31
|
+
if (typeof raw !== 'string') {
|
|
32
|
+
throw new Error(`toBaseUnits: amount must be a string or number`);
|
|
33
|
+
}
|
|
34
|
+
const trimmed = raw.trim();
|
|
35
|
+
if (trimmed === '') {
|
|
36
|
+
throw new Error('toBaseUnits: amount must not be empty');
|
|
37
|
+
}
|
|
38
|
+
// Reject scientific notation: ambiguous and would silently misparse below.
|
|
39
|
+
if (/[eE]/.test(trimmed)) {
|
|
40
|
+
throw new Error(`toBaseUnits: scientific notation not supported: "${raw}"`);
|
|
41
|
+
}
|
|
42
|
+
const match = /^([+-]?)(\d+)(?:\.(\d*))?$/.exec(trimmed);
|
|
43
|
+
if (!match) {
|
|
44
|
+
throw new Error(`toBaseUnits: invalid amount: "${raw}"`);
|
|
45
|
+
}
|
|
46
|
+
const sign = match[1];
|
|
47
|
+
const whole = match[2];
|
|
48
|
+
const frac = match[3] ?? '';
|
|
49
|
+
if (frac.length > decimals) {
|
|
50
|
+
throw new Error(`toBaseUnits: amount "${raw}" has ${frac.length} fractional digits, ` +
|
|
51
|
+
`which exceeds the target precision of ${decimals}`);
|
|
52
|
+
}
|
|
53
|
+
const padded = frac.padEnd(decimals, '0');
|
|
54
|
+
const magnitude = BigInt(whole + padded);
|
|
55
|
+
return sign === '-' ? -magnitude : magnitude;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=to-base-units.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"to-base-units.js","sourceRoot":"","sources":["../../src/utils/to-base-units.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuB,EAAE,QAAgB;IACnE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,6DAA6D,QAAQ,EAAE,CACxE,CAAA;IACH,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,2CAA2C,MAAM,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAChE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IAED,2EAA2E;IAC3E,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oDAAoD,GAAG,GAAG,CAAC,CAAA;IAC7E,CAAC;IAED,MAAM,KAAK,GAAG,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,GAAG,CAAC,CAAA;IAC1D,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAE3B,IAAI,IAAI,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,wBAAwB,GAAG,SAAS,IAAI,CAAC,MAAM,sBAAsB;YACnE,yCAAyC,QAAQ,EAAE,CACtD,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAA;IACxC,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;AAC9C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meshconnect/uwc-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0-snapshot.03fa2e7",
|
|
4
4
|
"description": "Core functionality for Universal Wallet Connector",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"src"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@meshconnect/uwc-injected-connector": "0.
|
|
20
|
-
"@meshconnect/uwc-ton-connector": "0.6.
|
|
21
|
-
"@meshconnect/uwc-
|
|
22
|
-
"@meshconnect/uwc-
|
|
19
|
+
"@meshconnect/uwc-injected-connector": "0.15.0-snapshot.03fa2e7",
|
|
20
|
+
"@meshconnect/uwc-ton-connector": "0.6.5-snapshot.03fa2e7",
|
|
21
|
+
"@meshconnect/uwc-wallet-connect-connector": "0.6.2-snapshot.03fa2e7",
|
|
22
|
+
"@meshconnect/uwc-types": "0.16.0-snapshot.03fa2e7"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"typescript": "^5.9.3"
|
package/src/index.ts
CHANGED
|
@@ -17,7 +17,8 @@ import type {
|
|
|
17
17
|
NetworkRpcMap,
|
|
18
18
|
EVMCapabilities,
|
|
19
19
|
SignatureType,
|
|
20
|
-
EIP712TypedData
|
|
20
|
+
EIP712TypedData,
|
|
21
|
+
TronConnectorConfig
|
|
21
22
|
} from '@meshconnect/uwc-types'
|
|
22
23
|
import { InjectedConnector } from '@meshconnect/uwc-injected-connector'
|
|
23
24
|
import { WalletConnectConnector } from '@meshconnect/uwc-wallet-connect-connector'
|
|
@@ -54,7 +55,8 @@ export class UniversalWalletConnector {
|
|
|
54
55
|
wallets: WalletMetadata[] = [],
|
|
55
56
|
usingIntegratedBrowser = false,
|
|
56
57
|
walletConnectConfig?: WalletConnectConfig,
|
|
57
|
-
tonConnectConfig?: TonConnectConfig
|
|
58
|
+
tonConnectConfig?: TonConnectConfig,
|
|
59
|
+
tronConnectorConfig?: TronConnectorConfig
|
|
58
60
|
) {
|
|
59
61
|
// Track instance creation
|
|
60
62
|
UniversalWalletConnector.instanceCount++
|
|
@@ -97,7 +99,9 @@ export class UniversalWalletConnector {
|
|
|
97
99
|
this.injectedConnector = new InjectedConnector(
|
|
98
100
|
this.networkRpcMap,
|
|
99
101
|
this.wallets,
|
|
100
|
-
tonConnectConfig
|
|
102
|
+
tonConnectConfig,
|
|
103
|
+
tronConnectorConfig,
|
|
104
|
+
networks
|
|
101
105
|
)
|
|
102
106
|
this.connectors.set('injected', this.injectedConnector)
|
|
103
107
|
|
|
@@ -211,18 +215,34 @@ export class UniversalWalletConnector {
|
|
|
211
215
|
)
|
|
212
216
|
})
|
|
213
217
|
} else if (namespace === 'tron') {
|
|
214
|
-
//
|
|
218
|
+
// Two id schemes can appear here:
|
|
219
|
+
// - Mesh-owned TronConnector: uuid === WalletMetadata.id
|
|
220
|
+
// (a stable TronWalletId like 'tronlink').
|
|
221
|
+
// - Legacy window-global discovery: uuid === `tron-${injectedId}`
|
|
222
|
+
// (e.g. 'tron-tronlink'), derived from the injection path.
|
|
215
223
|
const tronDetected = detected as DetectedTronWalletInfo
|
|
216
224
|
wallet = this.wallets.find(w => {
|
|
225
|
+
if (tronDetected.uuid === w.id) return true
|
|
217
226
|
const provider = this.usingIntegratedBrowser
|
|
218
227
|
? w.integratedBrowserInjectedProvider
|
|
219
228
|
: w.extensionInjectedProvider
|
|
220
229
|
const injectedId =
|
|
221
230
|
provider?.namespaceMetaData?.tron?.injectedId
|
|
231
|
+
if (!injectedId) return false
|
|
232
|
+
// Mesh-owned connector reports the canonical injectedId —
|
|
233
|
+
// match it directly so catalog-driven wallets (whose `id`
|
|
234
|
+
// is a backend GUID, not a TronWalletId) are recognized.
|
|
235
|
+
if (
|
|
236
|
+
tronDetected.injectedId &&
|
|
237
|
+
injectedId.toLowerCase() ===
|
|
238
|
+
tronDetected.injectedId.toLowerCase()
|
|
239
|
+
) {
|
|
240
|
+
return true
|
|
241
|
+
}
|
|
242
|
+
// Legacy window-global discovery scheme: `tron-${injectedId}`.
|
|
222
243
|
return (
|
|
223
|
-
injectedId &&
|
|
224
244
|
tronDetected.uuid ===
|
|
225
|
-
|
|
245
|
+
`tron-${injectedId}`.toLowerCase().replace(/\./g, '-')
|
|
226
246
|
)
|
|
227
247
|
})
|
|
228
248
|
} else if (namespace === 'tvm') {
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { toBaseUnits } from './to-base-units'
|
|
3
|
+
|
|
4
|
+
describe('toBaseUnits', () => {
|
|
5
|
+
describe('integer amounts', () => {
|
|
6
|
+
it('scales by 10^decimals', () => {
|
|
7
|
+
expect(toBaseUnits('5', 6)).toBe(5_000_000n)
|
|
8
|
+
expect(toBaseUnits('1', 18)).toBe(1_000_000_000_000_000_000n)
|
|
9
|
+
expect(toBaseUnits('1000', 0)).toBe(1000n)
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
it('treats zero as zero', () => {
|
|
13
|
+
expect(toBaseUnits('0', 18)).toBe(0n)
|
|
14
|
+
expect(toBaseUnits('0.0', 18)).toBe(0n)
|
|
15
|
+
expect(toBaseUnits('0.000', 6)).toBe(0n)
|
|
16
|
+
})
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
describe('fractional amounts', () => {
|
|
20
|
+
it('handles half-decimal at high precision without float loss', () => {
|
|
21
|
+
expect(toBaseUnits('1.5', 18)).toBe(1_500_000_000_000_000_000n)
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
it('handles small fractions exactly', () => {
|
|
25
|
+
expect(toBaseUnits('0.1', 9)).toBe(100_000_000n)
|
|
26
|
+
expect(toBaseUnits('0.000001', 6)).toBe(1n)
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('exactly preserves 18-digit fractions (the case Math.floor loses)', () => {
|
|
30
|
+
expect(toBaseUnits('0.123456789012345678', 18)).toBe(
|
|
31
|
+
123_456_789_012_345_678n
|
|
32
|
+
)
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it('exceeds Number.MAX_SAFE_INTEGER without loss', () => {
|
|
36
|
+
expect(toBaseUnits('1000000000', 18)).toBe(
|
|
37
|
+
1_000_000_000_000_000_000_000_000_000n
|
|
38
|
+
)
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
it('accepts fractions equal in length to decimals', () => {
|
|
42
|
+
expect(toBaseUnits('1.123456', 6)).toBe(1_123_456n)
|
|
43
|
+
})
|
|
44
|
+
|
|
45
|
+
it('zero-pads short fractions', () => {
|
|
46
|
+
expect(toBaseUnits('1.5', 6)).toBe(1_500_000n)
|
|
47
|
+
expect(toBaseUnits('1.', 6)).toBe(1_000_000n)
|
|
48
|
+
})
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
describe('sign handling', () => {
|
|
52
|
+
it('negates negative amounts', () => {
|
|
53
|
+
expect(toBaseUnits('-1', 18)).toBe(-1_000_000_000_000_000_000n)
|
|
54
|
+
expect(toBaseUnits('-0.5', 6)).toBe(-500_000n)
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
it('accepts an explicit + sign', () => {
|
|
58
|
+
expect(toBaseUnits('+1.5', 6)).toBe(1_500_000n)
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
it('treats -0 as 0', () => {
|
|
62
|
+
expect(toBaseUnits('-0', 18)).toBe(0n)
|
|
63
|
+
expect(toBaseUnits('-0.0', 18)).toBe(0n)
|
|
64
|
+
})
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
describe('input normalisation', () => {
|
|
68
|
+
it('trims surrounding whitespace', () => {
|
|
69
|
+
expect(toBaseUnits(' 5 ', 6)).toBe(5_000_000n)
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
it('accepts numeric input via String() coercion', () => {
|
|
73
|
+
expect(toBaseUnits(5, 6)).toBe(5_000_000n)
|
|
74
|
+
expect(toBaseUnits(1.5, 6)).toBe(1_500_000n)
|
|
75
|
+
})
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
describe('rejected inputs', () => {
|
|
79
|
+
it('rejects fractions longer than decimals (no silent truncation)', () => {
|
|
80
|
+
expect(() => toBaseUnits('1.2345678', 6)).toThrow(
|
|
81
|
+
/exceeds the target precision/
|
|
82
|
+
)
|
|
83
|
+
expect(() => toBaseUnits('0.0000001', 6)).toThrow(
|
|
84
|
+
/exceeds the target precision/
|
|
85
|
+
)
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
it('rejects scientific notation', () => {
|
|
89
|
+
expect(() => toBaseUnits('1e18', 18)).toThrow(/scientific notation/)
|
|
90
|
+
expect(() => toBaseUnits('1.5E6', 6)).toThrow(/scientific notation/)
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
it('rejects empty / whitespace-only strings', () => {
|
|
94
|
+
expect(() => toBaseUnits('', 18)).toThrow(/must not be empty/)
|
|
95
|
+
expect(() => toBaseUnits(' ', 18)).toThrow(/must not be empty/)
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
it('rejects non-numeric strings', () => {
|
|
99
|
+
expect(() => toBaseUnits('abc', 18)).toThrow(/invalid amount/)
|
|
100
|
+
expect(() => toBaseUnits('1.2.3', 18)).toThrow(/invalid amount/)
|
|
101
|
+
expect(() => toBaseUnits('--1', 18)).toThrow(/invalid amount/)
|
|
102
|
+
expect(() => toBaseUnits('.', 18)).toThrow(/invalid amount/)
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
it('rejects non-finite numeric input', () => {
|
|
106
|
+
expect(() => toBaseUnits(NaN, 18)).toThrow(/must be finite/)
|
|
107
|
+
expect(() => toBaseUnits(Infinity, 18)).toThrow(/must be finite/)
|
|
108
|
+
expect(() => toBaseUnits(-Infinity, 18)).toThrow(/must be finite/)
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
it('rejects invalid decimals', () => {
|
|
112
|
+
expect(() => toBaseUnits('1', -1)).toThrow(
|
|
113
|
+
/decimals must be a non-negative integer/
|
|
114
|
+
)
|
|
115
|
+
expect(() => toBaseUnits('1', 1.5)).toThrow(
|
|
116
|
+
/decimals must be a non-negative integer/
|
|
117
|
+
)
|
|
118
|
+
expect(() => toBaseUnits('1', NaN)).toThrow(
|
|
119
|
+
/decimals must be a non-negative integer/
|
|
120
|
+
)
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
})
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a decimal-string amount to base units using BigInt arithmetic.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the float-prone pattern `BigInt(Math.floor(amount * 10**decimals))`,
|
|
5
|
+
* which silently loses precision past ~15 significant digits — most painful
|
|
6
|
+
* at EVM's 18 decimals. Inputs over the target precision are rejected rather
|
|
7
|
+
* than silently rounded.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* toBaseUnits('1.5', 18) // 1500000000000000000n
|
|
11
|
+
* toBaseUnits('5', 6) // 5000000n
|
|
12
|
+
* toBaseUnits('0.1', 9) // 100000000n
|
|
13
|
+
*
|
|
14
|
+
* @param amount - Decimal string (e.g. `'1.5'`). Numbers are accepted via
|
|
15
|
+
* `String(amount)` but discouraged: pass strings to avoid float-binary
|
|
16
|
+
* surprises like `0.1 + 0.2`. Scientific notation and `NaN`/`Infinity`
|
|
17
|
+
* are rejected.
|
|
18
|
+
* @param decimals - Non-negative integer; number of decimal places in the
|
|
19
|
+
* smallest unit (e.g. 18 for ETH/wei, 6 for USDC, 9 for SOL/lamports).
|
|
20
|
+
* @throws If `amount` is malformed, has more fractional digits than
|
|
21
|
+
* `decimals` (silent truncation is rejected), or `decimals` is invalid.
|
|
22
|
+
*/
|
|
23
|
+
export function toBaseUnits(amount: string | number, decimals: number): bigint {
|
|
24
|
+
if (!Number.isInteger(decimals) || decimals < 0) {
|
|
25
|
+
throw new Error(
|
|
26
|
+
`toBaseUnits: decimals must be a non-negative integer, got ${decimals}`
|
|
27
|
+
)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (typeof amount === 'number' && !Number.isFinite(amount)) {
|
|
31
|
+
throw new Error(`toBaseUnits: amount must be finite, got ${amount}`)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const raw = typeof amount === 'number' ? String(amount) : amount
|
|
35
|
+
if (typeof raw !== 'string') {
|
|
36
|
+
throw new Error(`toBaseUnits: amount must be a string or number`)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const trimmed = raw.trim()
|
|
40
|
+
if (trimmed === '') {
|
|
41
|
+
throw new Error('toBaseUnits: amount must not be empty')
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Reject scientific notation: ambiguous and would silently misparse below.
|
|
45
|
+
if (/[eE]/.test(trimmed)) {
|
|
46
|
+
throw new Error(`toBaseUnits: scientific notation not supported: "${raw}"`)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const match = /^([+-]?)(\d+)(?:\.(\d*))?$/.exec(trimmed)
|
|
50
|
+
if (!match) {
|
|
51
|
+
throw new Error(`toBaseUnits: invalid amount: "${raw}"`)
|
|
52
|
+
}
|
|
53
|
+
const sign = match[1]
|
|
54
|
+
const whole = match[2]
|
|
55
|
+
const frac = match[3] ?? ''
|
|
56
|
+
|
|
57
|
+
if (frac.length > decimals) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
`toBaseUnits: amount "${raw}" has ${frac.length} fractional digits, ` +
|
|
60
|
+
`which exceeds the target precision of ${decimals}`
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const padded = frac.padEnd(decimals, '0')
|
|
65
|
+
const magnitude = BigInt(whole + padded)
|
|
66
|
+
return sign === '-' ? -magnitude : magnitude
|
|
67
|
+
}
|