@ksangkuk10/wallet-controller 1.7.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/_commonjs/controller.js +704 -0
- package/_commonjs/env.js +9 -0
- package/_commonjs/exception/isError.js +15 -0
- package/_commonjs/exception/mapExtensionTxError.js +46 -0
- package/_commonjs/exception/mapWalletConnectError.js +69 -0
- package/_commonjs/getChainOptions.js +57 -0
- package/_commonjs/index.js +22 -0
- package/_commonjs/modules/connect-modal/index.js +80 -0
- package/_commonjs/modules/connect-modal/style.js +161 -0
- package/_commonjs/modules/extension-router/ExtensionRouter.js +241 -0
- package/_commonjs/modules/extension-router/index.js +19 -0
- package/_commonjs/modules/extension-router/modal.js +80 -0
- package/_commonjs/modules/extension-router/modal.style.js +161 -0
- package/_commonjs/modules/extension-router/multiChannel.js +18 -0
- package/_commonjs/modules/extension-router/session.js +37 -0
- package/_commonjs/modules/extension-router/types.js +16 -0
- package/_commonjs/modules/legacy-extension/LegacyExtensionConnector.js +143 -0
- package/_commonjs/modules/legacy-extension/createFixedExtension.js +236 -0
- package/_commonjs/modules/legacy-extension/index.js +19 -0
- package/_commonjs/modules/readonly-wallet/connect.js +24 -0
- package/_commonjs/modules/readonly-wallet/index.js +20 -0
- package/_commonjs/modules/readonly-wallet/modal.js +123 -0
- package/_commonjs/modules/readonly-wallet/modal.style.js +204 -0
- package/_commonjs/modules/readonly-wallet/storage.js +40 -0
- package/_commonjs/modules/readonly-wallet/types.js +3 -0
- package/_commonjs/modules/walletconnect/connect.js +421 -0
- package/_commonjs/modules/walletconnect/errors.js +51 -0
- package/_commonjs/modules/walletconnect/impl/socket-transport/index.js +204 -0
- package/_commonjs/modules/walletconnect/impl/socket-transport/network.js +30 -0
- package/_commonjs/modules/walletconnect/index.js +22 -0
- package/_commonjs/modules/walletconnect/modal.js +147 -0
- package/_commonjs/modules/walletconnect/modal.style.js +138 -0
- package/_commonjs/modules/walletconnect/types.js +13 -0
- package/_commonjs/operators/getExtensions.js +55 -0
- package/_commonjs/operators/toConnectedWallet.js +24 -0
- package/_commonjs/operators/toLcdClient.js +15 -0
- package/_commonjs/utils/browser-check.js +47 -0
- package/_commonjs/utils/checkExtensionReady.js +28 -0
- package/_commonjs/utils/sortConnections.js +13 -0
- package/_commonjs/verifyBytes.js +19 -0
- package/controller.d.ts +220 -0
- package/controller.js +697 -0
- package/env.d.ts +2 -0
- package/env.js +5 -0
- package/exception/isError.d.ts +3 -0
- package/exception/isError.js +11 -0
- package/exception/mapExtensionTxError.d.ts +5 -0
- package/exception/mapExtensionTxError.js +41 -0
- package/exception/mapWalletConnectError.d.ts +6 -0
- package/exception/mapWalletConnectError.js +63 -0
- package/getChainOptions.d.ts +3 -0
- package/getChainOptions.js +53 -0
- package/index.d.ts +6 -0
- package/index.js +6 -0
- package/modules/connect-modal/index.d.ts +2 -0
- package/modules/connect-modal/index.js +76 -0
- package/modules/connect-modal/style.d.ts +1 -0
- package/modules/connect-modal/style.js +158 -0
- package/modules/extension-router/ExtensionRouter.d.ts +43 -0
- package/modules/extension-router/ExtensionRouter.js +237 -0
- package/modules/extension-router/index.d.ts +2 -0
- package/modules/extension-router/index.js +3 -0
- package/modules/extension-router/modal.d.ts +2 -0
- package/modules/extension-router/modal.js +76 -0
- package/modules/extension-router/modal.style.d.ts +1 -0
- package/modules/extension-router/modal.style.js +158 -0
- package/modules/extension-router/multiChannel.d.ts +13 -0
- package/modules/extension-router/multiChannel.js +14 -0
- package/modules/extension-router/session.d.ts +8 -0
- package/modules/extension-router/session.js +31 -0
- package/modules/extension-router/types.d.ts +35 -0
- package/modules/extension-router/types.js +13 -0
- package/modules/legacy-extension/LegacyExtensionConnector.d.ts +30 -0
- package/modules/legacy-extension/LegacyExtensionConnector.js +139 -0
- package/modules/legacy-extension/createFixedExtension.d.ts +46 -0
- package/modules/legacy-extension/createFixedExtension.js +232 -0
- package/modules/legacy-extension/index.d.ts +2 -0
- package/modules/legacy-extension/index.js +3 -0
- package/modules/readonly-wallet/connect.d.ts +8 -0
- package/modules/readonly-wallet/connect.js +19 -0
- package/modules/readonly-wallet/index.d.ts +3 -0
- package/modules/readonly-wallet/index.js +4 -0
- package/modules/readonly-wallet/modal.d.ts +7 -0
- package/modules/readonly-wallet/modal.js +119 -0
- package/modules/readonly-wallet/modal.style.d.ts +1 -0
- package/modules/readonly-wallet/modal.style.js +201 -0
- package/modules/readonly-wallet/storage.d.ts +4 -0
- package/modules/readonly-wallet/storage.js +34 -0
- package/modules/readonly-wallet/types.d.ts +5 -0
- package/modules/readonly-wallet/types.js +2 -0
- package/modules/walletconnect/connect.d.ts +42 -0
- package/modules/walletconnect/connect.js +390 -0
- package/modules/walletconnect/errors.d.ts +22 -0
- package/modules/walletconnect/errors.js +41 -0
- package/modules/walletconnect/impl/socket-transport/index.d.ts +39 -0
- package/modules/walletconnect/impl/socket-transport/index.js +199 -0
- package/modules/walletconnect/impl/socket-transport/network.d.ts +8 -0
- package/modules/walletconnect/impl/socket-transport/network.js +28 -0
- package/modules/walletconnect/index.d.ts +5 -0
- package/modules/walletconnect/index.js +6 -0
- package/modules/walletconnect/modal.d.ts +12 -0
- package/modules/walletconnect/modal.js +143 -0
- package/modules/walletconnect/modal.style.d.ts +1 -0
- package/modules/walletconnect/modal.style.js +135 -0
- package/modules/walletconnect/types.d.ts +24 -0
- package/modules/walletconnect/types.js +10 -0
- package/operators/getExtensions.d.ts +9 -0
- package/operators/getExtensions.js +51 -0
- package/operators/toConnectedWallet.d.ts +4 -0
- package/operators/toConnectedWallet.js +20 -0
- package/operators/toLcdClient.d.ts +4 -0
- package/operators/toLcdClient.js +11 -0
- package/package.json +550 -0
- package/utils/browser-check.d.ts +3 -0
- package/utils/browser-check.js +38 -0
- package/utils/checkExtensionReady.d.ts +6 -0
- package/utils/checkExtensionReady.js +24 -0
- package/utils/sortConnections.d.ts +2 -0
- package/utils/sortConnections.js +9 -0
- package/verifyBytes.d.ts +4 -0
- package/verifyBytes.js +15 -0
- package/~/.npm/_cacache/content-v2/sha512/ad/b5/8c87dfae7c208906a88f1997b323933e7efb4e481bcfdc559cb13199d077e1b40abcb161561a293ca59cd98aae224cd0877555e6e7a2e11021bc55ebedf4 +0 -0
- package/~/.npm/_cacache/index-v5/6a/39/c03f62d7353a7cc1411e180ec37c393f9fedcfd081fa567f67bf32e6fb68 +2 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExtensionRouterStatus = exports.ExtensionRouterConnectorType = void 0;
|
|
4
|
+
var ExtensionRouterConnectorType;
|
|
5
|
+
(function (ExtensionRouterConnectorType) {
|
|
6
|
+
ExtensionRouterConnectorType["LEGACY"] = "LEGACY";
|
|
7
|
+
ExtensionRouterConnectorType["WEB_EXTENSION"] = "WEB_EXTENSION";
|
|
8
|
+
})(ExtensionRouterConnectorType = exports.ExtensionRouterConnectorType || (exports.ExtensionRouterConnectorType = {}));
|
|
9
|
+
var ExtensionRouterStatus;
|
|
10
|
+
(function (ExtensionRouterStatus) {
|
|
11
|
+
ExtensionRouterStatus["INITIALIZING"] = "INITIALIZING";
|
|
12
|
+
ExtensionRouterStatus["NO_AVAILABLE"] = "NO_AVAILABLE";
|
|
13
|
+
ExtensionRouterStatus["WALLET_NOT_CONNECTED"] = "WALLET_NOT_CONNECTED";
|
|
14
|
+
ExtensionRouterStatus["WALLET_CONNECTED"] = "WALLET_CONNECTED";
|
|
15
|
+
})(ExtensionRouterStatus = exports.ExtensionRouterStatus || (exports.ExtensionRouterStatus = {}));
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy9leHRlbnNpb24tcm91dGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLElBQVksNEJBR1g7QUFIRCxXQUFZLDRCQUE0QjtJQUN0QyxpREFBaUIsQ0FBQTtJQUNqQiwrREFBK0IsQ0FBQTtBQUNqQyxDQUFDLEVBSFcsNEJBQTRCLEdBQTVCLG9DQUE0QixLQUE1QixvQ0FBNEIsUUFHdkM7QUFFRCxJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDL0Isc0RBQTZCLENBQUE7SUFDN0Isc0RBQTZCLENBQUE7SUFDN0Isc0VBQTZDLENBQUE7SUFDN0MsOERBQXFDLENBQUE7QUFDdkMsQ0FBQyxFQUxXLHFCQUFxQixHQUFyQiw2QkFBcUIsS0FBckIsNkJBQXFCLFFBS2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgWHBsYVdlYkV4dGVuc2lvbkZlYXR1cmVzLFxuICBXZWJFeHRlbnNpb25OZXR3b3JrSW5mbyxcbiAgV2ViRXh0ZW5zaW9uV2FsbGV0SW5mbyxcbn0gZnJvbSAnQGtzYW5na3VrMTAvd2ViLWV4dGVuc2lvbi1pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uSW5mbyB9IGZyb20gJy4vbXVsdGlDaGFubmVsJztcblxuZXhwb3J0IGVudW0gRXh0ZW5zaW9uUm91dGVyQ29ubmVjdG9yVHlwZSB7XG4gIExFR0FDWSA9ICdMRUdBQ1knLFxuICBXRUJfRVhURU5TSU9OID0gJ1dFQl9FWFRFTlNJT04nLFxufVxuXG5leHBvcnQgZW51bSBFeHRlbnNpb25Sb3V0ZXJTdGF0dXMge1xuICBJTklUSUFMSVpJTkcgPSAnSU5JVElBTElaSU5HJyxcbiAgTk9fQVZBSUxBQkxFID0gJ05PX0FWQUlMQUJMRScsXG4gIFdBTExFVF9OT1RfQ09OTkVDVEVEID0gJ1dBTExFVF9OT1RfQ09OTkVDVEVEJyxcbiAgV0FMTEVUX0NPTk5FQ1RFRCA9ICdXQUxMRVRfQ09OTkVDVEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Sb3V0ZXJJbml0aWFsaXppbmcge1xuICB0eXBlOiBFeHRlbnNpb25Sb3V0ZXJTdGF0dXMuSU5JVElBTElaSU5HO1xuICBuZXR3b3JrOiBXZWJFeHRlbnNpb25OZXR3b3JrSW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Sb3V0ZXJOb0F2YWlsYWJsZSB7XG4gIHR5cGU6IEV4dGVuc2lvblJvdXRlclN0YXR1cy5OT19BVkFJTEFCTEU7XG4gIG5ldHdvcms6IFdlYkV4dGVuc2lvbk5ldHdvcmtJbmZvO1xuICBpc0Nvbm5lY3RvckV4aXN0czogYm9vbGVhbjtcbiAgaXNBcHByb3ZlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uUm91dGVyV2FsbGV0Tm90Q29ubmVjdGVkIHtcbiAgdHlwZTogRXh0ZW5zaW9uUm91dGVyU3RhdHVzLldBTExFVF9OT1RfQ09OTkVDVEVEO1xuICBuZXR3b3JrOiBXZWJFeHRlbnNpb25OZXR3b3JrSW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Sb3V0ZXJXYWxsZXRDb25uZWN0ZWQge1xuICB0eXBlOiBFeHRlbnNpb25Sb3V0ZXJTdGF0dXMuV0FMTEVUX0NPTk5FQ1RFRDtcbiAgbmV0d29yazogV2ViRXh0ZW5zaW9uTmV0d29ya0luZm87XG4gIHdhbGxldDogV2ViRXh0ZW5zaW9uV2FsbGV0SW5mbztcbiAgY29ubmVjdG9yVHlwZTogRXh0ZW5zaW9uUm91dGVyQ29ubmVjdG9yVHlwZTtcbiAgc3VwcG9ydEZlYXR1cmVzOiBTZXQ8WHBsYVdlYkV4dGVuc2lvbkZlYXR1cmVzPjtcbiAgZXh0ZW5zaW9uSW5mbzogRXh0ZW5zaW9uSW5mbztcbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uUm91dGVyU3RhdGVzID1cbiAgfCBFeHRlbnNpb25Sb3V0ZXJJbml0aWFsaXppbmdcbiAgfCBFeHRlbnNpb25Sb3V0ZXJOb0F2YWlsYWJsZVxuICB8IEV4dGVuc2lvblJvdXRlcldhbGxldE5vdENvbm5lY3RlZFxuICB8IEV4dGVuc2lvblJvdXRlcldhbGxldENvbm5lY3RlZDtcbiJdfQ==
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LegacyExtensionConnector = void 0;
|
|
4
|
+
const web_extension_interface_1 = require("@ksangkuk10/web-extension-interface");
|
|
5
|
+
const xpla_js_1 = require("@xpla/xpla.js");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
const operators_1 = require("rxjs/operators");
|
|
8
|
+
const createFixedExtension_1 = require("./createFixedExtension");
|
|
9
|
+
const supportFeatures = [
|
|
10
|
+
'post',
|
|
11
|
+
'sign',
|
|
12
|
+
'sign-bytes',
|
|
13
|
+
];
|
|
14
|
+
class LegacyExtensionConnector {
|
|
15
|
+
supportFeatures() {
|
|
16
|
+
return supportFeatures;
|
|
17
|
+
}
|
|
18
|
+
constructor(identifier) {
|
|
19
|
+
this.identifier = identifier;
|
|
20
|
+
this.hostWindow = null;
|
|
21
|
+
this.statesSubscription = null;
|
|
22
|
+
this.open = (hostWindow, statesObserver) => {
|
|
23
|
+
this.hostWindow = hostWindow;
|
|
24
|
+
this.statesSubscription = this._states
|
|
25
|
+
.pipe((0, operators_1.filter)((states) => !!states))
|
|
26
|
+
.subscribe(statesObserver);
|
|
27
|
+
this.refetchStates();
|
|
28
|
+
};
|
|
29
|
+
this.close = () => {
|
|
30
|
+
this._extension.disconnect();
|
|
31
|
+
};
|
|
32
|
+
this.requestApproval = () => {
|
|
33
|
+
this.recheckStates();
|
|
34
|
+
};
|
|
35
|
+
this.refetchStates = () => {
|
|
36
|
+
this.recheckStates();
|
|
37
|
+
};
|
|
38
|
+
this.post = (xplaAddress, tx) => {
|
|
39
|
+
const subject = new rxjs_1.BehaviorSubject({
|
|
40
|
+
status: web_extension_interface_1.WebExtensionTxStatus.PROGRESS,
|
|
41
|
+
});
|
|
42
|
+
this._extension
|
|
43
|
+
.post(tx)
|
|
44
|
+
.then(({ payload }) => {
|
|
45
|
+
subject.next({
|
|
46
|
+
status: web_extension_interface_1.WebExtensionTxStatus.SUCCEED,
|
|
47
|
+
payload: payload.result,
|
|
48
|
+
});
|
|
49
|
+
subject.complete();
|
|
50
|
+
})
|
|
51
|
+
.catch((error) => subject.error(error));
|
|
52
|
+
return subject.asObservable();
|
|
53
|
+
};
|
|
54
|
+
this.sign = (xplaAddress, tx) => {
|
|
55
|
+
const subject = new rxjs_1.BehaviorSubject({
|
|
56
|
+
status: web_extension_interface_1.WebExtensionTxStatus.PROGRESS,
|
|
57
|
+
});
|
|
58
|
+
this._extension
|
|
59
|
+
.sign(tx)
|
|
60
|
+
.then(({ payload }) => {
|
|
61
|
+
subject.next({
|
|
62
|
+
status: web_extension_interface_1.WebExtensionTxStatus.SUCCEED,
|
|
63
|
+
payload: payload.result,
|
|
64
|
+
});
|
|
65
|
+
subject.complete();
|
|
66
|
+
})
|
|
67
|
+
.catch((error) => subject.error(error));
|
|
68
|
+
return subject.asObservable();
|
|
69
|
+
};
|
|
70
|
+
this.signBytes = (xplaAddress, bytes) => {
|
|
71
|
+
const subject = new rxjs_1.BehaviorSubject({
|
|
72
|
+
status: web_extension_interface_1.WebExtensionTxStatus.PROGRESS,
|
|
73
|
+
});
|
|
74
|
+
this._extension
|
|
75
|
+
.signBytes(bytes)
|
|
76
|
+
.then(({ payload }) => {
|
|
77
|
+
subject.next({
|
|
78
|
+
status: web_extension_interface_1.WebExtensionTxStatus.SUCCEED,
|
|
79
|
+
payload: {
|
|
80
|
+
recid: payload.result.recid,
|
|
81
|
+
signature: payload.result.signature,
|
|
82
|
+
public_key: {
|
|
83
|
+
'@type': '/cosmos.crypto.secp256k1.PubKey',
|
|
84
|
+
'key': payload.result.public_key,
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
})
|
|
89
|
+
.catch((error) => subject.error(error));
|
|
90
|
+
return subject.asObservable();
|
|
91
|
+
};
|
|
92
|
+
this.hasCW20Tokens = () => {
|
|
93
|
+
throw new Error('[LegacyExtensionConnector] does not support hasCW20Tokens()');
|
|
94
|
+
};
|
|
95
|
+
this.addCW20Tokens = () => {
|
|
96
|
+
throw new Error('[LegacyExtensionConnector] does not support addCW20Tokens()');
|
|
97
|
+
};
|
|
98
|
+
this.hasNetwork = () => {
|
|
99
|
+
throw new Error('[LegacyExtensionConnector] does not support hasNetwork()');
|
|
100
|
+
};
|
|
101
|
+
this.addNetwork = () => {
|
|
102
|
+
throw new Error('[LegacyExtensionConnector] does not support addNetwork()');
|
|
103
|
+
};
|
|
104
|
+
// ---------------------------------------------
|
|
105
|
+
// internal
|
|
106
|
+
// ---------------------------------------------
|
|
107
|
+
this.recheckStates = async () => {
|
|
108
|
+
if (this._extension.inTransactionProgress()) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const infoResult = await this._extension.info();
|
|
112
|
+
const connectResult = await this._extension.connect();
|
|
113
|
+
if (connectResult.address && xpla_js_1.AccAddress.validate(connectResult.address)) {
|
|
114
|
+
this._states.next({
|
|
115
|
+
type: web_extension_interface_1.WebExtensionStatus.READY,
|
|
116
|
+
network: infoResult,
|
|
117
|
+
focusedWalletAddress: connectResult.address,
|
|
118
|
+
wallets: [
|
|
119
|
+
{
|
|
120
|
+
name: '',
|
|
121
|
+
xplaAddress: connectResult.address,
|
|
122
|
+
design: 'xpla',
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
this._states.next({
|
|
129
|
+
type: web_extension_interface_1.WebExtensionStatus.READY,
|
|
130
|
+
network: infoResult,
|
|
131
|
+
focusedWalletAddress: undefined,
|
|
132
|
+
wallets: [],
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
this._states = new rxjs_1.BehaviorSubject({
|
|
137
|
+
type: web_extension_interface_1.WebExtensionStatus.INITIALIZING,
|
|
138
|
+
});
|
|
139
|
+
this._extension = (0, createFixedExtension_1.createFixedExtension)(identifier);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
exports.LegacyExtensionConnector = LegacyExtensionConnector;
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVnYWN5RXh0ZW5zaW9uQ29ubmVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL0Brc2FuZ2t1azEwL3dhbGxldC1jb250cm9sbGVyL21vZHVsZXMvbGVnYWN5LWV4dGVuc2lvbi9MZWdhY3lFeHRlbnNpb25Db25uZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaUZBVTZDO0FBQzdDLDJDQUFzRTtBQUN0RSwrQkFBNkU7QUFDN0UsOENBQXdDO0FBQ3hDLGlFQUE4RTtBQUU5RSxNQUFNLGVBQWUsR0FBK0I7SUFDbEQsTUFBTTtJQUNOLE1BQU07SUFDTixZQUFZO0NBQ2IsQ0FBQztBQUVGLE1BQWEsd0JBQXdCO0lBTW5DLGVBQWU7UUFDYixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFBb0IsVUFBa0I7UUFBbEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQVA5QixlQUFVLEdBQWtCLElBQUksQ0FBQztRQUNqQyx1QkFBa0IsR0FBd0IsSUFBSSxDQUFDO1FBY3ZELFNBQUksR0FBRyxDQUFDLFVBQWtCLEVBQUUsY0FBNEMsRUFBRSxFQUFFO1lBQzFFLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTztpQkFDbkMsSUFBSSxDQUNILElBQUEsa0JBQU0sRUFDSixDQUFDLE1BQWlDLEVBQWdDLEVBQUUsQ0FDbEUsQ0FBQyxDQUFDLE1BQU0sQ0FDWCxDQUNGO2lCQUNBLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUU3QixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDO1FBRUYsVUFBSyxHQUFHLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDO1FBRUYsb0JBQWUsR0FBRyxHQUFHLEVBQUU7WUFDckIs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aUJBQ0YsQ0FBQyxDQUFDO2FBQ0o7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLElBQUksRUFBRSw0Q0FBa0IsQ0FBQyxLQUFLO29CQUM5QixPQUFPLEVBQUUsVUFBVTtvQkFDbkIsb0JBQW9CLEVBQUUsU0FBUztvQkFDL0IsT0FBTyxFQUFFLEVBQUU7aUJBQ1osQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUM7UUF2S0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHNCQUFlLENBQXFCO1lBQ3JELElBQUksRUFBRSw0Q0FBa0IsQ0FBQyxZQUFZO1NBQ3RDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBQSwyQ0FBb0IsRUFBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBbUtGO0FBbkxELDREQW1MQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmtJbmZvIH0gZnJvbSAnQGtzYW5na3VrMTAvd2FsbGV0LXR5cGVzJztcbmltcG9ydCB7XG4gIFhwbGFXZWJFeHRlbnNpb25Db25uZWN0b3IsXG4gIFhwbGFXZWJFeHRlbnNpb25GZWF0dXJlcyxcbiAgV2ViRXh0ZW5zaW9uUG9zdFBheWxvYWQsXG4gIFdlYkV4dGVuc2lvblNpZ25CeXRlc1BheWxvYWQsXG4gIFdlYkV4dGVuc2lvblNpZ25QYXlsb2FkLFxuICBXZWJFeHRlbnNpb25TdGF0ZXMsXG4gIFdlYkV4dGVuc2lvblN0YXR1cyxcbiAgV2ViRXh0ZW5zaW9uVHhSZXN1bHQsXG4gIFdlYkV4dGVuc2lvblR4U3RhdHVzLFxufSBmcm9tICdAa3NhbmdrdWsxMC93ZWItZXh0ZW5zaW9uLWludGVyZmFjZSc7XG5pbXBvcnQgeyBBY2NBZGRyZXNzLCBDcmVhdGVUeE9wdGlvbnMsIFNpZ25Nb2RlIH0gZnJvbSAnQHhwbGEveHBsYS5qcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmVyLCBTdWJzY3JpYmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgY3JlYXRlRml4ZWRFeHRlbnNpb24sIEZpeGVkRXh0ZW5zaW9uIH0gZnJvbSAnLi9jcmVhdGVGaXhlZEV4dGVuc2lvbic7XG5cbmNvbnN0IHN1cHBvcnRGZWF0dXJlczogWHBsYVdlYkV4dGVuc2lvbkZlYXR1cmVzW10gPSBbXG4gICdwb3N0JyxcbiAgJ3NpZ24nLFxuICAnc2lnbi1ieXRlcycsXG5dO1xuXG5leHBvcnQgY2xhc3MgTGVnYWN5RXh0ZW5zaW9uQ29ubmVjdG9yIGltcGxlbWVudHMgWHBsYVdlYkV4dGVuc2lvbkNvbm5lY3RvciB7XG4gIHByaXZhdGUgX3N0YXRlczogQmVoYXZpb3JTdWJqZWN0PFdlYkV4dGVuc2lvblN0YXRlcz47XG4gIHByaXZhdGUgX2V4dGVuc2lvbjogRml4ZWRFeHRlbnNpb247XG4gIHByaXZhdGUgaG9zdFdpbmRvdzogV2luZG93IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgc3RhdGVzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICBzdXBwb3J0RmVhdHVyZXMoKSB7XG4gICAgcmV0dXJuIHN1cHBvcnRGZWF0dXJlcztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaWRlbnRpZmllcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3RhdGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXZWJFeHRlbnNpb25TdGF0ZXM+KHtcbiAgICAgIHR5cGU6IFdlYkV4dGVuc2lvblN0YXR1cy5JTklUSUFMSVpJTkcsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9leHRlbnNpb24gPSBjcmVhdGVGaXhlZEV4dGVuc2lvbihpZGVudGlmaWVyKTtcbiAgfVxuXG4gIG9wZW4gPSAoaG9zdFdpbmRvdzogV2luZG93LCBzdGF0ZXNPYnNlcnZlcjogT2JzZXJ2ZXI8V2ViRXh0ZW5zaW9uU3RhdGVzPikgPT4ge1xuICAgIHRoaXMuaG9zdFdpbmRvdyA9IGhvc3RXaW5kb3c7XG4gICAgdGhpcy5zdGF0ZXNTdWJzY3JpcHRpb24gPSB0aGlzLl9zdGF0ZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKHN0YXRlczogV2ViRXh0ZW5zaW9uU3RhdGVzIHwgbnVsbCk6IHN0YXRlcyBpcyBXZWJFeHRlbnNpb25TdGF0ZXMgPT5cbiAgICAgICAgICAgICEhc3RhdGVzLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShzdGF0ZXNPYnNlcnZlcik7XG5cbiAgICB0aGlzLnJlZmV0Y2hTdGF0ZXMoKTtcbiAgfTtcblxuICBjbG9zZSA9ICgpID0+IHtcbiAgICB0aGlzLl9leHRlbnNpb24uZGlzY29ubmVjdCgpO1xuICB9O1xuXG4gIHJlcXVlc3RBcHByb3ZhbCA9ICgpID0+IHtcbiAgICB0aGlzLnJlY2hlY2tTdGF0ZXMoKTtcbiAgfTtcblxuICByZWZldGNoU3RhdGVzID0gKCkgPT4ge1xuICAgIHRoaXMucmVjaGVja1N0YXRlcygpO1xuICB9O1xuXG4gIHBvc3QgPSAoXG4gICAgeHBsYUFkZHJlc3M6IHN0cmluZyxcbiAgICB0eDogQ3JlYXRlVHhPcHRpb25zLFxuICApOiBTdWJzY3JpYmFibGU8V2ViRXh0ZW5zaW9uVHhSZXN1bHQ8V2ViRXh0ZW5zaW9uUG9zdFBheWxvYWQ+PiA9PiB7XG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgICBXZWJFeHRlbnNpb25UeFJlc3VsdDxXZWJFeHRlbnNpb25Qb3N0UGF5bG9hZD5cbiAgICA+KHtcbiAgICAgIHN0YXR1czogV2ViRXh0ZW5zaW9uVHhTdGF0dXMuUFJPR1JFU1MsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9leHRlbnNpb25cbiAgICAgIC5wb3N0KHR4KVxuICAgICAgLnRoZW4oKHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgICAgIHN1YmplY3QubmV4dCh7XG4gICAgICAgICAgc3RhdHVzOiBXZWJFeHRlbnNpb25UeFN0YXR1cy5TVUNDRUVELFxuICAgICAgICAgIHBheWxvYWQ6IHBheWxvYWQucmVzdWx0LFxuICAgICAgICB9KTtcbiAgICAgICAgc3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHN1YmplY3QuZXJyb3IoZXJyb3IpKTtcblxuICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9O1xuXG4gIHNpZ24gPSAoXG4gICAgeHBsYUFkZHJlc3M6IHN0cmluZyxcbiAgICB0eDogQ3JlYXRlVHhPcHRpb25zICYge1xuICAgICAgc2VxdWVuY2U/OiBudW1iZXI7XG4gICAgICBhY2NvdW50TnVtYmVyPzogbnVtYmVyO1xuICAgICAgc2lnbk1vZGU/OiBTaWduTW9kZTtcbiAgICB9LFxuICApOiBTdWJzY3JpYmFibGU8V2ViRXh0ZW5zaW9uVHhSZXN1bHQ8V2ViRXh0ZW5zaW9uU2lnblBheWxvYWQ+PiA9PiB7XG4gICAgY29uc3Qgc3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgICBXZWJFeHRlbnNpb25UeFJlc3VsdDxXZWJFeHRlbnNpb25TaWduUGF5bG9hZD5cbiAgICA+KHtcbiAgICAgIHN0YXR1czogV2ViRXh0ZW5zaW9uVHhTdGF0dXMuUFJPR1JFU1MsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9leHRlbnNpb25cbiAgICAgIC5zaWduKHR4KVxuICAgICAgLnRoZW4oKHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgICAgIHN1YmplY3QubmV4dCh7XG4gICAgICAgICAgc3RhdHVzOiBXZWJFeHRlbnNpb25UeFN0YXR1cy5TVUNDRUVELFxuICAgICAgICAgIHBheWxvYWQ6IHBheWxvYWQucmVzdWx0LFxuICAgICAgICB9KTtcbiAgICAgICAgc3ViamVjdC5jb21wbGV0ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHN1YmplY3QuZXJyb3IoZXJyb3IpKTtcblxuICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9O1xuXG4gIHNpZ25CeXRlcyA9IChcbiAgICB4cGxhQWRkcmVzczogc3RyaW5nLFxuICAgIGJ5dGVzOiBCdWZmZXIsXG4gICk6IFN1YnNjcmliYWJsZTxXZWJFeHRlbnNpb25UeFJlc3VsdDxXZWJFeHRlbnNpb25TaWduQnl0ZXNQYXlsb2FkPj4gPT4ge1xuICAgIGNvbnN0IHN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgICAgV2ViRXh0ZW5zaW9uVHhSZXN1bHQ8V2ViRXh0ZW5zaW9uU2lnbkJ5dGVzUGF5bG9hZD5cbiAgICA+KHtcbiAgICAgIHN0YXR1czogV2ViRXh0ZW5zaW9uVHhTdGF0dXMuUFJPR1JFU1MsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9leHRlbnNpb25cbiAgICAgIC5zaWduQnl0ZXMoYnl0ZXMpXG4gICAgICAudGhlbigoeyBwYXlsb2FkIH0pID0+IHtcbiAgICAgICAgc3ViamVjdC5uZXh0KHtcbiAgICAgICAgICBzdGF0dXM6IFdlYkV4dGVuc2lvblR4U3RhdHVzLlNVQ0NFRUQsXG4gICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgcmVjaWQ6IHBheWxvYWQucmVzdWx0LnJlY2lkLFxuICAgICAgICAgICAgc2lnbmF0dXJlOiBwYXlsb2FkLnJlc3VsdC5zaWduYXR1cmUsXG4gICAgICAgICAgICBwdWJsaWNfa2V5OiB7XG4gICAgICAgICAgICAgICdAdHlwZSc6ICcvY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5JyxcbiAgICAgICAgICAgICAgJ2tleSc6IHBheWxvYWQucmVzdWx0LnB1YmxpY19rZXksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHN1YmplY3QuZXJyb3IoZXJyb3IpKTtcblxuICAgIHJldHVybiBzdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9O1xuXG4gIGhhc0NXMjBUb2tlbnMgPSAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1tMZWdhY3lFeHRlbnNpb25Db25uZWN0b3JdIGRvZXMgbm90IHN1cHBvcnQgaGFzQ1cyMFRva2VucygpJyxcbiAgICApO1xuICB9O1xuXG4gIGFkZENXMjBUb2tlbnMgPSAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1tMZWdhY3lFeHRlbnNpb25Db25uZWN0b3JdIGRvZXMgbm90IHN1cHBvcnQgYWRkQ1cyMFRva2VucygpJyxcbiAgICApO1xuICB9O1xuXG4gIGhhc05ldHdvcmsgPSAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdbTGVnYWN5RXh0ZW5zaW9uQ29ubmVjdG9yXSBkb2VzIG5vdCBzdXBwb3J0IGhhc05ldHdvcmsoKScpO1xuICB9O1xuXG4gIGFkZE5ldHdvcmsgPSAoKSA9PiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdbTGVnYWN5RXh0ZW5zaW9uQ29ubmVjdG9yXSBkb2VzIG5vdCBzdXBwb3J0IGFkZE5ldHdvcmsoKScpO1xuICB9O1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBpbnRlcm5hbFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcmVjaGVja1N0YXRlcyA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAodGhpcy5fZXh0ZW5zaW9uLmluVHJhbnNhY3Rpb25Qcm9ncmVzcygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW5mb1Jlc3VsdDogTmV0d29ya0luZm8gPSBhd2FpdCB0aGlzLl9leHRlbnNpb24uaW5mbygpO1xuICAgIGNvbnN0IGNvbm5lY3RSZXN1bHQ6IHsgYWRkcmVzcz86IHN0cmluZyB9ID0gYXdhaXQgdGhpcy5fZXh0ZW5zaW9uLmNvbm5lY3QoKTtcblxuICAgIGlmIChjb25uZWN0UmVzdWx0LmFkZHJlc3MgJiYgQWNjQWRkcmVzcy52YWxpZGF0ZShjb25uZWN0UmVzdWx0LmFkZHJlc3MpKSB7XG4gICAgICB0aGlzLl9zdGF0ZXMubmV4dCh7XG4gICAgICAgIHR5cGU6IFdlYkV4dGVuc2lvblN0YXR1cy5SRUFEWSxcbiAgICAgICAgbmV0d29yazogaW5mb1Jlc3VsdCxcbiAgICAgICAgZm9jdXNlZFdhbGxldEFkZHJlc3M6IGNvbm5lY3RSZXN1bHQuYWRkcmVzcyxcbiAgICAgICAgd2FsbGV0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICcnLFxuICAgICAgICAgICAgeHBsYUFkZHJlc3M6IGNvbm5lY3RSZXN1bHQuYWRkcmVzcyxcbiAgICAgICAgICAgIGRlc2lnbjogJ3hwbGEnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc3RhdGVzLm5leHQoe1xuICAgICAgICB0eXBlOiBXZWJFeHRlbnNpb25TdGF0dXMuUkVBRFksXG4gICAgICAgIG5ldHdvcms6IGluZm9SZXN1bHQsXG4gICAgICAgIGZvY3VzZWRXYWxsZXRBZGRyZXNzOiB1bmRlZmluZWQsXG4gICAgICAgIHdhbGxldHM6IFtdLFxuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createFixedExtension = void 0;
|
|
4
|
+
const web_extension_interface_1 = require("@ksangkuk10/web-extension-interface");
|
|
5
|
+
const xpla_js_1 = require("@xpla/xpla.js");
|
|
6
|
+
function getErrorMessage(error) {
|
|
7
|
+
try {
|
|
8
|
+
if (typeof error.message === 'string') {
|
|
9
|
+
return error.message;
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
return JSON.stringify(error);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
catch (_a) {
|
|
16
|
+
return String(error);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function toExplicitError(error) {
|
|
20
|
+
if (error && 'code' in error) {
|
|
21
|
+
switch (error.code) {
|
|
22
|
+
// @see https://github.com/terra-project/station/blob/main/src/extension/Confirm.tsx#L182
|
|
23
|
+
case 1:
|
|
24
|
+
return new web_extension_interface_1.WebExtensionUserDenied();
|
|
25
|
+
// @see https://github.com/terra-project/station/blob/main/src/extension/Confirm.tsx#L137
|
|
26
|
+
case 2:
|
|
27
|
+
if (error.data) {
|
|
28
|
+
const { txhash } = error.data;
|
|
29
|
+
return new web_extension_interface_1.WebExtensionTxFailed(txhash, getErrorMessage(error), null);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return new web_extension_interface_1.WebExtensionTxFailed(undefined, getErrorMessage(error), null);
|
|
33
|
+
}
|
|
34
|
+
// @see https://github.com/terra-project/station/blob/main/src/extension/Confirm.tsx#L153
|
|
35
|
+
case 3:
|
|
36
|
+
return new web_extension_interface_1.WebExtensionCreateTxFailed(getErrorMessage(error));
|
|
37
|
+
default:
|
|
38
|
+
return new web_extension_interface_1.WebExtensionTxUnspecifiedError(getErrorMessage(error));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
return new web_extension_interface_1.WebExtensionTxUnspecifiedError(getErrorMessage(error));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function isValidResult({ error, ...payload }) {
|
|
46
|
+
if (typeof payload.success !== 'boolean') {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
else if (typeof payload.result === 'undefined' &&
|
|
50
|
+
typeof error === 'undefined') {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
const pool = new Map();
|
|
56
|
+
function createFixedExtension(identifier) {
|
|
57
|
+
if (pool.has(identifier)) {
|
|
58
|
+
return pool.get(identifier);
|
|
59
|
+
}
|
|
60
|
+
const extension = new xpla_js_1.Extension(identifier);
|
|
61
|
+
let _inTransactionProgress = false;
|
|
62
|
+
const postResolvers = new Map();
|
|
63
|
+
const signResolvers = new Map();
|
|
64
|
+
const signBytesResolvers = new Map();
|
|
65
|
+
const infoResolvers = new Set();
|
|
66
|
+
const connectResolvers = new Set();
|
|
67
|
+
extension.on('onPost', (result) => {
|
|
68
|
+
if (!result || !isValidResult(result)) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const { error, ...payload } = result;
|
|
72
|
+
if (!postResolvers.has(payload.id)) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const [resolve, reject] = postResolvers.get(payload.id);
|
|
76
|
+
if (!payload.success) {
|
|
77
|
+
reject(toExplicitError(error));
|
|
78
|
+
}
|
|
79
|
+
else if (resolve) {
|
|
80
|
+
resolve({ name: 'onPost', payload });
|
|
81
|
+
}
|
|
82
|
+
postResolvers.delete(payload.id);
|
|
83
|
+
if (postResolvers.size === 0) {
|
|
84
|
+
_inTransactionProgress = false;
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
extension.on('onSign', (result) => {
|
|
88
|
+
if (!result || !isValidResult(result)) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const { error, ...payload } = result;
|
|
92
|
+
if (signResolvers.has(payload.id)) {
|
|
93
|
+
const [resolve, reject] = signResolvers.get(payload.id);
|
|
94
|
+
if (!payload.success) {
|
|
95
|
+
reject(toExplicitError(error));
|
|
96
|
+
}
|
|
97
|
+
else if (resolve) {
|
|
98
|
+
resolve({ name: 'onSign', payload });
|
|
99
|
+
}
|
|
100
|
+
signResolvers.delete(payload.id);
|
|
101
|
+
if (signResolvers.size === 0) {
|
|
102
|
+
_inTransactionProgress = false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (signBytesResolvers.has(payload.id)) {
|
|
106
|
+
const [resolve, reject] = signBytesResolvers.get(payload.id);
|
|
107
|
+
if (!payload.success) {
|
|
108
|
+
reject(toExplicitError(error));
|
|
109
|
+
}
|
|
110
|
+
else if (resolve) {
|
|
111
|
+
resolve({ name: 'onSignBytes', payload });
|
|
112
|
+
}
|
|
113
|
+
signBytesResolvers.delete(payload.id);
|
|
114
|
+
if (signBytesResolvers.size === 0) {
|
|
115
|
+
_inTransactionProgress = false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
extension.on('onInfo', (result) => {
|
|
120
|
+
if (!result)
|
|
121
|
+
return;
|
|
122
|
+
const { error, ...payload } = result;
|
|
123
|
+
for (const [resolve, reject] of infoResolvers) {
|
|
124
|
+
if (error) {
|
|
125
|
+
reject(error);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
resolve(payload);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
infoResolvers.clear();
|
|
132
|
+
});
|
|
133
|
+
extension.on('onConnect', (result) => {
|
|
134
|
+
if (!result)
|
|
135
|
+
return;
|
|
136
|
+
const { error, ...payload } = result;
|
|
137
|
+
for (const [resolve, reject] of connectResolvers) {
|
|
138
|
+
if (error) {
|
|
139
|
+
reject(error);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
resolve(payload);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
connectResolvers.clear();
|
|
146
|
+
});
|
|
147
|
+
function post(data) {
|
|
148
|
+
return new Promise((...resolver) => {
|
|
149
|
+
_inTransactionProgress = true;
|
|
150
|
+
const id = extension.post({
|
|
151
|
+
...data,
|
|
152
|
+
purgeQueue: true,
|
|
153
|
+
});
|
|
154
|
+
postResolvers.set(id, resolver);
|
|
155
|
+
setTimeout(() => {
|
|
156
|
+
if (postResolvers.has(id)) {
|
|
157
|
+
postResolvers.delete(id);
|
|
158
|
+
if (postResolvers.size === 0) {
|
|
159
|
+
_inTransactionProgress = false;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}, 1000 * 120);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
function sign(data) {
|
|
166
|
+
return new Promise((...resolver) => {
|
|
167
|
+
_inTransactionProgress = true;
|
|
168
|
+
const id = extension.sign({
|
|
169
|
+
...data,
|
|
170
|
+
purgeQueue: true,
|
|
171
|
+
});
|
|
172
|
+
signResolvers.set(id, resolver);
|
|
173
|
+
setTimeout(() => {
|
|
174
|
+
if (signResolvers.has(id)) {
|
|
175
|
+
signResolvers.delete(id);
|
|
176
|
+
if (signResolvers.size === 0) {
|
|
177
|
+
_inTransactionProgress = false;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}, 1000 * 120);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
function signBytes(bytes) {
|
|
184
|
+
return new Promise((...resolver) => {
|
|
185
|
+
_inTransactionProgress = true;
|
|
186
|
+
const id = extension.signBytes({
|
|
187
|
+
bytes,
|
|
188
|
+
purgeQueue: true,
|
|
189
|
+
});
|
|
190
|
+
signBytesResolvers.set(id, resolver);
|
|
191
|
+
setTimeout(() => {
|
|
192
|
+
if (signBytesResolvers.has(id)) {
|
|
193
|
+
signBytesResolvers.delete(id);
|
|
194
|
+
if (signBytesResolvers.size === 0) {
|
|
195
|
+
_inTransactionProgress = false;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}, 1000 * 120);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
function connect() {
|
|
202
|
+
return new Promise((...resolver) => {
|
|
203
|
+
connectResolvers.add(resolver);
|
|
204
|
+
extension.connect();
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
function info() {
|
|
208
|
+
return new Promise((...resolver) => {
|
|
209
|
+
infoResolvers.add(resolver);
|
|
210
|
+
extension.info();
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
function disconnect() {
|
|
214
|
+
connectResolvers.clear();
|
|
215
|
+
infoResolvers.clear();
|
|
216
|
+
postResolvers.clear();
|
|
217
|
+
signResolvers.clear();
|
|
218
|
+
signBytesResolvers.clear();
|
|
219
|
+
}
|
|
220
|
+
function inTransactionProgress() {
|
|
221
|
+
return _inTransactionProgress;
|
|
222
|
+
}
|
|
223
|
+
const result = {
|
|
224
|
+
post,
|
|
225
|
+
sign,
|
|
226
|
+
signBytes,
|
|
227
|
+
connect,
|
|
228
|
+
info,
|
|
229
|
+
disconnect,
|
|
230
|
+
inTransactionProgress,
|
|
231
|
+
};
|
|
232
|
+
pool.set(identifier, result);
|
|
233
|
+
return result;
|
|
234
|
+
}
|
|
235
|
+
exports.createFixedExtension = createFixedExtension;
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRml4ZWRFeHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy9sZWdhY3ktZXh0ZW5zaW9uL2NyZWF0ZUZpeGVkRXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGlGQUs2QztBQUM3QywyQ0FBeUU7QUE0Q3pFLFNBQVMsZUFBZSxDQUFDLEtBQVU7SUFDakMsSUFBSTtRQUNGLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUNyQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDdEI7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtLQUNGO0lBQUMsV0FBTTtRQUNOLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RCO0FBQ0gsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQVU7SUFDakMsSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtRQUM1QixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIseUZBQXlGO1lBQ3pGLEtBQUssQ0FBQztnQkFDSixPQUFPLElBQUksZ0RBQXNCLEVBQUUsQ0FBQztZQUN0Qyx5RkFBeUY7WUFDekYsS0FBSyxDQUFDO2dCQUNKLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDZCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDOUIsT0FBTyxJQUFJLDhDQUFvQixDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3ZFO3FCQUFNO29CQUNMLE9BQU8sSUFBSSw4Q0FBb0IsQ0FDN0IsU0FBUyxFQUNULGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFDdEIsSUFB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QUFDO1FBQ3pCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxTQUFTLHFCQUFxQjtRQUM1QixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBbUI7UUFDN0IsSUFBSTtRQUNKLElBQUk7UUFDSixTQUFTO1FBQ1QsT0FBTztRQUNQLElBQUk7UUFDSixVQUFVO1FBQ1YscUJBQXFCO0tBQ3RCLENBQUM7SUFFRixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU3QixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBeE9ELG9EQXdPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmtJbmZvIH0gZnJvbSAnQGtzYW5na3VrMTAvd2FsbGV0LXR5cGVzJztcbmltcG9ydCB7XG4gIFdlYkV4dGVuc2lvbkNyZWF0ZVR4RmFpbGVkLFxuICBXZWJFeHRlbnNpb25UeEZhaWxlZCxcbiAgV2ViRXh0ZW5zaW9uVHhVbnNwZWNpZmllZEVycm9yLFxuICBXZWJFeHRlbnNpb25Vc2VyRGVuaWVkLFxufSBmcm9tICdAa3NhbmdrdWsxMC93ZWItZXh0ZW5zaW9uLWludGVyZmFjZSc7XG5pbXBvcnQgeyBDcmVhdGVUeE9wdGlvbnMsIEV4dGVuc2lvbiwgU2lnbk1vZGUsIFR4IH0gZnJvbSAnQHhwbGEveHBsYS5qcyc7XG5cbnR5cGUgQ29ubmVjdFJlc3BvbnNlID0geyBhZGRyZXNzPzogc3RyaW5nIH07XG50eXBlIFBvc3RSZXNwb25zZSA9IHtcbiAgcGF5bG9hZDoge1xuICAgIHJlc3VsdDoge1xuICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgICByYXdfbG9nOiBzdHJpbmc7XG4gICAgICB0eGhhc2g6IHN0cmluZztcbiAgICB9O1xuICB9O1xufTtcbnR5cGUgU2lnblJlc3BvbnNlID0ge1xuICBwYXlsb2FkOiB7XG4gICAgcmVzdWx0OiBUeC5EYXRhO1xuICB9O1xufTtcbnR5cGUgU2lnbkJ5dGVzUmVzcG9uc2UgPSB7XG4gIHBheWxvYWQ6IHtcbiAgICByZXN1bHQ6IHtcbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIHJlY2lkOiBudW1iZXI7XG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICB9O1xufTtcbnR5cGUgSW5mb1Jlc3BvbnNlID0gTmV0d29ya0luZm87XG5cbmV4cG9ydCBpbnRlcmZhY2UgRml4ZWRFeHRlbnNpb24ge1xuICBwb3N0OiAoZGF0YTogQ3JlYXRlVHhPcHRpb25zKSA9PiBQcm9taXNlPFBvc3RSZXNwb25zZT47XG4gIHNpZ246IChcbiAgICBkYXRhOiBDcmVhdGVUeE9wdGlvbnMgJiB7XG4gICAgICBzZXF1ZW5jZT86IG51bWJlcjtcbiAgICAgIGFjY291bnROdW1iZXI/OiBudW1iZXI7XG4gICAgICBzaWduTW9kZT86IFNpZ25Nb2RlO1xuICAgIH1cbiAgKSA9PiBQcm9taXNlPFNpZ25SZXNwb25zZT47XG4gIHNpZ25CeXRlczogKGJ5dGVzOiBCdWZmZXIpID0+IFByb21pc2U8U2lnbkJ5dGVzUmVzcG9uc2U+O1xuICBpbmZvOiAoKSA9PiBQcm9taXNlPEluZm9SZXNwb25zZT47XG4gIGNvbm5lY3Q6ICgpID0+IFByb21pc2U8Q29ubmVjdFJlc3BvbnNlPjtcbiAgaW5UcmFuc2FjdGlvblByb2dyZXNzOiAoKSA9PiBib29sZWFuO1xuICBkaXNjb25uZWN0OiAoKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2UoZXJyb3I6IGFueSk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGVycm9yLm1lc3NhZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShlcnJvcik7XG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gU3RyaW5nKGVycm9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB0b0V4cGxpY2l0RXJyb3IoZXJyb3I6IGFueSkge1xuICBpZiAoZXJyb3IgJiYgJ2NvZGUnIGluIGVycm9yKSB7XG4gICAgc3dpdGNoIChlcnJvci5jb2RlKSB7XG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90ZXJyYS1wcm9qZWN0L3N0YXRpb24vYmxvYi9tYWluL3NyYy9leHRlbnNpb24vQ29uZmlybS50c3gjTDE4MlxuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gbmV3IFdlYkV4dGVuc2lvblVzZXJEZW5pZWQoKTtcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3RlcnJhLXByb2plY3Qvc3RhdGlvbi9ibG9iL21haW4vc3JjL2V4dGVuc2lvbi9Db25maXJtLnRzeCNMMTM3XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGlmIChlcnJvci5kYXRhKSB7XG4gICAgICAgICAgY29uc3QgeyB0eGhhc2ggfSA9IGVycm9yLmRhdGE7XG4gICAgICAgICAgcmV0dXJuIG5ldyBXZWJFeHRlbnNpb25UeEZhaWxlZCh0eGhhc2gsIGdldEVycm9yTWVzc2FnZShlcnJvciksIG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBuZXcgV2ViRXh0ZW5zaW9uVHhGYWlsZWQoXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBnZXRFcnJvck1lc3NhZ2UoZXJyb3IpLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90ZXJyYS1wcm9qZWN0L3N0YXRpb24vYmxvYi9tYWluL3NyYy9leHRlbnNpb24vQ29uZmlybS50c3gjTDE1M1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gbmV3IFdlYkV4dGVuc2lvbkNyZWF0ZVR4RmFpbGVkKGdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG5ldyBXZWJFeHRlbnNpb25UeFVuc3BlY2lmaWVkRXJyb3IoZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgV2ViRXh0ZW5zaW9uVHhVbnNwZWNpZmllZEVycm9yKGdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRSZXN1bHQoeyBlcnJvciwgLi4ucGF5bG9hZCB9OiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBwYXlsb2FkLnN1Y2Nlc3MgIT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIGlmIChcbiAgICB0eXBlb2YgcGF5bG9hZC5yZXN1bHQgPT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGVycm9yID09PSAndW5kZWZpbmVkJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmNvbnN0IHBvb2wgPSBuZXcgTWFwPHN0cmluZywgRml4ZWRFeHRlbnNpb24+KCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGaXhlZEV4dGVuc2lvbihpZGVudGlmaWVyOiBzdHJpbmcpOiBGaXhlZEV4dGVuc2lvbiB7XG4gIGlmIChwb29sLmhhcyhpZGVudGlmaWVyKSkge1xuICAgIHJldHVybiBwb29sLmdldChpZGVudGlmaWVyKSE7XG4gIH1cblxuICBjb25zdCBleHRlbnNpb24gPSBuZXcgRXh0ZW5zaW9uKGlkZW50aWZpZXIpO1xuXG4gIGxldCBfaW5UcmFuc2FjdGlvblByb2dyZXNzID0gZmFsc2U7XG5cbiAgY29uc3QgcG9zdFJlc29sdmVycyA9IG5ldyBNYXA8XG4gICAgbnVtYmVyLFxuICAgIFsoZGF0YTogYW55KSA9PiB2b2lkLCAoZXJyb3I6IGFueSkgPT4gdm9pZF1cbiAgPigpO1xuXG4gIGNvbnN0IHNpZ25SZXNvbHZlcnMgPSBuZXcgTWFwPFxuICAgIG51bWJlcixcbiAgICBbKGRhdGE6IGFueSkgPT4gdm9pZCwgKGVycm9yOiBhbnkpID0+IHZvaWRdXG4gID4oKTtcblxuICBjb25zdCBzaWduQnl0ZXNSZXNvbHZlcnMgPSBuZXcgTWFwPFxuICAgIG51bWJlcixcbiAgICBbKGRhdGE6IGFueSkgPT4gdm9pZCwgKGVycm9yOiBhbnkpID0+IHZvaWRdXG4gID4oKTtcblxuICBjb25zdCBpbmZvUmVzb2x2ZXJzID0gbmV3IFNldDxbKGRhdGE6IGFueSkgPT4gdm9pZCwgKGVycm9yOiBhbnkpID0+IHZvaWRdPigpO1xuXG4gIGNvbnN0IGNvbm5lY3RSZXNvbHZlcnMgPSBuZXcgU2V0PFxuICAgIFsoZGF0YTogYW55KSA9PiB2b2lkLCAoZXJyb3I6IGFueSkgPT4gdm9pZF1cbiAgPigpO1xuXG4gIGV4dGVuc2lvbi5vbignb25Qb3N0JywgKHJlc3VsdCkgPT4ge1xuICAgIGlmICghcmVzdWx0IHx8ICFpc1ZhbGlkUmVzdWx0KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGVycm9yLCAuLi5wYXlsb2FkIH0gPSByZXN1bHQ7XG5cbiAgICBpZiAoIXBvc3RSZXNvbHZlcnMuaGFzKHBheWxvYWQuaWQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgW3Jlc29sdmUsIHJlamVjdF0gPSBwb3N0UmVzb2x2ZXJzLmdldChwYXlsb2FkLmlkKSE7XG5cbiAgICBpZiAoIXBheWxvYWQuc3VjY2Vzcykge1xuICAgICAgcmVqZWN0KHRvRXhwbGljaXRFcnJvcihlcnJvcikpO1xuICAgIH0gZWxzZSBpZiAocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh7IG5hbWU6ICdvblBvc3QnLCBwYXlsb2FkIH0pO1xuICAgIH1cblxuICAgIHBvc3RSZXNvbHZlcnMuZGVsZXRlKHBheWxvYWQuaWQpO1xuXG4gICAgaWYgKHBvc3RSZXNvbHZlcnMuc2l6ZSA9PT0gMCkge1xuICAgICAgX2luVHJhbnNhY3Rpb25Qcm9ncmVzcyA9IGZhbHNlO1xuICAgIH1cbiAgfSk7XG5cbiAgZXh0ZW5zaW9uLm9uKCdvblNpZ24nLCAocmVzdWx0KSA9PiB7XG4gICAgaWYgKCFyZXN1bHQgfHwgIWlzVmFsaWRSZXN1bHQocmVzdWx0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZXJyb3IsIC4uLnBheWxvYWQgfSA9IHJlc3VsdDtcblxuICAgIGlmIChzaWduUmVzb2x2ZXJzLmhhcyhwYXlsb2FkLmlkKSkge1xuICAgICAgY29uc3QgW3Jlc29sdmUsIHJlamVjdF0gPSBzaWduUmVzb2x2ZXJzLmdldChwYXlsb2FkLmlkKSE7XG5cbiAgICAgIGlmICghcGF5bG9hZC5zdWNjZXNzKSB7XG4gICAgICAgIHJlamVjdCh0b0V4cGxpY2l0RXJyb3IoZXJyb3IpKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZSkge1xuICAgICAgICByZXNvbHZlKHsgbmFtZTogJ29uU2lnbicsIHBheWxvYWQgfSk7XG4gICAgICB9XG5cbiAgICAgIHNpZ25SZXNvbHZlcnMuZGVsZXRlKHBheWxvYWQuaWQpO1xuXG4gICAgICBpZiAoc2lnblJlc29sdmVycy5zaXplID09PSAwKSB7XG4gICAgICAgIF9pblRyYW5zYWN0aW9uUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHNpZ25CeXRlc1Jlc29sdmVycy5oYXMocGF5bG9hZC5pZCkpIHtcbiAgICAgIGNvbnN0IFtyZXNvbHZlLCByZWplY3RdID0gc2lnbkJ5dGVzUmVzb2x2ZXJzLmdldChwYXlsb2FkLmlkKSE7XG5cbiAgICAgIGlmICghcGF5bG9hZC5zdWNjZXNzKSB7XG4gICAgICAgIHJlamVjdCh0b0V4cGxpY2l0RXJyb3IoZXJyb3IpKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzb2x2ZSkge1xuICAgICAgICByZXNvbHZlKHsgbmFtZTogJ29uU2lnbkJ5dGVzJywgcGF5bG9hZCB9KTtcbiAgICAgIH1cblxuICAgICAgc2lnbkJ5dGVzUmVzb2x2ZXJzLmRlbGV0ZShwYXlsb2FkLmlkKTtcblxuICAgICAgaWYgKHNpZ25CeXRlc1Jlc29sdmVycy5zaXplID09PSAwKSB7XG4gICAgICAgIF9pblRyYW5zYWN0aW9uUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGV4dGVuc2lvbi5vbignb25JbmZvJywgKHJlc3VsdCkgPT4ge1xuICAgIGlmICghcmVzdWx0KSByZXR1cm47XG4gICAgY29uc3QgeyBlcnJvciwgLi4ucGF5bG9hZCB9ID0gcmVzdWx0O1xuXG4gICAgZm9yIChjb25zdCBbcmVzb2x2ZSwgcmVqZWN0XSBvZiBpbmZvUmVzb2x2ZXJzKSB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUocGF5bG9hZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW5mb1Jlc29sdmVycy5jbGVhcigpO1xuICB9KTtcblxuICBleHRlbnNpb24ub24oJ29uQ29ubmVjdCcsIChyZXN1bHQpID0+IHtcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuO1xuICAgIGNvbnN0IHsgZXJyb3IsIC4uLnBheWxvYWQgfSA9IHJlc3VsdDtcblxuICAgIGZvciAoY29uc3QgW3Jlc29sdmUsIHJlamVjdF0gb2YgY29ubmVjdFJlc29sdmVycykge1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHBheWxvYWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbm5lY3RSZXNvbHZlcnMuY2xlYXIoKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gcG9zdChkYXRhOiBvYmplY3QpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8UG9zdFJlc3BvbnNlPigoLi4ucmVzb2x2ZXIpID0+IHtcbiAgICAgIF9pblRyYW5zYWN0aW9uUHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgICBjb25zdCBpZCA9IGV4dGVuc2lvbi5wb3N0KHtcbiAgICAgICAgLi4uKGRhdGEgYXMgYW55KSxcbiAgICAgICAgcHVyZ2VRdWV1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBwb3N0UmVzb2x2ZXJzLnNldChpZCwgcmVzb2x2ZXIpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHBvc3RSZXNvbHZlcnMuaGFzKGlkKSkge1xuICAgICAgICAgIHBvc3RSZXNvbHZlcnMuZGVsZXRlKGlkKTtcblxuICAgICAgICAgIGlmIChwb3N0UmVzb2x2ZXJzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIF9pblRyYW5zYWN0aW9uUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMDAgKiAxMjApO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gc2lnbihkYXRhOiBvYmplY3QpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8U2lnblJlc3BvbnNlPigoLi4ucmVzb2x2ZXIpID0+IHtcbiAgICAgIF9pblRyYW5zYWN0aW9uUHJvZ3Jlc3MgPSB0cnVlO1xuXG4gICAgICBjb25zdCBpZCA9IGV4dGVuc2lvbi5zaWduKHtcbiAgICAgICAgLi4uKGRhdGEgYXMgYW55KSxcbiAgICAgICAgcHVyZ2VRdWV1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuXG4gICAgICBzaWduUmVzb2x2ZXJzLnNldChpZCwgcmVzb2x2ZXIpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHNpZ25SZXNvbHZlcnMuaGFzKGlkKSkge1xuICAgICAgICAgIHNpZ25SZXNvbHZlcnMuZGVsZXRlKGlkKTtcblxuICAgICAgICAgIGlmIChzaWduUmVzb2x2ZXJzLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIF9pblRyYW5zYWN0aW9uUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMDAgKiAxMjApO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gc2lnbkJ5dGVzKGJ5dGVzOiBCdWZmZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8U2lnbkJ5dGVzUmVzcG9uc2U+KCguLi5yZXNvbHZlcikgPT4ge1xuICAgICAgX2luVHJhbnNhY3Rpb25Qcm9ncmVzcyA9IHRydWU7XG5cbiAgICAgIGNvbnN0IGlkID0gZXh0ZW5zaW9uLnNpZ25CeXRlcyh7XG4gICAgICAgIGJ5dGVzLFxuICAgICAgICBwdXJnZVF1ZXVlOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIHNpZ25CeXRlc1Jlc29sdmVycy5zZXQoaWQsIHJlc29sdmVyKTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChzaWduQnl0ZXNSZXNvbHZlcnMuaGFzKGlkKSkge1xuICAgICAgICAgIHNpZ25CeXRlc1Jlc29sdmVycy5kZWxldGUoaWQpO1xuXG4gICAgICAgICAgaWYgKHNpZ25CeXRlc1Jlc29sdmVycy5zaXplID09PSAwKSB7XG4gICAgICAgICAgICBfaW5UcmFuc2FjdGlvblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAxMDAwICogMTIwKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbm5lY3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPENvbm5lY3RSZXNwb25zZT4oKC4uLnJlc29sdmVyKSA9PiB7XG4gICAgICBjb25uZWN0UmVzb2x2ZXJzLmFkZChyZXNvbHZlcik7XG4gICAgICBleHRlbnNpb24uY29ubmVjdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5mbygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SW5mb1Jlc3BvbnNlPigoLi4ucmVzb2x2ZXIpID0+IHtcbiAgICAgIGluZm9SZXNvbHZlcnMuYWRkKHJlc29sdmVyKTtcbiAgICAgIGV4dGVuc2lvbi5pbmZvKCk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBkaXNjb25uZWN0KCkge1xuICAgIGNvbm5lY3RSZXNvbHZlcnMuY2xlYXIoKTtcbiAgICBpbmZvUmVzb2x2ZXJzLmNsZWFyKCk7XG4gICAgcG9zdFJlc29sdmVycy5jbGVhcigpO1xuICAgIHNpZ25SZXNvbHZlcnMuY2xlYXIoKTtcbiAgICBzaWduQnl0ZXNSZXNvbHZlcnMuY2xlYXIoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluVHJhbnNhY3Rpb25Qcm9ncmVzcygpIHtcbiAgICByZXR1cm4gX2luVHJhbnNhY3Rpb25Qcm9ncmVzcztcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogRml4ZWRFeHRlbnNpb24gPSB7XG4gICAgcG9zdCxcbiAgICBzaWduLFxuICAgIHNpZ25CeXRlcyxcbiAgICBjb25uZWN0LFxuICAgIGluZm8sXG4gICAgZGlzY29ubmVjdCxcbiAgICBpblRyYW5zYWN0aW9uUHJvZ3Jlc3MsXG4gIH07XG5cbiAgcG9vbC5zZXQoaWRlbnRpZmllciwgcmVzdWx0KTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __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("./LegacyExtensionConnector"), exports);
|
|
18
|
+
__exportStar(require("./createFixedExtension"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy9sZWdhY3ktZXh0ZW5zaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2REFBMkM7QUFDM0MseURBQXVDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9MZWdhY3lFeHRlbnNpb25Db25uZWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGVGaXhlZEV4dGVuc2lvbic7XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.connect = exports.connectIfSessionExists = void 0;
|
|
4
|
+
const storage_1 = require("./storage");
|
|
5
|
+
function connectIfSessionExists() {
|
|
6
|
+
const storedSession = (0, storage_1.getStoredSession)();
|
|
7
|
+
if (!!storedSession) {
|
|
8
|
+
return connect(storedSession);
|
|
9
|
+
}
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
exports.connectIfSessionExists = connectIfSessionExists;
|
|
13
|
+
function connect(options) {
|
|
14
|
+
(0, storage_1.storeSession)(options);
|
|
15
|
+
function disconnect() {
|
|
16
|
+
(0, storage_1.clearStoredSession)();
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
...options,
|
|
20
|
+
disconnect,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
exports.connect = connect;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9Aa3NhbmdrdWsxMC93YWxsZXQtY29udHJvbGxlci9tb2R1bGVzL3JlYWRvbmx5LXdhbGxldC9jb25uZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUErRTtBQVMvRSxTQUFnQixzQkFBc0I7SUFDcEMsTUFBTSxhQUFhLEdBQUcsSUFBQSwwQkFBZ0IsR0FBRSxDQUFDO0lBRXpDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRTtRQUNuQixPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQUMvQjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQVJELHdEQVFDO0FBRUQsU0FBZ0IsT0FBTyxDQUNyQixPQUE4QjtJQUU5QixJQUFBLHNCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFFdEIsU0FBUyxVQUFVO1FBQ2pCLElBQUEsNEJBQWtCLEdBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTztRQUNMLEdBQUcsT0FBTztRQUNWLFVBQVU7S0FDWCxDQUFDO0FBQ0osQ0FBQztBQWJELDBCQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xlYXJTdG9yZWRTZXNzaW9uLCBnZXRTdG9yZWRTZXNzaW9uLCBzdG9yZVNlc3Npb24gfSBmcm9tICcuL3N0b3JhZ2UnO1xuaW1wb3J0IHsgUmVhZG9ubHlXYWxsZXRTZXNzaW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZG9ubHlXYWxsZXRDb250cm9sbGVyIGV4dGVuZHMgUmVhZG9ubHlXYWxsZXRTZXNzaW9uIHtcbiAgZGlzY29ubmVjdDogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkb25seVdhbGxldE9wdGlvbnMgZXh0ZW5kcyBSZWFkb25seVdhbGxldFNlc3Npb24ge31cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbm5lY3RJZlNlc3Npb25FeGlzdHMoKTogUmVhZG9ubHlXYWxsZXRDb250cm9sbGVyIHwgbnVsbCB7XG4gIGNvbnN0IHN0b3JlZFNlc3Npb24gPSBnZXRTdG9yZWRTZXNzaW9uKCk7XG5cbiAgaWYgKCEhc3RvcmVkU2Vzc2lvbikge1xuICAgIHJldHVybiBjb25uZWN0KHN0b3JlZFNlc3Npb24pO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25uZWN0KFxuICBvcHRpb25zOiBSZWFkb25seVdhbGxldE9wdGlvbnMsXG4pOiBSZWFkb25seVdhbGxldENvbnRyb2xsZXIge1xuICBzdG9yZVNlc3Npb24ob3B0aW9ucyk7XG5cbiAgZnVuY3Rpb24gZGlzY29ubmVjdCgpIHtcbiAgICBjbGVhclN0b3JlZFNlc3Npb24oKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBkaXNjb25uZWN0LFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __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("./types"), exports);
|
|
18
|
+
__exportStar(require("./connect"), exports);
|
|
19
|
+
__exportStar(require("./modal"), exports);
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy9yZWFkb25seS13YWxsZXQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF3QjtBQUN4Qiw0Q0FBMEI7QUFDMUIsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2Nvbm5lY3QnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbCc7XG4iXX0=
|