@multiversx/sdk-web-wallet-cross-window-provider 0.0.5 → 0.0.7
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/WindowManager.d.ts +26 -0
- package/out/WindowManager.js +133 -0
- package/out/WindowManager.js.map +1 -0
- package/out/constants.d.ts +3 -0
- package/out/constants.js +13 -0
- package/out/constants.js.map +1 -0
- package/out/crossWindowProvider.d.ts +12 -12
- package/out/crossWindowProvider.js +60 -123
- package/out/crossWindowProvider.js.map +1 -1
- package/out/errors.d.ts +4 -1
- package/out/errors.js +9 -3
- package/out/errors.js.map +1 -1
- package/out/helpers/buildTransactionsQueryString.d.ts +1 -1
- package/out/helpers/buildTransactionsQueryString.js +17 -17
- package/out/helpers/buildTransactionsQueryString.js.map +1 -1
- package/out/helpers/buildWalletQueryString.js.map +1 -1
- package/out/types.d.ts +47 -5
- package/out/types.js +7 -4
- package/out/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CrossWindowProviderRequestEnums, CrossWindowProviderResponseEnums, ReplyWithPostMessageType, ResponseTypeMap } from './types';
|
|
2
|
+
export declare class WindowManager {
|
|
3
|
+
private walletUrl;
|
|
4
|
+
private initialized;
|
|
5
|
+
private static _instance;
|
|
6
|
+
walletWindow: Window | null;
|
|
7
|
+
constructor();
|
|
8
|
+
static getInstance(): WindowManager;
|
|
9
|
+
setWalletUrl(url: string): WindowManager;
|
|
10
|
+
init(): Promise<boolean>;
|
|
11
|
+
handshake(): Promise<boolean>;
|
|
12
|
+
private addHandshakeChangeListener;
|
|
13
|
+
listenOnce<T extends CrossWindowProviderResponseEnums>(action: T): Promise<{
|
|
14
|
+
type: T;
|
|
15
|
+
payload: ReplyWithPostMessageType<T>['payload'];
|
|
16
|
+
}>;
|
|
17
|
+
closeConnection(): Promise<boolean>;
|
|
18
|
+
isInitialized(): boolean;
|
|
19
|
+
postMessage<T extends CrossWindowProviderRequestEnums>({ type, payload }: {
|
|
20
|
+
type: T;
|
|
21
|
+
payload: string;
|
|
22
|
+
}): Promise<{
|
|
23
|
+
type: ResponseTypeMap[T] | CrossWindowProviderResponseEnums.cancelResponse;
|
|
24
|
+
payload: ReplyWithPostMessageType<ResponseTypeMap[T]>['payload'];
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.WindowManager = void 0;
|
|
13
|
+
const constants_1 = require("./constants");
|
|
14
|
+
const errors_1 = require("./errors");
|
|
15
|
+
const types_1 = require("./types");
|
|
16
|
+
class WindowManager {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.walletUrl = '';
|
|
19
|
+
this.initialized = false;
|
|
20
|
+
this.walletWindow = null;
|
|
21
|
+
window.addEventListener('beforeunload', () => {
|
|
22
|
+
var _a;
|
|
23
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
24
|
+
});
|
|
25
|
+
window.name = window.name = constants_1.DAPP_WINDOW_NAME;
|
|
26
|
+
WindowManager._instance = this; // TODO: remove singleton
|
|
27
|
+
}
|
|
28
|
+
static getInstance() {
|
|
29
|
+
return WindowManager._instance;
|
|
30
|
+
}
|
|
31
|
+
setWalletUrl(url) {
|
|
32
|
+
this.walletUrl = url;
|
|
33
|
+
return WindowManager._instance;
|
|
34
|
+
}
|
|
35
|
+
init() {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
window.name = constants_1.DAPP_WINDOW_NAME;
|
|
38
|
+
this.initialized = true;
|
|
39
|
+
return this.initialized;
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
handshake() {
|
|
43
|
+
var _a;
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
46
|
+
this.walletWindow = window.open(this.walletUrl, this.walletUrl);
|
|
47
|
+
const { payload } = yield this.listenOnce(types_1.CrossWindowProviderResponseEnums.handshakeResponse);
|
|
48
|
+
if (!payload) {
|
|
49
|
+
throw new errors_1.ErrCannotEstablishHandshake();
|
|
50
|
+
}
|
|
51
|
+
this.addHandshakeChangeListener();
|
|
52
|
+
return true;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
addHandshakeChangeListener() {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const walletUrl = this.walletUrl;
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
59
|
+
const self = this;
|
|
60
|
+
window.addEventListener('message', function eventHandler(event) {
|
|
61
|
+
var _a;
|
|
62
|
+
try {
|
|
63
|
+
const { type, payload } = event.data;
|
|
64
|
+
const isWalletEvent = event.origin === new URL(walletUrl).origin;
|
|
65
|
+
if (isWalletEvent &&
|
|
66
|
+
type === types_1.CrossWindowProviderResponseEnums.handshakeResponse) {
|
|
67
|
+
if (payload === false) {
|
|
68
|
+
(_a = self.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
69
|
+
self.walletWindow = null;
|
|
70
|
+
window.removeEventListener('message', eventHandler);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (_b) { }
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
listenOnce(action) {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
if (!this.walletWindow) {
|
|
81
|
+
throw new errors_1.ErrWalletWindowNotInstantiated();
|
|
82
|
+
}
|
|
83
|
+
return yield new Promise((resolve) => {
|
|
84
|
+
const walletUrl = this.walletUrl;
|
|
85
|
+
window.addEventListener('message', function eventHandler(event) {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
const { type, payload } = event.data;
|
|
88
|
+
const isWalletEvent = event.origin === new URL(walletUrl).origin;
|
|
89
|
+
const isCurrentAction = action === type ||
|
|
90
|
+
type === types_1.CrossWindowProviderResponseEnums.cancelResponse; // TODO: check if this is needed
|
|
91
|
+
if (!isCurrentAction) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (isWalletEvent) {
|
|
95
|
+
window.removeEventListener('message', eventHandler);
|
|
96
|
+
resolve({ type, payload });
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
closeConnection() {
|
|
104
|
+
var _a;
|
|
105
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
106
|
+
if (!this.initialized) {
|
|
107
|
+
throw new errors_1.ErrProviderNotInitialized();
|
|
108
|
+
}
|
|
109
|
+
yield this.handshake();
|
|
110
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
111
|
+
return true;
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
isInitialized() {
|
|
115
|
+
return this.initialized;
|
|
116
|
+
}
|
|
117
|
+
postMessage({ type, payload }) {
|
|
118
|
+
var _a, _b;
|
|
119
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
yield this.handshake();
|
|
121
|
+
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
122
|
+
type,
|
|
123
|
+
payload
|
|
124
|
+
}, this.walletUrl);
|
|
125
|
+
const data = yield this.listenOnce(constants_1.responseTypeMap[type]);
|
|
126
|
+
(_b = this.walletWindow) === null || _b === void 0 ? void 0 : _b.close();
|
|
127
|
+
return data;
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.WindowManager = WindowManager;
|
|
132
|
+
WindowManager._instance = new WindowManager();
|
|
133
|
+
//# sourceMappingURL=WindowManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WindowManager.js","sourceRoot":"","sources":["../src/WindowManager.ts"],"names":[],"mappings":"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"}
|
package/out/constants.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DAPP_WINDOW_NAME = exports.responseTypeMap = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
exports.responseTypeMap = {
|
|
6
|
+
[types_1.CrossWindowProviderRequestEnums.signTransactionsRequest]: types_1.CrossWindowProviderResponseEnums.signTransactionsResponse,
|
|
7
|
+
[types_1.CrossWindowProviderRequestEnums.signMessageRequest]: types_1.CrossWindowProviderResponseEnums.signMessageResponse,
|
|
8
|
+
[types_1.CrossWindowProviderRequestEnums.loginRequest]: types_1.CrossWindowProviderResponseEnums.loginResponse,
|
|
9
|
+
[types_1.CrossWindowProviderRequestEnums.logoutRequest]: types_1.CrossWindowProviderResponseEnums.disconnectResponse,
|
|
10
|
+
[types_1.CrossWindowProviderRequestEnums.cancelAction]: types_1.CrossWindowProviderResponseEnums.cancelResponse
|
|
11
|
+
};
|
|
12
|
+
exports.DAPP_WINDOW_NAME = window.location.origin;
|
|
13
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,mCAIiB;AAEJ,QAAA,eAAe,GAAoB;IAC9C,CAAC,uCAA+B,CAAC,uBAAuB,CAAC,EACvD,wCAAgC,CAAC,wBAAwB;IAC3D,CAAC,uCAA+B,CAAC,kBAAkB,CAAC,EAClD,wCAAgC,CAAC,mBAAmB;IACtD,CAAC,uCAA+B,CAAC,YAAY,CAAC,EAC5C,wCAAgC,CAAC,aAAa;IAChD,CAAC,uCAA+B,CAAC,aAAa,CAAC,EAC7C,wCAAgC,CAAC,kBAAkB;IACrD,CAAC,uCAA+B,CAAC,YAAY,CAAC,EAC5C,wCAAgC,CAAC,cAAc;CAClD,CAAC;AAEW,QAAA,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC"}
|
|
@@ -2,27 +2,21 @@ import { SignableMessage, Transaction } from '@multiversx/sdk-core';
|
|
|
2
2
|
import { CrossWindowProviderResponseEnums } from './types';
|
|
3
3
|
interface ICrossWindowWalletAccount {
|
|
4
4
|
address: string;
|
|
5
|
-
name?: string;
|
|
6
5
|
signature?: string;
|
|
7
6
|
}
|
|
8
|
-
export declare const DAPP_WINDOW_NAME: string;
|
|
9
7
|
export declare class CrossWindowProvider {
|
|
10
|
-
private walletUrl;
|
|
11
8
|
account: ICrossWindowWalletAccount;
|
|
12
9
|
private initialized;
|
|
10
|
+
private windowManager;
|
|
13
11
|
private static _instance;
|
|
14
|
-
walletWindow: Window | null;
|
|
15
|
-
private handshakeEstablished;
|
|
16
12
|
private accessToken;
|
|
17
13
|
private constructor();
|
|
14
|
+
private ensureConnected;
|
|
15
|
+
private disconnect;
|
|
18
16
|
static getInstance(): CrossWindowProvider;
|
|
19
17
|
setAddress(address: string): CrossWindowProvider;
|
|
20
18
|
setWalletUrl(url: string): CrossWindowProvider;
|
|
21
19
|
init(): Promise<boolean>;
|
|
22
|
-
handshake(): Promise<boolean>;
|
|
23
|
-
private addHandshakeChangeListener;
|
|
24
|
-
listenOnce(action: CrossWindowProviderResponseEnums): Promise<any>;
|
|
25
|
-
private connectWallet;
|
|
26
20
|
login(options?: {
|
|
27
21
|
token?: string;
|
|
28
22
|
}): Promise<{
|
|
@@ -30,14 +24,20 @@ export declare class CrossWindowProvider {
|
|
|
30
24
|
signature: string | undefined;
|
|
31
25
|
}>;
|
|
32
26
|
logout(): Promise<boolean>;
|
|
33
|
-
private disconnect;
|
|
34
27
|
getAddress(): Promise<string>;
|
|
35
28
|
isInitialized(): boolean;
|
|
36
29
|
isConnected(): Promise<boolean>;
|
|
37
30
|
signTransaction(transaction: Transaction): Promise<Transaction>;
|
|
38
|
-
private ensureConnected;
|
|
39
31
|
signTransactions(transactions: Transaction[]): Promise<Transaction[]>;
|
|
40
32
|
signMessage(message: SignableMessage): Promise<SignableMessage>;
|
|
41
|
-
cancelAction():
|
|
33
|
+
cancelAction(): Promise<{
|
|
34
|
+
type: CrossWindowProviderResponseEnums.cancelResponse;
|
|
35
|
+
payload: {
|
|
36
|
+
data?: {
|
|
37
|
+
address: string;
|
|
38
|
+
} | undefined;
|
|
39
|
+
error?: string | undefined;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
42
42
|
}
|
|
43
43
|
export {};
|
|
@@ -9,30 +9,31 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.CrossWindowProvider =
|
|
12
|
+
exports.CrossWindowProvider = 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
16
|
const types_1 = require("./types");
|
|
17
|
-
|
|
17
|
+
const WindowManager_1 = require("./WindowManager");
|
|
18
18
|
class CrossWindowProvider {
|
|
19
19
|
constructor() {
|
|
20
|
-
this.walletUrl = '';
|
|
21
20
|
this.account = { address: '' };
|
|
22
21
|
this.initialized = false;
|
|
23
|
-
this.walletWindow = null;
|
|
24
|
-
this.handshakeEstablished = false;
|
|
25
22
|
this.accessToken = undefined;
|
|
26
23
|
if (CrossWindowProvider._instance) {
|
|
27
24
|
throw new errors_1.ErrInstantiationFailed();
|
|
28
25
|
}
|
|
29
|
-
|
|
30
|
-
var _a;
|
|
31
|
-
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
32
|
-
});
|
|
33
|
-
window.name = window.name = exports.DAPP_WINDOW_NAME;
|
|
26
|
+
this.windowManager = WindowManager_1.WindowManager.getInstance();
|
|
34
27
|
CrossWindowProvider._instance = this;
|
|
35
28
|
}
|
|
29
|
+
ensureConnected() {
|
|
30
|
+
if (!this.account.address) {
|
|
31
|
+
throw new errors_1.ErrAccountNotConnected();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
disconnect() {
|
|
35
|
+
this.account = { address: '' };
|
|
36
|
+
}
|
|
36
37
|
static getInstance() {
|
|
37
38
|
return CrossWindowProvider._instance;
|
|
38
39
|
}
|
|
@@ -41,132 +42,65 @@ class CrossWindowProvider {
|
|
|
41
42
|
return CrossWindowProvider._instance;
|
|
42
43
|
}
|
|
43
44
|
setWalletUrl(url) {
|
|
44
|
-
this.
|
|
45
|
+
this.windowManager.setWalletUrl(url);
|
|
45
46
|
return CrossWindowProvider._instance;
|
|
46
47
|
}
|
|
47
48
|
init() {
|
|
48
49
|
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
-
|
|
50
|
-
this.initialized = true;
|
|
50
|
+
this.initialized = yield this.windowManager.init();
|
|
51
51
|
return this.initialized;
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
login(options = {}) {
|
|
55
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (!payload) {
|
|
59
|
-
throw new errors_1.ErrCannotEstablishHandshake();
|
|
56
|
+
if (!this.initialized) {
|
|
57
|
+
throw new errors_1.ErrProviderNotInitialized();
|
|
60
58
|
}
|
|
61
|
-
this.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const walletUrl = this.walletUrl;
|
|
69
|
-
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
70
|
-
const self = this;
|
|
71
|
-
window.addEventListener('message', function eventHandler(event) {
|
|
72
|
-
var _a;
|
|
73
|
-
try {
|
|
74
|
-
const { type, payload } = event.data;
|
|
75
|
-
const isWalletEvent = event.origin === new URL(walletUrl).origin;
|
|
76
|
-
if (isWalletEvent && type === types_1.CrossWindowProviderResponseEnums.handshakeResponse) {
|
|
77
|
-
if (payload === false) {
|
|
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);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch (_b) { }
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
listenOnce(action) {
|
|
90
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
-
if (!this.walletWindow) {
|
|
92
|
-
throw new errors_1.ErrWalletWindowNotInstantiated();
|
|
59
|
+
const isRelogin = yield this.isConnected();
|
|
60
|
+
if (isRelogin) {
|
|
61
|
+
const { address, signature } = this.account;
|
|
62
|
+
return {
|
|
63
|
+
address,
|
|
64
|
+
signature
|
|
65
|
+
};
|
|
93
66
|
}
|
|
94
|
-
|
|
95
|
-
return yield new Promise((resolve) => {
|
|
96
|
-
const walletUrl = this.walletUrl;
|
|
97
|
-
window.addEventListener('message', function eventHandler(event) {
|
|
98
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
-
const { type, payload } = event.data;
|
|
100
|
-
const isWalletEvent = event.origin === new URL(walletUrl).origin;
|
|
101
|
-
const isCurrentAction = action === type || type === types_1.CrossWindowProviderResponseEnums.cancelResponse;
|
|
102
|
-
const isRelogin = yield self.isConnected();
|
|
103
|
-
if ((isRelogin && type === 'connect') || !isCurrentAction) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (isWalletEvent) {
|
|
107
|
-
window.removeEventListener('message', eventHandler);
|
|
108
|
-
resolve({ type, payload });
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
connectWallet() {
|
|
116
|
-
var _a;
|
|
117
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
this.accessToken = options.token;
|
|
118
68
|
const payloadQueryString = helpers_1.buildWalletQueryString({
|
|
119
69
|
params: {
|
|
120
70
|
token: this.accessToken
|
|
121
71
|
}
|
|
122
72
|
});
|
|
123
|
-
const
|
|
124
|
-
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
73
|
+
const { payload: { data, error } } = yield this.windowManager.postMessage({
|
|
125
74
|
type: types_1.CrossWindowProviderRequestEnums.loginRequest,
|
|
126
|
-
payload: { queryString: payloadQueryString }
|
|
127
|
-
}
|
|
128
|
-
if (!
|
|
129
|
-
|
|
130
|
-
this.account.address = address;
|
|
131
|
-
this.account.signature = signature;
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
login(options = {}) {
|
|
136
|
-
var _a;
|
|
137
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
138
|
-
if (!this.initialized) {
|
|
139
|
-
throw new errors_1.ErrProviderNotInitialized();
|
|
75
|
+
payload: { queryString: payloadQueryString } // TODO: needs to change to plain qyerystirng
|
|
76
|
+
});
|
|
77
|
+
if (error || !data) {
|
|
78
|
+
throw new errors_1.ErrCouldNotLogin();
|
|
140
79
|
}
|
|
141
|
-
this.
|
|
142
|
-
|
|
143
|
-
yield this.connectWallet();
|
|
144
|
-
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
80
|
+
this.account.address = data.address;
|
|
81
|
+
this.account.signature = data.signature;
|
|
145
82
|
return { address: this.account.address, signature: this.account.signature };
|
|
146
83
|
});
|
|
147
84
|
}
|
|
148
85
|
logout() {
|
|
149
|
-
var _a;
|
|
150
86
|
return __awaiter(this, void 0, void 0, function* () {
|
|
151
87
|
if (!this.initialized) {
|
|
152
88
|
throw new errors_1.ErrProviderNotInitialized();
|
|
153
89
|
}
|
|
154
90
|
this.ensureConnected();
|
|
155
|
-
yield this.handshake();
|
|
156
91
|
this.disconnect();
|
|
157
|
-
|
|
158
|
-
|
|
92
|
+
const connectionClosed = yield this.windowManager.closeConnection();
|
|
93
|
+
// TODO: postMessage to wallet to logout
|
|
94
|
+
return connectionClosed;
|
|
159
95
|
});
|
|
160
96
|
}
|
|
161
|
-
disconnect() {
|
|
162
|
-
this.account = { address: '' };
|
|
163
|
-
}
|
|
164
97
|
getAddress() {
|
|
98
|
+
var _a, _b;
|
|
165
99
|
return __awaiter(this, void 0, void 0, function* () {
|
|
166
100
|
if (!this.initialized) {
|
|
167
101
|
throw new errors_1.ErrProviderNotInitialized();
|
|
168
102
|
}
|
|
169
|
-
return this.account ?
|
|
103
|
+
return (_b = (_a = this.account) === null || _a === void 0 ? void 0 : _a.address) !== null && _b !== void 0 ? _b : '';
|
|
170
104
|
});
|
|
171
105
|
}
|
|
172
106
|
isInitialized() {
|
|
@@ -187,25 +121,23 @@ class CrossWindowProvider {
|
|
|
187
121
|
return signedTransactions[0];
|
|
188
122
|
});
|
|
189
123
|
}
|
|
190
|
-
ensureConnected() {
|
|
191
|
-
if (!this.account.address) {
|
|
192
|
-
throw new errors_1.ErrAccountNotConnected();
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
124
|
signTransactions(transactions) {
|
|
196
|
-
var _a, _b;
|
|
197
125
|
return __awaiter(this, void 0, void 0, function* () {
|
|
198
126
|
this.ensureConnected();
|
|
199
|
-
yield this.handshake();
|
|
200
|
-
yield this.connectWallet();
|
|
201
127
|
const payloadQueryString = helpers_1.buildTransactionsQueryString(transactions);
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
128
|
+
const { type, payload: { data, error } } = yield this.windowManager.postMessage({
|
|
129
|
+
type: types_1.CrossWindowProviderRequestEnums.signTransactionsRequest,
|
|
130
|
+
payload: payloadQueryString
|
|
131
|
+
});
|
|
132
|
+
if (error || !data) {
|
|
133
|
+
throw new errors_1.ErrCouldNotSignTransaction();
|
|
134
|
+
}
|
|
135
|
+
const signedPlainTransactions = data;
|
|
205
136
|
if (type === types_1.CrossWindowProviderResponseEnums.cancelResponse) {
|
|
206
|
-
throw new errors_1.
|
|
137
|
+
throw new errors_1.ErrTransactionCancelled();
|
|
207
138
|
}
|
|
208
|
-
|
|
139
|
+
const hasTransactions = (signedPlainTransactions === null || signedPlainTransactions === void 0 ? void 0 : signedPlainTransactions.length) > 0;
|
|
140
|
+
if (!hasTransactions) {
|
|
209
141
|
throw new errors_1.ErrCouldNotSignTransaction();
|
|
210
142
|
}
|
|
211
143
|
const signedTransactions = signedPlainTransactions.map((tx) => {
|
|
@@ -216,29 +148,34 @@ class CrossWindowProvider {
|
|
|
216
148
|
});
|
|
217
149
|
}
|
|
218
150
|
signMessage(message) {
|
|
219
|
-
var _a, _b;
|
|
220
151
|
return __awaiter(this, void 0, void 0, function* () {
|
|
221
152
|
this.ensureConnected();
|
|
222
|
-
yield this.handshake();
|
|
223
|
-
yield this.connectWallet();
|
|
224
153
|
const payloadQueryString = helpers_1.buildWalletQueryString({
|
|
225
154
|
params: {
|
|
226
155
|
message: message.message.toString()
|
|
227
156
|
}
|
|
228
157
|
});
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
158
|
+
const { payload: { data, error } } = yield this.windowManager.postMessage({
|
|
159
|
+
type: types_1.CrossWindowProviderRequestEnums.signMessageRequest,
|
|
160
|
+
payload: payloadQueryString
|
|
161
|
+
});
|
|
162
|
+
if (error || !data) {
|
|
163
|
+
throw new errors_1.ErrCouldNotSignMessage();
|
|
164
|
+
}
|
|
165
|
+
const { status, signature } = data;
|
|
232
166
|
if (status !== types_1.SignMessageStatusEnum.signed) {
|
|
233
167
|
throw new errors_1.ErrCouldNotSignMessage();
|
|
234
168
|
}
|
|
235
|
-
message.applySignature(Buffer.from(signature, 'hex'));
|
|
169
|
+
message.applySignature(Buffer.from(String(signature), 'hex'));
|
|
236
170
|
return message;
|
|
237
171
|
});
|
|
238
172
|
}
|
|
239
173
|
cancelAction() {
|
|
240
174
|
var _a;
|
|
241
|
-
(_a = this.
|
|
175
|
+
return (_a = this.windowManager) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
176
|
+
type: types_1.CrossWindowProviderRequestEnums.cancelAction,
|
|
177
|
+
payload: ''
|
|
178
|
+
});
|
|
242
179
|
}
|
|
243
180
|
}
|
|
244
181
|
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
|
@@ -23,7 +23,10 @@ export declare class ErrWalletWindowNotInstantiated extends Err {
|
|
|
23
23
|
export declare class ErrProviderNotInitialized extends Err {
|
|
24
24
|
constructor();
|
|
25
25
|
}
|
|
26
|
-
export declare class
|
|
26
|
+
export declare class ErrCouldNotLogin extends Err {
|
|
27
|
+
constructor();
|
|
28
|
+
}
|
|
29
|
+
export declare class ErrTransactionCancelled extends Err {
|
|
27
30
|
constructor();
|
|
28
31
|
}
|
|
29
32
|
export declare class ErrCouldNotSignTransaction extends Err {
|
package/out/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ErrCouldNotSignMessage = exports.ErrCouldNotSignTransaction = exports.
|
|
3
|
+
exports.ErrCouldNotSignMessage = exports.ErrCouldNotSignTransaction = exports.ErrTransactionCancelled = exports.ErrCouldNotLogin = 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
|
*/
|
|
@@ -48,12 +48,18 @@ class ErrProviderNotInitialized extends Err {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
exports.ErrProviderNotInitialized = ErrProviderNotInitialized;
|
|
51
|
-
class
|
|
51
|
+
class ErrCouldNotLogin extends Err {
|
|
52
|
+
constructor() {
|
|
53
|
+
super('Could not login');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.ErrCouldNotLogin = ErrCouldNotLogin;
|
|
57
|
+
class ErrTransactionCancelled extends Err {
|
|
52
58
|
constructor() {
|
|
53
59
|
super('Transaction canceled.');
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
|
-
exports.
|
|
62
|
+
exports.ErrTransactionCancelled = ErrTransactionCancelled;
|
|
57
63
|
class ErrCouldNotSignTransaction extends Err {
|
|
58
64
|
constructor() {
|
|
59
65
|
super('Could not sign transactions');
|
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;AAED,MAAa,2BAA4B,SAAQ,GAAG;IAClD;QACE,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC9C,CAAC;CACF;AAJD,kEAIC;AAED,MAAa,sBAAuB,SAAQ,GAAG;IAC7C;QACE,KAAK,CACH,oFAAoF,CACrF,CAAC;IACJ,CAAC;CACF;AAND,wDAMC;AAED,MAAa,8BAA+B,SAAQ,GAAG;IACrD;QACE,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC7C,CAAC;CACF;AAJD,wEAIC;AAED,MAAa,yBAA0B,SAAQ,GAAG;IAChD;QACE,KAAK,CAAC,oEAAoE,CAAC,CAAC;IAC9E,CAAC;CACF;AAJD,8DAIC;AAED,MAAa,gBAAiB,SAAQ,GAAG;IACvC;QACE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3B,CAAC;CACF;AAJD,4CAIC;AAED,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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Transaction } from
|
|
1
|
+
import { Transaction } from '@multiversx/sdk-core/out';
|
|
2
2
|
export declare const buildTransactionsQueryString: (transactions: Transaction[]) => string;
|
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildTransactionsQueryString = void 0;
|
|
4
4
|
const buildWalletQueryString_1 = require("./buildWalletQueryString");
|
|
5
|
+
const prepareWalletTransaction = (transaction) => {
|
|
6
|
+
const plainTransaction = transaction.toPlainObject();
|
|
7
|
+
// We adjust the data field, in order to make it compatible with what the web wallet expects.
|
|
8
|
+
if (plainTransaction.data) {
|
|
9
|
+
plainTransaction.data = Buffer.from(plainTransaction.data, 'base64').toString();
|
|
10
|
+
if (plainTransaction.receiverUsername) {
|
|
11
|
+
plainTransaction.receiverUsername = Buffer.from(plainTransaction.receiverUsername, 'base64').toString();
|
|
12
|
+
}
|
|
13
|
+
if (plainTransaction.senderUsername) {
|
|
14
|
+
plainTransaction.senderUsername = Buffer.from(plainTransaction.senderUsername, 'base64').toString();
|
|
15
|
+
}
|
|
16
|
+
// The web wallet expects the data field to be a string, even if it's empty (early 2023).
|
|
17
|
+
plainTransaction.data = plainTransaction.data || '';
|
|
18
|
+
}
|
|
19
|
+
return plainTransaction;
|
|
20
|
+
};
|
|
5
21
|
const buildTransactionsQueryString = (transactions) => {
|
|
6
22
|
const jsonToSend = {};
|
|
7
23
|
transactions.map((tx) => {
|
|
@@ -15,24 +31,8 @@ const buildTransactionsQueryString = (transactions) => {
|
|
|
15
31
|
}
|
|
16
32
|
});
|
|
17
33
|
return buildWalletQueryString_1.buildWalletQueryString({
|
|
18
|
-
params: jsonToSend
|
|
34
|
+
params: jsonToSend
|
|
19
35
|
});
|
|
20
36
|
};
|
|
21
37
|
exports.buildTransactionsQueryString = buildTransactionsQueryString;
|
|
22
|
-
const prepareWalletTransaction = (transaction) => {
|
|
23
|
-
const plainTransaction = transaction.toPlainObject();
|
|
24
|
-
// We adjust the data field, in order to make it compatible with what the web wallet expects.
|
|
25
|
-
if (plainTransaction.data) {
|
|
26
|
-
plainTransaction.data = Buffer.from(plainTransaction.data, "base64").toString();
|
|
27
|
-
if (plainTransaction.receiverUsername) {
|
|
28
|
-
plainTransaction.receiverUsername = Buffer.from(plainTransaction.receiverUsername, "base64").toString();
|
|
29
|
-
}
|
|
30
|
-
if (plainTransaction.senderUsername) {
|
|
31
|
-
plainTransaction.senderUsername = Buffer.from(plainTransaction.senderUsername, "base64").toString();
|
|
32
|
-
}
|
|
33
|
-
// The web wallet expects the data field to be a string, even if it's empty (early 2023).
|
|
34
|
-
plainTransaction.data = plainTransaction.data || "";
|
|
35
|
-
}
|
|
36
|
-
return plainTransaction;
|
|
37
|
-
};
|
|
38
38
|
//# sourceMappingURL=buildTransactionsQueryString.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTransactionsQueryString.js","sourceRoot":"","sources":["../../src/helpers/buildTransactionsQueryString.ts"],"names":[],"mappings":";;;AACA,qEAAkE;
|
|
1
|
+
{"version":3,"file":"buildTransactionsQueryString.js","sourceRoot":"","sources":["../../src/helpers/buildTransactionsQueryString.ts"],"names":[],"mappings":";;;AACA,qEAAkE;AAElE,MAAM,wBAAwB,GAAG,CAAC,WAAwB,EAAO,EAAE;IACjE,MAAM,gBAAgB,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;IAErD,6FAA6F;IAC7F,IAAI,gBAAgB,CAAC,IAAI,EAAE;QACzB,gBAAgB,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CACjC,gBAAgB,CAAC,IAAI,EACrB,QAAQ,CACT,CAAC,QAAQ,EAAE,CAAC;QAEb,IAAI,gBAAgB,CAAC,gBAAgB,EAAE;YACrC,gBAAgB,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAC7C,gBAAgB,CAAC,gBAAgB,EACjC,QAAQ,CACT,CAAC,QAAQ,EAAE,CAAC;SACd;QAED,IAAI,gBAAgB,CAAC,cAAc,EAAE;YACnC,gBAAgB,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAC3C,gBAAgB,CAAC,cAAc,EAC/B,QAAQ,CACT,CAAC,QAAQ,EAAE,CAAC;SACd;QACD,yFAAyF;QACzF,gBAAgB,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,IAAI,EAAE,CAAC;KACrD;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAEK,MAAM,4BAA4B,GAAG,CAC1C,YAA2B,EACnB,EAAE;IACV,MAAM,UAAU,GAAQ,EAAE,CAAC;IAC3B,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IACE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC9B,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,EAClC;gBACA,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;aACzB;YAED,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;SAC1C;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,+CAAsB,CAAC;QAC5B,MAAM,EAAE,UAAU;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AArBW,QAAA,4BAA4B,gCAqBvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildWalletQueryString.js","sourceRoot":"","sources":["../../src/helpers/buildWalletQueryString.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"buildWalletQueryString.js","sourceRoot":"","sources":["../../src/helpers/buildWalletQueryString.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AAEb,MAAM,sBAAsB,GAAG,CAAC,OAAyB,EAAU,EAAE;IAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;IACzC,MAAM,kBAAkB,GAAG,YAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,kBAAkB;QACxC,CAAC,CAAC,GAAG,kBAAkB,gBAAgB,WAAW,EAAE;QACpD,CAAC,CAAC,eAAe,WAAW,EAAE,CAAC;IAEjC,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AARW,QAAA,sBAAsB,0BAQjC"}
|
package/out/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { IPlainTransactionObject } from '@multiversx/sdk-core';
|
|
1
2
|
export declare enum CrossWindowProviderRequestEnums {
|
|
2
3
|
signTransactionsRequest = "SIGN_TRANSACTIONS_REQUEST",
|
|
3
4
|
signMessageRequest = "SIGN_MESSAGE_REQUEST",
|
|
@@ -6,14 +7,55 @@ export declare enum CrossWindowProviderRequestEnums {
|
|
|
6
7
|
cancelAction = "CANCEL_ACTION_REQUEST"
|
|
7
8
|
}
|
|
8
9
|
export declare enum CrossWindowProviderResponseEnums {
|
|
9
|
-
signTransactionsResponse = "SIGN_TRANSACTIONS_RESPONSE",
|
|
10
|
-
signMessageResponse = "SIGN_MESSAGE_RESPONSE",
|
|
11
|
-
loginResponse = "LOGIN_RESPONSE",
|
|
12
10
|
handshakeResponse = "HANDSHAKE_RESPONSE",
|
|
13
|
-
|
|
11
|
+
loginResponse = "LOGIN_RESPONSE",
|
|
14
12
|
disconnectResponse = "DISCONNECT_RESPONSE",
|
|
13
|
+
cancelResponse = "CANCEL_RESPONSE",
|
|
14
|
+
signTransactionsResponse = "SIGN_TRANSACTIONS_RESPONSE",
|
|
15
|
+
signMessageResponse = "SIGN_MESSAGE_RESPONSE",
|
|
15
16
|
noneResponse = "NONE_RESPONSE"
|
|
16
17
|
}
|
|
17
18
|
export declare enum SignMessageStatusEnum {
|
|
18
|
-
|
|
19
|
+
pending = "pending",
|
|
20
|
+
failed = "failed",
|
|
21
|
+
signed = "signed",
|
|
22
|
+
cancelled = "cancelled"
|
|
19
23
|
}
|
|
24
|
+
export declare type ReplyWithPostMessageObjectType = {
|
|
25
|
+
[CrossWindowProviderResponseEnums.handshakeResponse]: boolean;
|
|
26
|
+
[CrossWindowProviderResponseEnums.loginResponse]: {
|
|
27
|
+
address: string;
|
|
28
|
+
accessToken?: string;
|
|
29
|
+
/**
|
|
30
|
+
* used in De-Fi wallet extension as wallet name
|
|
31
|
+
* */
|
|
32
|
+
name?: string;
|
|
33
|
+
signature?: string;
|
|
34
|
+
};
|
|
35
|
+
[CrossWindowProviderResponseEnums.disconnectResponse]: null;
|
|
36
|
+
[CrossWindowProviderResponseEnums.cancelResponse]: {
|
|
37
|
+
address: string;
|
|
38
|
+
};
|
|
39
|
+
[CrossWindowProviderResponseEnums.signTransactionsResponse]: IPlainTransactionObject[];
|
|
40
|
+
[CrossWindowProviderResponseEnums.signMessageResponse]: {
|
|
41
|
+
signature?: string;
|
|
42
|
+
status: SignMessageStatusEnum;
|
|
43
|
+
};
|
|
44
|
+
[CrossWindowProviderResponseEnums.noneResponse]: null;
|
|
45
|
+
};
|
|
46
|
+
declare type ReplyWithPostMessagePayloadType<T extends ReplyWithPostMessageObjectType[keyof ReplyWithPostMessageObjectType]> = {
|
|
47
|
+
data?: T;
|
|
48
|
+
error?: string;
|
|
49
|
+
};
|
|
50
|
+
export declare type ReplyWithPostMessageType<T extends CrossWindowProviderResponseEnums> = {
|
|
51
|
+
type: T;
|
|
52
|
+
payload: ReplyWithPostMessagePayloadType<ReplyWithPostMessageObjectType[T]>;
|
|
53
|
+
};
|
|
54
|
+
export declare type ResponseTypeMap = {
|
|
55
|
+
[CrossWindowProviderRequestEnums.signTransactionsRequest]: CrossWindowProviderResponseEnums.signTransactionsResponse;
|
|
56
|
+
[CrossWindowProviderRequestEnums.signMessageRequest]: CrossWindowProviderResponseEnums.signMessageResponse;
|
|
57
|
+
[CrossWindowProviderRequestEnums.loginRequest]: CrossWindowProviderResponseEnums.loginResponse;
|
|
58
|
+
[CrossWindowProviderRequestEnums.logoutRequest]: CrossWindowProviderResponseEnums.disconnectResponse;
|
|
59
|
+
[CrossWindowProviderRequestEnums.cancelAction]: CrossWindowProviderResponseEnums.cancelResponse;
|
|
60
|
+
};
|
|
61
|
+
export {};
|
package/out/types.js
CHANGED
|
@@ -11,16 +11,19 @@ var CrossWindowProviderRequestEnums;
|
|
|
11
11
|
})(CrossWindowProviderRequestEnums = exports.CrossWindowProviderRequestEnums || (exports.CrossWindowProviderRequestEnums = {}));
|
|
12
12
|
var CrossWindowProviderResponseEnums;
|
|
13
13
|
(function (CrossWindowProviderResponseEnums) {
|
|
14
|
-
CrossWindowProviderResponseEnums["signTransactionsResponse"] = "SIGN_TRANSACTIONS_RESPONSE";
|
|
15
|
-
CrossWindowProviderResponseEnums["signMessageResponse"] = "SIGN_MESSAGE_RESPONSE";
|
|
16
|
-
CrossWindowProviderResponseEnums["loginResponse"] = "LOGIN_RESPONSE";
|
|
17
14
|
CrossWindowProviderResponseEnums["handshakeResponse"] = "HANDSHAKE_RESPONSE";
|
|
18
|
-
CrossWindowProviderResponseEnums["
|
|
15
|
+
CrossWindowProviderResponseEnums["loginResponse"] = "LOGIN_RESPONSE";
|
|
19
16
|
CrossWindowProviderResponseEnums["disconnectResponse"] = "DISCONNECT_RESPONSE";
|
|
17
|
+
CrossWindowProviderResponseEnums["cancelResponse"] = "CANCEL_RESPONSE";
|
|
18
|
+
CrossWindowProviderResponseEnums["signTransactionsResponse"] = "SIGN_TRANSACTIONS_RESPONSE";
|
|
19
|
+
CrossWindowProviderResponseEnums["signMessageResponse"] = "SIGN_MESSAGE_RESPONSE";
|
|
20
20
|
CrossWindowProviderResponseEnums["noneResponse"] = "NONE_RESPONSE";
|
|
21
21
|
})(CrossWindowProviderResponseEnums = exports.CrossWindowProviderResponseEnums || (exports.CrossWindowProviderResponseEnums = {}));
|
|
22
22
|
var SignMessageStatusEnum;
|
|
23
23
|
(function (SignMessageStatusEnum) {
|
|
24
|
+
SignMessageStatusEnum["pending"] = "pending";
|
|
25
|
+
SignMessageStatusEnum["failed"] = "failed";
|
|
24
26
|
SignMessageStatusEnum["signed"] = "signed";
|
|
27
|
+
SignMessageStatusEnum["cancelled"] = "cancelled";
|
|
25
28
|
})(SignMessageStatusEnum = exports.SignMessageStatusEnum || (exports.SignMessageStatusEnum = {}));
|
|
26
29
|
//# sourceMappingURL=types.js.map
|
package/out/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,+BAMX;AAND,WAAY,+BAA+B;IACzC,wFAAqD,CAAA;IACrD,8EAA2C,CAAA;IAC3C,iEAA8B,CAAA;IAC9B,mEAAgC,CAAA;IAChC,yEAAsC,CAAA;AACxC,CAAC,EANW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAM1C;AAED,IAAY,gCAQX;AARD,WAAY,gCAAgC;IAC1C,4EAAwC,CAAA;IACxC,oEAAgC,CAAA;IAChC,8EAA0C,CAAA;IAC1C,sEAAkC,CAAA;IAClC,2FAAuD,CAAA;IACvD,iFAA6C,CAAA;IAC7C,kEAA8B,CAAA;AAChC,CAAC,EARW,gCAAgC,GAAhC,wCAAgC,KAAhC,wCAAgC,QAQ3C;AAED,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,4CAAmB,CAAA;IACnB,0CAAiB,CAAA;IACjB,0CAAiB,CAAA;IACjB,gDAAuB,CAAA;AACzB,CAAC,EALW,qBAAqB,GAArB,6BAAqB,KAArB,6BAAqB,QAKhC"}
|