@dynamic-labs/global-wallet 4.0.0-alpha.5 → 4.0.0-alpha.51
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/package.cjs +8 -0
- package/package.js +4 -0
- package/package.json +6 -12
- package/src/GlobalWalletConnector.cjs +43 -16
- package/src/GlobalWalletConnector.js +43 -16
- package/src/index.cjs +3 -1
- package/src/index.js +4 -0
package/package.cjs
ADDED
package/package.js
ADDED
package/package.json
CHANGED
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/global-wallet",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
4
|
-
"repository": {
|
|
5
|
-
"type": "git",
|
|
6
|
-
"url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
|
|
7
|
-
"directory": "packages/global-wallet"
|
|
8
|
-
},
|
|
3
|
+
"version": "4.0.0-alpha.51",
|
|
9
4
|
"description": "A React SDK for implementing wallet web3 authentication and authorization to your website.",
|
|
10
|
-
"bugs": {
|
|
11
|
-
"url": "https://github.com/dynamic-labs/DynamicAuth/issues"
|
|
12
|
-
},
|
|
13
|
-
"homepage": "https://github.com/dynamic-labs/DynamicAuth#readme",
|
|
14
5
|
"author": "Dynamic Labs, Inc.",
|
|
15
6
|
"license": "MIT",
|
|
16
7
|
"main": "./index.cjs",
|
|
@@ -25,15 +16,18 @@
|
|
|
25
16
|
},
|
|
26
17
|
"./package.json": "./package.json"
|
|
27
18
|
},
|
|
19
|
+
"homepage": "https://www.dynamic.xyz/",
|
|
28
20
|
"dependencies": {
|
|
29
21
|
"@walletconnect/core": "2.13.1",
|
|
30
22
|
"@walletconnect/utils": "2.13.1",
|
|
31
23
|
"@walletconnect/web3wallet": "1.12.1",
|
|
32
24
|
"jsqr": "1.4.0",
|
|
33
|
-
"@dynamic-labs/
|
|
25
|
+
"@dynamic-labs/assert-package-version": "4.0.0-alpha.51",
|
|
26
|
+
"@dynamic-labs/ethereum-core": "4.0.0-alpha.51",
|
|
27
|
+
"@dynamic-labs/wallet-connector-core": "4.0.0-alpha.51"
|
|
34
28
|
},
|
|
35
29
|
"peerDependencies": {
|
|
36
|
-
"viem": "^2.7.
|
|
30
|
+
"viem": "^2.7.12",
|
|
37
31
|
"react": "^18.0.0"
|
|
38
32
|
}
|
|
39
33
|
}
|
|
@@ -7,8 +7,9 @@ var _tslib = require('../_virtual/_tslib.cjs');
|
|
|
7
7
|
var core = require('@walletconnect/core');
|
|
8
8
|
var utils = require('@walletconnect/utils');
|
|
9
9
|
var web3wallet = require('@walletconnect/web3wallet');
|
|
10
|
-
var viem = require('viem');
|
|
11
10
|
var jsQR = require('jsqr');
|
|
11
|
+
var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
|
|
12
|
+
var ethereumCore = require('@dynamic-labs/ethereum-core');
|
|
12
13
|
|
|
13
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
14
15
|
|
|
@@ -42,6 +43,7 @@ const GlobalWalletExtension = {
|
|
|
42
43
|
let web3wallet$1;
|
|
43
44
|
let WCListenersOn = false;
|
|
44
45
|
let pendingSessionProposal;
|
|
46
|
+
let signer = (yield connector.getSigner());
|
|
45
47
|
const globalWallet = {
|
|
46
48
|
confirmPairing: (confirm) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
47
49
|
const { params, id } = pendingSessionProposal;
|
|
@@ -108,16 +110,18 @@ const GlobalWalletExtension = {
|
|
|
108
110
|
const { request, chainId } = params;
|
|
109
111
|
// since we cant listen to chain events from the dapp, just change when a request comes in
|
|
110
112
|
const [requestParamsMessage, typedDataToSign] = request.params;
|
|
111
|
-
const signer = (yield connector.getSigner());
|
|
112
113
|
const handleRequest = (handler) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
114
|
+
let response;
|
|
113
115
|
try {
|
|
116
|
+
// tell wallet ui utils that the transaction is coming from global connectivity
|
|
117
|
+
// so we can force the confirmation ui to be on
|
|
114
118
|
connector.isGlobalTransaction = true;
|
|
115
119
|
const result = yield handler();
|
|
116
|
-
|
|
117
|
-
return { id, jsonrpc: '2.0', result };
|
|
120
|
+
response = { id, jsonrpc: '2.0', result };
|
|
118
121
|
}
|
|
119
122
|
catch (e) {
|
|
120
|
-
|
|
123
|
+
walletConnectorCore.logger.error('Error listening to session request', e);
|
|
124
|
+
response = {
|
|
121
125
|
error: {
|
|
122
126
|
code: 5000,
|
|
123
127
|
message: 'User rejected.',
|
|
@@ -126,28 +130,51 @@ const GlobalWalletExtension = {
|
|
|
126
130
|
jsonrpc: '2.0',
|
|
127
131
|
};
|
|
128
132
|
}
|
|
133
|
+
finally {
|
|
134
|
+
connector.isGlobalTransaction = false;
|
|
135
|
+
}
|
|
136
|
+
return response;
|
|
129
137
|
});
|
|
130
138
|
let response;
|
|
131
|
-
|
|
132
|
-
|
|
139
|
+
const handleEthSignTypedDataV4 = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
140
|
+
return handleRequest(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
133
141
|
return signer.signTypedData(Object.assign(Object.assign({}, JSON.parse(typedDataToSign)), { account: requestParamsMessage }));
|
|
134
142
|
}));
|
|
135
|
-
}
|
|
136
|
-
|
|
143
|
+
});
|
|
144
|
+
const handlePersonalSign = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
137
145
|
const message = Buffer.from(requestParamsMessage.slice(2), 'hex').toString('utf8');
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
|
|
146
|
+
return handleRequest(() => connector.signMessage(message));
|
|
147
|
+
});
|
|
148
|
+
const handleEthSendTransaction = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
141
149
|
if (chainId) {
|
|
142
150
|
yield connector.switchNetwork({
|
|
143
151
|
networkChainId: chainId.split(':')[1],
|
|
144
152
|
});
|
|
145
153
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
154
|
+
// sometimes the signer is undefined at initialization
|
|
155
|
+
if (!signer) {
|
|
156
|
+
signer = (yield connector.getSigner());
|
|
157
|
+
}
|
|
158
|
+
return handleRequest(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
159
|
+
const estimatedFeesPerGas = yield (yield connector.getPublicClient()).estimateFeesPerGas();
|
|
160
|
+
const type = (estimatedFeesPerGas === null || estimatedFeesPerGas === void 0 ? void 0 : estimatedFeesPerGas.maxFeePerGas)
|
|
161
|
+
? 'eip1559'
|
|
162
|
+
: 'legacy';
|
|
163
|
+
return signer.sendTransaction(ethereumCore.unFormatTransaction(Object.assign(Object.assign({}, requestParamsMessage), {
|
|
164
|
+
// strip the gasPrice if it should be a eip1559 tx or tx will fail
|
|
165
|
+
gasPrice: estimatedFeesPerGas && estimatedFeesPerGas.maxFeePerGas
|
|
166
|
+
? undefined
|
|
167
|
+
: requestParamsMessage.gasPrice, type, value: requestParamsMessage.value })));
|
|
150
168
|
}));
|
|
169
|
+
});
|
|
170
|
+
if (request.method === 'eth_signTypedData_v4') {
|
|
171
|
+
response = yield handleEthSignTypedDataV4();
|
|
172
|
+
}
|
|
173
|
+
else if (request.method === 'personal_sign') {
|
|
174
|
+
response = yield handlePersonalSign();
|
|
175
|
+
}
|
|
176
|
+
else if (request.method === 'eth_sendTransaction') {
|
|
177
|
+
response = yield handleEthSendTransaction();
|
|
151
178
|
}
|
|
152
179
|
if (response) {
|
|
153
180
|
yield web3wallet$1.respondSessionRequest({
|
|
@@ -3,8 +3,9 @@ import { __awaiter } from '../_virtual/_tslib.js';
|
|
|
3
3
|
import { Core } from '@walletconnect/core';
|
|
4
4
|
import { getSdkError, buildApprovedNamespaces } from '@walletconnect/utils';
|
|
5
5
|
import { Web3Wallet } from '@walletconnect/web3wallet';
|
|
6
|
-
import { fromHex } from 'viem';
|
|
7
6
|
import jsQR from 'jsqr';
|
|
7
|
+
import { logger } from '@dynamic-labs/wallet-connector-core';
|
|
8
|
+
import { unFormatTransaction } from '@dynamic-labs/ethereum-core';
|
|
8
9
|
|
|
9
10
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
10
11
|
const buildCombinedNamespaces = (params) => {
|
|
@@ -34,6 +35,7 @@ const GlobalWalletExtension = {
|
|
|
34
35
|
let web3wallet;
|
|
35
36
|
let WCListenersOn = false;
|
|
36
37
|
let pendingSessionProposal;
|
|
38
|
+
let signer = (yield connector.getSigner());
|
|
37
39
|
const globalWallet = {
|
|
38
40
|
confirmPairing: (confirm) => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
41
|
const { params, id } = pendingSessionProposal;
|
|
@@ -100,16 +102,18 @@ const GlobalWalletExtension = {
|
|
|
100
102
|
const { request, chainId } = params;
|
|
101
103
|
// since we cant listen to chain events from the dapp, just change when a request comes in
|
|
102
104
|
const [requestParamsMessage, typedDataToSign] = request.params;
|
|
103
|
-
const signer = (yield connector.getSigner());
|
|
104
105
|
const handleRequest = (handler) => __awaiter(void 0, void 0, void 0, function* () {
|
|
106
|
+
let response;
|
|
105
107
|
try {
|
|
108
|
+
// tell wallet ui utils that the transaction is coming from global connectivity
|
|
109
|
+
// so we can force the confirmation ui to be on
|
|
106
110
|
connector.isGlobalTransaction = true;
|
|
107
111
|
const result = yield handler();
|
|
108
|
-
|
|
109
|
-
return { id, jsonrpc: '2.0', result };
|
|
112
|
+
response = { id, jsonrpc: '2.0', result };
|
|
110
113
|
}
|
|
111
114
|
catch (e) {
|
|
112
|
-
|
|
115
|
+
logger.error('Error listening to session request', e);
|
|
116
|
+
response = {
|
|
113
117
|
error: {
|
|
114
118
|
code: 5000,
|
|
115
119
|
message: 'User rejected.',
|
|
@@ -118,28 +122,51 @@ const GlobalWalletExtension = {
|
|
|
118
122
|
jsonrpc: '2.0',
|
|
119
123
|
};
|
|
120
124
|
}
|
|
125
|
+
finally {
|
|
126
|
+
connector.isGlobalTransaction = false;
|
|
127
|
+
}
|
|
128
|
+
return response;
|
|
121
129
|
});
|
|
122
130
|
let response;
|
|
123
|
-
|
|
124
|
-
|
|
131
|
+
const handleEthSignTypedDataV4 = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
132
|
+
return handleRequest(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
125
133
|
return signer.signTypedData(Object.assign(Object.assign({}, JSON.parse(typedDataToSign)), { account: requestParamsMessage }));
|
|
126
134
|
}));
|
|
127
|
-
}
|
|
128
|
-
|
|
135
|
+
});
|
|
136
|
+
const handlePersonalSign = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
129
137
|
const message = Buffer.from(requestParamsMessage.slice(2), 'hex').toString('utf8');
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
|
|
138
|
+
return handleRequest(() => connector.signMessage(message));
|
|
139
|
+
});
|
|
140
|
+
const handleEthSendTransaction = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
133
141
|
if (chainId) {
|
|
134
142
|
yield connector.switchNetwork({
|
|
135
143
|
networkChainId: chainId.split(':')[1],
|
|
136
144
|
});
|
|
137
145
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
146
|
+
// sometimes the signer is undefined at initialization
|
|
147
|
+
if (!signer) {
|
|
148
|
+
signer = (yield connector.getSigner());
|
|
149
|
+
}
|
|
150
|
+
return handleRequest(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
151
|
+
const estimatedFeesPerGas = yield (yield connector.getPublicClient()).estimateFeesPerGas();
|
|
152
|
+
const type = (estimatedFeesPerGas === null || estimatedFeesPerGas === void 0 ? void 0 : estimatedFeesPerGas.maxFeePerGas)
|
|
153
|
+
? 'eip1559'
|
|
154
|
+
: 'legacy';
|
|
155
|
+
return signer.sendTransaction(unFormatTransaction(Object.assign(Object.assign({}, requestParamsMessage), {
|
|
156
|
+
// strip the gasPrice if it should be a eip1559 tx or tx will fail
|
|
157
|
+
gasPrice: estimatedFeesPerGas && estimatedFeesPerGas.maxFeePerGas
|
|
158
|
+
? undefined
|
|
159
|
+
: requestParamsMessage.gasPrice, type, value: requestParamsMessage.value })));
|
|
142
160
|
}));
|
|
161
|
+
});
|
|
162
|
+
if (request.method === 'eth_signTypedData_v4') {
|
|
163
|
+
response = yield handleEthSignTypedDataV4();
|
|
164
|
+
}
|
|
165
|
+
else if (request.method === 'personal_sign') {
|
|
166
|
+
response = yield handlePersonalSign();
|
|
167
|
+
}
|
|
168
|
+
else if (request.method === 'eth_sendTransaction') {
|
|
169
|
+
response = yield handleEthSendTransaction();
|
|
143
170
|
}
|
|
144
171
|
if (response) {
|
|
145
172
|
yield web3wallet.respondSessionRequest({
|
package/src/index.cjs
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
5
|
|
|
6
|
+
var assertPackageVersion = require('@dynamic-labs/assert-package-version');
|
|
7
|
+
var _package = require('../package.cjs');
|
|
6
8
|
var GlobalWalletConnector = require('./GlobalWalletConnector.cjs');
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
assertPackageVersion.assertPackageVersion('@dynamic-labs/global-wallet', _package.version);
|
|
9
11
|
|
|
10
12
|
exports.GlobalWalletExtension = GlobalWalletConnector.GlobalWalletExtension;
|
|
11
13
|
exports.buildCombinedNamespaces = GlobalWalletConnector.buildCombinedNamespaces;
|
package/src/index.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
'use client'
|
|
2
|
+
import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
|
|
3
|
+
import { version } from '../package.js';
|
|
2
4
|
export { GlobalWalletExtension, buildCombinedNamespaces } from './GlobalWalletConnector.js';
|
|
5
|
+
|
|
6
|
+
assertPackageVersion('@dynamic-labs/global-wallet', version);
|