@multiversx/sdk-web-wallet-cross-window-provider 0.0.3 → 0.0.5
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/out/crossWindowProvider.d.ts +8 -5
- package/out/crossWindowProvider.js +69 -113
- package/out/crossWindowProvider.js.map +1 -1
- package/out/errors.d.ts +21 -0
- package/out/errors.js +43 -1
- package/out/errors.js.map +1 -1
- package/out/types.d.ts +19 -0
- package/out/types.js +26 -0
- package/out/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SignableMessage, Transaction } from '@multiversx/sdk-core';
|
|
2
|
+
import { CrossWindowProviderResponseEnums } from './types';
|
|
2
3
|
interface ICrossWindowWalletAccount {
|
|
3
4
|
address: string;
|
|
4
5
|
name?: string;
|
|
@@ -12,7 +13,6 @@ export declare class CrossWindowProvider {
|
|
|
12
13
|
private static _instance;
|
|
13
14
|
walletWindow: Window | null;
|
|
14
15
|
private handshakeEstablished;
|
|
15
|
-
private callbackUrl;
|
|
16
16
|
private accessToken;
|
|
17
17
|
private constructor();
|
|
18
18
|
static getInstance(): CrossWindowProvider;
|
|
@@ -20,12 +20,15 @@ export declare class CrossWindowProvider {
|
|
|
20
20
|
setWalletUrl(url: string): CrossWindowProvider;
|
|
21
21
|
init(): Promise<boolean>;
|
|
22
22
|
handshake(): Promise<boolean>;
|
|
23
|
-
private
|
|
24
|
-
listenOnce(): Promise<any>;
|
|
23
|
+
private addHandshakeChangeListener;
|
|
24
|
+
listenOnce(action: CrossWindowProviderResponseEnums): Promise<any>;
|
|
25
|
+
private connectWallet;
|
|
25
26
|
login(options?: {
|
|
26
|
-
callbackUrl?: string;
|
|
27
27
|
token?: string;
|
|
28
|
-
}): Promise<
|
|
28
|
+
}): Promise<{
|
|
29
|
+
address: string;
|
|
30
|
+
signature: string | undefined;
|
|
31
|
+
}>;
|
|
29
32
|
logout(): Promise<boolean>;
|
|
30
33
|
private disconnect;
|
|
31
34
|
getAddress(): Promise<string>;
|
|
@@ -13,6 +13,7 @@ exports.CrossWindowProvider = exports.DAPP_WINDOW_NAME = void 0;
|
|
|
13
13
|
const sdk_core_1 = require("@multiversx/sdk-core");
|
|
14
14
|
const errors_1 = require("./errors");
|
|
15
15
|
const helpers_1 = require("./helpers");
|
|
16
|
+
const types_1 = require("./types");
|
|
16
17
|
exports.DAPP_WINDOW_NAME = window.location.origin;
|
|
17
18
|
class CrossWindowProvider {
|
|
18
19
|
constructor() {
|
|
@@ -21,18 +22,13 @@ class CrossWindowProvider {
|
|
|
21
22
|
this.initialized = false;
|
|
22
23
|
this.walletWindow = null;
|
|
23
24
|
this.handshakeEstablished = false;
|
|
24
|
-
this.callbackUrl = undefined;
|
|
25
25
|
this.accessToken = undefined;
|
|
26
26
|
if (CrossWindowProvider._instance) {
|
|
27
|
-
throw new
|
|
27
|
+
throw new errors_1.ErrInstantiationFailed();
|
|
28
28
|
}
|
|
29
29
|
window.addEventListener('beforeunload', () => {
|
|
30
|
-
var _a
|
|
31
|
-
|
|
32
|
-
return (_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({ type: 'mxDappHandshake', payload: false }, // TODO: use const here
|
|
33
|
-
this.walletUrl);
|
|
34
|
-
}
|
|
35
|
-
(_b = this.walletWindow) === null || _b === void 0 ? void 0 : _b.close();
|
|
30
|
+
var _a;
|
|
31
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
36
32
|
});
|
|
37
33
|
window.name = window.name = exports.DAPP_WINDOW_NAME;
|
|
38
34
|
CrossWindowProvider._instance = this;
|
|
@@ -56,148 +52,109 @@ class CrossWindowProvider {
|
|
|
56
52
|
});
|
|
57
53
|
}
|
|
58
54
|
handshake() {
|
|
59
|
-
var _a, _b;
|
|
60
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
else {
|
|
66
|
-
console.log('In HANDSHAKE: ', 'opening Existing window');
|
|
67
|
-
window.open('', this.walletUrl); // TODO: since walletWindow is always closed, is this needed?
|
|
56
|
+
this.walletWindow = window.open(this.walletUrl, this.walletUrl);
|
|
57
|
+
const { payload } = yield this.listenOnce(types_1.CrossWindowProviderResponseEnums.handshakeResponse);
|
|
58
|
+
if (!payload) {
|
|
59
|
+
throw new errors_1.ErrCannotEstablishHandshake();
|
|
68
60
|
}
|
|
69
|
-
|
|
70
|
-
if (this.handshakeEstablished) {
|
|
71
|
-
console.log('In HANDSHAKE: ', 'handshakeEstablished', this.handshakeEstablished);
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
console.log('In HANDSHAKE: ', 'start listening for handshake event from wallet');
|
|
75
|
-
const { type, payload } = yield this.listenOnce();
|
|
76
|
-
if (type !== 'handshake' || !payload) {
|
|
77
|
-
throw new Error('Handshake could not be established');
|
|
78
|
-
}
|
|
79
|
-
console.log('In HANDSHAKE: ', 'Listen once event received: ', {
|
|
80
|
-
type,
|
|
81
|
-
payload
|
|
82
|
-
});
|
|
83
|
-
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({ type: 'mxDappHandshake', payload: true }, this.walletUrl);
|
|
84
|
-
this.onHandshakeChangeListener();
|
|
85
|
-
const payloadQueryString = helpers_1.buildWalletQueryString({
|
|
86
|
-
params: {
|
|
87
|
-
token: this.accessToken
|
|
88
|
-
}
|
|
89
|
-
});
|
|
90
|
-
const isRelogin = yield this.isConnected();
|
|
91
|
-
console.log('In HANDSHAKE: ', 'Posting mxDappHandshake `true` to wallet', {
|
|
92
|
-
isRelogin
|
|
93
|
-
});
|
|
94
|
-
// TODO: handshake should not handle login logic
|
|
95
|
-
(_b = this.walletWindow) === null || _b === void 0 ? void 0 : _b.postMessage({
|
|
96
|
-
type: 'mxDappConnect',
|
|
97
|
-
payload: { queryString: payloadQueryString, isRelogin }
|
|
98
|
-
}, this.walletUrl);
|
|
99
|
-
console.log('In HANDSHAKE: ', 'Posting mxDappConnect connect intent to wallet', {
|
|
100
|
-
type: 'mxDappConnect',
|
|
101
|
-
payload: { queryString: payloadQueryString, isRelogin }
|
|
102
|
-
});
|
|
103
|
-
if (!isRelogin) {
|
|
104
|
-
console.log('In HANDSHAKE: ', 'Waiting for connect event from wallet ');
|
|
105
|
-
const { type: connectType, payload: { address, signature } } = yield this.listenOnce();
|
|
106
|
-
if (connectType !== 'connect') {
|
|
107
|
-
throw new Error(`Could not connect. received ${connectType} event instead of connect`);
|
|
108
|
-
}
|
|
109
|
-
this.account.address = address;
|
|
110
|
-
this.account.signature = signature;
|
|
111
|
-
console.log('In HANDSHAKE: ', 'Is first login', {
|
|
112
|
-
address,
|
|
113
|
-
signature
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
console.log('In HANDSHAKE: ', 'handshakeEstablished done');
|
|
61
|
+
this.addHandshakeChangeListener();
|
|
117
62
|
this.handshakeEstablished = true;
|
|
118
63
|
return true;
|
|
119
64
|
});
|
|
120
65
|
}
|
|
121
|
-
|
|
66
|
+
addHandshakeChangeListener() {
|
|
122
67
|
return __awaiter(this, void 0, void 0, function* () {
|
|
123
68
|
const walletUrl = this.walletUrl;
|
|
124
|
-
//
|
|
125
|
-
const
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
70
|
+
const self = this;
|
|
71
|
+
window.addEventListener('message', function eventHandler(event) {
|
|
126
72
|
var _a;
|
|
127
73
|
try {
|
|
128
74
|
const { type, payload } = event.data;
|
|
129
75
|
const isWalletEvent = event.origin === new URL(walletUrl).origin;
|
|
130
|
-
if (isWalletEvent && type ===
|
|
76
|
+
if (isWalletEvent && type === types_1.CrossWindowProviderResponseEnums.handshakeResponse) {
|
|
131
77
|
if (payload === false) {
|
|
132
|
-
(_a =
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
window.removeEventListener('message',
|
|
78
|
+
(_a = self.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
79
|
+
self.handshakeEstablished = false;
|
|
80
|
+
self.walletWindow = null;
|
|
81
|
+
window.removeEventListener('message', eventHandler);
|
|
136
82
|
}
|
|
137
83
|
}
|
|
138
84
|
}
|
|
139
85
|
catch (_b) { }
|
|
140
|
-
};
|
|
141
|
-
window.addEventListener('message', handler);
|
|
86
|
+
});
|
|
142
87
|
});
|
|
143
88
|
}
|
|
144
|
-
|
|
145
|
-
//param for specific action to listen to
|
|
146
|
-
listenOnce() {
|
|
89
|
+
listenOnce(action) {
|
|
147
90
|
return __awaiter(this, void 0, void 0, function* () {
|
|
148
91
|
if (!this.walletWindow) {
|
|
149
|
-
throw new
|
|
92
|
+
throw new errors_1.ErrWalletWindowNotInstantiated();
|
|
150
93
|
}
|
|
94
|
+
const self = this;
|
|
151
95
|
return yield new Promise((resolve) => {
|
|
152
96
|
const walletUrl = this.walletUrl;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const { type, payload } = event.data; // TODO: use strong types here
|
|
97
|
+
window.addEventListener('message', function eventHandler(event) {
|
|
98
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
+
const { type, payload } = event.data;
|
|
157
100
|
const isWalletEvent = event.origin === new URL(walletUrl).origin;
|
|
158
|
-
const
|
|
159
|
-
|
|
101
|
+
const isCurrentAction = action === type || type === types_1.CrossWindowProviderResponseEnums.cancelResponse;
|
|
102
|
+
const isRelogin = yield self.isConnected();
|
|
103
|
+
if ((isRelogin && type === 'connect') || !isCurrentAction) {
|
|
160
104
|
return;
|
|
161
105
|
}
|
|
162
106
|
if (isWalletEvent) {
|
|
163
|
-
window.removeEventListener('message',
|
|
107
|
+
window.removeEventListener('message', eventHandler);
|
|
164
108
|
resolve({ type, payload });
|
|
165
109
|
}
|
|
166
|
-
}
|
|
167
|
-
catch (_a) { }
|
|
110
|
+
});
|
|
168
111
|
});
|
|
169
|
-
window.addEventListener('message', handler);
|
|
170
112
|
});
|
|
171
113
|
});
|
|
172
114
|
}
|
|
115
|
+
connectWallet() {
|
|
116
|
+
var _a;
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
const payloadQueryString = helpers_1.buildWalletQueryString({
|
|
119
|
+
params: {
|
|
120
|
+
token: this.accessToken
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
const isRelogin = yield this.isConnected();
|
|
124
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
125
|
+
type: types_1.CrossWindowProviderRequestEnums.loginRequest,
|
|
126
|
+
payload: { queryString: payloadQueryString }
|
|
127
|
+
}, this.walletUrl);
|
|
128
|
+
if (!isRelogin) {
|
|
129
|
+
const { payload: { address, signature } } = yield this.listenOnce(types_1.CrossWindowProviderResponseEnums.loginResponse);
|
|
130
|
+
this.account.address = address;
|
|
131
|
+
this.account.signature = signature;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
173
135
|
login(options = {}) {
|
|
174
136
|
var _a;
|
|
175
137
|
return __awaiter(this, void 0, void 0, function* () {
|
|
176
138
|
if (!this.initialized) {
|
|
177
|
-
throw new
|
|
139
|
+
throw new errors_1.ErrProviderNotInitialized();
|
|
178
140
|
}
|
|
179
|
-
this.callbackUrl = options.callbackUrl;
|
|
180
141
|
this.accessToken = options.token;
|
|
181
142
|
yield this.handshake();
|
|
143
|
+
yield this.connectWallet();
|
|
182
144
|
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
183
|
-
return this.account.address
|
|
145
|
+
return { address: this.account.address, signature: this.account.signature };
|
|
184
146
|
});
|
|
185
147
|
}
|
|
186
148
|
logout() {
|
|
187
149
|
var _a;
|
|
188
150
|
return __awaiter(this, void 0, void 0, function* () {
|
|
189
151
|
if (!this.initialized) {
|
|
190
|
-
throw new
|
|
152
|
+
throw new errors_1.ErrProviderNotInitialized();
|
|
191
153
|
}
|
|
192
154
|
this.ensureConnected();
|
|
193
155
|
yield this.handshake();
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
console.warn('CrossWindow origin url is already cleared!', error);
|
|
200
|
-
}
|
|
156
|
+
this.disconnect();
|
|
157
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
201
158
|
return true;
|
|
202
159
|
});
|
|
203
160
|
}
|
|
@@ -207,7 +164,7 @@ class CrossWindowProvider {
|
|
|
207
164
|
getAddress() {
|
|
208
165
|
return __awaiter(this, void 0, void 0, function* () {
|
|
209
166
|
if (!this.initialized) {
|
|
210
|
-
throw new
|
|
167
|
+
throw new errors_1.ErrProviderNotInitialized();
|
|
211
168
|
}
|
|
212
169
|
return this.account ? this.account.address : '';
|
|
213
170
|
});
|
|
@@ -240,15 +197,16 @@ class CrossWindowProvider {
|
|
|
240
197
|
return __awaiter(this, void 0, void 0, function* () {
|
|
241
198
|
this.ensureConnected();
|
|
242
199
|
yield this.handshake();
|
|
200
|
+
yield this.connectWallet();
|
|
243
201
|
const payloadQueryString = helpers_1.buildTransactionsQueryString(transactions);
|
|
244
|
-
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({ type:
|
|
245
|
-
const { type, payload: signedPlainTransactions } = yield this.listenOnce();
|
|
202
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({ type: types_1.CrossWindowProviderRequestEnums.signTransactionsRequest, payload: payloadQueryString }, this.walletUrl);
|
|
203
|
+
const { type, payload: signedPlainTransactions } = yield this.listenOnce(types_1.CrossWindowProviderResponseEnums.signTransactionsResponse);
|
|
246
204
|
(_b = this.walletWindow) === null || _b === void 0 ? void 0 : _b.close();
|
|
247
|
-
if (type ===
|
|
248
|
-
throw new
|
|
205
|
+
if (type === types_1.CrossWindowProviderResponseEnums.cancelResponse) {
|
|
206
|
+
throw new errors_1.ErrTransactionCAncelled();
|
|
249
207
|
}
|
|
250
208
|
if (!signedPlainTransactions || !signedPlainTransactions.length) {
|
|
251
|
-
throw new
|
|
209
|
+
throw new errors_1.ErrCouldNotSignTransaction();
|
|
252
210
|
}
|
|
253
211
|
const signedTransactions = signedPlainTransactions.map((tx) => {
|
|
254
212
|
const transaction = sdk_core_1.Transaction.fromPlainObject(tx);
|
|
@@ -262,19 +220,17 @@ class CrossWindowProvider {
|
|
|
262
220
|
return __awaiter(this, void 0, void 0, function* () {
|
|
263
221
|
this.ensureConnected();
|
|
264
222
|
yield this.handshake();
|
|
223
|
+
yield this.connectWallet();
|
|
265
224
|
const payloadQueryString = helpers_1.buildWalletQueryString({
|
|
266
225
|
params: {
|
|
267
226
|
message: message.message.toString()
|
|
268
227
|
}
|
|
269
228
|
});
|
|
270
|
-
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({ type:
|
|
271
|
-
const {
|
|
229
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({ type: types_1.CrossWindowProviderRequestEnums.signMessageRequest, payload: payloadQueryString }, this.walletUrl);
|
|
230
|
+
const { payload: { status, signature } } = yield this.listenOnce(types_1.CrossWindowProviderResponseEnums.signMessageResponse);
|
|
272
231
|
(_b = this.walletWindow) === null || _b === void 0 ? void 0 : _b.close();
|
|
273
|
-
if (
|
|
274
|
-
throw new
|
|
275
|
-
}
|
|
276
|
-
if (status !== 'signed') {
|
|
277
|
-
throw new Error('Could not sign message');
|
|
232
|
+
if (status !== types_1.SignMessageStatusEnum.signed) {
|
|
233
|
+
throw new errors_1.ErrCouldNotSignMessage();
|
|
278
234
|
}
|
|
279
235
|
message.applySignature(Buffer.from(signature, 'hex'));
|
|
280
236
|
return message;
|
|
@@ -282,7 +238,7 @@ class CrossWindowProvider {
|
|
|
282
238
|
}
|
|
283
239
|
cancelAction() {
|
|
284
240
|
var _a;
|
|
285
|
-
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({ type:
|
|
241
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({ type: types_1.CrossWindowProviderRequestEnums.cancelAction }, this.walletUrl);
|
|
286
242
|
}
|
|
287
243
|
}
|
|
288
244
|
exports.CrossWindowProvider = CrossWindowProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crossWindowProvider.js","sourceRoot":"","sources":["../src/crossWindowProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"crossWindowProvider.js","sourceRoot":"","sources":["../src/crossWindowProvider.ts"],"names":[],"mappings":"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"}
|
package/out/errors.d.ts
CHANGED
|
@@ -11,3 +11,24 @@ export declare class ErrCannotSignSingleTransaction extends Err {
|
|
|
11
11
|
export declare class ErrAccountNotConnected extends Err {
|
|
12
12
|
constructor();
|
|
13
13
|
}
|
|
14
|
+
export declare class ErrCannotEstablishHandshake extends Err {
|
|
15
|
+
constructor();
|
|
16
|
+
}
|
|
17
|
+
export declare class ErrInstantiationFailed extends Err {
|
|
18
|
+
constructor();
|
|
19
|
+
}
|
|
20
|
+
export declare class ErrWalletWindowNotInstantiated extends Err {
|
|
21
|
+
constructor();
|
|
22
|
+
}
|
|
23
|
+
export declare class ErrProviderNotInitialized extends Err {
|
|
24
|
+
constructor();
|
|
25
|
+
}
|
|
26
|
+
export declare class ErrTransactionCAncelled extends Err {
|
|
27
|
+
constructor();
|
|
28
|
+
}
|
|
29
|
+
export declare class ErrCouldNotSignTransaction extends Err {
|
|
30
|
+
constructor();
|
|
31
|
+
}
|
|
32
|
+
export declare class ErrCouldNotSignMessage extends Err {
|
|
33
|
+
constructor();
|
|
34
|
+
}
|
package/out/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ErrAccountNotConnected = exports.ErrCannotSignSingleTransaction = exports.Err = void 0;
|
|
3
|
+
exports.ErrCouldNotSignMessage = exports.ErrCouldNotSignTransaction = exports.ErrTransactionCAncelled = exports.ErrProviderNotInitialized = exports.ErrWalletWindowNotInstantiated = exports.ErrInstantiationFailed = exports.ErrCannotEstablishHandshake = exports.ErrAccountNotConnected = exports.ErrCannotSignSingleTransaction = exports.Err = void 0;
|
|
4
4
|
/**
|
|
5
5
|
* The base class for exceptions (errors).
|
|
6
6
|
*/
|
|
@@ -24,4 +24,46 @@ class ErrAccountNotConnected extends Err {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
exports.ErrAccountNotConnected = ErrAccountNotConnected;
|
|
27
|
+
class ErrCannotEstablishHandshake extends Err {
|
|
28
|
+
constructor() {
|
|
29
|
+
super('Handshake could not be established');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.ErrCannotEstablishHandshake = ErrCannotEstablishHandshake;
|
|
33
|
+
class ErrInstantiationFailed extends Err {
|
|
34
|
+
constructor() {
|
|
35
|
+
super('Error: Instantiation failed: Use CrossWindowProvider.getInstance() instead of new.');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.ErrInstantiationFailed = ErrInstantiationFailed;
|
|
39
|
+
class ErrWalletWindowNotInstantiated extends Err {
|
|
40
|
+
constructor() {
|
|
41
|
+
super('Wallet window is not instantiated');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.ErrWalletWindowNotInstantiated = ErrWalletWindowNotInstantiated;
|
|
45
|
+
class ErrProviderNotInitialized extends Err {
|
|
46
|
+
constructor() {
|
|
47
|
+
super('Wallet cross window provider is not initialised, call init() first');
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.ErrProviderNotInitialized = ErrProviderNotInitialized;
|
|
51
|
+
class ErrTransactionCAncelled extends Err {
|
|
52
|
+
constructor() {
|
|
53
|
+
super('Transaction canceled.');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.ErrTransactionCAncelled = ErrTransactionCAncelled;
|
|
57
|
+
class ErrCouldNotSignTransaction extends Err {
|
|
58
|
+
constructor() {
|
|
59
|
+
super('Could not sign transactions');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.ErrCouldNotSignTransaction = ErrCouldNotSignTransaction;
|
|
63
|
+
class ErrCouldNotSignMessage extends Err {
|
|
64
|
+
constructor() {
|
|
65
|
+
super('Could not sign message');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.ErrCouldNotSignMessage = ErrCouldNotSignMessage;
|
|
27
69
|
//# sourceMappingURL=errors.js.map
|
package/out/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,GAAI,SAAQ,KAAK;IAG5B,YAAmB,OAAe,EAAE,KAAa;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,UAAK,GAAsB,SAAS,CAAC;QAInC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAPD,kBAOC;AAED,MAAa,8BAA+B,SAAQ,GAAG;IACrD;QACE,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC3C,CAAC;CACF;AAJD,wEAIC;AAED,MAAa,sBAAuB,SAAQ,GAAG;IAC7C;QACE,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACrC,CAAC;CACF;AAJD,wDAIC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,GAAI,SAAQ,KAAK;IAG5B,YAAmB,OAAe,EAAE,KAAa;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,UAAK,GAAsB,SAAS,CAAC;QAInC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAPD,kBAOC;AAED,MAAa,8BAA+B,SAAQ,GAAG;IACrD;QACE,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC3C,CAAC;CACF;AAJD,wEAIC;AAED,MAAa,sBAAuB,SAAQ,GAAG;IAC7C;QACE,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACrC,CAAC;CACF;AAJD,wDAIC;AAGD,MAAa,2BAA4B,SAAQ,GAAG;IAClD;QACE,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC9C,CAAC;CACF;AAJD,kEAIC;AAED,MAAa,sBAAuB,SAAQ,GAAG;IAC7C;QACE,KAAK,CAAC,oFAAoF,CAAC,CAAC;IAC9F,CAAC;CACF;AAJD,wDAIC;AAED,MAAa,8BAA+B,SAAQ,GAAG;IACrD;QACE,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC7C,CAAC;CACF;AAJD,wEAIC;AAGD,MAAa,yBAA0B,SAAQ,GAAG;IAChD;QACE,KAAK,CAAC,oEAAoE,CAAC,CAAC;IAC9E,CAAC;CACF;AAJD,8DAIC;AAGD,MAAa,uBAAwB,SAAQ,GAAG;IAC9C;QACE,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACjC,CAAC;CACF;AAJD,0DAIC;AAED,MAAa,0BAA2B,SAAQ,GAAG;IACjD;QACE,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACvC,CAAC;CACF;AAJD,gEAIC;AAED,MAAa,sBAAuB,SAAQ,GAAG;IAC7C;QACE,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClC,CAAC;CACF;AAJD,wDAIC"}
|
package/out/types.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare enum CrossWindowProviderRequestEnums {
|
|
2
|
+
signTransactionsRequest = "SIGN_TRANSACTIONS_REQUEST",
|
|
3
|
+
signMessageRequest = "SIGN_MESSAGE_REQUEST",
|
|
4
|
+
loginRequest = "LOGIN_REQUEST",
|
|
5
|
+
logoutRequest = "LOGOUT_REQUEST",
|
|
6
|
+
cancelAction = "CANCEL_ACTION_REQUEST"
|
|
7
|
+
}
|
|
8
|
+
export declare enum CrossWindowProviderResponseEnums {
|
|
9
|
+
signTransactionsResponse = "SIGN_TRANSACTIONS_RESPONSE",
|
|
10
|
+
signMessageResponse = "SIGN_MESSAGE_RESPONSE",
|
|
11
|
+
loginResponse = "LOGIN_RESPONSE",
|
|
12
|
+
handshakeResponse = "HANDSHAKE_RESPONSE",
|
|
13
|
+
cancelResponse = "CANCEL_RESPONSE",
|
|
14
|
+
disconnectResponse = "DISCONNECT_RESPONSE",
|
|
15
|
+
noneResponse = "NONE_RESPONSE"
|
|
16
|
+
}
|
|
17
|
+
export declare enum SignMessageStatusEnum {
|
|
18
|
+
signed = "signed"
|
|
19
|
+
}
|
package/out/types.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SignMessageStatusEnum = exports.CrossWindowProviderResponseEnums = exports.CrossWindowProviderRequestEnums = void 0;
|
|
4
|
+
var CrossWindowProviderRequestEnums;
|
|
5
|
+
(function (CrossWindowProviderRequestEnums) {
|
|
6
|
+
CrossWindowProviderRequestEnums["signTransactionsRequest"] = "SIGN_TRANSACTIONS_REQUEST";
|
|
7
|
+
CrossWindowProviderRequestEnums["signMessageRequest"] = "SIGN_MESSAGE_REQUEST";
|
|
8
|
+
CrossWindowProviderRequestEnums["loginRequest"] = "LOGIN_REQUEST";
|
|
9
|
+
CrossWindowProviderRequestEnums["logoutRequest"] = "LOGOUT_REQUEST";
|
|
10
|
+
CrossWindowProviderRequestEnums["cancelAction"] = "CANCEL_ACTION_REQUEST";
|
|
11
|
+
})(CrossWindowProviderRequestEnums = exports.CrossWindowProviderRequestEnums || (exports.CrossWindowProviderRequestEnums = {}));
|
|
12
|
+
var CrossWindowProviderResponseEnums;
|
|
13
|
+
(function (CrossWindowProviderResponseEnums) {
|
|
14
|
+
CrossWindowProviderResponseEnums["signTransactionsResponse"] = "SIGN_TRANSACTIONS_RESPONSE";
|
|
15
|
+
CrossWindowProviderResponseEnums["signMessageResponse"] = "SIGN_MESSAGE_RESPONSE";
|
|
16
|
+
CrossWindowProviderResponseEnums["loginResponse"] = "LOGIN_RESPONSE";
|
|
17
|
+
CrossWindowProviderResponseEnums["handshakeResponse"] = "HANDSHAKE_RESPONSE";
|
|
18
|
+
CrossWindowProviderResponseEnums["cancelResponse"] = "CANCEL_RESPONSE";
|
|
19
|
+
CrossWindowProviderResponseEnums["disconnectResponse"] = "DISCONNECT_RESPONSE";
|
|
20
|
+
CrossWindowProviderResponseEnums["noneResponse"] = "NONE_RESPONSE";
|
|
21
|
+
})(CrossWindowProviderResponseEnums = exports.CrossWindowProviderResponseEnums || (exports.CrossWindowProviderResponseEnums = {}));
|
|
22
|
+
var SignMessageStatusEnum;
|
|
23
|
+
(function (SignMessageStatusEnum) {
|
|
24
|
+
SignMessageStatusEnum["signed"] = "signed";
|
|
25
|
+
})(SignMessageStatusEnum = exports.SignMessageStatusEnum || (exports.SignMessageStatusEnum = {}));
|
|
26
|
+
//# sourceMappingURL=types.js.map
|
package/out/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,+BAMT;AANH,WAAY,+BAA+B;IACvC,wFAAqD,CAAA;IACrD,8EAA2C,CAAA;IAC3C,iEAA8B,CAAA;IAC9B,mEAAgC,CAAA;IAChC,yEAAsC,CAAA;AACxC,CAAC,EANS,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAMxC;AAED,IAAY,gCAQX;AARD,WAAY,gCAAgC;IAC1C,2FAAuD,CAAA;IACvD,iFAA6C,CAAA;IAC7C,oEAAgC,CAAA;IAChC,4EAAwC,CAAA;IACxC,sEAAkC,CAAA;IAClC,8EAA0C,CAAA;IAC1C,kEAA8B,CAAA;AAChC,CAAC,EARW,gCAAgC,GAAhC,wCAAgC,KAAhC,wCAAgC,QAQ3C;AAED,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,0CAAgB,CAAA;AAClB,CAAC,EAFW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAEhC"}
|