@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,421 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.connect = exports.connectIfSessionExists = void 0;
|
|
30
|
+
const wallet_types_1 = require("@ksangkuk10/wallet-types");
|
|
31
|
+
const core_1 = __importDefault(require("@walletconnect/core"));
|
|
32
|
+
const cryptoLib = __importStar(require("@walletconnect/iso-crypto"));
|
|
33
|
+
const utils_1 = require("@walletconnect/utils");
|
|
34
|
+
const rxjs_1 = require("rxjs");
|
|
35
|
+
const browser_check_1 = require("../../utils/browser-check");
|
|
36
|
+
const errors_1 = require("./errors");
|
|
37
|
+
const socket_transport_1 = __importDefault(require("./impl/socket-transport"));
|
|
38
|
+
const modal_1 = require("./modal");
|
|
39
|
+
const types_1 = require("./types");
|
|
40
|
+
const WALLETCONNECT_STORAGE_KEY = 'walletconnect';
|
|
41
|
+
function connectIfSessionExists(options = {}) {
|
|
42
|
+
const storedSession = localStorage.getItem(WALLETCONNECT_STORAGE_KEY);
|
|
43
|
+
if (typeof storedSession === 'string') {
|
|
44
|
+
return connect(options, true);
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
exports.connectIfSessionExists = connectIfSessionExists;
|
|
49
|
+
function connect(options = {}, useCachedSession = false, walletApp) {
|
|
50
|
+
var _a, _b;
|
|
51
|
+
let connector = null;
|
|
52
|
+
let sessionSubject = new rxjs_1.BehaviorSubject({
|
|
53
|
+
status: types_1.WalletConnectSessionStatus.DISCONNECTED,
|
|
54
|
+
});
|
|
55
|
+
const qrcodeModal = (_b = (_a = options.connectorOpts) === null || _a === void 0 ? void 0 : _a.qrcodeModal) !== null && _b !== void 0 ? _b : new modal_1.XplaWalletconnectQrcodeModal(walletApp);
|
|
56
|
+
const connectorOpts = {
|
|
57
|
+
bridge: 'https://walletconnect.xpla.io/',
|
|
58
|
+
qrcodeModal,
|
|
59
|
+
...options.connectorOpts,
|
|
60
|
+
};
|
|
61
|
+
const pushServerOpts = options.pushServerOpts;
|
|
62
|
+
// ---------------------------------------------
|
|
63
|
+
// event listeners
|
|
64
|
+
// ---------------------------------------------
|
|
65
|
+
function initEvents() {
|
|
66
|
+
if (!connector) {
|
|
67
|
+
throw new Error(`WalletConnect is not defined!`);
|
|
68
|
+
}
|
|
69
|
+
connector.on('session_update', async (error, payload) => {
|
|
70
|
+
if (error)
|
|
71
|
+
throw error;
|
|
72
|
+
sessionSubject.next({
|
|
73
|
+
status: types_1.WalletConnectSessionStatus.CONNECTED,
|
|
74
|
+
peerMeta: payload.params[0].peerMeta,
|
|
75
|
+
xplaAddress: payload.params[0].accounts[0],
|
|
76
|
+
chainId: payload.params[0].chainId,
|
|
77
|
+
});
|
|
78
|
+
console.log('WALLETCONNECT SESSION UPDATED:', payload.params[0]);
|
|
79
|
+
});
|
|
80
|
+
connector.on('connect', (error, payload) => {
|
|
81
|
+
if (error)
|
|
82
|
+
throw error;
|
|
83
|
+
sessionSubject.next({
|
|
84
|
+
status: types_1.WalletConnectSessionStatus.CONNECTED,
|
|
85
|
+
peerMeta: payload.params[0].peerMeta,
|
|
86
|
+
xplaAddress: payload.params[0].accounts[0],
|
|
87
|
+
chainId: payload.params[0].chainId,
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
connector.on('disconnect', (error, payload) => {
|
|
91
|
+
if (error)
|
|
92
|
+
throw error;
|
|
93
|
+
sessionSubject.next({
|
|
94
|
+
status: types_1.WalletConnectSessionStatus.DISCONNECTED,
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
// ---------------------------------------------
|
|
99
|
+
// initialize
|
|
100
|
+
// ---------------------------------------------
|
|
101
|
+
const cachedSession = localStorage.getItem('walletconnect');
|
|
102
|
+
if (typeof cachedSession === 'string' && useCachedSession) {
|
|
103
|
+
const cachedSessionObject = JSON.parse(cachedSession);
|
|
104
|
+
const clientId = cachedSessionObject.clientId;
|
|
105
|
+
const draftConnector = new core_1.default({
|
|
106
|
+
connectorOpts: {
|
|
107
|
+
...connectorOpts,
|
|
108
|
+
session: JSON.parse(cachedSession),
|
|
109
|
+
},
|
|
110
|
+
pushServerOpts,
|
|
111
|
+
cryptoLib,
|
|
112
|
+
transport: new socket_transport_1.default({
|
|
113
|
+
protocol: 'wc',
|
|
114
|
+
version: 1,
|
|
115
|
+
url: connectorOpts.bridge,
|
|
116
|
+
subscriptions: [clientId],
|
|
117
|
+
}),
|
|
118
|
+
});
|
|
119
|
+
draftConnector.clientId = clientId;
|
|
120
|
+
connector = draftConnector;
|
|
121
|
+
initEvents();
|
|
122
|
+
sessionSubject.next({
|
|
123
|
+
status: types_1.WalletConnectSessionStatus.CONNECTED,
|
|
124
|
+
peerMeta: draftConnector.peerMeta,
|
|
125
|
+
xplaAddress: draftConnector.accounts[0],
|
|
126
|
+
chainId: draftConnector.chainId,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const clientId = (0, utils_1.uuid)();
|
|
131
|
+
const draftConnector = new core_1.default({
|
|
132
|
+
connectorOpts,
|
|
133
|
+
pushServerOpts,
|
|
134
|
+
cryptoLib,
|
|
135
|
+
transport: new socket_transport_1.default({
|
|
136
|
+
protocol: 'wc',
|
|
137
|
+
version: 1,
|
|
138
|
+
url: connectorOpts.bridge,
|
|
139
|
+
subscriptions: [clientId],
|
|
140
|
+
}),
|
|
141
|
+
});
|
|
142
|
+
draftConnector.clientId = clientId;
|
|
143
|
+
connector = draftConnector;
|
|
144
|
+
if (!draftConnector.connected) {
|
|
145
|
+
draftConnector.createSession().catch(console.error);
|
|
146
|
+
if (qrcodeModal instanceof modal_1.XplaWalletconnectQrcodeModal) {
|
|
147
|
+
qrcodeModal.setCloseCallback(() => {
|
|
148
|
+
sessionSubject.next({
|
|
149
|
+
status: types_1.WalletConnectSessionStatus.DISCONNECTED,
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
initEvents();
|
|
154
|
+
sessionSubject.next({
|
|
155
|
+
status: types_1.WalletConnectSessionStatus.REQUESTED,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// ---------------------------------------------
|
|
160
|
+
// methods
|
|
161
|
+
// ---------------------------------------------
|
|
162
|
+
function disconnect() {
|
|
163
|
+
if (connector && connector.connected) {
|
|
164
|
+
try {
|
|
165
|
+
connector.killSession();
|
|
166
|
+
}
|
|
167
|
+
catch (_a) { }
|
|
168
|
+
}
|
|
169
|
+
sessionSubject.next({
|
|
170
|
+
status: types_1.WalletConnectSessionStatus.DISCONNECTED,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
function session() {
|
|
174
|
+
return sessionSubject.asObservable();
|
|
175
|
+
}
|
|
176
|
+
function getLatestSession() {
|
|
177
|
+
return sessionSubject.getValue();
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* post transaction
|
|
181
|
+
*
|
|
182
|
+
* @param tx transaction data
|
|
183
|
+
* @param walletApp wallet type, default is XPLA Vault
|
|
184
|
+
* @throws { WalletConnectUserDenied }
|
|
185
|
+
* @throws { WalletConnectCreateTxFailed }
|
|
186
|
+
* @throws { WalletConnectTxFailed }
|
|
187
|
+
* @throws { WalletConnectTimeout }
|
|
188
|
+
* @throws { WalletConnectTxUnspecifiedError }
|
|
189
|
+
*/
|
|
190
|
+
function post(tx, _walletApp) {
|
|
191
|
+
var _a, _b, _c;
|
|
192
|
+
if (!connector || !connector.connected) {
|
|
193
|
+
throw new Error(`WalletConnect is not connected!`);
|
|
194
|
+
}
|
|
195
|
+
const id = Date.now();
|
|
196
|
+
const serializedTxOptions = {
|
|
197
|
+
msgs: tx.msgs.map((msg) => msg.toJSON()),
|
|
198
|
+
fee: (_a = tx.fee) === null || _a === void 0 ? void 0 : _a.toJSON(),
|
|
199
|
+
memo: tx.memo,
|
|
200
|
+
gas: tx.gas,
|
|
201
|
+
gasPrices: (_b = tx.gasPrices) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
202
|
+
gasAdjustment: (_c = tx.gasAdjustment) === null || _c === void 0 ? void 0 : _c.toString(),
|
|
203
|
+
//account_number: tx.account_number,
|
|
204
|
+
//sequence: tx.sequence,
|
|
205
|
+
feeDenoms: tx.feeDenoms,
|
|
206
|
+
timeoutHeight: tx.timeoutHeight,
|
|
207
|
+
};
|
|
208
|
+
if ((0, browser_check_1.isMobile)()) {
|
|
209
|
+
const payload = btoa(JSON.stringify({
|
|
210
|
+
id,
|
|
211
|
+
handshakeTopic: connector.handshakeTopic,
|
|
212
|
+
method: 'post',
|
|
213
|
+
params: serializedTxOptions,
|
|
214
|
+
}));
|
|
215
|
+
confirm(payload, walletApp);
|
|
216
|
+
}
|
|
217
|
+
return connector
|
|
218
|
+
.sendCustomRequest({
|
|
219
|
+
id,
|
|
220
|
+
method: 'post',
|
|
221
|
+
params: [serializedTxOptions],
|
|
222
|
+
})
|
|
223
|
+
.catch((error) => {
|
|
224
|
+
let throwError = error;
|
|
225
|
+
try {
|
|
226
|
+
const { code, txhash, message, raw_message } = JSON.parse(error.message);
|
|
227
|
+
switch (code) {
|
|
228
|
+
case 1:
|
|
229
|
+
throwError = new errors_1.WalletConnectUserDenied();
|
|
230
|
+
break;
|
|
231
|
+
case 2:
|
|
232
|
+
throwError = new errors_1.WalletConnectCreateTxFailed(message);
|
|
233
|
+
break;
|
|
234
|
+
case 3:
|
|
235
|
+
throwError = new errors_1.WalletConnectTxFailed(txhash, message, raw_message);
|
|
236
|
+
break;
|
|
237
|
+
case 4:
|
|
238
|
+
throwError = new errors_1.WalletConnectTimeout(message);
|
|
239
|
+
break;
|
|
240
|
+
case 99:
|
|
241
|
+
throwError = new errors_1.WalletConnectTxUnspecifiedError(message);
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch (_a) {
|
|
246
|
+
throwError = new errors_1.WalletConnectTxUnspecifiedError(error.message);
|
|
247
|
+
}
|
|
248
|
+
throw throwError;
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* sign transaction
|
|
253
|
+
*
|
|
254
|
+
* @param bytes: Buffer
|
|
255
|
+
* @param walletApp wallet type, default is XPLA Vault
|
|
256
|
+
* @throws { WalletConnectUserDenied }
|
|
257
|
+
* @throws { WalletConnectTimeout }
|
|
258
|
+
* @throws { WalletConnectSignBytesUnspecifiedError }
|
|
259
|
+
*/
|
|
260
|
+
function sign(tx, _walletApp) {
|
|
261
|
+
var _a, _b, _c;
|
|
262
|
+
if (!connector || !connector.connected) {
|
|
263
|
+
throw new Error(`WalletConnect is not connected!`);
|
|
264
|
+
}
|
|
265
|
+
const id = Date.now();
|
|
266
|
+
const serializedTxOptions = {
|
|
267
|
+
msgs: tx.msgs.map((msg) => msg.toJSON()),
|
|
268
|
+
fee: (_a = tx.fee) === null || _a === void 0 ? void 0 : _a.toJSON(),
|
|
269
|
+
memo: tx.memo,
|
|
270
|
+
gas: tx.gas,
|
|
271
|
+
gasPrices: (_b = tx.gasPrices) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
272
|
+
gasAdjustment: (_c = tx.gasAdjustment) === null || _c === void 0 ? void 0 : _c.toString(),
|
|
273
|
+
//account_number: tx.account_number,
|
|
274
|
+
//sequence: tx.sequence,
|
|
275
|
+
feeDenoms: tx.feeDenoms,
|
|
276
|
+
timeoutHeight: tx.timeoutHeight,
|
|
277
|
+
sequence: tx.sequence,
|
|
278
|
+
accountNumber: tx.accountNumber,
|
|
279
|
+
signMode: tx.signMode
|
|
280
|
+
};
|
|
281
|
+
if ((0, browser_check_1.isMobile)()) {
|
|
282
|
+
const payload = btoa(JSON.stringify({
|
|
283
|
+
id,
|
|
284
|
+
handshakeTopic: connector.handshakeTopic,
|
|
285
|
+
method: 'sign',
|
|
286
|
+
params: serializedTxOptions,
|
|
287
|
+
}));
|
|
288
|
+
confirm(payload, _walletApp);
|
|
289
|
+
}
|
|
290
|
+
return connector
|
|
291
|
+
.sendCustomRequest({
|
|
292
|
+
id,
|
|
293
|
+
method: 'sign',
|
|
294
|
+
params: [serializedTxOptions],
|
|
295
|
+
})
|
|
296
|
+
.catch((error) => {
|
|
297
|
+
let throwError = error;
|
|
298
|
+
try {
|
|
299
|
+
const { code, txhash, message, raw_message } = JSON.parse(error.message);
|
|
300
|
+
switch (code) {
|
|
301
|
+
case 1:
|
|
302
|
+
throwError = new errors_1.WalletConnectUserDenied();
|
|
303
|
+
break;
|
|
304
|
+
case 2:
|
|
305
|
+
throwError = new errors_1.WalletConnectCreateTxFailed(message);
|
|
306
|
+
break;
|
|
307
|
+
case 3:
|
|
308
|
+
throwError = new errors_1.WalletConnectTxFailed(txhash, message, raw_message);
|
|
309
|
+
break;
|
|
310
|
+
case 4:
|
|
311
|
+
throwError = new errors_1.WalletConnectTimeout(message);
|
|
312
|
+
break;
|
|
313
|
+
case 99:
|
|
314
|
+
throwError = new errors_1.WalletConnectSignUnspecifiedError(message);
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
catch (_a) {
|
|
319
|
+
throwError = new errors_1.WalletConnectSignUnspecifiedError(error.message);
|
|
320
|
+
}
|
|
321
|
+
throw throwError;
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* signBytes transaction
|
|
326
|
+
*
|
|
327
|
+
* @param bytes: Buffer
|
|
328
|
+
* @param bytes: WalletApp | boolean
|
|
329
|
+
* @throws { WalletConnectUserDenied }
|
|
330
|
+
* @throws { WalletConnectTimeout }
|
|
331
|
+
* @throws { WalletConnectSignBytesUnspecifiedError }
|
|
332
|
+
*/
|
|
333
|
+
function signBytes(bytes, _walletApp) {
|
|
334
|
+
if (!connector || !connector.connected) {
|
|
335
|
+
throw new Error(`WalletConnect is not connected!`);
|
|
336
|
+
}
|
|
337
|
+
const id = Date.now();
|
|
338
|
+
if ((0, browser_check_1.isMobile)()) {
|
|
339
|
+
const payload = btoa(JSON.stringify({
|
|
340
|
+
id,
|
|
341
|
+
handshakeTopic: connector.handshakeTopic,
|
|
342
|
+
method: 'signBytes',
|
|
343
|
+
params: bytes,
|
|
344
|
+
}));
|
|
345
|
+
confirm(payload, _walletApp);
|
|
346
|
+
}
|
|
347
|
+
return connector
|
|
348
|
+
.sendCustomRequest({
|
|
349
|
+
id,
|
|
350
|
+
method: 'signBytes',
|
|
351
|
+
params: [bytes],
|
|
352
|
+
})
|
|
353
|
+
.catch((error) => {
|
|
354
|
+
let throwError = error;
|
|
355
|
+
try {
|
|
356
|
+
const { code, message } = JSON.parse(error.message);
|
|
357
|
+
switch (code) {
|
|
358
|
+
case 1:
|
|
359
|
+
throwError = new errors_1.WalletConnectUserDenied();
|
|
360
|
+
break;
|
|
361
|
+
case 4:
|
|
362
|
+
throwError = new errors_1.WalletConnectTimeout(message);
|
|
363
|
+
break;
|
|
364
|
+
case 99:
|
|
365
|
+
throwError = new errors_1.WalletConnectSignBytesUnspecifiedError(message);
|
|
366
|
+
break;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
catch (_a) {
|
|
370
|
+
throwError = new errors_1.WalletConnectSignBytesUnspecifiedError(error.message);
|
|
371
|
+
}
|
|
372
|
+
throw throwError;
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* mobile confirm
|
|
377
|
+
*
|
|
378
|
+
* @param payload paylaod
|
|
379
|
+
* @param _walletApp wallet type, default is XPLA Vault
|
|
380
|
+
*/
|
|
381
|
+
function confirm(payload, _walletApp) {
|
|
382
|
+
if (!_walletApp || typeof _walletApp === 'boolean') {
|
|
383
|
+
if (_walletApp) {
|
|
384
|
+
window.location.href = `c2xvault://walletconnect_confirm/?payload=${payload}`;
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
window.location.href = `xplavault://walletconnect_confirm/?payload=${payload}`;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
if (_walletApp === wallet_types_1.WalletApp.XPLA_VAULT) {
|
|
392
|
+
window.location.href = `xplavault://walletconnect_confirm/?payload=${payload}`;
|
|
393
|
+
}
|
|
394
|
+
else if (_walletApp === wallet_types_1.WalletApp.XPLA_GAMES) {
|
|
395
|
+
window.location.href = `c2xvault://walletconnect_confirm/?payload=${payload}`;
|
|
396
|
+
}
|
|
397
|
+
else if (_walletApp === wallet_types_1.WalletApp.XPLA_GAMES_NEW) {
|
|
398
|
+
window.location.href = `xgameswallet://walletconnect_confirm/?payload=${payload}`;
|
|
399
|
+
}
|
|
400
|
+
else if (_walletApp === wallet_types_1.WalletApp.XPLAYZ) {
|
|
401
|
+
window.location.href = `xplayz://walletconnect_confirm/?payload=${payload}`;
|
|
402
|
+
}
|
|
403
|
+
else {
|
|
404
|
+
window.location.href = `xplavault://walletconnect_confirm/?payload=${payload}`;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
// ---------------------------------------------
|
|
409
|
+
// return
|
|
410
|
+
// ---------------------------------------------
|
|
411
|
+
return {
|
|
412
|
+
session,
|
|
413
|
+
getLatestSession,
|
|
414
|
+
post,
|
|
415
|
+
sign,
|
|
416
|
+
signBytes,
|
|
417
|
+
disconnect,
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
exports.connect = connect;
|
|
421
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9Aa3NhbmdrdWsxMC93YWxsZXQtY29udHJvbGxlci9tb2R1bGVzL3dhbGxldGNvbm5lY3QvY29ubmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDJEQUFxRDtBQUNyRCwrREFBNEM7QUFDNUMscUVBQXVEO0FBS3ZELGdEQUE0QztBQUM1QywrQkFBbUQ7QUFDbkQsNkRBQXFEO0FBQ3JELHFDQVFrQjtBQUNsQiwrRUFBc0Q7QUFDdEQsbUNBQXVEO0FBQ3ZELG1DQUlpQjtBQTRDakIsTUFBTSx5QkFBeUIsR0FBRyxlQUFlLENBQUM7QUFFbEQsU0FBZ0Isc0JBQXNCLENBQ3BDLFVBQTBDLEVBQUU7SUFFNUMsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBRXRFLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFO1FBQ3JDLE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQVZELHdEQVVDO0FBRUQsU0FBZ0IsT0FBTyxDQUNyQixVQUEwQyxFQUFFLEVBQzVDLG1CQUE0QixLQUFLLEVBQ2pDLFNBQStCOztJQUUvQixJQUFJLFNBQVMsR0FBcUIsSUFBSSxDQUFDO0lBRXZDLElBQUksY0FBYyxHQUNoQixJQUFJLHNCQUFlLENBQXVCO1FBQ3hDLE1BQU0sRUFBRSxrQ0FBMEIsQ0FBQyxZQUFZO0tBQ2hELENBQUMsQ0FBQztJQUVMLE1BQU0sV0FBVyxHQUNmLE1BQUEsTUFBQSxPQUFPLENBQUMsYUFBYSwwQ0FBRSxXQUFXLG1DQUFJLElBQUksb0NBQTRCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFcEYsTUFBTSxhQUFhLEdBQTBCO1FBQzNDLE1BQU0sRUFB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QUFDLElBQUksR0FBRyw4Q0FBOEMsT0FBTyxFQUFFLENBQUM7YUFDaEY7aUJBQU0sSUFBSSxVQUFVLEtBQUssd0JBQVMsQ0FBQyxVQUFVLEVBQUU7Z0JBQzlDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLDZDQUE2QyxPQUFPLEVBQUUsQ0FBQzthQUMvRTtpQkFBTSxJQUFJLFVBQVUsS0FBSyx3QkFBUyxDQUFDLGNBQWMsRUFBRTtnQkFDbEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsaURBQWlELE9BQU8sRUFBRSxDQUFDO2FBQ25GO2lCQUFNLElBQUksVUFBVSxLQUFLLHdCQUFTLENBQUMsTUFBTSxFQUFFO2dCQUMxQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRywyQ0FBMkMsT0FBTyxFQUFFLENBQUM7YUFDN0U7aUJBQU07Z0JBQ0wsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsOENBQThDLE9BQU8sRUFBRSxDQUFDO2FBQ2hGO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELFNBQVM7SUFDVCxnREFBZ0Q7SUFDaEQsT0FBTztRQUNMLE9BQU87UUFDUCxnQkFBZ0I7UUFDaEIsSUFBSTtRQUNKLElBQUk7UUFDSixTQUFTO1FBQ1QsVUFBVTtLQUNYLENBQUM7QUFDSixDQUFDO0FBcmJELDBCQXFiQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENyZWF0ZVR4T3B0aW9ucywgU2lnbk1vZGUgfSBmcm9tICdAeHBsYS94cGxhLmpzJztcbmltcG9ydCB7IFdhbGxldEFwcCB9IGZyb20gJ0Brc2FuZ2t1azEwL3dhbGxldC10eXBlcyc7XG5pbXBvcnQgQ29ubmVjdG9yIGZyb20gJ0B3YWxsZXRjb25uZWN0L2NvcmUnO1xuaW1wb3J0ICogYXMgY3J5cHRvTGliIGZyb20gJ0B3YWxsZXRjb25uZWN0L2lzby1jcnlwdG8nO1xuaW1wb3J0IHtcbiAgSVB1c2hTZXJ2ZXJPcHRpb25zLFxuICBJV2FsbGV0Q29ubmVjdE9wdGlvbnMsXG59IGZyb20gJ0B3YWxsZXRjb25uZWN0L3R5cGVzJztcbmltcG9ydCB7IHV1aWQgfSBmcm9tICdAd2FsbGV0Y29ubmVjdC91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzTW9iaWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvYnJvd3Nlci1jaGVjayc7XG5pbXBvcnQge1xuICBXYWxsZXRDb25uZWN0Q3JlYXRlVHhGYWlsZWQsXG4gIFdhbGxldENvbm5lY3RUaW1lb3V0LFxuICBXYWxsZXRDb25uZWN0VHhGYWlsZWQsXG4gIFdhbGxldENvbm5lY3RUeFVuc3BlY2lmaWVkRXJyb3IsXG4gIFdhbGxldENvbm5lY3RVc2VyRGVuaWVkLFxuICBXYWxsZXRDb25uZWN0U2lnblVuc3BlY2lmaWVkRXJyb3IsXG4gIFdhbGxldENvbm5lY3RTaWduQnl0ZXNVbnNwZWNpZmllZEVycm9yXG59IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCBTb2NrZXRUcmFuc3BvcnQgZnJvbSAnLi9pbXBsL3NvY2tldC10cmFuc3BvcnQnO1xuaW1wb3J0IHsgWHBsYVdhbGxldGNvbm5lY3RRcmNvZGVNb2RhbCB9IGZyb20gJy4vbW9kYWwnO1xuaW1wb3J0IHtcbiAgV2FsbGV0Q29ubmVjdFNlc3Npb24sXG4gIFdhbGxldENvbm5lY3RTZXNzaW9uU3RhdHVzLFxuICBXYWxsZXRDb25uZWN0VHhSZXN1bHQsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgV2ViRXh0ZW5zaW9uU2lnblBheWxvYWQsXG4gIFdlYkV4dGVuc2lvblNpZ25CeXRlc1BheWxvYWQsXG59IGZyb20gJ0Brc2FuZ2t1azEwL3dlYi1leHRlbnNpb24taW50ZXJmYWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRDb25uZWN0Q29udHJvbGxlck9wdGlvbnMge1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGhhdCBgbmV3IFdhbGxldENvbm5lY3QoY29ubmVjdG9yT3B0cylgXG4gICAqXG4gICAqIEBkZWZhdWx0XG4gICAqIGBgYGpzXG4gICAqIHtcbiAgICogICBicmlkZ2U6ICdodHRwczovL3dhbGxldGNvbm5lY3QueHBsYS5pby8nLFxuICAgKiAgIHFyY29kZU1vZGFsOiBuZXcgWHBsYVdhbGxldGNvbm5lY3RRcmNvZGVNb2RhbCgpLFxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgY29ubmVjdG9yT3B0cz86IElXYWxsZXRDb25uZWN0T3B0aW9ucztcblxuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGhhdCBgbmV3IFdhbGxldENvbm5lY3QoXywgcHVzaFNlcnZlck9wdHMpYFxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWRcbiAgICovXG4gIHB1c2hTZXJ2ZXJPcHRzPzogSVB1c2hTZXJ2ZXJPcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdhbGxldENvbm5lY3RDb250cm9sbGVyIHtcbiAgc2Vzc2lvbjogKCkgPT4gT2JzZXJ2YWJsZTxXYWxsZXRDb25uZWN0U2Vzc2lvbj47XG4gIGdldExhdGVzdFNlc3Npb246ICgpID0+IFdhbGxldENvbm5lY3RTZXNzaW9uO1xuICBwb3N0OiAodHg6IENyZWF0ZVR4T3B0aW9ucywgX3dhbGxldEFwcD86IFdhbGxldEFwcCB8IGJvb2xlYW4pID0+IFByb21pc2U8V2FsbGV0Q29ubmVjdFR4UmVzdWx0PjtcbiAgc2lnbjogKFxuICAgIHR4OiBDcmVhdGVUeE9wdGlvbnMgJiB7XG4gICAgICBzZXF1ZW5jZT86IG51bWJlcjtcbiAgICAgIGFjY291bnROdW1iZXI/OiBudW1iZXI7XG4gICAgICBzaWduTW9kZT86IFNpZ25Nb2RlO1xuICAgIH0sIFxuICAgIF93YWxsZXRBcHA/OiBXYWxsZXRBcHAgfCBib29sZWFuXG4gICkgPT4gUHJvbWlzZTxXZWJFeHRlbnNpb25TaWduUGF5bG9hZD47XG4gIHNpZ25CeXRlczogKGJ5dGVzOiBCdWZmZXIsIF93YWxsZXRBcHA/OiBXYWxsZXRBcHAgfCBib29sZWFuKSA9PiBQcm9taXNlPFdlYkV4dGVuc2lvblNpZ25CeXRlc1BheWxvYWQ+O1xuICBkaXNjb25uZWN0OiAoKSA9PiB2b2lkO1xufVxuXG5jb25zdCBXQUxMRVRDT05ORUNUX1NUT1JBR0VfS0VZID0gJ3dhbGxldGNvbm5lY3QnO1xuXG5leHBvcnQgZnVuY3Rpb24gY29ubmVjdElmU2Vzc2lvbkV4aXN0cyhcbiAgb3B0aW9uczogV2FsbGV0Q29ubmVjdENvbnRyb2xsZXJPcHRpb25zID0ge30sXG4pOiBXYWxsZXRDb25uZWN0Q29udHJvbGxlciB8IG51bGwge1xuICBjb25zdCBzdG9yZWRTZXNzaW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oV0FMTEVUQ09OTkVDVF9TVE9SQUdFX0tFWSk7XG5cbiAgaWYgKHR5cGVvZiBzdG9yZWRTZXNzaW9uID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBjb25uZWN0KG9wdGlvbnMsIHRydWUpO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25uZWN0KFxuICBvcHRpb25zOiBXYWxsZXRDb25uZWN0Q29udHJvbGxlck9wdGlvbnMgPSB7fSxcbiAgdXNlQ2FjaGVkU2Vzc2lvbjogYm9vbGVhbiA9IGZhbHNlLFxuICB3YWxsZXRBcHA/OiBXYWxsZXRBcHAgfCBib29sZWFuXG4pOiBXYWxsZXRDb25uZWN0Q29udHJvbGxlciB7XG4gIGxldCBjb25uZWN0b3I6IENvbm5lY3RvciB8IG51bGwgPSBudWxsO1xuXG4gIGxldCBzZXNzaW9uU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PFdhbGxldENvbm5lY3RTZXNzaW9uPiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxXYWxsZXRDb25uZWN0U2Vzc2lvbj4oe1xuICAgICAgc3RhdHVzOiBXYWxsZXRDb25uZWN0U2Vzc2lvblN0YXR1cy5ESVNDT05ORUNURUQsXG4gICAgfSk7XG5cbiAgY29uc3QgcXJjb2RlTW9kYWwgPVxuICAgIG9wdGlvbnMuY29ubmVjdG9yT3B0cz8ucXJjb2RlTW9kYWwgPz8gbmV3IFhwbGFXYWxsZXRjb25uZWN0UXJjb2RlTW9kYWwod2FsbGV0QXBwKTtcblxuICBjb25zdCBjb25uZWN0b3JPcHRzOiBJV2FsbGV0Q29ubmVjdE9wdGlvbnMgPSB7XG4gICAgYnJpZGdlOiAnaHR0cHM6Ly93YWxsZXRjb25uZWN0LnhwbGEuaW8vJyxcbiAgICBxcmNvZGVNb2RhbCxcbiAgICAuLi5vcHRpb25zLmNvbm5lY3Rvck9wdHMsXG4gIH07XG5cbiAgY29uc3QgcHVzaFNlcnZlck9wdHM6IElQdXNoU2VydmVyT3B0aW9ucyB8IHVuZGVmaW5lZCA9IG9wdGlvbnMucHVzaFNlcnZlck9wdHM7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIGV2ZW50IGxpc3RlbmVyc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgZnVuY3Rpb24gaW5pdEV2ZW50cygpIHtcbiAgICBpZiAoIWNvbm5lY3Rvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXYWxsZXRDb25uZWN0IGlzIG5vdCBkZWZpbmVkIWApO1xuICAgIH1cblxuICAgIGNvbm5lY3Rvci5vbignc2Vzc2lvbl91cGRhdGUnLCBhc3luYyAoZXJyb3IsIHBheWxvYWQpID0+IHtcbiAgICAgIGlmIChlcnJvcikgdGhyb3cgZXJyb3I7XG5cbiAgICAgIHNlc3Npb25TdWJqZWN0Lm5leHQoe1xuICAgICAgICBzdGF0dXM6IFdhbGxldENvbm5lY3RTZXNzaW9uU3RhdHVzLkNPTk5FQ1RFRCxcbiAgICAgICAgcGVlck1ldGE6IHBheWxvYWQucGFyYW1zWzBdLnBlZXJNZXRhLFxuICAgICAgICB4cGxhQWRkcmVzczogcGF5bG9hZC5wYXJhbXNbMF0uYWNjb3VudHNbMF0sXG4gICAgICAgIGNoYWluSWQ6IHBheWxvYWQucGFyYW1zWzBdLmNoYWluSWQsXG4gICAgICB9KTtcblxuICAgICAgY29uc29sZS5sb2coJ1dBTExFVENPTk5FQ1QgU0VTU0lPTiBVUERBVEVEOicsIHBheWxvYWQucGFyYW1zWzBdKTtcbiAgICB9KTtcblxuICAgIGNvbm5lY3Rvci5vbignY29ubmVjdCcsIChlcnJvciwgcGF5bG9hZCkgPT4ge1xuICAgICAgaWYgKGVycm9yKSB0aHJvdyBlcnJvcjtcblxuICAgICAgc2Vzc2lvblN1YmplY3QubmV4dCh7XG4gICAgICAgIHN0YXR1czogV2FsbGV0Q29ubmVjdFNlc3Npb25TdGF0dXMuQ09OTkVDVEVELFxuICAgICAgICBwZWVyTWV0YTogcGF5bG9hZC5wYXJhbXNbMF0ucGVlck1ldGEsXG4gICAgICAgIHhwbGFBZGRyZXNzOiBwYXlsb2FkLnBhcmFtc1swXS5hY2NvdW50c1swXSxcbiAgICAgICAgY2hhaW5JZDogcGF5bG9hZC5wYXJhbXNbMF0uY2hhaW5JZCxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29ubmVjdG9yLm9uKCdkaXNjb25uZWN0JywgKGVycm9yLCBwYXlsb2FkKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xuXG4gICAgICBzZXNzaW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgc3RhdHVzOiBXYWxsZXRDb25uZWN0U2Vzc2lvblN0YXR1cy5ESVNDT05ORUNURUQsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBpbml0aWFsaXplXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBjb25zdCBjYWNoZWRTZXNzaW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3dhbGxldGNvbm5lY3QnKTtcblxuICBpZiAodHlwZW9mIGNhY2hlZFNlc3Npb24gPT09ICdzdHJpbmcnICYmIHVzZUNhY2hlZFNlc3Npb24pIHtcbiAgICBjb25zdCBjYWNoZWRTZXNzaW9uT2JqZWN0ID0gSlNPTi5wYXJzZShjYWNoZWRTZXNzaW9uKTtcbiAgICBjb25zdCBjbGllbnRJZCA9IGNhY2hlZFNlc3Npb25PYmplY3QuY2xpZW50SWQ7XG4gICAgY29uc3QgZHJhZnRDb25uZWN0b3IgPSBuZXcgQ29ubmVjdG9yKHtcbiAgICAgIGNvbm5lY3Rvck9wdHM6IHtcbiAgICAgICAgLi4uY29ubmVjdG9yT3B0cyxcbiAgICAgICAgc2Vzc2lvbjogSlNPTi5wYXJzZShjYWNoZWRTZXNzaW9uKSxcbiAgICAgIH0sXG4gICAgICBwdXNoU2VydmVyT3B0cyxcbiAgICAgIGNyeXB0b0xpYixcbiAgICAgIHRyYW5zcG9ydDogbmV3IFNvY2tldFRyYW5zcG9ydCh7XG4gICAgICAgIHByb3RvY29sOiAnd2MnLFxuICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICB1cmw6IGNvbm5lY3Rvck9wdHMuYnJpZGdlISxcbiAgICAgICAgc3Vic2NyaXB0aW9uczogW2NsaWVudElkXSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIGRyYWZ0Q29ubmVjdG9yLmNsaWVudElkID0gY2xpZW50SWQ7XG5cbiAgICBjb25uZWN0b3IgPSBkcmFmdENvbm5lY3RvcjtcblxuICAgIGluaXRFdmVudHMoKTtcblxuICAgIHNlc3Npb25TdWJqZWN0Lm5leHQoe1xuICAgICAgc3RhdHVzOiBXYWxsZXRDb25uZWN0U2Vzc2lvblN0YXR1cy5DT05ORUNURUQsXG4gICAgICBwZWVyTWV0YTogZHJhZnRDb25uZWN0b3IucGVlck1ldGEhLFxuICAgICAgeHBsYUFkZHJlc3M6IGRyYWZ0Q29ubmVjdG9yLmFjY291bnRzWzBdLFxuICAgICAgY2hhaW5JZDogZHJhZnRDb25uZWN0b3IuY2hhaW5JZCxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjbGllbnRJZCA9IHV1aWQoKTtcbiAgICBjb25zdCBkcmFmdENvbm5lY3RvciA9IG5ldyBDb25uZWN0b3Ioe1xuICAgICAgY29ubmVjdG9yT3B0cyxcbiAgICAgIHB1c2hTZXJ2ZXJPcHRzLFxuICAgICAgY3J5cHRvTGliLFxuICAgICAgdHJhbnNwb3J0OiBuZXcgU29ja2V0VHJhbnNwb3J0KHtcbiAgICAgICAgcHJvdG9jb2w6ICd3YycsXG4gICAgICAgIHZlcnNpb246IDEsXG4gICAgICAgIHVybDogY29ubmVjdG9yT3B0cy5icmlkZ2UhLFxuICAgICAgICBzdWJzY3JpcHRpb25zOiBbY2xpZW50SWRdLFxuICAgICAgfSksXG4gICAgfSk7XG4gICAgZHJhZnRDb25uZWN0b3IuY2xpZW50SWQgPSBjbGllbnRJZDtcblxuICAgIGNvbm5lY3RvciA9IGRyYWZ0Q29ubmVjdG9yO1xuXG4gICAgaWYgKCFkcmFmdENvbm5lY3Rvci5jb25uZWN0ZWQpIHtcbiAgICAgIGRyYWZ0Q29ubmVjdG9yLmNyZWF0ZVNlc3Npb24oKS5jYXRjaChjb25zb2xlLmVycm9yKTtcblxuICAgICAgaWYgKHFyY29kZU1vZGFsIGluc3RhbmNlb2YgWHBsYVdhbGxldGNvbm5lY3RRcmNvZGVNb2RhbCkge1xuICAgICAgICBxcmNvZGVNb2RhbC5zZXRDbG9zZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgICBzZXNzaW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgICAgIHN0YXR1czogV2FsbGV0Q29ubmVjdFNlc3Npb25TdGF0dXMuRElTQ09OTkVDVEVELFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaW5pdEV2ZW50cygpO1xuXG4gICAgICBzZXNzaW9uU3ViamVjdC5uZXh0KHtcbiAgICAgICAgc3RhdHVzOiBXYWxsZXRDb25uZWN0U2Vzc2lvblN0YXR1cy5SRVFVRVNURUQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gbWV0aG9kc1xuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgZnVuY3Rpb24gZGlzY29ubmVjdCgpIHtcbiAgICBpZiAoY29ubmVjdG9yICYmIGNvbm5lY3Rvci5jb25uZWN0ZWQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbm5lY3Rvci5raWxsU2Vzc2lvbigpO1xuICAgICAgfSBjYXRjaCB7fVxuICAgIH1cblxuICAgIHNlc3Npb25TdWJqZWN0Lm5leHQoe1xuICAgICAgc3RhdHVzOiBXYWxsZXRDb25uZWN0U2Vzc2lvblN0YXR1cy5ESVNDT05ORUNURUQsXG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXNzaW9uKCk6IE9ic2VydmFibGU8V2FsbGV0Q29ubmVjdFNlc3Npb24+IHtcbiAgICByZXR1cm4gc2Vzc2lvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRMYXRlc3RTZXNzaW9uKCk6IFdhbGxldENvbm5lY3RTZXNzaW9uIHtcbiAgICByZXR1cm4gc2Vzc2lvblN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBwb3N0IHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSB0eCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEBwYXJhbSB3YWxsZXRBcHAgd2FsbGV0IHR5cGUsIGRlZmF1bHQgaXMgWFBMQSBWYXVsdFxuICAgKiBAdGhyb3dzIHsgV2FsbGV0Q29ubmVjdFVzZXJEZW5pZWQgfVxuICAgKiBAdGhyb3dzIHsgV2FsbGV0Q29ubmVjdENyZWF0ZVR4RmFpbGVkIH1cbiAgICogQHRocm93cyB7IFdhbGxldENvbm5lY3RUeEZhaWxlZCB9XG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0VGltZW91dCB9XG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0VHhVbnNwZWNpZmllZEVycm9yIH1cbiAgICovXG4gIGZ1bmN0aW9uIHBvc3QodHg6IENyZWF0ZVR4T3B0aW9ucywgX3dhbGxldEFwcD86IFdhbGxldEFwcCB8IGJvb2xlYW4pOiBQcm9taXNlPFdhbGxldENvbm5lY3RUeFJlc3VsdD4ge1xuICAgIGlmICghY29ubmVjdG9yIHx8ICFjb25uZWN0b3IuY29ubmVjdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdhbGxldENvbm5lY3QgaXMgbm90IGNvbm5lY3RlZCFgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IERhdGUubm93KCk7XG5cbiAgICBjb25zdCBzZXJpYWxpemVkVHhPcHRpb25zID0ge1xuICAgICAgbXNnczogdHgubXNncy5tYXAoKG1zZykgPT4gbXNnLnRvSlNPTigpKSxcbiAgICAgIGZlZTogdHguZmVlPy50b0pTT04oKSxcbiAgICAgIG1lbW86IHR4Lm1lbW8sXG4gICAgICBnYXM6IHR4LmdhcyxcbiAgICAgIGdhc1ByaWNlczogdHguZ2FzUHJpY2VzPy50b1N0cmluZygpLFxuICAgICAgZ2FzQWRqdXN0bWVudDogdHguZ2FzQWRqdXN0bWVudD8udG9TdHJpbmcoKSxcbiAgICAgIC8vYWNjb3VudF9udW1iZXI6IHR4LmFjY291bnRfbnVtYmVyLFxuICAgICAgLy9zZXF1ZW5jZTogdHguc2VxdWVuY2UsXG4gICAgICBmZWVEZW5vbXM6IHR4LmZlZURlbm9tcyxcbiAgICAgIHRpbWVvdXRIZWlnaHQ6IHR4LnRpbWVvdXRIZWlnaHQsXG4gICAgfTtcblxuICAgIGlmIChpc01vYmlsZSgpKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gYnRvYShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGhhbmRzaGFrZVRvcGljOiBjb25uZWN0b3IuaGFuZHNoYWtlVG9waWMsXG4gICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgICAgcGFyYW1zOiBzZXJpYWxpemVkVHhPcHRpb25zLFxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIGNvbmZpcm0ocGF5bG9hZCwgd2FsbGV0QXBwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29ubmVjdG9yXG4gICAgICAuc2VuZEN1c3RvbVJlcXVlc3Qoe1xuICAgICAgICBpZCxcbiAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgIHBhcmFtczogW3NlcmlhbGl6ZWRUeE9wdGlvbnNdLFxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgbGV0IHRocm93RXJyb3IgPSBlcnJvcjtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgY29kZSwgdHhoYXNoLCBtZXNzYWdlLCByYXdfbWVzc2FnZSB9ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgdGhyb3dFcnJvciA9IG5ldyBXYWxsZXRDb25uZWN0VXNlckRlbmllZCgpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgdGhyb3dFcnJvciA9IG5ldyBXYWxsZXRDb25uZWN0Q3JlYXRlVHhGYWlsZWQobWVzc2FnZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RUeEZhaWxlZChcbiAgICAgICAgICAgICAgICB0eGhhc2gsXG4gICAgICAgICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgICAgICAgICByYXdfbWVzc2FnZSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFRpbWVvdXQobWVzc2FnZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICAgICAgdGhyb3dFcnJvciA9IG5ldyBXYWxsZXRDb25uZWN0VHhVbnNwZWNpZmllZEVycm9yKG1lc3NhZ2UpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFR4VW5zcGVjaWZpZWRFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IHRocm93RXJyb3I7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzaWduIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBieXRlczogQnVmZmVyXG4gICAqIEBwYXJhbSB3YWxsZXRBcHAgd2FsbGV0IHR5cGUsIGRlZmF1bHQgaXMgWFBMQSBWYXVsdFxuICAgKiBAdGhyb3dzIHsgV2FsbGV0Q29ubmVjdFVzZXJEZW5pZWQgfVxuICAgKiBAdGhyb3dzIHsgV2FsbGV0Q29ubmVjdFRpbWVvdXQgfVxuICAgKiBAdGhyb3dzIHsgV2FsbGV0Q29ubmVjdFNpZ25CeXRlc1Vuc3BlY2lmaWVkRXJyb3IgfVxuICAgKi9cbiAgZnVuY3Rpb24gc2lnbihcbiAgICB0eDogQ3JlYXRlVHhPcHRpb25zICAmIHtcbiAgICAgIHNlcXVlbmNlPzogbnVtYmVyO1xuICAgICAgYWNjb3VudE51bWJlcj86IG51bWJlcjtcbiAgICAgIHNpZ25Nb2RlPzogU2lnbk1vZGU7XG4gICAgfSwgXG4gICAgX3dhbGxldEFwcD86IFdhbGxldEFwcCB8IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxXZWJFeHRlbnNpb25TaWduUGF5bG9hZD4ge1xuICAgIGlmICghY29ubmVjdG9yIHx8ICFjb25uZWN0b3IuY29ubmVjdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFdhbGxldENvbm5lY3QgaXMgbm90IGNvbm5lY3RlZCFgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IERhdGUubm93KCk7XG5cbiAgICBjb25zdCBzZXJpYWxpemVkVHhPcHRpb25zID0ge1xuICAgICAgbXNnczogdHgubXNncy5tYXAoKG1zZykgPT4gbXNnLnRvSlNPTigpKSxcbiAgICAgIGZlZTogdHguZmVlPy50b0pTT04oKSxcbiAgICAgIG1lbW86IHR4Lm1lbW8sXG4gICAgICBnYXM6IHR4LmdhcyxcbiAgICAgIGdhc1ByaWNlczogdHguZ2FzUHJpY2VzPy50b1N0cmluZygpLFxuICAgICAgZ2FzQWRqdXN0bWVudDogdHguZ2FzQWRqdXN0bWVudD8udG9TdHJpbmcoKSxcbiAgICAgIC8vYWNjb3VudF9udW1iZXI6IHR4LmFjY291bnRfbnVtYmVyLFxuICAgICAgLy9zZXF1ZW5jZTogdHguc2VxdWVuY2UsXG4gICAgICBmZWVEZW5vbXM6IHR4LmZlZURlbm9tcyxcbiAgICAgIHRpbWVvdXRIZWlnaHQ6IHR4LnRpbWVvdXRIZWlnaHQsXG4gICAgICBzZXF1ZW5jZTogdHguc2VxdWVuY2UsXG4gICAgICBhY2NvdW50TnVtYmVyOiB0eC5hY2NvdW50TnVtYmVyLFxuICAgICAgc2lnbk1vZGU6IHR4LnNpZ25Nb2RlXG4gICAgfTtcblxuICAgIGlmIChpc01vYmlsZSgpKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gYnRvYShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGlkLFxuICAgICAgICAgIGhhbmRzaGFrZVRvcGljOiBjb25uZWN0b3IuaGFuZHNoYWtlVG9waWMsXG4gICAgICAgICAgbWV0aG9kOiAnc2lnbicsXG4gICAgICAgICAgcGFyYW1zOiBzZXJpYWxpemVkVHhPcHRpb25zLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgICBjb25maXJtKHBheWxvYWQsIF93YWxsZXRBcHApO1xuICAgIH1cblxuICAgIHJldHVybiBjb25uZWN0b3JcbiAgICAgIC5zZW5kQ3VzdG9tUmVxdWVzdCh7XG4gICAgICAgIGlkLFxuICAgICAgICBtZXRob2Q6ICdzaWduJyxcbiAgICAgICAgcGFyYW1zOiBbc2VyaWFsaXplZFR4T3B0aW9uc10sXG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICBsZXQgdGhyb3dFcnJvciA9IGVycm9yO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgeyBjb2RlLCB0eGhhc2gsIG1lc3NhZ2UsIHJhd19tZXNzYWdlIH0gPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZXJyb3IubWVzc2FnZSxcbiAgICAgICAgICApO1xuICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RVc2VyRGVuaWVkKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RDcmVhdGVUeEZhaWxlZChtZXNzYWdlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFR4RmFpbGVkKFxuICAgICAgICAgICAgICAgIHR4aGFzaCxcbiAgICAgICAgICAgICAgICBtZXNzYWdlLFxuICAgICAgICAgICAgICAgIHJhd19tZXNzYWdlLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgdGhyb3dFcnJvciA9IG5ldyBXYWxsZXRDb25uZWN0VGltZW91dChtZXNzYWdlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDk5OlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RTaWduVW5zcGVjaWZpZWRFcnJvcihtZXNzYWdlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RTaWduVW5zcGVjaWZpZWRFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IHRocm93RXJyb3I7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzaWduQnl0ZXMgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIGJ5dGVzOiBCdWZmZXJcbiAgICogQHBhcmFtIGJ5dGVzOiBXYWxsZXRBcHAgfCBib29sZWFuXG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0VXNlckRlbmllZCB9XG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0VGltZW91dCB9XG4gICAqIEB0aHJvd3MgeyBXYWxsZXRDb25uZWN0U2lnbkJ5dGVzVW5zcGVjaWZpZWRFcnJvciB9XG4gICAqL1xuICBmdW5jdGlvbiBzaWduQnl0ZXMoYnl0ZXM6IEJ1ZmZlciwgX3dhbGxldEFwcD86IFdhbGxldEFwcCB8IGJvb2xlYW4pOiBQcm9taXNlPFdlYkV4dGVuc2lvblNpZ25CeXRlc1BheWxvYWQ+IHtcbiAgICBpZiAoIWNvbm5lY3RvciB8fCAhY29ubmVjdG9yLmNvbm5lY3RlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXYWxsZXRDb25uZWN0IGlzIG5vdCBjb25uZWN0ZWQhYCk7XG4gICAgfVxuXG4gICAgY29uc3QgaWQgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKGlzTW9iaWxlKCkpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSBidG9hKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgaWQsXG4gICAgICAgICAgaGFuZHNoYWtlVG9waWM6IGNvbm5lY3Rvci5oYW5kc2hha2VUb3BpYyxcbiAgICAgICAgICBtZXRob2Q6ICdzaWduQnl0ZXMnLFxuICAgICAgICAgIHBhcmFtczogYnl0ZXMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgY29uZmlybShwYXlsb2FkLCBfd2FsbGV0QXBwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29ubmVjdG9yXG4gICAgICAuc2VuZEN1c3RvbVJlcXVlc3Qoe1xuICAgICAgICBpZCxcbiAgICAgICAgbWV0aG9kOiAnc2lnbkJ5dGVzJyxcbiAgICAgICAgcGFyYW1zOiBbYnl0ZXNdLFxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgbGV0IHRocm93RXJyb3IgPSBlcnJvcjtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgY29kZSwgbWVzc2FnZSB9ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICAgIGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHN3aXRjaCAoY29kZSkge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RVc2VyRGVuaWVkKCk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICB0aHJvd0Vycm9yID0gbmV3IFdhbGxldENvbm5lY3RUaW1lb3V0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgOTk6XG4gICAgICAgICAgICAgIHRocm93RXJyb3IgPSBuZXcgV2FsbGV0Q29ubmVjdFNpZ25CeXRlc1Vuc3BlY2lmaWVkRXJyb3IobWVzc2FnZSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgdGhyb3dFcnJvciA9IG5ldyBXYWxsZXRDb25uZWN0U2lnbkJ5dGVzVW5zcGVjaWZpZWRFcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IHRocm93RXJyb3I7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBtb2JpbGUgY29uZmlybVxuICAgKiBcbiAgICogQHBhcmFtIHBheWxvYWQgcGF5bGFvZFxuICAgKiBAcGFyYW0gX3dhbGxldEFwcCB3YWxsZXQgdHlwZSwgZGVmYXVsdCBpcyBYUExBIFZhdWx0XG4gICAqL1xuICBmdW5jdGlvbiBjb25maXJtKHBheWxvYWQ6IHN0cmluZywgX3dhbGxldEFwcD86IFdhbGxldEFwcCB8IGJvb2xlYW4pIHtcbiAgICBpZiAoIV93YWxsZXRBcHAgfHwgdHlwZW9mIF93YWxsZXRBcHAgPT09ICdib29sZWFuJykge1xuICAgICAgaWYgKF93YWxsZXRBcHApIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgYzJ4dmF1bHQ6Ly93YWxsZXRjb25uZWN0X2NvbmZpcm0vP3BheWxvYWQ9JHtwYXlsb2FkfWA7ICBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYHhwbGF2YXVsdDovL3dhbGxldGNvbm5lY3RfY29uZmlybS8/cGF5bG9hZD0ke3BheWxvYWR9YDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKF93YWxsZXRBcHAgPT09IFdhbGxldEFwcC5YUExBX1ZBVUxUKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYHhwbGF2YXVsdDovL3dhbGxldGNvbm5lY3RfY29uZmlybS8/cGF5bG9hZD0ke3BheWxvYWR9YDtcbiAgICAgIH0gZWxzZSBpZiAoX3dhbGxldEFwcCA9PT0gV2FsbGV0QXBwLlhQTEFfR0FNRVMpIHtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgYzJ4dmF1bHQ6Ly93YWxsZXRjb25uZWN0X2NvbmZpcm0vP3BheWxvYWQ9JHtwYXlsb2FkfWA7ICBcbiAgICAgIH0gZWxzZSBpZiAoX3dhbGxldEFwcCA9PT0gV2FsbGV0QXBwLlhQTEFfR0FNRVNfTkVXKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYHhnYW1lc3dhbGxldDovL3dhbGxldGNvbm5lY3RfY29uZmlybS8/cGF5bG9hZD0ke3BheWxvYWR9YDtcbiAgICAgIH0gZWxzZSBpZiAoX3dhbGxldEFwcCA9PT0gV2FsbGV0QXBwLlhQTEFZWikge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGB4cGxheXo6Ly93YWxsZXRjb25uZWN0X2NvbmZpcm0vP3BheWxvYWQ9JHtwYXlsb2FkfWA7ICBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYHhwbGF2YXVsdDovL3dhbGxldGNvbm5lY3RfY29uZmlybS8/cGF5bG9hZD0ke3BheWxvYWR9YDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gcmV0dXJuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICByZXR1cm4ge1xuICAgIHNlc3Npb24sXG4gICAgZ2V0TGF0ZXN0U2Vzc2lvbixcbiAgICBwb3N0LFxuICAgIHNpZ24sXG4gICAgc2lnbkJ5dGVzLFxuICAgIGRpc2Nvbm5lY3QsXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WalletConnectSignBytesUnspecifiedError = exports.WalletConnectSignUnspecifiedError = exports.WalletConnectTxUnspecifiedError = exports.WalletConnectTimeout = exports.WalletConnectTxFailed = exports.WalletConnectCreateTxFailed = exports.WalletConnectUserDenied = void 0;
|
|
4
|
+
class WalletConnectUserDenied extends Error {
|
|
5
|
+
}
|
|
6
|
+
exports.WalletConnectUserDenied = WalletConnectUserDenied;
|
|
7
|
+
class WalletConnectCreateTxFailed extends Error {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'WalletConnectCreateTxFailed';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.WalletConnectCreateTxFailed = WalletConnectCreateTxFailed;
|
|
14
|
+
class WalletConnectTxFailed extends Error {
|
|
15
|
+
constructor(txhash, message, raw_message) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.txhash = txhash;
|
|
18
|
+
this.raw_message = raw_message;
|
|
19
|
+
this.name = 'WalletConnectTxFailed';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.WalletConnectTxFailed = WalletConnectTxFailed;
|
|
23
|
+
class WalletConnectTimeout extends Error {
|
|
24
|
+
constructor(message) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = 'WalletConnectTimeout';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.WalletConnectTimeout = WalletConnectTimeout;
|
|
30
|
+
class WalletConnectTxUnspecifiedError extends Error {
|
|
31
|
+
constructor(message) {
|
|
32
|
+
super(message);
|
|
33
|
+
this.name = 'WalletConnectTxUnspecifiedError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.WalletConnectTxUnspecifiedError = WalletConnectTxUnspecifiedError;
|
|
37
|
+
class WalletConnectSignUnspecifiedError extends Error {
|
|
38
|
+
constructor(message) {
|
|
39
|
+
super(message);
|
|
40
|
+
this.name = 'WalletConnectSignUnspecifiedError';
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.WalletConnectSignUnspecifiedError = WalletConnectSignUnspecifiedError;
|
|
44
|
+
class WalletConnectSignBytesUnspecifiedError extends Error {
|
|
45
|
+
constructor(message) {
|
|
46
|
+
super(message);
|
|
47
|
+
this.name = 'WalletConnectSignBytesUnspecifiedError';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.WalletConnectSignBytesUnspecifiedError = WalletConnectSignBytesUnspecifiedError;
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0Brc2FuZ2t1azEwL3dhbGxldC1jb250cm9sbGVyL21vZHVsZXMvd2FsbGV0Y29ubmVjdC9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBYSx1QkFBd0IsU0FBUSxLQUFLO0NBQUc7QUFBckQsMERBQXFEO0FBRXJELE1BQWEsMkJBQTRCLFNBQVEsS0FBSztJQUNwRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyw2QkFBNkIsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFMRCxrRUFLQztBQUVELE1BQWEscUJBQXNCLFNBQVEsS0FBSztJQUM5QyxZQUNrQixNQUFjLEVBQzlCLE9BQWUsRUFDQyxXQUFnQjtRQUVoQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFKQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRWQsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFHaEMsSUFBSSxDQUFDLElBQUksR0FBRyx1QkFBdUIsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUFURCxzREFTQztBQUVELE1BQWEsb0JBQXFCLFNBQVEsS0FBSztJQUM3QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFMRCxvREFLQztBQUVELE1BQWEsK0JBQWdDLFNBQVEsS0FBSztJQUN4RCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxpQ0FBaUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFMRCwwRUFLQztBQUVELE1BQWEsaUNBQWtDLFNBQVEsS0FBSztJQUMxRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxtQ0FBbUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFMRCw4RUFLQztBQUVELE1BQWEsc0NBQXVDLFNBQVEsS0FBSztJQUMvRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyx3Q0FBd0MsQ0FBQztJQUN2RCxDQUFDO0NBQ0Y7QUFMRCx3RkFLQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBXYWxsZXRDb25uZWN0VXNlckRlbmllZCBleHRlbmRzIEVycm9yIHt9XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRDb25uZWN0Q3JlYXRlVHhGYWlsZWQgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdXYWxsZXRDb25uZWN0Q3JlYXRlVHhGYWlsZWQnO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRDb25uZWN0VHhGYWlsZWQgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB0eGhhc2g6IHN0cmluZyxcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHJhd19tZXNzYWdlOiBhbnksXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdXYWxsZXRDb25uZWN0VHhGYWlsZWQnO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRDb25uZWN0VGltZW91dCBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1dhbGxldENvbm5lY3RUaW1lb3V0JztcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgV2FsbGV0Q29ubmVjdFR4VW5zcGVjaWZpZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1dhbGxldENvbm5lY3RUeFVuc3BlY2lmaWVkRXJyb3InO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRDb25uZWN0U2lnblVuc3BlY2lmaWVkRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdXYWxsZXRDb25uZWN0U2lnblVuc3BlY2lmaWVkRXJyb3InO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRDb25uZWN0U2lnbkJ5dGVzVW5zcGVjaWZpZWRFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1dhbGxldENvbm5lY3RTaWduQnl0ZXNVbnNwZWNpZmllZEVycm9yJztcbiAgfVxufSJdfQ==
|