@droplinked_inc/web3-kit 0.1.0
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/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +123 -0
- package/THREAT_MODEL.md +139 -0
- package/dist/chains.d.ts +67 -0
- package/dist/chains.d.ts.map +1 -0
- package/dist/chains.js +302 -0
- package/dist/chains.js.map +1 -0
- package/dist/deep-freeze.d.ts +17 -0
- package/dist/deep-freeze.d.ts.map +1 -0
- package/dist/deep-freeze.js +40 -0
- package/dist/deep-freeze.js.map +1 -0
- package/dist/errors.d.ts +96 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +157 -0
- package/dist/errors.js.map +1 -0
- package/dist/format.d.ts +48 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +0 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/tokens.d.ts +60 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +215 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tx-builder.d.ts +76 -0
- package/dist/tx-builder.d.ts.map +1 -0
- package/dist/tx-builder.js +116 -0
- package/dist/tx-builder.js.map +1 -0
- package/dist/types.d.ts +155 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +140 -0
- package/dist/types.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively freezes an object and every nested object/array reachable
|
|
3
|
+
* from it. The top-level `Object.freeze` only seals the outer handle —
|
|
4
|
+
* nested entries (`CHAIN_REGISTRY[chain].rpcUrls`,
|
|
5
|
+
* `TOKEN_REGISTRY[chain][network].USDC`, etc.) remain writable from any
|
|
6
|
+
* code in the same realm. That defeats the registry's core integrity
|
|
7
|
+
* claim: an attacker who lands code in the consumer's bundle could
|
|
8
|
+
* silently mutate the canonical USDC address. `deepFreeze` closes that
|
|
9
|
+
* gap so mutation either throws (strict mode) or is a silent no-op
|
|
10
|
+
* (sloppy mode) — never an actual write-through.
|
|
11
|
+
*
|
|
12
|
+
* The walk is iterative-safe via `Object.isFrozen` short-circuiting:
|
|
13
|
+
* any already-frozen branch is skipped, so cyclic graphs terminate.
|
|
14
|
+
* Only own properties are descended (prototypes are not re-frozen).
|
|
15
|
+
*/
|
|
16
|
+
export declare function deepFreeze<T>(obj: T): T;
|
|
17
|
+
//# sourceMappingURL=deep-freeze.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-freeze.d.ts","sourceRoot":"","sources":["../src/deep-freeze.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAEvC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively freezes an object and every nested object/array reachable
|
|
3
|
+
* from it. The top-level `Object.freeze` only seals the outer handle —
|
|
4
|
+
* nested entries (`CHAIN_REGISTRY[chain].rpcUrls`,
|
|
5
|
+
* `TOKEN_REGISTRY[chain][network].USDC`, etc.) remain writable from any
|
|
6
|
+
* code in the same realm. That defeats the registry's core integrity
|
|
7
|
+
* claim: an attacker who lands code in the consumer's bundle could
|
|
8
|
+
* silently mutate the canonical USDC address. `deepFreeze` closes that
|
|
9
|
+
* gap so mutation either throws (strict mode) or is a silent no-op
|
|
10
|
+
* (sloppy mode) — never an actual write-through.
|
|
11
|
+
*
|
|
12
|
+
* The walk is iterative-safe via `Object.isFrozen` short-circuiting:
|
|
13
|
+
* any already-frozen branch is skipped, so cyclic graphs terminate.
|
|
14
|
+
* Only own properties are descended (prototypes are not re-frozen).
|
|
15
|
+
*/
|
|
16
|
+
export function deepFreeze(obj) {
|
|
17
|
+
return deepFreezeInternal(obj, new WeakSet());
|
|
18
|
+
}
|
|
19
|
+
function deepFreezeInternal(obj, seen) {
|
|
20
|
+
if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {
|
|
21
|
+
return obj;
|
|
22
|
+
}
|
|
23
|
+
// `seen` (not `Object.isFrozen`) drives cycle-breaking. An object can
|
|
24
|
+
// be shallow-frozen by the caller yet still have writable children —
|
|
25
|
+
// short-circuiting on `Object.isFrozen` here would leave those
|
|
26
|
+
// children mutable, which is exactly the audit finding.
|
|
27
|
+
if (seen.has(obj)) {
|
|
28
|
+
return obj;
|
|
29
|
+
}
|
|
30
|
+
seen.add(obj);
|
|
31
|
+
for (const key of Object.getOwnPropertyNames(obj)) {
|
|
32
|
+
const value = obj[key];
|
|
33
|
+
if (value !== null && (typeof value === 'object' || typeof value === 'function')) {
|
|
34
|
+
deepFreezeInternal(value, seen);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
Object.freeze(obj);
|
|
38
|
+
return obj;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=deep-freeze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-freeze.js","sourceRoot":"","sources":["../src/deep-freeze.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAI,GAAM;IAClC,OAAO,kBAAkB,CAAC,GAAG,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAI,GAAM,EAAE,IAAqB;IAC1D,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,CAAC,EAAE,CAAC;QAC3E,OAAO,GAAG,CAAC;IACb,CAAC;IACD,sEAAsE;IACtE,qEAAqE;IACrE,+DAA+D;IAC/D,wDAAwD;IACxD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAa,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC;IACxB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAI,GAA+B,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,EAAE,CAAC;YACjF,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed error hierarchy. Mirrors the v1.0.13 exception classes so that
|
|
3
|
+
* consumers' `instanceof` checks continue to work after the rewrite.
|
|
4
|
+
*/
|
|
5
|
+
import type { Chains } from './types.js';
|
|
6
|
+
export declare class Web3KitError extends Error {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class ChainException extends Web3KitError {
|
|
10
|
+
readonly chain: Chains;
|
|
11
|
+
constructor(chain: Chains, msg: string);
|
|
12
|
+
}
|
|
13
|
+
export declare class ChainNotImplementedException extends ChainException {
|
|
14
|
+
constructor(chain: Chains);
|
|
15
|
+
}
|
|
16
|
+
export declare class InvalidParametersException extends ChainException {
|
|
17
|
+
constructor(chain: Chains, message: string);
|
|
18
|
+
}
|
|
19
|
+
export declare class UnauthorizedAccessException extends ChainException {
|
|
20
|
+
readonly method: string;
|
|
21
|
+
readonly from: string;
|
|
22
|
+
readonly to: string;
|
|
23
|
+
constructor(chain: Chains, method: string, from: string, to: string);
|
|
24
|
+
}
|
|
25
|
+
export declare class MetadataUploadFailedException extends ChainException {
|
|
26
|
+
constructor(chain: Chains, reason: string);
|
|
27
|
+
}
|
|
28
|
+
export declare class WalletException extends Web3KitError {
|
|
29
|
+
readonly walletName: string;
|
|
30
|
+
constructor(walletName: string, msg: string);
|
|
31
|
+
}
|
|
32
|
+
export declare class WalletNotFoundException extends WalletException {
|
|
33
|
+
constructor(walletName: string, msg?: string);
|
|
34
|
+
}
|
|
35
|
+
export declare class WalletNotInstalledException extends WalletException {
|
|
36
|
+
constructor(walletName: string);
|
|
37
|
+
}
|
|
38
|
+
export declare class NoAccountsFoundException extends WalletException {
|
|
39
|
+
constructor(walletName: string);
|
|
40
|
+
}
|
|
41
|
+
export declare class AccountAccessDeniedException extends WalletException {
|
|
42
|
+
constructor(walletName: string);
|
|
43
|
+
}
|
|
44
|
+
export declare class UserDeniedException extends WalletException {
|
|
45
|
+
constructor(walletName: string);
|
|
46
|
+
}
|
|
47
|
+
export declare class NotSupportedException extends WalletException {
|
|
48
|
+
constructor(walletName: string, group: string);
|
|
49
|
+
}
|
|
50
|
+
export declare class ChainNotSupportedException extends WalletException {
|
|
51
|
+
constructor(walletName: string, chain: Chains);
|
|
52
|
+
}
|
|
53
|
+
export declare class TokenNotSupportedException extends WalletException {
|
|
54
|
+
constructor(walletName: string, symbol: string);
|
|
55
|
+
}
|
|
56
|
+
export declare class ProviderException extends WalletException {
|
|
57
|
+
constructor(walletName: string);
|
|
58
|
+
}
|
|
59
|
+
export declare class ChainSwitchException extends WalletException {
|
|
60
|
+
constructor(walletName: string);
|
|
61
|
+
}
|
|
62
|
+
export declare class ActionException extends Web3KitError {
|
|
63
|
+
readonly action: string;
|
|
64
|
+
constructor(action: string, msg: string);
|
|
65
|
+
}
|
|
66
|
+
export declare class InitializationException extends ActionException {
|
|
67
|
+
constructor();
|
|
68
|
+
}
|
|
69
|
+
export declare class InsufficientBalanceException extends ActionException {
|
|
70
|
+
constructor();
|
|
71
|
+
}
|
|
72
|
+
export declare class ActionNotImplementedException extends ActionException {
|
|
73
|
+
constructor(action: string);
|
|
74
|
+
}
|
|
75
|
+
export declare class Web3CallbackFailedException extends ActionException {
|
|
76
|
+
constructor(action: string);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Thrown when a caller attempts to bind a token symbol (e.g. "USDC")
|
|
80
|
+
* to a contract address that does not match the canonical hard-coded
|
|
81
|
+
* registry entry for the (chain, network) pair. This is the primary
|
|
82
|
+
* defence against token-impersonation drain attacks.
|
|
83
|
+
*/
|
|
84
|
+
export declare class TokenAddressMismatchError extends Web3KitError {
|
|
85
|
+
readonly chain: Chains;
|
|
86
|
+
readonly symbol: string;
|
|
87
|
+
readonly expected: string;
|
|
88
|
+
readonly actual: string;
|
|
89
|
+
constructor(chain: Chains, symbol: string, expected: string, actual: string);
|
|
90
|
+
}
|
|
91
|
+
export declare class UnknownTokenError extends Web3KitError {
|
|
92
|
+
readonly chain: Chains;
|
|
93
|
+
readonly symbol: string;
|
|
94
|
+
constructor(chain: Chains, symbol: string);
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/* -------------------------------- root ------------------------------------ */
|
|
2
|
+
export class Web3KitError extends Error {
|
|
3
|
+
constructor(message) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.name = new.target.name;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/* ------------------------------- chains ----------------------------------- */
|
|
9
|
+
export class ChainException extends Web3KitError {
|
|
10
|
+
chain;
|
|
11
|
+
constructor(chain, msg) {
|
|
12
|
+
super(`[${chain}] ${msg}`);
|
|
13
|
+
this.chain = chain;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class ChainNotImplementedException extends ChainException {
|
|
17
|
+
constructor(chain) {
|
|
18
|
+
super(chain, `chain not implemented`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export class InvalidParametersException extends ChainException {
|
|
22
|
+
constructor(chain, message) {
|
|
23
|
+
super(chain, `invalid params: ${message}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class UnauthorizedAccessException extends ChainException {
|
|
27
|
+
method;
|
|
28
|
+
from;
|
|
29
|
+
to;
|
|
30
|
+
constructor(chain, method, from, to) {
|
|
31
|
+
super(chain, `unauthorized ${method} from ${from} to ${to}`);
|
|
32
|
+
this.method = method;
|
|
33
|
+
this.from = from;
|
|
34
|
+
this.to = to;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class MetadataUploadFailedException extends ChainException {
|
|
38
|
+
constructor(chain, reason) {
|
|
39
|
+
super(chain, `metadata upload failed: ${reason}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/* -------------------------------- wallets --------------------------------- */
|
|
43
|
+
export class WalletException extends Web3KitError {
|
|
44
|
+
walletName;
|
|
45
|
+
constructor(walletName, msg) {
|
|
46
|
+
super(`[${walletName}] ${msg}`);
|
|
47
|
+
this.walletName = walletName;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export class WalletNotFoundException extends WalletException {
|
|
51
|
+
constructor(walletName, msg = 'wallet adapter not found') {
|
|
52
|
+
super(walletName, msg);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export class WalletNotInstalledException extends WalletException {
|
|
56
|
+
constructor(walletName) {
|
|
57
|
+
super(walletName, 'wallet extension is not installed');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export class NoAccountsFoundException extends WalletException {
|
|
61
|
+
constructor(walletName) {
|
|
62
|
+
super(walletName, 'no accounts found');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export class AccountAccessDeniedException extends WalletException {
|
|
66
|
+
constructor(walletName) {
|
|
67
|
+
super(walletName, 'account access denied');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export class UserDeniedException extends WalletException {
|
|
71
|
+
constructor(walletName) {
|
|
72
|
+
super(walletName, 'user denied the request');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export class NotSupportedException extends WalletException {
|
|
76
|
+
constructor(walletName, group) {
|
|
77
|
+
super(walletName, `wallet does not support group ${group}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export class ChainNotSupportedException extends WalletException {
|
|
81
|
+
constructor(walletName, chain) {
|
|
82
|
+
super(walletName, `wallet does not support chain ${chain}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export class TokenNotSupportedException extends WalletException {
|
|
86
|
+
constructor(walletName, symbol) {
|
|
87
|
+
super(walletName, `wallet does not support token ${symbol}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export class ProviderException extends WalletException {
|
|
91
|
+
constructor(walletName) {
|
|
92
|
+
super(walletName, 'no EIP-1193 provider available');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export class ChainSwitchException extends WalletException {
|
|
96
|
+
constructor(walletName) {
|
|
97
|
+
super(walletName, 'failed to switch chain');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/* -------------------------------- actions --------------------------------- */
|
|
101
|
+
export class ActionException extends Web3KitError {
|
|
102
|
+
action;
|
|
103
|
+
constructor(action, msg) {
|
|
104
|
+
super(`[${action}] ${msg}`);
|
|
105
|
+
this.action = action;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export class InitializationException extends ActionException {
|
|
109
|
+
constructor() {
|
|
110
|
+
super('Initialization', 'DropWeb3 must be initialized via getProvider() before use');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export class InsufficientBalanceException extends ActionException {
|
|
114
|
+
constructor() {
|
|
115
|
+
super('Payment', 'insufficient balance');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
export class ActionNotImplementedException extends ActionException {
|
|
119
|
+
constructor(action) {
|
|
120
|
+
super(action, 'action not implemented');
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
export class Web3CallbackFailedException extends ActionException {
|
|
124
|
+
constructor(action) {
|
|
125
|
+
super(action, 'backend callback failed');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/* -------------------------- token / registry errors ----------------------- */
|
|
129
|
+
/**
|
|
130
|
+
* Thrown when a caller attempts to bind a token symbol (e.g. "USDC")
|
|
131
|
+
* to a contract address that does not match the canonical hard-coded
|
|
132
|
+
* registry entry for the (chain, network) pair. This is the primary
|
|
133
|
+
* defence against token-impersonation drain attacks.
|
|
134
|
+
*/
|
|
135
|
+
export class TokenAddressMismatchError extends Web3KitError {
|
|
136
|
+
chain;
|
|
137
|
+
symbol;
|
|
138
|
+
expected;
|
|
139
|
+
actual;
|
|
140
|
+
constructor(chain, symbol, expected, actual) {
|
|
141
|
+
super(`token ${symbol} on ${chain}: expected canonical address ${expected}, got ${actual}`);
|
|
142
|
+
this.chain = chain;
|
|
143
|
+
this.symbol = symbol;
|
|
144
|
+
this.expected = expected;
|
|
145
|
+
this.actual = actual;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
export class UnknownTokenError extends Web3KitError {
|
|
149
|
+
chain;
|
|
150
|
+
symbol;
|
|
151
|
+
constructor(chain, symbol) {
|
|
152
|
+
super(`token ${symbol} is not registered for chain ${chain}`);
|
|
153
|
+
this.chain = chain;
|
|
154
|
+
this.symbol = symbol;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/format.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** Format `value` (smallest-unit `bigint`) into a decimal string. */
|
|
2
|
+
export declare function formatAmount(value: bigint, decimals: number): string;
|
|
3
|
+
/**
|
|
4
|
+
* Parse a decimal `value` (e.g. "1.23") into smallest-unit `bigint`.
|
|
5
|
+
* Throws on inputs with too many fractional digits or non-numeric
|
|
6
|
+
* characters — never silently truncates (the v1.0.13 behaviour
|
|
7
|
+
* truncated trailing digits, which let a malicious UI show "1.23456 USDC"
|
|
8
|
+
* but submit "1.23 USDC" on-chain).
|
|
9
|
+
*/
|
|
10
|
+
export declare function parseAmount(value: string, decimals: number): bigint;
|
|
11
|
+
/** Wei <-> ETH convenience (18 decimals). */
|
|
12
|
+
export declare const formatEther: (value: bigint) => string;
|
|
13
|
+
export declare const parseEther: (value: string) => bigint;
|
|
14
|
+
/**
|
|
15
|
+
* Shorten an EVM address to `0xabcd…1234` form. Validates the input
|
|
16
|
+
* is a well-formed 20-byte hex address; throws otherwise. Does NOT
|
|
17
|
+
* accept ENS names — display of ENS-resolved names is the caller's
|
|
18
|
+
* responsibility (and must be re-validated for homoglyph attacks).
|
|
19
|
+
*/
|
|
20
|
+
export declare function shortenAddress(addr: string, head?: number, tail?: number): string;
|
|
21
|
+
/**
|
|
22
|
+
* Sanitize an attacker-controlled display string before rendering.
|
|
23
|
+
*
|
|
24
|
+
* - Coerces non-strings to "".
|
|
25
|
+
* - Replaces ASCII control chars (0x00–0x1F, 0x7F) with a space so
|
|
26
|
+
* embedded \t and \n become collapsible whitespace rather than
|
|
27
|
+
* vanishing word-joins (e.g. "foo\tbar" must not become "foobar").
|
|
28
|
+
* - Strips Unicode bidi-override chars (RLO, LRO, RLI, LRI, FSI, PDI,
|
|
29
|
+
* BOM, RLM, LRM) to block label-spoofing attacks like USDC vs.
|
|
30
|
+
* "UCDSU".
|
|
31
|
+
* - Collapses internal whitespace runs into a single space and trims.
|
|
32
|
+
* - HTML-escapes &, <, >, ", ', /, `, = so the output is safe to drop
|
|
33
|
+
* into both element bodies and unquoted attribute contexts.
|
|
34
|
+
* - Truncates at `maxLength` characters (default 64).
|
|
35
|
+
*/
|
|
36
|
+
export declare function escapeTokenDisplay(raw: unknown, maxLength?: number): string;
|
|
37
|
+
/**
|
|
38
|
+
* Format a balance with a fixed maximum number of fractional digits
|
|
39
|
+
* for display. Defends against deceptive UIs that show "1.23 USDC"
|
|
40
|
+
* when the actual amount is "1.23000000001 USDC" (off-by-rounding
|
|
41
|
+
* attack vector during approve/transfer).
|
|
42
|
+
*/
|
|
43
|
+
export declare function formatBalance(args: {
|
|
44
|
+
value: bigint;
|
|
45
|
+
decimals: number;
|
|
46
|
+
displayDecimals?: number;
|
|
47
|
+
}): string;
|
|
48
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAkBA,qEAAqE;AACrE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKpE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkBnE;AAED,6CAA6C;AAC7C,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAiC,CAAC;AAC9E,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAAgC,CAAC;AAI5E;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,IAAI,SAAI,GAAG,MAAM,CAQvE;AAmCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,SAAS,SAAK,GACb,MAAM,CAaR;AAID;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,CAmBT"}
|
package/dist/format.js
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API surface for @droplinked_inc/web3-kit.
|
|
3
|
+
*
|
|
4
|
+
* Hardened rebuild of droplinked-web3-kit@1.0.13. See THREAT_MODEL.md
|
|
5
|
+
* for the security deltas, README.md for the migration guide.
|
|
6
|
+
*
|
|
7
|
+
* Wallet protocol primitives (EIP-1193 provider discovery, EIP-712
|
|
8
|
+
* login signing, session storage, …) are NOT reimplemented here —
|
|
9
|
+
* they live in `@droplinked_inc/wallet-connection`, declared as a
|
|
10
|
+
* peer dependency.
|
|
11
|
+
*/
|
|
12
|
+
export { Chains, Network, Groups, Actions, NFTType, ProductType, PaymentTokens, ZERO_ADDRESS, ChainsSchema, NetworkSchema, GroupsSchema, PaymentTokensSchema, EvmAddressSchema, HexStringSchema, Uint256Schema, ChainPaymentSchema, PurchaseSignatureSchema, PurchaseConfirmationDataSchema, type EvmAddress, type Uint256, type IChainPayment, type PurchaseSignature, } from './types.js';
|
|
13
|
+
export { Web3KitError, ChainException, ChainNotImplementedException, InvalidParametersException, UnauthorizedAccessException, MetadataUploadFailedException, WalletException, WalletNotFoundException, WalletNotInstalledException, NoAccountsFoundException, AccountAccessDeniedException, UserDeniedException, NotSupportedException, ChainNotSupportedException, TokenNotSupportedException, ProviderException, ChainSwitchException, ActionException, InitializationException, InsufficientBalanceException, ActionNotImplementedException, Web3CallbackFailedException, TokenAddressMismatchError, UnknownTokenError, } from './errors.js';
|
|
14
|
+
export { chains, getChainByName, getGroupOfChain, isChainInGroup, getChainsByGroup, getChainDetails, isRpcUrlAllowed, getTransactionLink, type Chain, type ChainDetails, type ChainNativeCurrency, } from './chains.js';
|
|
15
|
+
export { TOKEN_REGISTRY, getTokenInfo, hasToken, listTokens, assertCanonicalTokenAddress, type TokenInfo, } from './tokens.js';
|
|
16
|
+
export { formatAmount, parseAmount, formatEther, parseEther, shortenAddress, escapeTokenDisplay, formatBalance, } from './format.js';
|
|
17
|
+
export { buildErc20Transfer, buildErc20Approve, buildNativeTransfer, buildEip712Domain, type BuiltCall, type Erc20TransferArgs, type Eip712Domain, } from './tx-builder.js';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,8BAA8B,EAC9B,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,6BAA6B,EAC7B,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,MAAM,EACN,cAAc,EACd,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,2BAA2B,EAC3B,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,GACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public API surface for @droplinked_inc/web3-kit.
|
|
3
|
+
*
|
|
4
|
+
* Hardened rebuild of droplinked-web3-kit@1.0.13. See THREAT_MODEL.md
|
|
5
|
+
* for the security deltas, README.md for the migration guide.
|
|
6
|
+
*
|
|
7
|
+
* Wallet protocol primitives (EIP-1193 provider discovery, EIP-712
|
|
8
|
+
* login signing, session storage, …) are NOT reimplemented here —
|
|
9
|
+
* they live in `@droplinked_inc/wallet-connection`, declared as a
|
|
10
|
+
* peer dependency.
|
|
11
|
+
*/
|
|
12
|
+
/* -------------------------------- types ----------------------------------- */
|
|
13
|
+
export { Chains, Network, Groups, Actions, NFTType, ProductType, PaymentTokens, ZERO_ADDRESS, ChainsSchema, NetworkSchema, GroupsSchema, PaymentTokensSchema, EvmAddressSchema, HexStringSchema, Uint256Schema, ChainPaymentSchema, PurchaseSignatureSchema, PurchaseConfirmationDataSchema, } from './types.js';
|
|
14
|
+
/* -------------------------------- errors ---------------------------------- */
|
|
15
|
+
export { Web3KitError, ChainException, ChainNotImplementedException, InvalidParametersException, UnauthorizedAccessException, MetadataUploadFailedException, WalletException, WalletNotFoundException, WalletNotInstalledException, NoAccountsFoundException, AccountAccessDeniedException, UserDeniedException, NotSupportedException, ChainNotSupportedException, TokenNotSupportedException, ProviderException, ChainSwitchException, ActionException, InitializationException, InsufficientBalanceException, ActionNotImplementedException, Web3CallbackFailedException, TokenAddressMismatchError, UnknownTokenError, } from './errors.js';
|
|
16
|
+
/* -------------------------------- chains ---------------------------------- */
|
|
17
|
+
export { chains, getChainByName, getGroupOfChain, isChainInGroup, getChainsByGroup, getChainDetails, isRpcUrlAllowed, getTransactionLink, } from './chains.js';
|
|
18
|
+
/* -------------------------------- tokens ---------------------------------- */
|
|
19
|
+
export { TOKEN_REGISTRY, getTokenInfo, hasToken, listTokens, assertCanonicalTokenAddress, } from './tokens.js';
|
|
20
|
+
/* -------------------------------- format ---------------------------------- */
|
|
21
|
+
export { formatAmount, parseAmount, formatEther, parseEther, shortenAddress, escapeTokenDisplay, formatBalance, } from './format.js';
|
|
22
|
+
/* ------------------------------ tx-builder -------------------------------- */
|
|
23
|
+
export { buildErc20Transfer, buildErc20Approve, buildNativeTransfer, buildEip712Domain, } from './tx-builder.js';
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,gFAAgF;AAChF,OAAO,EACL,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,EACP,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,8BAA8B,GAK/B,MAAM,YAAY,CAAC;AAEpB,gFAAgF;AAChF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,4BAA4B,EAC5B,0BAA0B,EAC1B,2BAA2B,EAC3B,6BAA6B,EAC7B,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,wBAAwB,EACxB,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,OAAO,EACL,MAAM,EACN,cAAc,EACd,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,kBAAkB,GAInB,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,2BAA2B,GAE5B,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,gFAAgF;AAChF,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAIlB,MAAM,iBAAiB,CAAC"}
|
package/dist/tokens.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hard-coded registry of vetted token contract addresses per chain.
|
|
3
|
+
*
|
|
4
|
+
* The single most important defence in this package: when a caller
|
|
5
|
+
* (e.g. a checkout component) says "the user is paying in USDC on
|
|
6
|
+
* Polygon", the address used in the on-chain call MUST come from this
|
|
7
|
+
* table — never from a backend response, never from a URL parameter,
|
|
8
|
+
* never from local storage. Every address has been cross-checked
|
|
9
|
+
* against the chain's canonical block explorer and the issuer's
|
|
10
|
+
* authoritative documentation.
|
|
11
|
+
*
|
|
12
|
+
* If a caller supplies their own address for a known symbol via
|
|
13
|
+
* `assertCanonicalTokenAddress`, the address is compared (case-
|
|
14
|
+
* insensitive) against the registry and rejected on mismatch with
|
|
15
|
+
* `TokenAddressMismatchError`. This blocks the "passing a malicious
|
|
16
|
+
* token addr that mimics USDC" class of supply-chain attacks.
|
|
17
|
+
*/
|
|
18
|
+
import { Chains, Network, type EvmAddress } from './types.js';
|
|
19
|
+
export interface TokenInfo {
|
|
20
|
+
/** Canonical short symbol (uppercase). */
|
|
21
|
+
readonly symbol: string;
|
|
22
|
+
/** Human-readable name. Safe-rendered by `escapeTokenDisplay`. */
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly decimals: number;
|
|
25
|
+
readonly address: EvmAddress;
|
|
26
|
+
}
|
|
27
|
+
type TokenRegistry = Readonly<Record<Chains, Partial<Record<Network, Readonly<Record<string, TokenInfo>>>>>>;
|
|
28
|
+
/**
|
|
29
|
+
* The frozen registry. Entries here are the authoritative truth.
|
|
30
|
+
*
|
|
31
|
+
* Sources:
|
|
32
|
+
* - USDC: Circle's canonical contract list (circle.com / developers.circle.com)
|
|
33
|
+
* - USDT: Tether's published contracts (tether.to/transparency)
|
|
34
|
+
* - DAI: MakerDAO's canonical deployments
|
|
35
|
+
* - WETH: chain-native wrappers from each ecosystem's docs
|
|
36
|
+
*/
|
|
37
|
+
export declare const TOKEN_REGISTRY: TokenRegistry;
|
|
38
|
+
export declare function getTokenInfo(chain: Chains, network: Network, symbol: string): TokenInfo;
|
|
39
|
+
export declare function hasToken(chain: Chains, network: Network, symbol: string): boolean;
|
|
40
|
+
export declare function listTokens(chain: Chains, network: Network): readonly TokenInfo[];
|
|
41
|
+
/**
|
|
42
|
+
* If `claimedAddress` is provided, assert it matches the canonical
|
|
43
|
+
* registry value for `symbol` on the given (chain, network). On match,
|
|
44
|
+
* returns the canonical `TokenInfo`. On mismatch — even of one nibble
|
|
45
|
+
* — throws `TokenAddressMismatchError`.
|
|
46
|
+
*
|
|
47
|
+
* If `claimedAddress` is omitted, returns the canonical entry.
|
|
48
|
+
*
|
|
49
|
+
* This is the primary call-site for blocking the "look-alike USDC
|
|
50
|
+
* drainer" class of attacks: a malicious backend cannot persuade the
|
|
51
|
+
* checkout to send funds to its address by claiming "this is USDC".
|
|
52
|
+
*/
|
|
53
|
+
export declare function assertCanonicalTokenAddress(args: {
|
|
54
|
+
chain: Chains;
|
|
55
|
+
network: Network;
|
|
56
|
+
symbol: string;
|
|
57
|
+
claimedAddress?: string;
|
|
58
|
+
}): TokenInfo;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAO9D,MAAM,WAAW,SAAS;IACxB,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAED,KAAK,aAAa,GAAG,QAAQ,CAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9E,CAAC;AAIF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,aAsI3B,CAAC;AAEH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACb,SAAS,CASX;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAOT;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,SAAS,SAAS,EAAE,CAItB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,SAAS,CAsBZ"}
|