@ksangkuk10/wallet-controller 1.7.14
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 +7 -0
- package/_commonjs/controller.js +704 -0
- package/_commonjs/env.js +9 -0
- package/_commonjs/exception/isError.js +15 -0
- package/_commonjs/exception/mapExtensionTxError.js +46 -0
- package/_commonjs/exception/mapWalletConnectError.js +69 -0
- package/_commonjs/getChainOptions.js +57 -0
- package/_commonjs/index.js +22 -0
- package/_commonjs/modules/connect-modal/index.js +80 -0
- package/_commonjs/modules/connect-modal/style.js +161 -0
- package/_commonjs/modules/extension-router/ExtensionRouter.js +241 -0
- package/_commonjs/modules/extension-router/index.js +19 -0
- package/_commonjs/modules/extension-router/modal.js +80 -0
- package/_commonjs/modules/extension-router/modal.style.js +161 -0
- package/_commonjs/modules/extension-router/multiChannel.js +18 -0
- package/_commonjs/modules/extension-router/session.js +37 -0
- package/_commonjs/modules/extension-router/types.js +16 -0
- package/_commonjs/modules/legacy-extension/LegacyExtensionConnector.js +143 -0
- package/_commonjs/modules/legacy-extension/createFixedExtension.js +236 -0
- package/_commonjs/modules/legacy-extension/index.js +19 -0
- package/_commonjs/modules/readonly-wallet/connect.js +24 -0
- package/_commonjs/modules/readonly-wallet/index.js +20 -0
- package/_commonjs/modules/readonly-wallet/modal.js +123 -0
- package/_commonjs/modules/readonly-wallet/modal.style.js +204 -0
- package/_commonjs/modules/readonly-wallet/storage.js +40 -0
- package/_commonjs/modules/readonly-wallet/types.js +3 -0
- package/_commonjs/modules/walletconnect/connect.js +421 -0
- package/_commonjs/modules/walletconnect/errors.js +51 -0
- package/_commonjs/modules/walletconnect/impl/socket-transport/index.js +204 -0
- package/_commonjs/modules/walletconnect/impl/socket-transport/network.js +30 -0
- package/_commonjs/modules/walletconnect/index.js +22 -0
- package/_commonjs/modules/walletconnect/modal.js +147 -0
- package/_commonjs/modules/walletconnect/modal.style.js +138 -0
- package/_commonjs/modules/walletconnect/types.js +13 -0
- package/_commonjs/operators/getExtensions.js +55 -0
- package/_commonjs/operators/toConnectedWallet.js +24 -0
- package/_commonjs/operators/toLcdClient.js +15 -0
- package/_commonjs/utils/browser-check.js +47 -0
- package/_commonjs/utils/checkExtensionReady.js +28 -0
- package/_commonjs/utils/sortConnections.js +13 -0
- package/_commonjs/verifyBytes.js +19 -0
- package/controller.d.ts +220 -0
- package/controller.js +697 -0
- package/env.d.ts +2 -0
- package/env.js +5 -0
- package/exception/isError.d.ts +3 -0
- package/exception/isError.js +11 -0
- package/exception/mapExtensionTxError.d.ts +5 -0
- package/exception/mapExtensionTxError.js +41 -0
- package/exception/mapWalletConnectError.d.ts +6 -0
- package/exception/mapWalletConnectError.js +63 -0
- package/getChainOptions.d.ts +3 -0
- package/getChainOptions.js +53 -0
- package/index.d.ts +6 -0
- package/index.js +6 -0
- package/modules/connect-modal/index.d.ts +2 -0
- package/modules/connect-modal/index.js +76 -0
- package/modules/connect-modal/style.d.ts +1 -0
- package/modules/connect-modal/style.js +158 -0
- package/modules/extension-router/ExtensionRouter.d.ts +43 -0
- package/modules/extension-router/ExtensionRouter.js +237 -0
- package/modules/extension-router/index.d.ts +2 -0
- package/modules/extension-router/index.js +3 -0
- package/modules/extension-router/modal.d.ts +2 -0
- package/modules/extension-router/modal.js +76 -0
- package/modules/extension-router/modal.style.d.ts +1 -0
- package/modules/extension-router/modal.style.js +158 -0
- package/modules/extension-router/multiChannel.d.ts +13 -0
- package/modules/extension-router/multiChannel.js +14 -0
- package/modules/extension-router/session.d.ts +8 -0
- package/modules/extension-router/session.js +31 -0
- package/modules/extension-router/types.d.ts +35 -0
- package/modules/extension-router/types.js +13 -0
- package/modules/legacy-extension/LegacyExtensionConnector.d.ts +30 -0
- package/modules/legacy-extension/LegacyExtensionConnector.js +139 -0
- package/modules/legacy-extension/createFixedExtension.d.ts +46 -0
- package/modules/legacy-extension/createFixedExtension.js +232 -0
- package/modules/legacy-extension/index.d.ts +2 -0
- package/modules/legacy-extension/index.js +3 -0
- package/modules/readonly-wallet/connect.d.ts +8 -0
- package/modules/readonly-wallet/connect.js +19 -0
- package/modules/readonly-wallet/index.d.ts +3 -0
- package/modules/readonly-wallet/index.js +4 -0
- package/modules/readonly-wallet/modal.d.ts +7 -0
- package/modules/readonly-wallet/modal.js +119 -0
- package/modules/readonly-wallet/modal.style.d.ts +1 -0
- package/modules/readonly-wallet/modal.style.js +201 -0
- package/modules/readonly-wallet/storage.d.ts +4 -0
- package/modules/readonly-wallet/storage.js +34 -0
- package/modules/readonly-wallet/types.d.ts +5 -0
- package/modules/readonly-wallet/types.js +2 -0
- package/modules/walletconnect/connect.d.ts +42 -0
- package/modules/walletconnect/connect.js +390 -0
- package/modules/walletconnect/errors.d.ts +22 -0
- package/modules/walletconnect/errors.js +41 -0
- package/modules/walletconnect/impl/socket-transport/index.d.ts +39 -0
- package/modules/walletconnect/impl/socket-transport/index.js +199 -0
- package/modules/walletconnect/impl/socket-transport/network.d.ts +8 -0
- package/modules/walletconnect/impl/socket-transport/network.js +28 -0
- package/modules/walletconnect/index.d.ts +5 -0
- package/modules/walletconnect/index.js +6 -0
- package/modules/walletconnect/modal.d.ts +12 -0
- package/modules/walletconnect/modal.js +143 -0
- package/modules/walletconnect/modal.style.d.ts +1 -0
- package/modules/walletconnect/modal.style.js +135 -0
- package/modules/walletconnect/types.d.ts +24 -0
- package/modules/walletconnect/types.js +10 -0
- package/operators/getExtensions.d.ts +9 -0
- package/operators/getExtensions.js +51 -0
- package/operators/toConnectedWallet.d.ts +4 -0
- package/operators/toConnectedWallet.js +20 -0
- package/operators/toLcdClient.d.ts +4 -0
- package/operators/toLcdClient.js +11 -0
- package/package.json +550 -0
- package/utils/browser-check.d.ts +3 -0
- package/utils/browser-check.js +38 -0
- package/utils/checkExtensionReady.d.ts +6 -0
- package/utils/checkExtensionReady.js +24 -0
- package/utils/sortConnections.d.ts +2 -0
- package/utils/sortConnections.js +9 -0
- package/verifyBytes.d.ts +4 -0
- package/verifyBytes.js +15 -0
- package/~/.npm/_cacache/content-v2/sha512/ad/b5/8c87dfae7c208906a88f1997b323933e7efb4e481bcfdc559cb13199d077e1b40abcb161561a293ca59cd98aae224cd0877555e6e7a2e11021bc55ebedf4 +0 -0
- package/~/.npm/_cacache/index-v5/6a/39/c03f62d7353a7cc1411e180ec37c393f9fedcfd081fa567f67bf32e6fb68 +2 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import { WalletApp } from '@ksangkuk10/wallet-types';
|
|
2
|
+
import Connector from '@walletconnect/core';
|
|
3
|
+
import * as cryptoLib from '@walletconnect/iso-crypto';
|
|
4
|
+
import { uuid } from '@walletconnect/utils';
|
|
5
|
+
import { BehaviorSubject } from 'rxjs';
|
|
6
|
+
import { isMobile } from '../../utils/browser-check';
|
|
7
|
+
import { WalletConnectCreateTxFailed, WalletConnectTimeout, WalletConnectTxFailed, WalletConnectTxUnspecifiedError, WalletConnectUserDenied, WalletConnectSignUnspecifiedError, WalletConnectSignBytesUnspecifiedError } from './errors';
|
|
8
|
+
import SocketTransport from './impl/socket-transport';
|
|
9
|
+
import { XplaWalletconnectQrcodeModal } from './modal';
|
|
10
|
+
import { WalletConnectSessionStatus, } from './types';
|
|
11
|
+
const WALLETCONNECT_STORAGE_KEY = 'walletconnect';
|
|
12
|
+
export function connectIfSessionExists(options = {}) {
|
|
13
|
+
const storedSession = localStorage.getItem(WALLETCONNECT_STORAGE_KEY);
|
|
14
|
+
if (typeof storedSession === 'string') {
|
|
15
|
+
return connect(options, true);
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
export function connect(options = {}, useCachedSession = false, walletApp) {
|
|
20
|
+
var _a, _b;
|
|
21
|
+
let connector = null;
|
|
22
|
+
let sessionSubject = new BehaviorSubject({
|
|
23
|
+
status: WalletConnectSessionStatus.DISCONNECTED,
|
|
24
|
+
});
|
|
25
|
+
const qrcodeModal = (_b = (_a = options.connectorOpts) === null || _a === void 0 ? void 0 : _a.qrcodeModal) !== null && _b !== void 0 ? _b : new XplaWalletconnectQrcodeModal(walletApp);
|
|
26
|
+
const connectorOpts = {
|
|
27
|
+
bridge: 'https://walletconnect.xpla.io/',
|
|
28
|
+
qrcodeModal,
|
|
29
|
+
...options.connectorOpts,
|
|
30
|
+
};
|
|
31
|
+
const pushServerOpts = options.pushServerOpts;
|
|
32
|
+
// ---------------------------------------------
|
|
33
|
+
// event listeners
|
|
34
|
+
// ---------------------------------------------
|
|
35
|
+
function initEvents() {
|
|
36
|
+
if (!connector) {
|
|
37
|
+
throw new Error(`WalletConnect is not defined!`);
|
|
38
|
+
}
|
|
39
|
+
connector.on('session_update', async (error, payload) => {
|
|
40
|
+
if (error)
|
|
41
|
+
throw error;
|
|
42
|
+
sessionSubject.next({
|
|
43
|
+
status: WalletConnectSessionStatus.CONNECTED,
|
|
44
|
+
peerMeta: payload.params[0].peerMeta,
|
|
45
|
+
xplaAddress: payload.params[0].accounts[0],
|
|
46
|
+
chainId: payload.params[0].chainId,
|
|
47
|
+
});
|
|
48
|
+
console.log('WALLETCONNECT SESSION UPDATED:', payload.params[0]);
|
|
49
|
+
});
|
|
50
|
+
connector.on('connect', (error, payload) => {
|
|
51
|
+
if (error)
|
|
52
|
+
throw error;
|
|
53
|
+
sessionSubject.next({
|
|
54
|
+
status: WalletConnectSessionStatus.CONNECTED,
|
|
55
|
+
peerMeta: payload.params[0].peerMeta,
|
|
56
|
+
xplaAddress: payload.params[0].accounts[0],
|
|
57
|
+
chainId: payload.params[0].chainId,
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
connector.on('disconnect', (error, payload) => {
|
|
61
|
+
if (error)
|
|
62
|
+
throw error;
|
|
63
|
+
sessionSubject.next({
|
|
64
|
+
status: WalletConnectSessionStatus.DISCONNECTED,
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// ---------------------------------------------
|
|
69
|
+
// initialize
|
|
70
|
+
// ---------------------------------------------
|
|
71
|
+
const cachedSession = localStorage.getItem('walletconnect');
|
|
72
|
+
if (typeof cachedSession === 'string' && useCachedSession) {
|
|
73
|
+
const cachedSessionObject = JSON.parse(cachedSession);
|
|
74
|
+
const clientId = cachedSessionObject.clientId;
|
|
75
|
+
const draftConnector = new Connector({
|
|
76
|
+
connectorOpts: {
|
|
77
|
+
...connectorOpts,
|
|
78
|
+
session: JSON.parse(cachedSession),
|
|
79
|
+
},
|
|
80
|
+
pushServerOpts,
|
|
81
|
+
cryptoLib,
|
|
82
|
+
transport: new SocketTransport({
|
|
83
|
+
protocol: 'wc',
|
|
84
|
+
version: 1,
|
|
85
|
+
url: connectorOpts.bridge,
|
|
86
|
+
subscriptions: [clientId],
|
|
87
|
+
}),
|
|
88
|
+
});
|
|
89
|
+
draftConnector.clientId = clientId;
|
|
90
|
+
connector = draftConnector;
|
|
91
|
+
initEvents();
|
|
92
|
+
sessionSubject.next({
|
|
93
|
+
status: WalletConnectSessionStatus.CONNECTED,
|
|
94
|
+
peerMeta: draftConnector.peerMeta,
|
|
95
|
+
xplaAddress: draftConnector.accounts[0],
|
|
96
|
+
chainId: draftConnector.chainId,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const clientId = uuid();
|
|
101
|
+
const draftConnector = new Connector({
|
|
102
|
+
connectorOpts,
|
|
103
|
+
pushServerOpts,
|
|
104
|
+
cryptoLib,
|
|
105
|
+
transport: new SocketTransport({
|
|
106
|
+
protocol: 'wc',
|
|
107
|
+
version: 1,
|
|
108
|
+
url: connectorOpts.bridge,
|
|
109
|
+
subscriptions: [clientId],
|
|
110
|
+
}),
|
|
111
|
+
});
|
|
112
|
+
draftConnector.clientId = clientId;
|
|
113
|
+
connector = draftConnector;
|
|
114
|
+
if (!draftConnector.connected) {
|
|
115
|
+
draftConnector.createSession().catch(console.error);
|
|
116
|
+
if (qrcodeModal instanceof XplaWalletconnectQrcodeModal) {
|
|
117
|
+
qrcodeModal.setCloseCallback(() => {
|
|
118
|
+
sessionSubject.next({
|
|
119
|
+
status: WalletConnectSessionStatus.DISCONNECTED,
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
initEvents();
|
|
124
|
+
sessionSubject.next({
|
|
125
|
+
status: WalletConnectSessionStatus.REQUESTED,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// ---------------------------------------------
|
|
130
|
+
// methods
|
|
131
|
+
// ---------------------------------------------
|
|
132
|
+
function disconnect() {
|
|
133
|
+
if (connector && connector.connected) {
|
|
134
|
+
try {
|
|
135
|
+
connector.killSession();
|
|
136
|
+
}
|
|
137
|
+
catch (_a) { }
|
|
138
|
+
}
|
|
139
|
+
sessionSubject.next({
|
|
140
|
+
status: WalletConnectSessionStatus.DISCONNECTED,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function session() {
|
|
144
|
+
return sessionSubject.asObservable();
|
|
145
|
+
}
|
|
146
|
+
function getLatestSession() {
|
|
147
|
+
return sessionSubject.getValue();
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* post transaction
|
|
151
|
+
*
|
|
152
|
+
* @param tx transaction data
|
|
153
|
+
* @param walletApp wallet type, default is XPLA Vault
|
|
154
|
+
* @throws { WalletConnectUserDenied }
|
|
155
|
+
* @throws { WalletConnectCreateTxFailed }
|
|
156
|
+
* @throws { WalletConnectTxFailed }
|
|
157
|
+
* @throws { WalletConnectTimeout }
|
|
158
|
+
* @throws { WalletConnectTxUnspecifiedError }
|
|
159
|
+
*/
|
|
160
|
+
function post(tx, _walletApp) {
|
|
161
|
+
var _a, _b, _c;
|
|
162
|
+
if (!connector || !connector.connected) {
|
|
163
|
+
throw new Error(`WalletConnect is not connected!`);
|
|
164
|
+
}
|
|
165
|
+
const id = Date.now();
|
|
166
|
+
const serializedTxOptions = {
|
|
167
|
+
msgs: tx.msgs.map((msg) => msg.toJSON()),
|
|
168
|
+
fee: (_a = tx.fee) === null || _a === void 0 ? void 0 : _a.toJSON(),
|
|
169
|
+
memo: tx.memo,
|
|
170
|
+
gas: tx.gas,
|
|
171
|
+
gasPrices: (_b = tx.gasPrices) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
172
|
+
gasAdjustment: (_c = tx.gasAdjustment) === null || _c === void 0 ? void 0 : _c.toString(),
|
|
173
|
+
//account_number: tx.account_number,
|
|
174
|
+
//sequence: tx.sequence,
|
|
175
|
+
feeDenoms: tx.feeDenoms,
|
|
176
|
+
timeoutHeight: tx.timeoutHeight,
|
|
177
|
+
};
|
|
178
|
+
if (isMobile()) {
|
|
179
|
+
const payload = btoa(JSON.stringify({
|
|
180
|
+
id,
|
|
181
|
+
handshakeTopic: connector.handshakeTopic,
|
|
182
|
+
method: 'post',
|
|
183
|
+
params: serializedTxOptions,
|
|
184
|
+
}));
|
|
185
|
+
confirm(payload, walletApp);
|
|
186
|
+
}
|
|
187
|
+
return connector
|
|
188
|
+
.sendCustomRequest({
|
|
189
|
+
id,
|
|
190
|
+
method: 'post',
|
|
191
|
+
params: [serializedTxOptions],
|
|
192
|
+
})
|
|
193
|
+
.catch((error) => {
|
|
194
|
+
let throwError = error;
|
|
195
|
+
try {
|
|
196
|
+
const { code, txhash, message, raw_message } = JSON.parse(error.message);
|
|
197
|
+
switch (code) {
|
|
198
|
+
case 1:
|
|
199
|
+
throwError = new WalletConnectUserDenied();
|
|
200
|
+
break;
|
|
201
|
+
case 2:
|
|
202
|
+
throwError = new WalletConnectCreateTxFailed(message);
|
|
203
|
+
break;
|
|
204
|
+
case 3:
|
|
205
|
+
throwError = new WalletConnectTxFailed(txhash, message, raw_message);
|
|
206
|
+
break;
|
|
207
|
+
case 4:
|
|
208
|
+
throwError = new WalletConnectTimeout(message);
|
|
209
|
+
break;
|
|
210
|
+
case 99:
|
|
211
|
+
throwError = new WalletConnectTxUnspecifiedError(message);
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch (_a) {
|
|
216
|
+
throwError = new WalletConnectTxUnspecifiedError(error.message);
|
|
217
|
+
}
|
|
218
|
+
throw throwError;
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* sign transaction
|
|
223
|
+
*
|
|
224
|
+
* @param bytes: Buffer
|
|
225
|
+
* @param walletApp wallet type, default is XPLA Vault
|
|
226
|
+
* @throws { WalletConnectUserDenied }
|
|
227
|
+
* @throws { WalletConnectTimeout }
|
|
228
|
+
* @throws { WalletConnectSignBytesUnspecifiedError }
|
|
229
|
+
*/
|
|
230
|
+
function sign(tx, _walletApp) {
|
|
231
|
+
var _a, _b, _c;
|
|
232
|
+
if (!connector || !connector.connected) {
|
|
233
|
+
throw new Error(`WalletConnect is not connected!`);
|
|
234
|
+
}
|
|
235
|
+
const id = Date.now();
|
|
236
|
+
const serializedTxOptions = {
|
|
237
|
+
msgs: tx.msgs.map((msg) => msg.toJSON()),
|
|
238
|
+
fee: (_a = tx.fee) === null || _a === void 0 ? void 0 : _a.toJSON(),
|
|
239
|
+
memo: tx.memo,
|
|
240
|
+
gas: tx.gas,
|
|
241
|
+
gasPrices: (_b = tx.gasPrices) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
242
|
+
gasAdjustment: (_c = tx.gasAdjustment) === null || _c === void 0 ? void 0 : _c.toString(),
|
|
243
|
+
//account_number: tx.account_number,
|
|
244
|
+
//sequence: tx.sequence,
|
|
245
|
+
feeDenoms: tx.feeDenoms,
|
|
246
|
+
timeoutHeight: tx.timeoutHeight,
|
|
247
|
+
sequence: tx.sequence,
|
|
248
|
+
accountNumber: tx.accountNumber,
|
|
249
|
+
signMode: tx.signMode
|
|
250
|
+
};
|
|
251
|
+
if (isMobile()) {
|
|
252
|
+
const payload = btoa(JSON.stringify({
|
|
253
|
+
id,
|
|
254
|
+
handshakeTopic: connector.handshakeTopic,
|
|
255
|
+
method: 'sign',
|
|
256
|
+
params: serializedTxOptions,
|
|
257
|
+
}));
|
|
258
|
+
confirm(payload, _walletApp);
|
|
259
|
+
}
|
|
260
|
+
return connector
|
|
261
|
+
.sendCustomRequest({
|
|
262
|
+
id,
|
|
263
|
+
method: 'sign',
|
|
264
|
+
params: [serializedTxOptions],
|
|
265
|
+
})
|
|
266
|
+
.catch((error) => {
|
|
267
|
+
let throwError = error;
|
|
268
|
+
try {
|
|
269
|
+
const { code, txhash, message, raw_message } = JSON.parse(error.message);
|
|
270
|
+
switch (code) {
|
|
271
|
+
case 1:
|
|
272
|
+
throwError = new WalletConnectUserDenied();
|
|
273
|
+
break;
|
|
274
|
+
case 2:
|
|
275
|
+
throwError = new WalletConnectCreateTxFailed(message);
|
|
276
|
+
break;
|
|
277
|
+
case 3:
|
|
278
|
+
throwError = new WalletConnectTxFailed(txhash, message, raw_message);
|
|
279
|
+
break;
|
|
280
|
+
case 4:
|
|
281
|
+
throwError = new WalletConnectTimeout(message);
|
|
282
|
+
break;
|
|
283
|
+
case 99:
|
|
284
|
+
throwError = new WalletConnectSignUnspecifiedError(message);
|
|
285
|
+
break;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
catch (_a) {
|
|
289
|
+
throwError = new WalletConnectSignUnspecifiedError(error.message);
|
|
290
|
+
}
|
|
291
|
+
throw throwError;
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* signBytes transaction
|
|
296
|
+
*
|
|
297
|
+
* @param bytes: Buffer
|
|
298
|
+
* @param bytes: WalletApp | boolean
|
|
299
|
+
* @throws { WalletConnectUserDenied }
|
|
300
|
+
* @throws { WalletConnectTimeout }
|
|
301
|
+
* @throws { WalletConnectSignBytesUnspecifiedError }
|
|
302
|
+
*/
|
|
303
|
+
function signBytes(bytes, _walletApp) {
|
|
304
|
+
if (!connector || !connector.connected) {
|
|
305
|
+
throw new Error(`WalletConnect is not connected!`);
|
|
306
|
+
}
|
|
307
|
+
const id = Date.now();
|
|
308
|
+
if (isMobile()) {
|
|
309
|
+
const payload = btoa(JSON.stringify({
|
|
310
|
+
id,
|
|
311
|
+
handshakeTopic: connector.handshakeTopic,
|
|
312
|
+
method: 'signBytes',
|
|
313
|
+
params: bytes,
|
|
314
|
+
}));
|
|
315
|
+
confirm(payload, _walletApp);
|
|
316
|
+
}
|
|
317
|
+
return connector
|
|
318
|
+
.sendCustomRequest({
|
|
319
|
+
id,
|
|
320
|
+
method: 'signBytes',
|
|
321
|
+
params: [bytes],
|
|
322
|
+
})
|
|
323
|
+
.catch((error) => {
|
|
324
|
+
let throwError = error;
|
|
325
|
+
try {
|
|
326
|
+
const { code, message } = JSON.parse(error.message);
|
|
327
|
+
switch (code) {
|
|
328
|
+
case 1:
|
|
329
|
+
throwError = new WalletConnectUserDenied();
|
|
330
|
+
break;
|
|
331
|
+
case 4:
|
|
332
|
+
throwError = new WalletConnectTimeout(message);
|
|
333
|
+
break;
|
|
334
|
+
case 99:
|
|
335
|
+
throwError = new WalletConnectSignBytesUnspecifiedError(message);
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch (_a) {
|
|
340
|
+
throwError = new WalletConnectSignBytesUnspecifiedError(error.message);
|
|
341
|
+
}
|
|
342
|
+
throw throwError;
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* mobile confirm
|
|
347
|
+
*
|
|
348
|
+
* @param payload paylaod
|
|
349
|
+
* @param _walletApp wallet type, default is XPLA Vault
|
|
350
|
+
*/
|
|
351
|
+
function confirm(payload, _walletApp) {
|
|
352
|
+
if (!_walletApp || typeof _walletApp === 'boolean') {
|
|
353
|
+
if (_walletApp) {
|
|
354
|
+
window.location.href = `c2xvault://walletconnect_confirm/?payload=${payload}`;
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
window.location.href = `xplavault://walletconnect_confirm/?payload=${payload}`;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
else {
|
|
361
|
+
if (_walletApp === WalletApp.XPLA_VAULT) {
|
|
362
|
+
window.location.href = `xplavault://walletconnect_confirm/?payload=${payload}`;
|
|
363
|
+
}
|
|
364
|
+
else if (_walletApp === WalletApp.XPLA_GAMES) {
|
|
365
|
+
window.location.href = `c2xvault://walletconnect_confirm/?payload=${payload}`;
|
|
366
|
+
}
|
|
367
|
+
else if (_walletApp === WalletApp.XPLA_GAMES_NEW) {
|
|
368
|
+
window.location.href = `xgameswallet://walletconnect_confirm/?payload=${payload}`;
|
|
369
|
+
}
|
|
370
|
+
else if (_walletApp === WalletApp.XPLAYZ) {
|
|
371
|
+
window.location.href = `xplayz://walletconnect_confirm/?payload=${payload}`;
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
window.location.href = `xplavault://walletconnect_confirm/?payload=${payload}`;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
// ---------------------------------------------
|
|
379
|
+
// return
|
|
380
|
+
// ---------------------------------------------
|
|
381
|
+
return {
|
|
382
|
+
session,
|
|
383
|
+
getLatestSession,
|
|
384
|
+
post,
|
|
385
|
+
sign,
|
|
386
|
+
signBytes,
|
|
387
|
+
disconnect,
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9Aa3NhbmdrdWsxMC93YWxsZXQtY29udHJvbGxlci9tb2R1bGVzL3dhbGxldGNvbm5lY3QvY29ubmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxLQUFLLFNBQVMsTUFBTSwyQkFBMkIsQ0FBQztBQUt2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckQsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLCtCQUErQixFQUMvQix1QkFBdUIsRUFDdkIsaUNBQWlDLEVBQ2pDLHNDQUFzQyxFQUN2QyxNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLGVBQWUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkQsT0FBTyxFQUVMLDBCQUEwQixHQUUzQixNQUFNLFNBQVMsQ0FBQztBQTRDakIsTUFBTSx5QkFBeUIsR0FBRyxlQUFlLENBQUM7QUFFbEQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxVQUEwQyxFQUFFO0lBRTVDLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUV0RSxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsRUFBRTtRQUNyQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDL0I7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7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VHhPcHRpb25zLCBTaWduTW9kZSB9IGZyb20gJ0B4cGxhL3hwbGEuanMnO1xuaW1wb3J0IHsgV2FsbGV0QXBwIH0gZnJvbSAnQGtzYW5na3VrMTAvd2FsbGV0LXR5cGVzJztcbmltcG9ydCBDb25uZWN0b3IgZnJvbSAnQHdhbGxldGNvbm5lY3QvY29yZSc7XG5pbXBvcnQgKiBhcyBjcnlwdG9MaWIgZnJvbSAnQHdhbGxldGNvbm5lY3QvaXNvLWNyeXB0byc7XG5pbXBvcnQge1xuICBJUHVzaFNlcnZlck9wdGlvbnMsXG4gIElXYWxsZXRDb25uZWN0T3B0aW9ucyxcbn0gZnJvbSAnQHdhbGxldGNvbm5lY3QvdHlwZXMnO1xuaW1wb3J0IHsgdXVpZCB9IGZyb20gJ0B3YWxsZXRjb25uZWN0L3V0aWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgaXNNb2JpbGUgfSBmcm9tICcuLi8uLi91dGlscy9icm93c2VyLWNoZWNrJztcbmltcG9ydCB7XG4gIFdhbGxldENvbm5lY3RDcmVhdGVUeEZhaWxlZCxcbiAgV2FsbGV0Q29ubmVjdFRpbWVvdXQsXG4gIFdhbGxldENvbm5lY3RUeEZhaWxlZCxcbiAgV2FsbGV0Q29ubmVjdFR4VW5zcGVjaWZpZWRFcnJvcixcbiAgV2FsbGV0Q29ubmVjdFVzZXJEZW5pZWQsXG4gIFdhbGxldENvbm5lY3RTaWduVW5zcGVjaWZpZWRFcnJvcixcbiAgV2FsbGV0Q29ubmVjdFNpZ25CeXRlc1Vuc3BlY2lmaWVkRXJyb3Jcbn0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IFNvY2tldFRyYW5zcG9ydCBmcm9tICcuL2ltcGwvc29ja2V0LXRyYW5zcG9ydCc7XG5pbXBvcnQgeyBYcGxhV2FsbGV0Y29ubmVjdFFyY29kZU1vZGFsIH0gZnJvbSAnLi9tb2RhbCc7XG5pbXBvcnQge1xuICBXYWxsZXRDb25uZWN0U2Vzc2lvbixcbiAgV2FsbGV0Q29ubmVjdFNlc3Npb25TdGF0dXMsXG4gIFdhbGxldENvbm5lY3RUeFJlc3VsdCxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBXZWJFeHRlbnNpb25TaWduUGF5bG9hZCxcbiAgV2ViRXh0ZW5zaW9uU2lnbkJ5dGVzUGF5bG9hZCxcbn0gZnJvbSAnQGtzYW5na3VrMTAvd2ViLWV4dGVuc2lvbi1pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdhbGxldENvbm5lY3RDb250cm9sbGVyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIHBhcmFtZXRlciB0aGF0IGBuZXcgV2FsbGV0Q29ubmVjdChjb25uZWN0b3JPcHRzKWBcbiAgICpcbiAgICogQGRlZmF1bHRcbiAgICogYGBganNcbiAgICoge1xuICAgKiAgIGJyaWRnZTogJ2h0dHBzOi8vd2FsbGV0Y29ubmVjdC54cGxhLmlvLycsXG4gICAqICAgcXJjb2RlTW9kYWw6IG5ldyBYcGxhV2FsbGV0Y29ubmVjdFFyY29kZU1vZGFsKCksXG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBjb25uZWN0b3JPcHRzPzogSVdhbGxldENvbm5lY3RPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIHBhcmFtZXRlciB0aGF0IGBuZXcgV2FsbGV0Q29ubmVjdChfLCBwdXNoU2VydmVyT3B0cylgXG4gICAqXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKi9cbiAgcHVzaFNlcnZlck9wdHM/OiBJUHVzaFNlcnZlck9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FsbGV0Q29ubmVjdENvbnRyb2xsZXIge1xuICBzZXNzaW9uOiAoKSA9PiBPYnNlcnZhYmxlPFdhbGxldENvbm5lY3RTZXNzaW9uPjtcbiAgZ2V0TGF0ZXN0U2Vzc2lvbjogKCkgPT4gV2FsbGV0Q29ubmVjdFNlc3Npb247XG4gIHBvc3Q6ICh0eDogQ3JlYXRlVHhPcHRpb25zLCBfd2FsbGV0QXBwPzogV2FsbGV0QXBwIHwgYm9vbGVhbikgPT4gUHJvbWlzZTxXYWxsZXRDb25uZWN0VHhSZXN1bHQ+O1xuICBzaWduOiAoXG4gICAgdHg6IENyZWF0ZVR4T3B0aW9ucyAmIHtcbiAgICAgIHNlcXVlbmNlPzogbnVtYmVyO1xuICAgICAgYWNjb3VudE51bWJlcj86IG51bWJlcjtcbiAgICAgIHNpZ25Nb2RlPzogU2lnbk1vZGU7XG4gICAgfSwgXG4gICAgX3dhbGxldEFwcD86IFdhbGxldEFwcCB8IGJvb2xlYW5cbiAgKSA9PiBQcm9taXNlPFdlYkV4dGVuc2lvblNpZ25QYXlsb2FkPjtcbiAgc2lnbkJ5dGVzOiAoYnl0ZXM6IEJ1ZmZlciwgX3dhbGxldEFwcD86IFdhbGxldEFwcCB8IGJvb2xlYW4pID0+IFByb21pc2U8V2ViRXh0ZW5zaW9uU2lnbkJ5dGVzUGF5bG9hZD47XG4gIGRpc2Nvbm5lY3Q6ICgpID0+IHZvaWQ7XG59XG5cbmNvbnN0IFdBTExFVENPTk5FQ1RfU1RPUkFHRV9LRVkgPSAnd2FsbGV0Y29ubmVjdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25uZWN0SWZTZXNzaW9uRXhpc3RzKFxuICBvcHRpb25zOiBXYWxsZXRDb25uZWN0Q29udHJvbGxlck9wdGlvbnMgPSB7fSxcbik6IFdhbGxldENvbm5lY3RDb250cm9sbGVyIHwgbnVsbCB7XG4gIGNvbnN0IHN0b3JlZFNlc3Npb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShXQUxMRVRDT05ORUNUX1NUT1JBR0VfS0VZKTtcblxuICBpZiAodHlwZW9mIHN0b3JlZFNlc3Npb24gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGNvbm5lY3Qob3B0aW9ucywgdHJ1ZSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbm5lY3QoXG4gIG9wdGlvbnM6IFdhbGxldENvbm5lY3RDb250cm9sbGVyT3B0aW9ucyA9IHt9LFxuICB1c2VDYWNoZWRTZXNzaW9uOiBib29sZWFuID0gZmFsc2UsXG4gIHdhbGxldEFwcD86IFdhbGxldEFwcCB8IGJvb2xlYW5cbik6IFdhbGxldENvbm5lY3RDb250cm9sbGVyIHtcbiAgbGV0IGNvbm5lY3RvcjogQ29ubmVjdG9yIHwgbnVsbCA9IG51bGw7XG5cbiAgbGV0IHNlc3Npb25TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8V2FsbGV0Q29ubmVjdFNlc3Npb24+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PFdhbGxldENvbm5lY3RTZXNzaW9uPih7XG4gICAgICBzdGF0dXM6IFdhbGxldENvbm5lY3RTZXNzaW9uU3RhdHVzLkRJU0NPTk5FQ1RFRCxcbiAgICB9KTtcblxuICBjb25zdCBxcmNvZGVNb2RhbCA9XG4gICAgb3B0aW9ucy5jb25uZWN0b3JPcHRzPy5xcmNvZGVNb2RhbCA/PyBuZXcgWHBsYVdhbGxldGNvbm5lY3RRcmNvZGVNb2RhbCh3YWxsZXRBcHApO1xuXG4gIGNvbnN0IGNvbm5lY3Rvck9wdHM6IElXYWxsZXRDb25uZWN0T3B0aW9ucyA9IHtcbiAgICBicmlkZ2U6ICdodHRwczovL3dhbGxldGNvbm5lY3QueHBsYS5pby8nLFxuICAgIHFyY29kZU1vZGFsLFxuICAgIC4uLm9wdGlvbnMuY29ubmVjdG9yT3B0cyxcbiAgfTtcblxuICBjb25zdCBwdXNoU2VydmVyT3B0czogSVB1c2hTZXJ2ZXJPcHRpb25zIHwgdW5kZWZpbmVkID0gb3B0aW9ucy5wdXNoU2VydmVyT3B0cztcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gZXZlbnQgbGlzdGVuZXJzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBmdW5jdGlvbiBpbml0RXZlbnRzKCkge1xuICAgIGlmICghY29ubmVjdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdhbGxldENvbm5lY3QgaXMgbm90IGRlZmluZWQhYCk7XG4gICAgfVxuXG4gICAgY29ubmVjdG9yLm9uKCdzZXNzaW9uX3VwZGF0ZScsIGFzeW5jIChlcnJvciwgcGF5bG9hZCkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB0aHJvdyBlcnJvcjtcblxuICAgICAgc2Vzc2lvblN1YmplY3QubmV4dCh7XG4gICAgICAgIHN0YXR1czogV2FsbGV0Q29ubmVjdFNlc3Npb25TdGF0dXMuQ09OTkVDVEVELFxuICAgICAgICBwZWVyTWV0YTogcGF5bG9hZC5wYXJhbXNbMF0ucGVlck1ldGEsXG4gICAgICAgIHhwbGFBZGRyZXNzOiBwYXlsb2FkLnBhcmFtc1swXS5hY2NvdW50c1swXSxcbiAgICAgICAgY2hhaW5JZDogcGF5bG9hZC5wYXJhbXNbMF0uY2hhaW5JZCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zb2xlLmxvZygnV0FMTEVUQ09OTkVDVCBTRVNTSU9OIFVQREFURUQ6JywgcGF5bG9hZC5wYXJhbXNbMF0pO1xuICAgIH0pO1xuXG4gICAgY29ubmVjdG9yLm9uKCdjb25uZWN0JywgKGVycm9yLCBwYXlsb2FkKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xuXG4gICAgICBzZXNzaW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgc3RhdHVzOiBXYWxsZXRDb25uZWN0U2Vzc2lvblN0YXR1cy5DT05ORUNURUQsXG4gICAgICAgIHBlZXJNZXRhOiBwYXlsb2FkLnBhcmFtc1swXS5wZWVyTWV0YSxcbiAgICAgICAgeHBsYUFkZHJlc3M6IHBheWxvYWQucGFyYW1zWzBdLmFjY291bnRzWzBdLFxuICAgICAgICBjaGFpbklkOiBwYXlsb2FkLnBhcmFtc1swXS5jaGFpbklkLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25uZWN0b3Iub24oJ2Rpc2Nvbm5lY3QnLCAoZXJyb3IsIHBheWxvYWQpID0+IHtcbiAgICAgIGlmIChlcnJvcikgdGhyb3cgZXJyb3I7XG5cbiAgICAgIHNlc3Npb25TdWJqZWN0Lm5leHQoe1xuICAgICAgICBzdGF0dXM6IFdhbGxldENvbm5lY3RTZXNzaW9uU3RhdHVzLkRJU0NPTk5FQ1RFRCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIGluaXRpYWxpemVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGNvbnN0IGNhY2hlZFNlc3Npb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2FsbGV0Y29ubmVjdCcpO1xuXG4gIGlmICh0eXBlb2YgY2FjaGVkU2Vzc2lvbiA9PT0gJ3N0cmluZycgJiYgdXNlQ2FjaGVkU2Vzc2lvbikge1xuICAgIGNvbnN0IGNhY2hlZFNlc3Npb25PYmplY3QgPSBKU09OLnBhcnNlKGNhY2hlZFNlc3Npb24pO1xuICAgIGNvbnN0IGNsaWVudElkID0gY2FjaGVkU2Vzc2lvbk9iamVjdC5jbGllbnRJZDtcbiAgICBjb25zdCBkcmFmdENvbm5lY3RvciA9IG5ldyBDb25uZWN0b3Ioe1xuICAgICAgY29ubmVjdG9yT3B0czoge1xuICAgICAgICAuLi5jb25uZWN0b3JPcHRzLFxuICAgICAgICBzZXNzaW9uOiBKU09OLnBhcnNlKGNhY2hlZFNlc3Npb24pLFxuICAgICAgfSxcbiAgICAgIHB1c2hTZXJ2ZXJPcHRzLFxuICAgICAgY3J5cHRvTGliLFxuICAgICAgdHJhbnNwb3J0OiBuZXcgU29ja2V0VHJhbnNwb3J0KHtcbiAgICAgICAgcHJvdG9jb2w6ICd3YycsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIHVybDogY29ubmVjdG9yT3B0cy5icmlkZ2UhLFxuICAgICAgICBzdWJzY3JpcHRpb25zOiBbY2xpZW50SWRdLFxuICAgICAgfSksXG4gICAgfSk7XG4gICAgZHJhZnRDb25uZWN0b3IuY2xpZW50SWQgPSBjbGllbnRJZDtcblxuICAgIGNvbm5lY3RvciA9IGRyYWZ0Q29ubmVjdG9yO1xuXG4gICAgaW5pdEV2ZW50cygpO1xuXG4gICAgc2Vzc2lvblN1YmplY3QubmV4dCh7XG4gICAgICBzdGF0dXM6IFdhbGxldENvbm5lY3RTZXNzaW9uU3RhdHVzLkNPTk5FQ1RFRCxcbiAgICAgIHBlZXJNZXRhOiBkcmFmdENvbm5lY3Rvci5wZWVyTWV0YSEsXG4gICAgICB4cGxhQWRkcmVzczogZHJhZnRDb25uZWN0b3IuYWNjb3VudHNbMF0sXG4gICAgICBjaGFpbklkOiBkcmFmdENvbm5lY3Rvci5jaGFpbklkLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNsaWVudElkID0gdXVpZCgpO1xuICAgIGNvbnN0IGRyYWZ0Q29ubmVjdG9yID0gbmV3IENvbm5lY3Rvcih7XG4gICAgICBjb25uZWN0b3JPcHRzLFxuICAgICAgcHVzaFNlcnZlck9wdHMsXG4gICAgICBjcnlwdG9MaWIsXG4gICAgICB0cmFuc3BvcnQ6IG5ldyBTb2NrZXRUcmFuc3BvcnQoe1xuICAgICAgICBwcm90b2NvbDogJ3djJyxcbiAgICAgICAgdmVyc2lvbjogMSxcbiAgICAgICAgdXJsOiBjb25uZWN0b3JPcHRzLmJyaWRnZSEsXG4gICAgICAgIHN1YnNjcmlwdGlvbnM6IFtjbGllbnRJZF0sXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICBkcmFmdENvbm5lY3Rvci5jbGllbnRJZCA9IGNsaWVudElkO1xuXG4gICAgY29ubmVjdG9yID0gZHJhZnRDb25uZWN0b3I7XG5cbiAgICBpZiAoIWRyYWZ0Q29ubmVjdG9yLmNvbm5lY3RlZCkge1xuICAgICAgZHJhZnRDb25uZWN0b3IuY3JlYXRlU2Vzc2lvbigpLmNhdGNoKGNvbnNvbGUuZXJyb3IpO1xuXG4gICAgICBpZiAocXJjb2RlTW9kYWwgaW5zdGFuY2VvZiBYcGxhV2FsbGV0Y29ubmVjdFFyY29kZU1vZGFsKSB7XG4gICAgICAgIHFyY29kZU1vZGFsLnNldENsb3NlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICAgIHNlc3Npb25TdWJqZWN0Lm5leHQoe1xuICAgICAgICAgICAgc3RhdHVzOiBXYWxsZXRDb25uZWN0U2Vzc2lvblN0YXR1cy5ESVNDT05ORUNURUQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpbml0RXZlbnRzKCk7XG5cbiAgICAgIHNlc3Npb25TdWJqZWN0Lm5leHQoe1xuICAgICAgICBzdGF0dXM6IFdhbGxldENvbm5lY3RTZXNzaW9uU3RhdHVzLlJFUVVFU1RFRCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBtZXRob2RzXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBmdW5jdGlvbiBkaXNjb25uZWN0KCkge1xuICAgIGlmIChjb25uZWN0b3IgJiYgY29ubmVjdG9yLmNvbm5lY3RlZCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29ubmVjdG9yLmtpbGxTZXNzaW9uKCk7XG4gICAgICB9IGNhdGNoIHt9XG4gICAgfVxuXG4gICAgc2Vzc2lvblN1YmplY3QubmV4dCh7XG4gICAgICBzdGF0dXM6IFdhbGxldENvbm5lY3RTZXNzaW9uU3RhdHVzLkRJU0NPTk5FQ1RFRCxcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNlc3Npb24oKTogT2JzZXJ2YWJsZTxXYWxsZXRDb25uZWN0U2Vzc2lvbj4ge1xuICAgIHJldHVybiBzZXNzaW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldExhdGVzdFNlc3Npb24oKTogV2FsbGV0Q29ubmVjdFNlc3Npb24ge1xuICAgIHJldHVybiBzZXNzaW9uU3ViamVjdC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIHBvc3QgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHR4IHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHBhcmFtIHdhbGxldEFwcCB3YWxsZXQgdHlwZSwgZGVmYXVsdCBpcyBYUExBIFZhdWx0XG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0VXNlckRlbmllZCB9XG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0Q3JlYXRlVHhGYWlsZWQgfVxuICAgKiBAdGhyb3dzIHsgV2FsbGV0Q29ubmVjdFR4RmFpbGVkIH1cbiAgICogQHRocm93cyB7IFdhbGxldENvbm5lY3RUaW1lb3V0IH1cbiAgICogQHRocm93cyB7IFdhbGxldENvbm5lY3RUeFVuc3BlY2lmaWVkRXJyb3IgfVxuICAgKi9cbiAgZnVuY3Rpb24gcG9zdCh0eDogQ3JlYXRlVHhPcHRpb25zLCBfd2FsbGV0QXBwPzogV2FsbGV0QXBwIHwgYm9vbGVhbik6IFByb21pc2U8V2FsbGV0Q29ubmVjdFR4UmVzdWx0PiB7XG4gICAgaWYgKCFjb25uZWN0b3IgfHwgIWNvbm5lY3Rvci5jb25uZWN0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV2FsbGV0Q29ubmVjdCBpcyBub3QgY29ubmVjdGVkIWApO1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gRGF0ZS5ub3coKTtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWRUeE9wdGlvbnMgPSB7XG4gICAgICBtc2dzOiB0eC5tc2dzLm1hcCgobXNnKSA9PiBtc2cudG9KU09OKCkpLFxuICAgICAgZmVlOiB0eC5mZWU/LnRvSlNPTigpLFxuICAgICAgbWVtbzogdHgubWVtbyxcbiAgICAgIGdhczogdHguZ2FzLFxuICAgICAgZ2FzUHJpY2VzOiB0eC5nYXNQcmljZXM/LnRvU3RyaW5nKCksXG4gICAgICBnYXNBZGp1c3RtZW50OiB0eC5nYXNBZGp1c3RtZW50Py50b1N0cmluZygpLFxuICAgICAgLy9hY2NvdW50X251bWJlcjogdHguYWNjb3VudF9udW1iZXIsXG4gICAgICAvL3NlcXVlbmNlOiB0eC5zZXF1ZW5jZSxcbiAgICAgIGZlZURlbm9tczogdHguZmVlRGVub21zLFxuICAgICAgdGltZW91dEhlaWdodDogdHgudGltZW91dEhlaWdodCxcbiAgICB9O1xuXG4gICAgaWYgKGlzTW9iaWxlKCkpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBidG9hKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgaGFuZHNoYWtlVG9waWM6IGNvbm5lY3Rvci5oYW5kc2hha2VUb3BpYyxcbiAgICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgICBwYXJhbXM6IHNlcmlhbGl6ZWRUeE9wdGlvbnMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgY29uZmlybShwYXlsb2FkLCB3YWxsZXRBcHApO1xuICAgIH1cblxuICAgIHJldHVybiBjb25uZWN0b3JcbiAgICAgIC5zZW5kQ3VzdG9tUmVxdWVzdCh7XG4gICAgICAgIGlkLFxuICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgcGFyYW1zOiBbc2VyaWFsaXplZFR4T3B0aW9uc10sXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBsZXQgdGhyb3dFcnJvciA9IGVycm9yO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgeyBjb2RlLCB0eGhhc2gsIG1lc3NhZ2UsIHJhd19tZXNzYWdlIH0gPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RVc2VyRGVuaWVkKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RDcmVhdGVUeEZhaWxlZChtZXNzYWdlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFR4RmFpbGVkKFxuICAgICAgICAgICAgICAgIHR4aGFzaCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIHJhd19tZXNzYWdlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgdGhyb3dFcnJvciA9IG5ldyBXYWxsZXRDb25uZWN0VGltZW91dChtZXNzYWdlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDk5OlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RUeFVuc3BlY2lmaWVkRXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgdGhyb3dFcnJvciA9IG5ldyBXYWxsZXRDb25uZWN0VHhVbnNwZWNpZmllZEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgdGhyb3dFcnJvcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIHNpZ24gdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIGJ5dGVzOiBCdWZmZXJcbiAgICogQHBhcmFtIHdhbGxldEFwcCB3YWxsZXQgdHlwZSwgZGVmYXVsdCBpcyBYUExBIFZhdWx0XG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0VXNlckRlbmllZCB9XG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0VGltZW91dCB9XG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0U2lnbkJ5dGVzVW5zcGVjaWZpZWRFcnJvciB9XG4gICAqL1xuICBmdW5jdGlvbiBzaWduKFxuICAgIHR4OiBDcmVhdGVUeE9wdGlvbnMgICYge1xuICAgICAgc2VxdWVuY2U/OiBudW1iZXI7XG4gICAgICBhY2NvdW50TnVtYmVyPzogbnVtYmVyO1xuICAgICAgc2lnbk1vZGU/OiBTaWduTW9kZTtcbiAgICB9LCBcbiAgICBfd2FsbGV0QXBwPzogV2FsbGV0QXBwIHwgYm9vbGVhblxuICApOiBQcm9taXNlPFdlYkV4dGVuc2lvblNpZ25QYXlsb2FkPiB7XG4gICAgaWYgKCFjb25uZWN0b3IgfHwgIWNvbm5lY3Rvci5jb25uZWN0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgV2FsbGV0Q29ubmVjdCBpcyBub3QgY29ubmVjdGVkIWApO1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gRGF0ZS5ub3coKTtcblxuICAgIGNvbnN0IHNlcmlhbGl6ZWRUeE9wdGlvbnMgPSB7XG4gICAgICBtc2dzOiB0eC5tc2dzLm1hcCgobXNnKSA9PiBtc2cudG9KU09OKCkpLFxuICAgICAgZmVlOiB0eC5mZWU/LnRvSlNPTigpLFxuICAgICAgbWVtbzogdHgubWVtbyxcbiAgICAgIGdhczogdHguZ2FzLFxuICAgICAgZ2FzUHJpY2VzOiB0eC5nYXNQcmljZXM/LnRvU3RyaW5nKCksXG4gICAgICBnYXNBZGp1c3RtZW50OiB0eC5nYXNBZGp1c3RtZW50Py50b1N0cmluZygpLFxuICAgICAgLy9hY2NvdW50X251bWJlcjogdHguYWNjb3VudF9udW1iZXIsXG4gICAgICAvL3NlcXVlbmNlOiB0eC5zZXF1ZW5jZSxcbiAgICAgIGZlZURlbm9tczogdHguZmVlRGVub21zLFxuICAgICAgdGltZW91dEhlaWdodDogdHgudGltZW91dEhlaWdodCxcbiAgICAgIHNlcXVlbmNlOiB0eC5zZXF1ZW5jZSxcbiAgICAgIGFjY291bnROdW1iZXI6IHR4LmFjY291bnROdW1iZXIsXG4gICAgICBzaWduTW9kZTogdHguc2lnbk1vZGVcbiAgICB9O1xuXG4gICAgaWYgKGlzTW9iaWxlKCkpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBidG9hKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgaGFuZHNoYWtlVG9waWM6IGNvbm5lY3Rvci5oYW5kc2hha2VUb3BpYyxcbiAgICAgICAgICBtZXRob2Q6ICdzaWduJyxcbiAgICAgICAgICBwYXJhbXM6IHNlcmlhbGl6ZWRUeE9wdGlvbnMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIGNvbmZpcm0ocGF5bG9hZCwgX3dhbGxldEFwcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbm5lY3RvclxuICAgICAgLnNlbmRDdXN0b21SZXF1ZXN0KHtcbiAgICAgICAgaWQsXG4gICAgICAgIG1ldGhvZDogJ3NpZ24nLFxuICAgICAgICBwYXJhbXM6IFtzZXJpYWxpemVkVHhPcHRpb25zXSxcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGxldCB0aHJvd0Vycm9yID0gZXJyb3I7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB7IGNvZGUsIHR4aGFzaCwgbWVzc2FnZSwgcmF3X21lc3NhZ2UgfSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBlcnJvci5tZXNzYWdlLFxuICAgICAgICAgICk7XG4gICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFVzZXJEZW5pZWQoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdENyZWF0ZVR4RmFpbGVkKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgdGhyb3dFcnJvciA9IG5ldyBXYWxsZXRDb25uZWN0VHhGYWlsZWQoXG4gICAgICAgICAgICAgICAgdHhoYXNoLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgcmF3X21lc3NhZ2UsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RUaW1lb3V0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgOTk6XG4gICAgICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFNpZ25VbnNwZWNpZmllZEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFNpZ25VbnNwZWNpZmllZEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgdGhyb3dFcnJvcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIHNpZ25CeXRlcyB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gYnl0ZXM6IEJ1ZmZlclxuICAgKiBAcGFyYW0gYnl0ZXM6IFdhbGxldEFwcCB8IGJvb2xlYW5cbiAgICogQHRocm93cyB7IFdhbGxldENvbm5lY3RVc2VyRGVuaWVkIH1cbiAgICogQHRocm93cyB7IFdhbGxldENvbm5lY3RUaW1lb3V0IH1cbiAgICogQHRocm93cyB7IFdhbGxldENvbm5lY3RTaWduQnl0ZXNVbnNwZWNpZmllZEVycm9yIH1cbiAgICovXG4gIGZ1bmN0aW9uIHNpZ25CeXRlcyhieXRlczogQnVmZmVyLCBfd2FsbGV0QXBwPzogV2FsbGV0QXBwIHwgYm9vbGVhbik6IFByb21pc2U8V2ViRXh0ZW5zaW9uU2lnbkJ5dGVzUGF5bG9hZD4ge1xuICAgIGlmICghY29ubmVjdG9yIHx8ICFjb25uZWN0b3IuY29ubmVjdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdhbGxldENvbm5lY3QgaXMgbm90IGNvbm5lY3RlZCFgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IERhdGUubm93KCk7XG5cbiAgICBpZiAoaXNNb2JpbGUoKSkge1xuICAgICAgY29uc3QgcGF5bG9hZCA9IGJ0b2EoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICBoYW5kc2hha2VUb3BpYzogY29ubmVjdG9yLmhhbmRzaGFrZVRvcGljLFxuICAgICAgICAgIG1ldGhvZDogJ3NpZ25CeXRlcycsXG4gICAgICAgICAgcGFyYW1zOiBieXRlcyxcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICBjb25maXJtKHBheWxvYWQsIF93YWxsZXRBcHApO1xuICAgIH1cblxuICAgIHJldHVybiBjb25uZWN0b3JcbiAgICAgIC5zZW5kQ3VzdG9tUmVxdWVzdCh7XG4gICAgICAgIGlkLFxuICAgICAgICBtZXRob2Q6ICdzaWduQnl0ZXMnLFxuICAgICAgICBwYXJhbXM6IFtieXRlc10sXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBsZXQgdGhyb3dFcnJvciA9IGVycm9yO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgeyBjb2RlLCBtZXNzYWdlIH0gPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFVzZXJEZW5pZWQoKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFRpbWVvdXQobWVzc2FnZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICAgICAgdGhyb3dFcnJvciA9IG5ldyBXYWxsZXRDb25uZWN0U2lnbkJ5dGVzVW5zcGVjaWZpZWRFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RTaWduQnl0ZXNVbnNwZWNpZmllZEVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgdGhyb3dFcnJvcjtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIG1vYmlsZSBjb25maXJtXG4gICAqIFxuICAgKiBAcGFyYW0gcGF5bG9hZCBwYXlsYW9kXG4gICAqIEBwYXJhbSBfd2FsbGV0QXBwIHdhbGxldCB0eXBlLCBkZWZhdWx0IGlzIFhQTEEgVmF1bHRcbiAgICovXG4gIGZ1bmN0aW9uIGNvbmZpcm0ocGF5bG9hZDogc3RyaW5nLCBfd2FsbGV0QXBwPzogV2FsbGV0QXBwIHwgYm9vbGVhbikge1xuICAgIGlmICghX3dhbGxldEFwcCB8fCB0eXBlb2YgX3dhbGxldEFwcCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBpZiAoX3dhbGxldEFwcCkge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGBjMnh2YXVsdDovL3dhbGxldGNvbm5lY3RfY29uZmlybS8/cGF5bG9hZD0ke3BheWxvYWR9YDsgIFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgeHBsYXZhdWx0Oi8vd2FsbGV0Y29ubmVjdF9jb25maXJtLz9wYXlsb2FkPSR7cGF5bG9hZH1gO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoX3dhbGxldEFwcCA9PT0gV2FsbGV0QXBwLlhQTEFfVkFVTFQpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgeHBsYXZhdWx0Oi8vd2FsbGV0Y29ubmVjdF9jb25maXJtLz9wYXlsb2FkPSR7cGF5bG9hZH1gO1xuICAgICAgfSBlbHNlIGlmIChfd2FsbGV0QXBwID09PSBXYWxsZXRBcHAuWFBMQV9HQU1FUykge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGBjMnh2YXVsdDovL3dhbGxldGNvbm5lY3RfY29uZmlybS8/cGF5bG9hZD0ke3BheWxvYWR9YDsgIFxuICAgICAgfSBlbHNlIGlmIChfd2FsbGV0QXBwID09PSBXYWxsZXRBcHAuWFBMQV9HQU1FU19ORVcpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgeGdhbWVzd2FsbGV0Oi8vd2FsbGV0Y29ubmVjdF9jb25maXJtLz9wYXlsb2FkPSR7cGF5bG9hZH1gO1xuICAgICAgfSBlbHNlIGlmIChfd2FsbGV0QXBwID09PSBXYWxsZXRBcHAuWFBMQVlaKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYHhwbGF5ejovL3dhbGxldGNvbm5lY3RfY29uZmlybS8/cGF5bG9hZD0ke3BheWxvYWR9YDsgIFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgeHBsYXZhdWx0Oi8vd2FsbGV0Y29ubmVjdF9jb25maXJtLz9wYXlsb2FkPSR7cGF5bG9hZH1gO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyByZXR1cm5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIHJldHVybiB7XG4gICAgc2Vzc2lvbixcbiAgICBnZXRMYXRlc3RTZXNzaW9uLFxuICAgIHBvc3QsXG4gICAgc2lnbixcbiAgICBzaWduQnl0ZXMsXG4gICAgZGlzY29ubmVjdCxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare class WalletConnectUserDenied extends Error {
|
|
2
|
+
}
|
|
3
|
+
export declare class WalletConnectCreateTxFailed extends Error {
|
|
4
|
+
constructor(message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare class WalletConnectTxFailed extends Error {
|
|
7
|
+
readonly txhash: string;
|
|
8
|
+
readonly raw_message: any;
|
|
9
|
+
constructor(txhash: string, message: string, raw_message: any);
|
|
10
|
+
}
|
|
11
|
+
export declare class WalletConnectTimeout extends Error {
|
|
12
|
+
constructor(message: string);
|
|
13
|
+
}
|
|
14
|
+
export declare class WalletConnectTxUnspecifiedError extends Error {
|
|
15
|
+
constructor(message: string);
|
|
16
|
+
}
|
|
17
|
+
export declare class WalletConnectSignUnspecifiedError extends Error {
|
|
18
|
+
constructor(message: string);
|
|
19
|
+
}
|
|
20
|
+
export declare class WalletConnectSignBytesUnspecifiedError extends Error {
|
|
21
|
+
constructor(message: string);
|
|
22
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export class WalletConnectUserDenied extends Error {
|
|
2
|
+
}
|
|
3
|
+
export class WalletConnectCreateTxFailed extends Error {
|
|
4
|
+
constructor(message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = 'WalletConnectCreateTxFailed';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class WalletConnectTxFailed extends Error {
|
|
10
|
+
constructor(txhash, message, raw_message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.txhash = txhash;
|
|
13
|
+
this.raw_message = raw_message;
|
|
14
|
+
this.name = 'WalletConnectTxFailed';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export class WalletConnectTimeout extends Error {
|
|
18
|
+
constructor(message) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.name = 'WalletConnectTimeout';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class WalletConnectTxUnspecifiedError extends Error {
|
|
24
|
+
constructor(message) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = 'WalletConnectTxUnspecifiedError';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class WalletConnectSignUnspecifiedError extends Error {
|
|
30
|
+
constructor(message) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.name = 'WalletConnectSignUnspecifiedError';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export class WalletConnectSignBytesUnspecifiedError extends Error {
|
|
36
|
+
constructor(message) {
|
|
37
|
+
super(message);
|
|
38
|
+
this.name = 'WalletConnectSignBytesUnspecifiedError';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL0Brc2FuZ2t1azEwL3dhbGxldC1jb250cm9sbGVyL21vZHVsZXMvd2FsbGV0Y29ubmVjdC9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLHVCQUF3QixTQUFRLEtBQUs7Q0FBRztBQUVyRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsS0FBSztJQUNwRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyw2QkFBNkIsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsS0FBSztJQUM5QyxZQUNrQixNQUFjLEVBQzlCLE9BQWUsRUFDQyxXQUFnQjtRQUVoQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFKQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRWQsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFHaEMsSUFBSSxDQUFDLElBQUksR0FBRyx1QkFBdUIsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsS0FBSztJQUM3QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sK0JBQWdDLFNBQVEsS0FBSztJQUN4RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxpQ0FBaUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8saUNBQWtDLFNBQVEsS0FBSztJQUMxRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxtQ0FBbUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sc0NBQXVDLFNBQVEsS0FBSztJQUMvRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyx3Q0FBd0MsQ0FBQztJQUN2RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgV2FsbGV0Q29ubmVjdFVzZXJEZW5pZWQgZXh0ZW5kcyBFcnJvciB7fVxuXG5leHBvcnQgY2xhc3MgV2FsbGV0Q29ubmVjdENyZWF0ZVR4RmFpbGVkIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnV2FsbGV0Q29ubmVjdENyZWF0ZVR4RmFpbGVkJztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV2FsbGV0Q29ubmVjdFR4RmFpbGVkIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHhoYXNoOiBzdHJpbmcsXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSByYXdfbWVzc2FnZTogYW55LFxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnV2FsbGV0Q29ubmVjdFR4RmFpbGVkJztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV2FsbGV0Q29ubmVjdFRpbWVvdXQgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdXYWxsZXRDb25uZWN0VGltZW91dCc7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdhbGxldENvbm5lY3RUeFVuc3BlY2lmaWVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdXYWxsZXRDb25uZWN0VHhVbnNwZWNpZmllZEVycm9yJztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV2FsbGV0Q29ubmVjdFNpZ25VbnNwZWNpZmllZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnV2FsbGV0Q29ubmVjdFNpZ25VbnNwZWNpZmllZEVycm9yJztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV2FsbGV0Q29ubmVjdFNpZ25CeXRlc1Vuc3BlY2lmaWVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdXYWxsZXRDb25uZWN0U2lnbkJ5dGVzVW5zcGVjaWZpZWRFcnJvcic7XG4gIH1cbn0iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ITransportLib, ISocketTransportOptions } from '@walletconnect/types';
|
|
2
|
+
declare class SocketTransport implements ITransportLib {
|
|
3
|
+
private opts;
|
|
4
|
+
private _protocol;
|
|
5
|
+
private _version;
|
|
6
|
+
private _url;
|
|
7
|
+
private _netMonitor;
|
|
8
|
+
private _socket;
|
|
9
|
+
private _nextSocket;
|
|
10
|
+
private _queue;
|
|
11
|
+
private _events;
|
|
12
|
+
private _subscriptions;
|
|
13
|
+
constructor(opts: ISocketTransportOptions);
|
|
14
|
+
set readyState(value: number);
|
|
15
|
+
get readyState(): number;
|
|
16
|
+
set connecting(value: boolean);
|
|
17
|
+
get connecting(): boolean;
|
|
18
|
+
set connected(value: boolean);
|
|
19
|
+
get connected(): boolean;
|
|
20
|
+
set closing(value: boolean);
|
|
21
|
+
get closing(): boolean;
|
|
22
|
+
set closed(value: boolean);
|
|
23
|
+
get closed(): boolean;
|
|
24
|
+
open: () => void;
|
|
25
|
+
close: () => void;
|
|
26
|
+
send: (message: string, topic?: string, silent?: boolean) => void;
|
|
27
|
+
subscribe: (topic: string) => void;
|
|
28
|
+
on: (event: string, callback: (payload: any) => void) => void;
|
|
29
|
+
private _socketCreate;
|
|
30
|
+
private _socketOpen;
|
|
31
|
+
private _socketClose;
|
|
32
|
+
private _socketSend;
|
|
33
|
+
private _socketReceive;
|
|
34
|
+
private _socketError;
|
|
35
|
+
private _queueSubscriptions;
|
|
36
|
+
private _setToQueue;
|
|
37
|
+
private _pushQueue;
|
|
38
|
+
}
|
|
39
|
+
export default SocketTransport;
|