@shadow-corp/nearconnect 1.0.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/README.md +546 -0
- package/build/InjectedWallet.d.ts +22 -0
- package/build/InjectedWallet.js +58 -0
- package/build/InjectedWallet.js.map +1 -0
- package/build/NearConnector.d.ts +151 -0
- package/build/NearConnector.js +536 -0
- package/build/NearConnector.js.map +1 -0
- package/build/ParentFrameWallet.d.ts +22 -0
- package/build/ParentFrameWallet.js +66 -0
- package/build/ParentFrameWallet.js.map +1 -0
- package/build/SandboxedWallet/code.d.ts +7 -0
- package/build/SandboxedWallet/code.js +324 -0
- package/build/SandboxedWallet/code.js.map +1 -0
- package/build/SandboxedWallet/executor.d.ts +23 -0
- package/build/SandboxedWallet/executor.js +338 -0
- package/build/SandboxedWallet/executor.js.map +1 -0
- package/build/SandboxedWallet/iframe.d.ts +18 -0
- package/build/SandboxedWallet/iframe.js +78 -0
- package/build/SandboxedWallet/iframe.js.map +1 -0
- package/build/SandboxedWallet/index.d.ts +24 -0
- package/build/SandboxedWallet/index.js +54 -0
- package/build/SandboxedWallet/index.js.map +1 -0
- package/build/actions/index.d.ts +3 -0
- package/build/actions/index.js +105 -0
- package/build/actions/index.js.map +1 -0
- package/build/actions/types.d.ts +76 -0
- package/build/actions/types.js +3 -0
- package/build/actions/types.js.map +1 -0
- package/build/connection/health.d.ts +213 -0
- package/build/connection/health.js +391 -0
- package/build/connection/health.js.map +1 -0
- package/build/connection/index.d.ts +4 -0
- package/build/connection/index.js +48 -0
- package/build/connection/index.js.map +1 -0
- package/build/connection/reconnect.d.ts +261 -0
- package/build/connection/reconnect.js +454 -0
- package/build/connection/reconnect.js.map +1 -0
- package/build/connection/retry.d.ts +187 -0
- package/build/connection/retry.js +427 -0
- package/build/connection/retry.js.map +1 -0
- package/build/connection/state.d.ts +222 -0
- package/build/connection/state.js +431 -0
- package/build/connection/state.js.map +1 -0
- package/build/errors.d.ts +177 -0
- package/build/errors.js +546 -0
- package/build/errors.js.map +1 -0
- package/build/hardware/errors.d.ts +36 -0
- package/build/hardware/errors.js +127 -0
- package/build/hardware/errors.js.map +1 -0
- package/build/hardware/index.d.ts +7 -0
- package/build/hardware/index.js +39 -0
- package/build/hardware/index.js.map +1 -0
- package/build/hardware/near-app.d.ts +95 -0
- package/build/hardware/near-app.js +291 -0
- package/build/hardware/near-app.js.map +1 -0
- package/build/hardware/transport.d.ts +94 -0
- package/build/hardware/transport.js +267 -0
- package/build/hardware/transport.js.map +1 -0
- package/build/hardware/types.d.ts +98 -0
- package/build/hardware/types.js +72 -0
- package/build/hardware/types.js.map +1 -0
- package/build/helpers/analytics.d.ts +191 -0
- package/build/helpers/analytics.js +304 -0
- package/build/helpers/analytics.js.map +1 -0
- package/build/helpers/base58.d.ts +6 -0
- package/build/helpers/base58.js +47 -0
- package/build/helpers/base58.js.map +1 -0
- package/build/helpers/events.d.ts +42 -0
- package/build/helpers/events.js +68 -0
- package/build/helpers/events.js.map +1 -0
- package/build/helpers/html.d.ts +8 -0
- package/build/helpers/html.js +30 -0
- package/build/helpers/html.js.map +1 -0
- package/build/helpers/indexdb.d.ts +14 -0
- package/build/helpers/indexdb.js +166 -0
- package/build/helpers/indexdb.js.map +1 -0
- package/build/helpers/manifest.d.ts +147 -0
- package/build/helpers/manifest.js +329 -0
- package/build/helpers/manifest.js.map +1 -0
- package/build/helpers/queue.d.ts +11 -0
- package/build/helpers/queue.js +48 -0
- package/build/helpers/queue.js.map +1 -0
- package/build/helpers/session.d.ts +119 -0
- package/build/helpers/session.js +289 -0
- package/build/helpers/session.js.map +1 -0
- package/build/helpers/simulation.d.ts +128 -0
- package/build/helpers/simulation.js +441 -0
- package/build/helpers/simulation.js.map +1 -0
- package/build/helpers/storage.d.ts +58 -0
- package/build/helpers/storage.js +190 -0
- package/build/helpers/storage.js.map +1 -0
- package/build/helpers/trust.d.ts +157 -0
- package/build/helpers/trust.js +340 -0
- package/build/helpers/trust.js.map +1 -0
- package/build/helpers/url.d.ts +1 -0
- package/build/helpers/url.js +13 -0
- package/build/helpers/url.js.map +1 -0
- package/build/helpers/uuid.d.ts +1 -0
- package/build/helpers/uuid.js +14 -0
- package/build/helpers/uuid.js.map +1 -0
- package/build/index.d.ts +21 -0
- package/build/index.js +167 -0
- package/build/index.js.map +1 -0
- package/build/popups/IframeWalletPopup.d.ts +16 -0
- package/build/popups/IframeWalletPopup.js +38 -0
- package/build/popups/IframeWalletPopup.js.map +1 -0
- package/build/popups/NearWalletsPopup.d.ts +25 -0
- package/build/popups/NearWalletsPopup.js +153 -0
- package/build/popups/NearWalletsPopup.js.map +1 -0
- package/build/popups/Popup.d.ts +22 -0
- package/build/popups/Popup.js +94 -0
- package/build/popups/Popup.js.map +1 -0
- package/build/popups/styles.d.ts +1 -0
- package/build/popups/styles.js +257 -0
- package/build/popups/styles.js.map +1 -0
- package/build/security/audit-log.d.ts +123 -0
- package/build/security/audit-log.js +268 -0
- package/build/security/audit-log.js.map +1 -0
- package/build/security/csp.d.ts +68 -0
- package/build/security/csp.js +328 -0
- package/build/security/csp.js.map +1 -0
- package/build/security/index.d.ts +10 -0
- package/build/security/index.js +42 -0
- package/build/security/index.js.map +1 -0
- package/build/security/origin-guard.d.ts +90 -0
- package/build/security/origin-guard.js +244 -0
- package/build/security/origin-guard.js.map +1 -0
- package/build/security/rate-limiter.d.ts +84 -0
- package/build/security/rate-limiter.js +212 -0
- package/build/security/rate-limiter.js.map +1 -0
- package/build/security/secure-storage.d.ts +77 -0
- package/build/security/secure-storage.js +242 -0
- package/build/security/secure-storage.js.map +1 -0
- package/build/security/transaction-guard.d.ts +71 -0
- package/build/security/transaction-guard.js +239 -0
- package/build/security/transaction-guard.js.map +1 -0
- package/build/types.d.ts +508 -0
- package/build/types.js +3 -0
- package/build/types.js.map +1 -0
- package/build/ui/AccountSwitcherModal.d.ts +53 -0
- package/build/ui/AccountSwitcherModal.js +239 -0
- package/build/ui/AccountSwitcherModal.js.map +1 -0
- package/build/ui/Modal.d.ts +84 -0
- package/build/ui/Modal.js +278 -0
- package/build/ui/Modal.js.map +1 -0
- package/build/ui/TransactionModal.d.ts +84 -0
- package/build/ui/TransactionModal.js +406 -0
- package/build/ui/TransactionModal.js.map +1 -0
- package/build/ui/WalletSelectorModal.d.ts +97 -0
- package/build/ui/WalletSelectorModal.js +481 -0
- package/build/ui/WalletSelectorModal.js.map +1 -0
- package/build/ui/icons.d.ts +19 -0
- package/build/ui/icons.js +65 -0
- package/build/ui/icons.js.map +1 -0
- package/build/ui/index.d.ts +10 -0
- package/build/ui/index.js +31 -0
- package/build/ui/index.js.map +1 -0
- package/build/ui/styles.d.ts +5 -0
- package/build/ui/styles.js +973 -0
- package/build/ui/styles.js.map +1 -0
- package/build/ui/theme.d.ts +133 -0
- package/build/ui/theme.js +204 -0
- package/build/ui/theme.js.map +1 -0
- package/build/wallets/external/index.d.ts +4 -0
- package/build/wallets/external/index.js +9 -0
- package/build/wallets/external/index.js.map +1 -0
- package/build/wallets/external/manager.d.ts +152 -0
- package/build/wallets/external/manager.js +586 -0
- package/build/wallets/external/manager.js.map +1 -0
- package/build/wallets/privileged/index.d.ts +5 -0
- package/build/wallets/privileged/index.js +12 -0
- package/build/wallets/privileged/index.js.map +1 -0
- package/build/wallets/privileged/ledger.d.ts +132 -0
- package/build/wallets/privileged/ledger.js +563 -0
- package/build/wallets/privileged/ledger.js.map +1 -0
- package/build/wallets/privileged/manager.d.ts +54 -0
- package/build/wallets/privileged/manager.js +174 -0
- package/build/wallets/privileged/manager.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Transaction Verification Layer
|
|
4
|
+
* Analyzes transactions for risks before signing
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TransactionGuard = void 0;
|
|
8
|
+
exports.createDefaultTransactionGuard = createDefaultTransactionGuard;
|
|
9
|
+
/** Methods that grant significant account control */
|
|
10
|
+
const DANGEROUS_METHODS = [
|
|
11
|
+
'add_full_access_key',
|
|
12
|
+
'delete_account',
|
|
13
|
+
'deploy',
|
|
14
|
+
'add_key',
|
|
15
|
+
'delete_key',
|
|
16
|
+
];
|
|
17
|
+
/** Known scam contracts - maintained from community reports */
|
|
18
|
+
const KNOWN_SCAM_CONTRACTS = new Set([
|
|
19
|
+
// Add known scam contracts here
|
|
20
|
+
]);
|
|
21
|
+
/** Suspicious patterns in function call arguments */
|
|
22
|
+
const SUSPICIOUS_PATTERNS = [
|
|
23
|
+
/add_full_access_key/i,
|
|
24
|
+
/delete_account/i,
|
|
25
|
+
/\.near['"]?\s*:/, // Hidden account references
|
|
26
|
+
/base64/i, // Encoded payloads that might hide malicious intent
|
|
27
|
+
];
|
|
28
|
+
class TransactionGuard {
|
|
29
|
+
limits;
|
|
30
|
+
customScamContracts;
|
|
31
|
+
constructor(limits = {}) {
|
|
32
|
+
this.limits = limits;
|
|
33
|
+
this.customScamContracts = new Set();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Add custom scam contracts to the blocklist
|
|
37
|
+
*/
|
|
38
|
+
addScamContract(contractId) {
|
|
39
|
+
this.customScamContracts.add(contractId);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Remove a contract from the custom blocklist
|
|
43
|
+
*/
|
|
44
|
+
removeScamContract(contractId) {
|
|
45
|
+
this.customScamContracts.delete(contractId);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Update transaction limits
|
|
49
|
+
*/
|
|
50
|
+
updateLimits(limits) {
|
|
51
|
+
this.limits = { ...this.limits, ...limits };
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Analyze transaction for risks before signing
|
|
55
|
+
*/
|
|
56
|
+
analyzeRisk(tx) {
|
|
57
|
+
const reasons = [];
|
|
58
|
+
let level = 'low';
|
|
59
|
+
// Check receiver against known scams
|
|
60
|
+
if (KNOWN_SCAM_CONTRACTS.has(tx.receiverId) || this.customScamContracts.has(tx.receiverId)) {
|
|
61
|
+
reasons.push(`Receiver ${tx.receiverId} is a known scam contract`);
|
|
62
|
+
level = 'critical';
|
|
63
|
+
}
|
|
64
|
+
// Check receiver against blocklist
|
|
65
|
+
if (this.limits.blockedReceivers?.includes(tx.receiverId)) {
|
|
66
|
+
reasons.push(`Receiver ${tx.receiverId} is blocked`);
|
|
67
|
+
level = 'critical';
|
|
68
|
+
}
|
|
69
|
+
// Check receiver against allowlist
|
|
70
|
+
if (this.limits.allowedReceivers?.length &&
|
|
71
|
+
!this.limits.allowedReceivers.includes(tx.receiverId)) {
|
|
72
|
+
reasons.push(`Receiver ${tx.receiverId} is not in allowlist`);
|
|
73
|
+
level = this.escalate(level, 'medium');
|
|
74
|
+
}
|
|
75
|
+
// Check each action
|
|
76
|
+
for (const action of tx.actions) {
|
|
77
|
+
const actionRisk = this.analyzeAction(action, tx.receiverId);
|
|
78
|
+
reasons.push(...actionRisk.reasons);
|
|
79
|
+
level = this.escalate(level, actionRisk.level);
|
|
80
|
+
}
|
|
81
|
+
return {
|
|
82
|
+
level,
|
|
83
|
+
reasons,
|
|
84
|
+
requiresExplicitApproval: level === 'high' || level === 'critical' || this.limits.requireConfirmation === true,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
analyzeAction(action, _receiverId) {
|
|
88
|
+
const reasons = [];
|
|
89
|
+
let level = 'low';
|
|
90
|
+
// Handle both action formats (near-wallet-selector and near-api-js)
|
|
91
|
+
const actionType = 'type' in action ? action.type : action.enum;
|
|
92
|
+
const params = 'params' in action ? action.params : action;
|
|
93
|
+
switch (actionType) {
|
|
94
|
+
case 'Transfer': {
|
|
95
|
+
const deposit = params?.deposit;
|
|
96
|
+
const amount = BigInt(deposit || '0');
|
|
97
|
+
if (this.limits.maxTransferAmount && amount > this.limits.maxTransferAmount) {
|
|
98
|
+
reasons.push(`Transfer amount exceeds configured limit`);
|
|
99
|
+
level = 'high';
|
|
100
|
+
}
|
|
101
|
+
// Large transfers (>100 NEAR)
|
|
102
|
+
const hundredNear = BigInt('100000000000000000000000000');
|
|
103
|
+
if (amount > hundredNear) {
|
|
104
|
+
reasons.push(`Large transfer: ${this.formatNear(amount)} NEAR`);
|
|
105
|
+
level = this.escalate(level, 'medium');
|
|
106
|
+
}
|
|
107
|
+
// Very large transfers (>1000 NEAR)
|
|
108
|
+
const thousandNear = BigInt('1000000000000000000000000000');
|
|
109
|
+
if (amount > thousandNear) {
|
|
110
|
+
reasons.push(`Very large transfer: ${this.formatNear(amount)} NEAR`);
|
|
111
|
+
level = this.escalate(level, 'high');
|
|
112
|
+
}
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
case 'FunctionCall': {
|
|
116
|
+
const methodName = params?.methodName || '';
|
|
117
|
+
const gas = params?.gas;
|
|
118
|
+
const args = params?.args;
|
|
119
|
+
// Check dangerous methods
|
|
120
|
+
if (DANGEROUS_METHODS.includes(methodName)) {
|
|
121
|
+
reasons.push(`Dangerous method: ${methodName}`);
|
|
122
|
+
level = 'critical';
|
|
123
|
+
}
|
|
124
|
+
// Check blocked methods
|
|
125
|
+
if (this.limits.blockedMethods?.includes(methodName)) {
|
|
126
|
+
reasons.push(`Method ${methodName} is blocked`);
|
|
127
|
+
level = 'critical';
|
|
128
|
+
}
|
|
129
|
+
// Check method allowlist
|
|
130
|
+
if (this.limits.allowedMethods?.length &&
|
|
131
|
+
!this.limits.allowedMethods.includes(methodName)) {
|
|
132
|
+
reasons.push(`Method ${methodName} is not in allowlist`);
|
|
133
|
+
level = this.escalate(level, 'medium');
|
|
134
|
+
}
|
|
135
|
+
// Check gas limits
|
|
136
|
+
if (gas && this.limits.maxGasPerAction) {
|
|
137
|
+
const gasAmount = BigInt(gas);
|
|
138
|
+
if (gasAmount > this.limits.maxGasPerAction) {
|
|
139
|
+
reasons.push(`Gas exceeds configured limit`);
|
|
140
|
+
level = this.escalate(level, 'medium');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Check for suspicious patterns in args
|
|
144
|
+
if (args && this.containsSuspiciousPatterns(JSON.stringify(args))) {
|
|
145
|
+
reasons.push('Arguments contain suspicious patterns');
|
|
146
|
+
level = this.escalate(level, 'high');
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
case 'AddKey': {
|
|
151
|
+
const accessKey = params?.accessKey;
|
|
152
|
+
const permission = accessKey?.permission;
|
|
153
|
+
if (permission === 'FullAccess' || (typeof permission === 'object' && 'fullAccess' in permission)) {
|
|
154
|
+
reasons.push('Adding full access key - grants complete account control');
|
|
155
|
+
level = 'critical';
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
reasons.push('Adding function call access key');
|
|
159
|
+
level = this.escalate(level, 'medium');
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
case 'DeleteKey': {
|
|
164
|
+
reasons.push('Deleting access key');
|
|
165
|
+
level = this.escalate(level, 'high');
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case 'DeleteAccount': {
|
|
169
|
+
reasons.push('Deleting account - this action is irreversible');
|
|
170
|
+
level = 'critical';
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case 'DeployContract': {
|
|
174
|
+
reasons.push('Deploying contract code to account');
|
|
175
|
+
level = 'critical';
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case 'Stake': {
|
|
179
|
+
reasons.push('Staking NEAR tokens');
|
|
180
|
+
level = this.escalate(level, 'medium');
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
case 'CreateAccount': {
|
|
184
|
+
reasons.push('Creating new account');
|
|
185
|
+
level = this.escalate(level, 'low');
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return { level, reasons, requiresExplicitApproval: level !== 'low' };
|
|
190
|
+
}
|
|
191
|
+
containsSuspiciousPatterns(str) {
|
|
192
|
+
return SUSPICIOUS_PATTERNS.some(pattern => pattern.test(str));
|
|
193
|
+
}
|
|
194
|
+
escalate(current, proposed) {
|
|
195
|
+
const levels = ['low', 'medium', 'high', 'critical'];
|
|
196
|
+
return levels.indexOf(proposed) > levels.indexOf(current) ? proposed : current;
|
|
197
|
+
}
|
|
198
|
+
formatNear(yocto) {
|
|
199
|
+
return (Number(yocto) / 1e24).toFixed(2);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Validate transaction can proceed (returns false for critical risks)
|
|
203
|
+
*/
|
|
204
|
+
validate(tx) {
|
|
205
|
+
const risk = this.analyzeRisk(tx);
|
|
206
|
+
if (risk.level === 'critical') {
|
|
207
|
+
return {
|
|
208
|
+
valid: false,
|
|
209
|
+
error: `Transaction blocked: ${risk.reasons.join(', ')}`,
|
|
210
|
+
risk,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
return { valid: true, risk };
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get human-readable risk description
|
|
217
|
+
*/
|
|
218
|
+
getRiskDescription(risk) {
|
|
219
|
+
const levelDescriptions = {
|
|
220
|
+
low: 'This transaction appears safe.',
|
|
221
|
+
medium: 'This transaction has some risk factors. Review carefully.',
|
|
222
|
+
high: 'This transaction has significant risks. Proceed with caution.',
|
|
223
|
+
critical: 'This transaction is potentially dangerous and has been blocked.',
|
|
224
|
+
};
|
|
225
|
+
return levelDescriptions[risk.level];
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
exports.TransactionGuard = TransactionGuard;
|
|
229
|
+
/**
|
|
230
|
+
* Create a TransactionGuard with default safe limits
|
|
231
|
+
*/
|
|
232
|
+
function createDefaultTransactionGuard() {
|
|
233
|
+
return new TransactionGuard({
|
|
234
|
+
maxTransferAmount: BigInt('1000000000000000000000000000'), // 1000 NEAR
|
|
235
|
+
blockedMethods: DANGEROUS_METHODS,
|
|
236
|
+
requireConfirmation: true,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=transaction-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction-guard.js","sourceRoot":"","sources":["../../src/security/transaction-guard.ts"],"names":[],"mappings":"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"}
|