@multiversx/sdk-web-wallet-cross-window-provider 0.0.5 → 0.0.6
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 +3 -12
- package/out/crossWindowProvider.js +50 -124
- package/out/crossWindowProvider.js.map +1 -1
- package/out/errors.d.ts +1 -1
- package/out/errors.js +3 -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/types.d.ts +39 -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"}
|
|
@@ -1,28 +1,21 @@
|
|
|
1
1
|
import { SignableMessage, Transaction } from '@multiversx/sdk-core';
|
|
2
|
-
import { CrossWindowProviderResponseEnums } from './types';
|
|
3
2
|
interface ICrossWindowWalletAccount {
|
|
4
3
|
address: string;
|
|
5
|
-
name?: string;
|
|
6
4
|
signature?: string;
|
|
7
5
|
}
|
|
8
|
-
export declare const DAPP_WINDOW_NAME: string;
|
|
9
6
|
export declare class CrossWindowProvider {
|
|
10
|
-
private walletUrl;
|
|
11
7
|
account: ICrossWindowWalletAccount;
|
|
12
8
|
private initialized;
|
|
9
|
+
private windowManager;
|
|
13
10
|
private static _instance;
|
|
14
|
-
walletWindow: Window | null;
|
|
15
|
-
private handshakeEstablished;
|
|
16
11
|
private accessToken;
|
|
17
12
|
private constructor();
|
|
13
|
+
private ensureConnected;
|
|
14
|
+
private disconnect;
|
|
18
15
|
static getInstance(): CrossWindowProvider;
|
|
19
16
|
setAddress(address: string): CrossWindowProvider;
|
|
20
17
|
setWalletUrl(url: string): CrossWindowProvider;
|
|
21
18
|
init(): Promise<boolean>;
|
|
22
|
-
handshake(): Promise<boolean>;
|
|
23
|
-
private addHandshakeChangeListener;
|
|
24
|
-
listenOnce(action: CrossWindowProviderResponseEnums): Promise<any>;
|
|
25
|
-
private connectWallet;
|
|
26
19
|
login(options?: {
|
|
27
20
|
token?: string;
|
|
28
21
|
}): Promise<{
|
|
@@ -30,12 +23,10 @@ export declare class CrossWindowProvider {
|
|
|
30
23
|
signature: string | undefined;
|
|
31
24
|
}>;
|
|
32
25
|
logout(): Promise<boolean>;
|
|
33
|
-
private disconnect;
|
|
34
26
|
getAddress(): Promise<string>;
|
|
35
27
|
isInitialized(): boolean;
|
|
36
28
|
isConnected(): Promise<boolean>;
|
|
37
29
|
signTransaction(transaction: Transaction): Promise<Transaction>;
|
|
38
|
-
private ensureConnected;
|
|
39
30
|
signTransactions(transactions: Transaction[]): Promise<Transaction[]>;
|
|
40
31
|
signMessage(message: SignableMessage): Promise<SignableMessage>;
|
|
41
32
|
cancelAction(): void;
|
|
@@ -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,62 @@ 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: { address, signature } } = yield this.windowManager.postMessage({
|
|
125
74
|
type: types_1.CrossWindowProviderRequestEnums.loginRequest,
|
|
126
|
-
payload: { queryString: payloadQueryString }
|
|
127
|
-
}
|
|
128
|
-
|
|
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();
|
|
140
|
-
}
|
|
141
|
-
this.accessToken = options.token;
|
|
142
|
-
yield this.handshake();
|
|
143
|
-
yield this.connectWallet();
|
|
144
|
-
(_a = this.walletWindow) === null || _a === void 0 ? void 0 : _a.close();
|
|
75
|
+
payload: { queryString: payloadQueryString } // TODO: needs to change to plain qyerystirng
|
|
76
|
+
});
|
|
77
|
+
this.account.address = address;
|
|
78
|
+
this.account.signature = signature;
|
|
145
79
|
return { address: this.account.address, signature: this.account.signature };
|
|
146
80
|
});
|
|
147
81
|
}
|
|
148
82
|
logout() {
|
|
149
|
-
var _a;
|
|
150
83
|
return __awaiter(this, void 0, void 0, function* () {
|
|
151
84
|
if (!this.initialized) {
|
|
152
85
|
throw new errors_1.ErrProviderNotInitialized();
|
|
153
86
|
}
|
|
154
87
|
this.ensureConnected();
|
|
155
|
-
yield this.handshake();
|
|
156
88
|
this.disconnect();
|
|
157
|
-
|
|
158
|
-
|
|
89
|
+
const connectionClosed = yield this.windowManager.closeConnection();
|
|
90
|
+
// TODO: postMessage to wallet to logout
|
|
91
|
+
return connectionClosed;
|
|
159
92
|
});
|
|
160
93
|
}
|
|
161
|
-
disconnect() {
|
|
162
|
-
this.account = { address: '' };
|
|
163
|
-
}
|
|
164
94
|
getAddress() {
|
|
95
|
+
var _a, _b;
|
|
165
96
|
return __awaiter(this, void 0, void 0, function* () {
|
|
166
97
|
if (!this.initialized) {
|
|
167
98
|
throw new errors_1.ErrProviderNotInitialized();
|
|
168
99
|
}
|
|
169
|
-
return this.account ?
|
|
100
|
+
return (_b = (_a = this.account) === null || _a === void 0 ? void 0 : _a.address) !== null && _b !== void 0 ? _b : '';
|
|
170
101
|
});
|
|
171
102
|
}
|
|
172
103
|
isInitialized() {
|
|
@@ -187,25 +118,19 @@ class CrossWindowProvider {
|
|
|
187
118
|
return signedTransactions[0];
|
|
188
119
|
});
|
|
189
120
|
}
|
|
190
|
-
ensureConnected() {
|
|
191
|
-
if (!this.account.address) {
|
|
192
|
-
throw new errors_1.ErrAccountNotConnected();
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
121
|
signTransactions(transactions) {
|
|
196
|
-
var _a, _b;
|
|
197
122
|
return __awaiter(this, void 0, void 0, function* () {
|
|
198
123
|
this.ensureConnected();
|
|
199
|
-
yield this.handshake();
|
|
200
|
-
yield this.connectWallet();
|
|
201
124
|
const payloadQueryString = helpers_1.buildTransactionsQueryString(transactions);
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
125
|
+
const { type, payload: signedPlainTransactions } = yield this.windowManager.postMessage({
|
|
126
|
+
type: types_1.CrossWindowProviderRequestEnums.signTransactionsRequest,
|
|
127
|
+
payload: payloadQueryString
|
|
128
|
+
});
|
|
205
129
|
if (type === types_1.CrossWindowProviderResponseEnums.cancelResponse) {
|
|
206
|
-
throw new errors_1.
|
|
130
|
+
throw new errors_1.ErrTransactionCancelled();
|
|
207
131
|
}
|
|
208
|
-
|
|
132
|
+
const hasTransactions = (signedPlainTransactions === null || signedPlainTransactions === void 0 ? void 0 : signedPlainTransactions.length) > 0;
|
|
133
|
+
if (!hasTransactions) {
|
|
209
134
|
throw new errors_1.ErrCouldNotSignTransaction();
|
|
210
135
|
}
|
|
211
136
|
const signedTransactions = signedPlainTransactions.map((tx) => {
|
|
@@ -216,29 +141,30 @@ class CrossWindowProvider {
|
|
|
216
141
|
});
|
|
217
142
|
}
|
|
218
143
|
signMessage(message) {
|
|
219
|
-
var _a, _b;
|
|
220
144
|
return __awaiter(this, void 0, void 0, function* () {
|
|
221
145
|
this.ensureConnected();
|
|
222
|
-
yield this.handshake();
|
|
223
|
-
yield this.connectWallet();
|
|
224
146
|
const payloadQueryString = helpers_1.buildWalletQueryString({
|
|
225
147
|
params: {
|
|
226
148
|
message: message.message.toString()
|
|
227
149
|
}
|
|
228
150
|
});
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
151
|
+
const { payload: { status, signature } } = yield this.windowManager.postMessage({
|
|
152
|
+
type: types_1.CrossWindowProviderRequestEnums.signMessageRequest,
|
|
153
|
+
payload: payloadQueryString
|
|
154
|
+
});
|
|
232
155
|
if (status !== types_1.SignMessageStatusEnum.signed) {
|
|
233
156
|
throw new errors_1.ErrCouldNotSignMessage();
|
|
234
157
|
}
|
|
235
|
-
message.applySignature(Buffer.from(signature, 'hex'));
|
|
158
|
+
message.applySignature(Buffer.from(String(signature), 'hex'));
|
|
236
159
|
return message;
|
|
237
160
|
});
|
|
238
161
|
}
|
|
239
162
|
cancelAction() {
|
|
240
163
|
var _a;
|
|
241
|
-
(_a = this.
|
|
164
|
+
(_a = this.windowManager) === null || _a === void 0 ? void 0 : _a.postMessage({
|
|
165
|
+
type: types_1.CrossWindowProviderRequestEnums.cancelAction,
|
|
166
|
+
payload: ''
|
|
167
|
+
});
|
|
242
168
|
}
|
|
243
169
|
}
|
|
244
170
|
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,7 @@ 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 ErrTransactionCancelled extends Err {
|
|
27
27
|
constructor();
|
|
28
28
|
}
|
|
29
29
|
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.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,12 @@ class ErrProviderNotInitialized extends Err {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
exports.ErrProviderNotInitialized = ErrProviderNotInitialized;
|
|
51
|
-
class
|
|
51
|
+
class ErrTransactionCancelled extends Err {
|
|
52
52
|
constructor() {
|
|
53
53
|
super('Transaction canceled.');
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
exports.
|
|
56
|
+
exports.ErrTransactionCancelled = ErrTransactionCancelled;
|
|
57
57
|
class ErrCouldNotSignTransaction extends Err {
|
|
58
58
|
constructor() {
|
|
59
59
|
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,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"}
|
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,47 @@ 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
|
+
declare type ReplyWithPostMessageObjectType = {
|
|
25
|
+
[CrossWindowProviderResponseEnums.handshakeResponse]: boolean;
|
|
26
|
+
[CrossWindowProviderResponseEnums.loginResponse]: {
|
|
27
|
+
address: string;
|
|
28
|
+
name?: string;
|
|
29
|
+
signature?: string;
|
|
30
|
+
};
|
|
31
|
+
[CrossWindowProviderResponseEnums.disconnectResponse]: null;
|
|
32
|
+
[CrossWindowProviderResponseEnums.cancelResponse]: {
|
|
33
|
+
address: string;
|
|
34
|
+
};
|
|
35
|
+
[CrossWindowProviderResponseEnums.signTransactionsResponse]: IPlainTransactionObject[];
|
|
36
|
+
[CrossWindowProviderResponseEnums.signMessageResponse]: {
|
|
37
|
+
signature?: string;
|
|
38
|
+
status: SignMessageStatusEnum;
|
|
39
|
+
};
|
|
40
|
+
[CrossWindowProviderResponseEnums.noneResponse]: null;
|
|
41
|
+
};
|
|
42
|
+
export declare type ReplyWithPostMessageType<T extends CrossWindowProviderResponseEnums> = {
|
|
43
|
+
type: T;
|
|
44
|
+
payload: ReplyWithPostMessageObjectType[T];
|
|
45
|
+
};
|
|
46
|
+
export declare type ResponseTypeMap = {
|
|
47
|
+
[CrossWindowProviderRequestEnums.signTransactionsRequest]: CrossWindowProviderResponseEnums.signTransactionsResponse;
|
|
48
|
+
[CrossWindowProviderRequestEnums.signMessageRequest]: CrossWindowProviderResponseEnums.signMessageResponse;
|
|
49
|
+
[CrossWindowProviderRequestEnums.loginRequest]: CrossWindowProviderResponseEnums.loginResponse;
|
|
50
|
+
[CrossWindowProviderRequestEnums.logoutRequest]: CrossWindowProviderResponseEnums.disconnectResponse;
|
|
51
|
+
[CrossWindowProviderRequestEnums.cancelAction]: CrossWindowProviderResponseEnums.cancelResponse;
|
|
52
|
+
};
|
|
53
|
+
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"}
|