@multiversx/sdk-web-wallet-cross-window-provider 0.0.25 → 0.0.27
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/CrossWindowProvider.js +113 -36
- package/out/CrossWindowProvider/CrossWindowProvider.js.map +1 -1
- package/out/CrossWindowProvider/WindowManager.js +172 -0
- package/out/CrossWindowProvider/WindowManager.js.map +1 -0
- package/out/CrossWindowProvider/index.js +1 -17
- package/out/CrossWindowProvider/index.js.map +1 -1
- package/out/CrossWindowProvider/tests/Cancel.test.js +7 -9
- package/out/CrossWindowProvider/tests/Cancel.test.js.map +1 -1
- package/out/CrossWindowProvider/tests/Init.test.js +5 -7
- package/out/CrossWindowProvider/tests/Init.test.js.map +1 -1
- package/out/CrossWindowProvider/tests/Login.test.js +7 -9
- package/out/CrossWindowProvider/tests/Login.test.js.map +1 -1
- package/out/CrossWindowProvider/tests/Logout.test.js +8 -10
- package/out/CrossWindowProvider/tests/Logout.test.js.map +1 -1
- package/out/CrossWindowProvider/tests/SignMessage.test.js +9 -11
- package/out/CrossWindowProvider/tests/SignMessage.test.js.map +1 -1
- package/out/CrossWindowProvider/tests/SignTransaction.test.js +8 -10
- package/out/CrossWindowProvider/tests/SignTransaction.test.js.map +1 -1
- package/out/{WindowManager → CrossWindowProvider}/tests/windowManager.test.js +15 -17
- package/out/CrossWindowProvider/tests/windowManager.test.js.map +1 -0
- package/out/IframeProvider/IframeManager.js +72 -0
- package/out/IframeProvider/IframeManager.js.map +1 -0
- package/out/IframeProvider/IframeProvider.js +42 -0
- package/out/IframeProvider/IframeProvider.js.map +1 -0
- package/out/IframeProvider/index.js +2 -0
- package/out/IframeProvider/index.js.map +1 -0
- package/out/constants.js +11 -14
- package/out/constants.js.map +1 -1
- package/out/errors.js +12 -30
- package/out/errors.js.map +1 -1
- package/out/index.js +1 -17
- package/out/index.js.map +1 -1
- package/out/test-utils/createMockTransaction.js +6 -11
- package/out/test-utils/createMockTransaction.js.map +1 -1
- package/out/test-utils/getWalletWindowMock.js +1 -5
- package/out/test-utils/getWalletWindowMock.js.map +1 -1
- package/out/test-utils/index.js +3 -19
- package/out/test-utils/index.js.map +1 -1
- package/out/test-utils/mockWindowManager.js +2 -6
- package/out/test-utils/mockWindowManager.js.map +1 -1
- package/out/{CrossWindowProvider → types/CrossWindowProvider}/CrossWindowProvider.d.ts +17 -6
- package/out/{WindowManager → types/CrossWindowProvider}/WindowManager.d.ts +8 -2
- package/out/types/IframeProvider/IframeManager.d.ts +13 -0
- package/out/types/IframeProvider/IframeProvider.d.ts +10 -0
- package/out/types/IframeProvider/index.d.ts +1 -0
- package/out/{errors.d.ts → types/errors.d.ts} +0 -3
- package/out/{types.d.ts → types/types.d.ts} +1 -9
- package/out/types.js +6 -9
- package/out/types.js.map +1 -1
- package/package.json +13 -7
- package/out/WindowManager/WindowManager.js +0 -147
- package/out/WindowManager/WindowManager.js.map +0 -1
- package/out/WindowManager/index.d.ts +0 -1
- package/out/WindowManager/index.js +0 -18
- package/out/WindowManager/index.js.map +0 -1
- package/out/WindowManager/tests/windowManager.test.js.map +0 -1
- /package/out/{CrossWindowProvider → types/CrossWindowProvider}/index.d.ts +0 -0
- /package/out/{CrossWindowProvider → types/CrossWindowProvider}/tests/Cancel.test.d.ts +0 -0
- /package/out/{CrossWindowProvider → types/CrossWindowProvider}/tests/Init.test.d.ts +0 -0
- /package/out/{CrossWindowProvider → types/CrossWindowProvider}/tests/Login.test.d.ts +0 -0
- /package/out/{CrossWindowProvider → types/CrossWindowProvider}/tests/Logout.test.d.ts +0 -0
- /package/out/{CrossWindowProvider → types/CrossWindowProvider}/tests/SignMessage.test.d.ts +0 -0
- /package/out/{CrossWindowProvider → types/CrossWindowProvider}/tests/SignTransaction.test.d.ts +0 -0
- /package/out/{WindowManager → types/CrossWindowProvider}/tests/windowManager.test.d.ts +0 -0
- /package/out/{constants.d.ts → types/constants.d.ts} +0 -0
- /package/out/{index.d.ts → types/index.d.ts} +0 -0
- /package/out/{test-utils → types/test-utils}/createMockTransaction.d.ts +0 -0
- /package/out/{test-utils → types/test-utils}/getWalletWindowMock.d.ts +0 -0
- /package/out/{test-utils → types/test-utils}/index.d.ts +0 -0
- /package/out/{test-utils → types/test-utils}/mockWindowManager.d.ts +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,44 +7,58 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
8
|
});
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const WindowManager_1 = require("../WindowManager");
|
|
10
|
+
import { Transaction } from '@multiversx/sdk-core';
|
|
11
|
+
import { defineCustomElements } from '@multiversx/sdk-dapp-ui/loader';
|
|
12
|
+
import { ErrAccountNotConnected, ErrCannotSignSingleTransaction, ErrCouldNotLogin, ErrCouldNotSignMessage, ErrCouldNotSignTransactions, ErrCouldNotGuardTransactions, ErrInstantiationFailed, ErrProviderNotInitialized, ErrTransactionCancelled } from '../errors';
|
|
13
|
+
import { CrossWindowProviderRequestEnums, CrossWindowProviderResponseEnums, SignMessageStatusEnum } from '../types';
|
|
14
|
+
import { WindowManager } from './WindowManager';
|
|
17
15
|
class CrossWindowProvider {
|
|
16
|
+
setShouldShowConsentPopup(shouldShow) {
|
|
17
|
+
this._shouldShowConsentPopup = shouldShow;
|
|
18
|
+
}
|
|
18
19
|
constructor() {
|
|
19
20
|
this.account = { address: '' };
|
|
20
21
|
this.initialized = false;
|
|
22
|
+
this.windowManager = null;
|
|
21
23
|
this.accessToken = undefined;
|
|
24
|
+
this._shouldShowConsentPopup = false;
|
|
22
25
|
if (CrossWindowProvider._instance) {
|
|
23
|
-
throw new
|
|
26
|
+
throw new ErrInstantiationFailed();
|
|
24
27
|
}
|
|
25
|
-
|
|
28
|
+
defineCustomElements();
|
|
26
29
|
CrossWindowProvider._instance = this;
|
|
27
30
|
}
|
|
28
31
|
ensureConnected() {
|
|
29
32
|
if (!this.account.address) {
|
|
30
|
-
throw new
|
|
33
|
+
throw new ErrAccountNotConnected();
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
disconnect() {
|
|
34
37
|
this.account = { address: '' };
|
|
35
38
|
}
|
|
36
39
|
static getInstance() {
|
|
40
|
+
if (!CrossWindowProvider._instance) {
|
|
41
|
+
return new CrossWindowProvider();
|
|
42
|
+
}
|
|
37
43
|
return CrossWindowProvider._instance;
|
|
38
44
|
}
|
|
39
45
|
setAddress(address) {
|
|
46
|
+
if (!CrossWindowProvider._instance) {
|
|
47
|
+
throw new ErrInstantiationFailed();
|
|
48
|
+
}
|
|
40
49
|
this.account.address = address;
|
|
41
50
|
return CrossWindowProvider._instance;
|
|
42
51
|
}
|
|
43
52
|
setWalletUrl(url) {
|
|
53
|
+
if (!CrossWindowProvider._instance || !this.windowManager) {
|
|
54
|
+
throw new ErrInstantiationFailed();
|
|
55
|
+
}
|
|
44
56
|
this.windowManager.setWalletUrl(url);
|
|
45
57
|
return CrossWindowProvider._instance;
|
|
46
58
|
}
|
|
47
59
|
init() {
|
|
48
60
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
this.windowManager = WindowManager.getInstance();
|
|
49
62
|
this.initialized = yield this.windowManager.init();
|
|
50
63
|
return this.initialized;
|
|
51
64
|
});
|
|
@@ -53,7 +66,7 @@ class CrossWindowProvider {
|
|
|
53
66
|
login(options = {}) {
|
|
54
67
|
return __awaiter(this, void 0, void 0, function* () {
|
|
55
68
|
if (!this.initialized) {
|
|
56
|
-
throw new
|
|
69
|
+
throw new ErrProviderNotInitialized();
|
|
57
70
|
}
|
|
58
71
|
const isRelogin = yield this.isConnected();
|
|
59
72
|
if (isRelogin) {
|
|
@@ -66,14 +79,23 @@ class CrossWindowProvider {
|
|
|
66
79
|
};
|
|
67
80
|
}
|
|
68
81
|
this.accessToken = options.token;
|
|
82
|
+
if (!this.windowManager) {
|
|
83
|
+
throw new ErrInstantiationFailed();
|
|
84
|
+
}
|
|
85
|
+
const { popup, popupConsentResponse } = yield this.openPopupConsent('login');
|
|
86
|
+
if (!popupConsentResponse) {
|
|
87
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
88
|
+
throw new ErrCouldNotLogin();
|
|
89
|
+
}
|
|
90
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
69
91
|
const { payload: { data, error } } = yield this.windowManager.postMessage({
|
|
70
|
-
type:
|
|
92
|
+
type: CrossWindowProviderRequestEnums.loginRequest,
|
|
71
93
|
payload: {
|
|
72
94
|
token: this.accessToken
|
|
73
95
|
}
|
|
74
96
|
});
|
|
75
97
|
if (error || !data) {
|
|
76
|
-
throw new
|
|
98
|
+
throw new ErrCouldNotLogin();
|
|
77
99
|
}
|
|
78
100
|
this.account.address = data.address;
|
|
79
101
|
this.account.signature = data.signature;
|
|
@@ -89,8 +111,13 @@ class CrossWindowProvider {
|
|
|
89
111
|
}
|
|
90
112
|
logout() {
|
|
91
113
|
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
-
|
|
93
|
-
|
|
114
|
+
const { popup, popupConsentResponse } = yield this.openPopupConsent('logout');
|
|
115
|
+
if (!popupConsentResponse) {
|
|
116
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
117
|
+
}
|
|
118
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
119
|
+
if (!this.initialized || !this.windowManager) {
|
|
120
|
+
throw new ErrProviderNotInitialized();
|
|
94
121
|
}
|
|
95
122
|
this.ensureConnected();
|
|
96
123
|
const connectionClosed = yield this.windowManager.closeConnection();
|
|
@@ -103,7 +130,7 @@ class CrossWindowProvider {
|
|
|
103
130
|
var _a, _b;
|
|
104
131
|
return __awaiter(this, void 0, void 0, function* () {
|
|
105
132
|
if (!this.initialized) {
|
|
106
|
-
throw new
|
|
133
|
+
throw new ErrProviderNotInitialized();
|
|
107
134
|
}
|
|
108
135
|
return (_b = (_a = this.account) === null || _a === void 0 ? void 0 : _a.address) !== null && _b !== void 0 ? _b : '';
|
|
109
136
|
});
|
|
@@ -121,7 +148,7 @@ class CrossWindowProvider {
|
|
|
121
148
|
this.ensureConnected();
|
|
122
149
|
const signedTransactions = yield this.signTransactions([transaction]);
|
|
123
150
|
if (signedTransactions.length != 1) {
|
|
124
|
-
throw new
|
|
151
|
+
throw new ErrCannotSignSingleTransaction();
|
|
125
152
|
}
|
|
126
153
|
return signedTransactions[0];
|
|
127
154
|
});
|
|
@@ -129,58 +156,103 @@ class CrossWindowProvider {
|
|
|
129
156
|
signTransactions(transactions) {
|
|
130
157
|
return __awaiter(this, void 0, void 0, function* () {
|
|
131
158
|
this.ensureConnected();
|
|
159
|
+
const { popup, popupConsentResponse } = yield this.openPopupConsent('sign transactions');
|
|
160
|
+
if (!popupConsentResponse) {
|
|
161
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
162
|
+
throw new ErrTransactionCancelled();
|
|
163
|
+
}
|
|
164
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
165
|
+
if (!this.windowManager) {
|
|
166
|
+
throw new ErrInstantiationFailed();
|
|
167
|
+
}
|
|
132
168
|
const { type, payload: { data: signedPlainTransactions, error } } = yield this.windowManager.postMessage({
|
|
133
|
-
type:
|
|
169
|
+
type: CrossWindowProviderRequestEnums.signTransactionsRequest,
|
|
134
170
|
payload: transactions.map((tx) => tx.toPlainObject())
|
|
135
171
|
});
|
|
136
172
|
if (error || !signedPlainTransactions) {
|
|
137
|
-
throw new
|
|
173
|
+
throw new ErrCouldNotSignTransactions();
|
|
138
174
|
}
|
|
139
|
-
if (type ===
|
|
140
|
-
throw new
|
|
175
|
+
if (type === CrossWindowProviderResponseEnums.cancelResponse) {
|
|
176
|
+
throw new ErrTransactionCancelled();
|
|
141
177
|
}
|
|
142
178
|
const hasTransactions = (signedPlainTransactions === null || signedPlainTransactions === void 0 ? void 0 : signedPlainTransactions.length) > 0;
|
|
143
179
|
if (!hasTransactions) {
|
|
144
|
-
throw new
|
|
180
|
+
throw new ErrCouldNotSignTransactions();
|
|
145
181
|
}
|
|
146
|
-
return signedPlainTransactions.map((tx) =>
|
|
182
|
+
return signedPlainTransactions.map((tx) => Transaction.fromPlainObject(tx));
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
openPopupConsent(action) {
|
|
186
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
+
if (!this._shouldShowConsentPopup) {
|
|
188
|
+
return { popupConsentResponse: true };
|
|
189
|
+
}
|
|
190
|
+
const popup = document.createElement('open-popup-notification');
|
|
191
|
+
popup.action = action;
|
|
192
|
+
popup.walletAddress = this.windowManager.walletUrl;
|
|
193
|
+
document.body.appendChild(popup);
|
|
194
|
+
const popupConsentResponse = yield new Promise((resolve) => {
|
|
195
|
+
popup.addEventListener('popupConsent', (event) => {
|
|
196
|
+
resolve(event.detail);
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
this._shouldShowConsentPopup = false;
|
|
200
|
+
return { popup, popupConsentResponse };
|
|
147
201
|
});
|
|
148
202
|
}
|
|
149
203
|
guardTransactions(transactions) {
|
|
150
204
|
return __awaiter(this, void 0, void 0, function* () {
|
|
151
205
|
this.ensureConnected();
|
|
206
|
+
const { popup, popupConsentResponse } = yield this.openPopupConsent('sign transactions');
|
|
207
|
+
if (!popupConsentResponse) {
|
|
208
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
209
|
+
throw new ErrTransactionCancelled();
|
|
210
|
+
}
|
|
211
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
212
|
+
if (!this.windowManager) {
|
|
213
|
+
throw new ErrInstantiationFailed();
|
|
214
|
+
}
|
|
152
215
|
const { type, payload: { data: signedPlainTransactions, error } } = yield this.windowManager.postMessage({
|
|
153
|
-
type:
|
|
216
|
+
type: CrossWindowProviderRequestEnums.guardTransactionsRequest,
|
|
154
217
|
payload: transactions.map((tx) => tx.toPlainObject())
|
|
155
218
|
});
|
|
156
219
|
if (error || !signedPlainTransactions) {
|
|
157
|
-
throw new
|
|
220
|
+
throw new ErrCouldNotSignTransactions();
|
|
158
221
|
}
|
|
159
|
-
if (type ===
|
|
160
|
-
throw new
|
|
222
|
+
if (type === CrossWindowProviderResponseEnums.cancelResponse) {
|
|
223
|
+
throw new ErrTransactionCancelled();
|
|
161
224
|
}
|
|
162
225
|
const hasTransactions = (signedPlainTransactions === null || signedPlainTransactions === void 0 ? void 0 : signedPlainTransactions.length) > 0;
|
|
163
226
|
if (!hasTransactions) {
|
|
164
|
-
throw new
|
|
227
|
+
throw new ErrCouldNotGuardTransactions();
|
|
165
228
|
}
|
|
166
|
-
return signedPlainTransactions.map((tx) =>
|
|
229
|
+
return signedPlainTransactions.map((tx) => Transaction.fromPlainObject(tx));
|
|
167
230
|
});
|
|
168
231
|
}
|
|
169
232
|
signMessage(message) {
|
|
170
233
|
return __awaiter(this, void 0, void 0, function* () {
|
|
171
234
|
this.ensureConnected();
|
|
235
|
+
const { popup, popupConsentResponse } = yield this.openPopupConsent('sign message');
|
|
236
|
+
if (!popupConsentResponse) {
|
|
237
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
238
|
+
throw new ErrCouldNotSignMessage();
|
|
239
|
+
}
|
|
240
|
+
popup === null || popup === void 0 ? void 0 : popup.remove();
|
|
241
|
+
if (!this.windowManager) {
|
|
242
|
+
throw new ErrInstantiationFailed();
|
|
243
|
+
}
|
|
172
244
|
const { payload: { data, error } } = yield this.windowManager.postMessage({
|
|
173
|
-
type:
|
|
245
|
+
type: CrossWindowProviderRequestEnums.signMessageRequest,
|
|
174
246
|
payload: {
|
|
175
247
|
message: message.message.toString()
|
|
176
248
|
}
|
|
177
249
|
});
|
|
178
250
|
if (error || !data) {
|
|
179
|
-
throw new
|
|
251
|
+
throw new ErrCouldNotSignMessage();
|
|
180
252
|
}
|
|
181
253
|
const { status, signature } = data;
|
|
182
|
-
if (status !==
|
|
183
|
-
throw new
|
|
254
|
+
if (status !== SignMessageStatusEnum.signed) {
|
|
255
|
+
throw new ErrCouldNotSignMessage();
|
|
184
256
|
}
|
|
185
257
|
message.applySignature(Buffer.from(String(signature), 'hex'));
|
|
186
258
|
return message;
|
|
@@ -189,11 +261,16 @@ class CrossWindowProvider {
|
|
|
189
261
|
cancelAction() {
|
|
190
262
|
var _a;
|
|
191
263
|
return (_a = this.windowManager) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
192
|
-
type:
|
|
264
|
+
type: CrossWindowProviderRequestEnums.cancelAction,
|
|
193
265
|
payload: undefined
|
|
194
266
|
});
|
|
195
267
|
}
|
|
268
|
+
clearInstance() {
|
|
269
|
+
var _a;
|
|
270
|
+
CrossWindowProvider._instance = null;
|
|
271
|
+
(_a = this.windowManager) === null || _a === void 0 ? void 0 : _a.clearInstance();
|
|
272
|
+
}
|
|
196
273
|
}
|
|
197
|
-
CrossWindowProvider._instance =
|
|
198
|
-
|
|
274
|
+
CrossWindowProvider._instance = null;
|
|
275
|
+
export { CrossWindowProvider };
|
|
199
276
|
//# sourceMappingURL=CrossWindowProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrossWindowProvider.js","sourceRoot":"","sources":["../../src/CrossWindowProvider/CrossWindowProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CrossWindowProvider.js","sourceRoot":"","sources":["../../src/CrossWindowProvider/CrossWindowProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { responseTypeMap, safeWindow } from '../constants';
|
|
11
|
+
import { ErrCannotEstablishHandshake, ErrProviderNotInitialized, ErrWalletWindowNotInstantiated } from '../errors';
|
|
12
|
+
import { CrossWindowProviderRequestEnums, CrossWindowProviderResponseEnums } from '../types';
|
|
13
|
+
class WindowManager {
|
|
14
|
+
constructor() {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
this._walletUrl = '';
|
|
17
|
+
this.initialized = false;
|
|
18
|
+
this.walletWindow = null;
|
|
19
|
+
(_a = safeWindow.addEventListener) === null || _a === void 0 ? void 0 : _a.call(safeWindow, 'beforeunload', () => {
|
|
20
|
+
this.closeWalletWindow();
|
|
21
|
+
});
|
|
22
|
+
safeWindow.name = (_b = safeWindow.location) === null || _b === void 0 ? void 0 : _b.origin;
|
|
23
|
+
WindowManager._instance = this;
|
|
24
|
+
}
|
|
25
|
+
get walletUrl() {
|
|
26
|
+
return this._walletUrl;
|
|
27
|
+
}
|
|
28
|
+
static getInstance() {
|
|
29
|
+
if (!WindowManager._instance) {
|
|
30
|
+
return new WindowManager();
|
|
31
|
+
}
|
|
32
|
+
return WindowManager._instance;
|
|
33
|
+
}
|
|
34
|
+
setWalletUrl(url) {
|
|
35
|
+
this._walletUrl = url;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
init() {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
this.initialized = true;
|
|
41
|
+
return this.initialized;
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
setWalletWindow() {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
this.walletWindow =
|
|
48
|
+
(_b = (_a = safeWindow.open) === null || _a === void 0 ? void 0 : _a.call(safeWindow, this._walletUrl, this._walletUrl)) !== null && _b !== void 0 ? _b : null;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
closeWalletWindow() {
|
|
52
|
+
var _a;
|
|
53
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
54
|
+
}
|
|
55
|
+
onDisconnect() {
|
|
56
|
+
this.walletWindow = null;
|
|
57
|
+
}
|
|
58
|
+
isWalletOpened(type) {
|
|
59
|
+
return (type === CrossWindowProviderRequestEnums.cancelAction &&
|
|
60
|
+
Boolean(this.walletWindow));
|
|
61
|
+
}
|
|
62
|
+
handshake(type) {
|
|
63
|
+
var _a;
|
|
64
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
if (this.isWalletOpened(type)) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
this.closeWalletWindow();
|
|
69
|
+
yield this.setWalletWindow();
|
|
70
|
+
const { payload: isWalletReady } = yield this.listenOnce(CrossWindowProviderResponseEnums.handshakeResponse);
|
|
71
|
+
if (!isWalletReady) {
|
|
72
|
+
throw new ErrCannotEstablishHandshake();
|
|
73
|
+
}
|
|
74
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
75
|
+
type: CrossWindowProviderRequestEnums.finalizeHandshakeRequest
|
|
76
|
+
}, this._walletUrl);
|
|
77
|
+
this.addHandshakeChangeListener();
|
|
78
|
+
return true;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
addHandshakeChangeListener() {
|
|
82
|
+
var _a;
|
|
83
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
const walletUrl = this._walletUrl;
|
|
85
|
+
const eventHandler = (event) => {
|
|
86
|
+
var _a;
|
|
87
|
+
try {
|
|
88
|
+
const { type, payload } = event.data;
|
|
89
|
+
const isWalletEvent = event.origin === new URL(walletUrl).origin;
|
|
90
|
+
if (!isWalletEvent) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
switch (type) {
|
|
94
|
+
case CrossWindowProviderResponseEnums.disconnectResponse:
|
|
95
|
+
case CrossWindowProviderResponseEnums.handshakeResponse:
|
|
96
|
+
if ((payload['data'] === true &&
|
|
97
|
+
type === CrossWindowProviderResponseEnums.disconnectResponse) ||
|
|
98
|
+
(payload['data'] === false &&
|
|
99
|
+
type === CrossWindowProviderResponseEnums.handshakeResponse)) {
|
|
100
|
+
this.closeWalletWindow();
|
|
101
|
+
this.onDisconnect();
|
|
102
|
+
(_a = safeWindow.removeEventListener) === null || _a === void 0 ? void 0 : _a.call(safeWindow, 'message', eventHandler);
|
|
103
|
+
}
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (_b) { }
|
|
108
|
+
};
|
|
109
|
+
(_a = safeWindow.addEventListener) === null || _a === void 0 ? void 0 : _a.call(safeWindow, 'message', eventHandler);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
listenOnce(action) {
|
|
113
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
if (!this.walletWindow) {
|
|
115
|
+
throw new ErrWalletWindowNotInstantiated();
|
|
116
|
+
}
|
|
117
|
+
return yield new Promise((resolve) => {
|
|
118
|
+
var _a;
|
|
119
|
+
const walletUrl = this._walletUrl;
|
|
120
|
+
(_a = safeWindow.addEventListener) === null || _a === void 0 ? void 0 : _a.call(safeWindow, 'message', function eventHandler(event) {
|
|
121
|
+
var _a;
|
|
122
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
+
const { type, payload } = event.data;
|
|
124
|
+
const isWalletEvent = event.origin === new URL(walletUrl).origin;
|
|
125
|
+
const isCurrentAction = action === type ||
|
|
126
|
+
type === CrossWindowProviderResponseEnums.cancelResponse;
|
|
127
|
+
if (!isCurrentAction || !isWalletEvent) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
console.log('from wallet2:::', type, payload);
|
|
131
|
+
(_a = safeWindow.removeEventListener) === null || _a === void 0 ? void 0 : _a.call(safeWindow, 'message', eventHandler);
|
|
132
|
+
resolve({ type, payload });
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
closeConnection() {
|
|
139
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
if (!this.initialized) {
|
|
141
|
+
throw new ErrProviderNotInitialized();
|
|
142
|
+
}
|
|
143
|
+
yield this.postMessage({
|
|
144
|
+
type: CrossWindowProviderRequestEnums.logoutRequest,
|
|
145
|
+
payload: undefined
|
|
146
|
+
});
|
|
147
|
+
return true;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
isInitialized() {
|
|
151
|
+
return this.initialized;
|
|
152
|
+
}
|
|
153
|
+
postMessage({ type, payload }) {
|
|
154
|
+
var _a;
|
|
155
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
156
|
+
yield this.handshake(type);
|
|
157
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
158
|
+
type,
|
|
159
|
+
payload
|
|
160
|
+
}, this._walletUrl);
|
|
161
|
+
const data = yield this.listenOnce(responseTypeMap[type]);
|
|
162
|
+
this.closeWalletWindow();
|
|
163
|
+
return data;
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
clearInstance() {
|
|
167
|
+
WindowManager._instance = null;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
WindowManager._instance = null;
|
|
171
|
+
export { WindowManager };
|
|
172
|
+
//# sourceMappingURL=WindowManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WindowManager.js","sourceRoot":"","sources":["../../src/CrossWindowProvider/WindowManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./CrossWindowProvider"), exports);
|
|
1
|
+
export * from './CrossWindowProvider';
|
|
18
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/CrossWindowProvider/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/CrossWindowProvider/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,23 +7,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
8
|
});
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const CrossWindowProvider_1 = require("../CrossWindowProvider");
|
|
10
|
+
import { getWalletWindowMock, mockWindoManager } from '../../test-utils';
|
|
11
|
+
import { WindowManager } from '../WindowManager';
|
|
12
|
+
import { CrossWindowProvider } from '../CrossWindowProvider';
|
|
15
13
|
describe('CrossWindowProvider Login', () => {
|
|
16
14
|
let crossWindowProvider;
|
|
17
15
|
let walletWindowMock;
|
|
18
16
|
let windowOpenSpy;
|
|
19
17
|
beforeEach(() => {
|
|
20
|
-
walletWindowMock =
|
|
21
|
-
|
|
18
|
+
walletWindowMock = getWalletWindowMock();
|
|
19
|
+
WindowManager.getInstance().postMessage = jest
|
|
22
20
|
.fn()
|
|
23
21
|
.mockImplementation(() => ({
|
|
24
22
|
payload: {}
|
|
25
23
|
}));
|
|
26
|
-
crossWindowProvider =
|
|
27
|
-
|
|
24
|
+
crossWindowProvider = CrossWindowProvider.getInstance();
|
|
25
|
+
mockWindoManager();
|
|
28
26
|
windowOpenSpy = jest.spyOn(window, 'open');
|
|
29
27
|
windowOpenSpy.mockImplementation(() => walletWindowMock);
|
|
30
28
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cancel.test.js","sourceRoot":"","sources":["../../../src/CrossWindowProvider/tests/Cancel.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Cancel.test.js","sourceRoot":"","sources":["../../../src/CrossWindowProvider/tests/Cancel.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAI,mBAAwC,CAAC;IAC7C,IAAI,gBAAsC,CAAC;IAC3C,IAAI,aAA+B,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE;QACd,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;QACzC,aAAa,CAAC,WAAW,EAAE,CAAC,WAAW,GAAG,IAAI;aAC3C,EAAE,EAAE;aACJ,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;YACzB,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC,CAAC;QAEN,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;QACxD,gBAAgB,EAAE,CAAC;QACnB,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,aAAa,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAS,EAAE;QACjD,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,17 +7,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
8
|
});
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const CrossWindowProvider_1 = require("../CrossWindowProvider");
|
|
10
|
+
import { mockWindoManager } from '../../test-utils';
|
|
11
|
+
import { CrossWindowProvider } from '../CrossWindowProvider';
|
|
14
12
|
describe('CrossWindowProvider', () => {
|
|
15
13
|
let crossWindowProvider;
|
|
16
14
|
beforeEach(() => {
|
|
17
|
-
crossWindowProvider =
|
|
18
|
-
|
|
15
|
+
crossWindowProvider = CrossWindowProvider.getInstance();
|
|
16
|
+
mockWindoManager();
|
|
19
17
|
});
|
|
20
18
|
it('should be a singleton instance', () => {
|
|
21
|
-
const anotherInstance =
|
|
19
|
+
const anotherInstance = CrossWindowProvider.getInstance();
|
|
22
20
|
expect(crossWindowProvider).toBe(anotherInstance);
|
|
23
21
|
});
|
|
24
22
|
it('should initialize correctly', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Init.test.js","sourceRoot":"","sources":["../../../src/CrossWindowProvider/tests/Init.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Init.test.js","sourceRoot":"","sources":["../../../src/CrossWindowProvider/tests/Init.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,mBAAwC,CAAC;IAE7C,UAAU,CAAC,GAAG,EAAE;QACd,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;QACxD,gBAAgB,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAS,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAS,EAAE;QAC5C,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC;QACjC,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
2
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
3
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -8,25 +7,24 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
8
|
});
|
|
10
9
|
};
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const CrossWindowProvider_1 = require("../CrossWindowProvider");
|
|
10
|
+
import { getWalletWindowMock, mockWindoManager } from '../../test-utils';
|
|
11
|
+
import { WindowManager } from '../WindowManager';
|
|
12
|
+
import { CrossWindowProvider } from '../CrossWindowProvider';
|
|
15
13
|
describe('CrossWindowProvider Login', () => {
|
|
16
14
|
let crossWindowProvider;
|
|
17
15
|
let walletWindowMock;
|
|
18
16
|
let windowOpenSpy;
|
|
19
17
|
beforeEach(() => {
|
|
20
|
-
walletWindowMock =
|
|
21
|
-
|
|
18
|
+
walletWindowMock = getWalletWindowMock();
|
|
19
|
+
WindowManager.getInstance().postMessage = jest
|
|
22
20
|
.fn()
|
|
23
21
|
.mockImplementation(() => ({
|
|
24
22
|
payload: {
|
|
25
23
|
data: { address: 'testAddress', signature: 'testSignature' }
|
|
26
24
|
}
|
|
27
25
|
}));
|
|
28
|
-
crossWindowProvider =
|
|
29
|
-
|
|
26
|
+
crossWindowProvider = CrossWindowProvider.getInstance();
|
|
27
|
+
mockWindoManager();
|
|
30
28
|
windowOpenSpy = jest.spyOn(window, 'open');
|
|
31
29
|
windowOpenSpy.mockImplementation(() => walletWindowMock);
|
|
32
30
|
});
|