@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.
Files changed (124) hide show
  1. package/README.md +7 -0
  2. package/_commonjs/controller.js +704 -0
  3. package/_commonjs/env.js +9 -0
  4. package/_commonjs/exception/isError.js +15 -0
  5. package/_commonjs/exception/mapExtensionTxError.js +46 -0
  6. package/_commonjs/exception/mapWalletConnectError.js +69 -0
  7. package/_commonjs/getChainOptions.js +57 -0
  8. package/_commonjs/index.js +22 -0
  9. package/_commonjs/modules/connect-modal/index.js +80 -0
  10. package/_commonjs/modules/connect-modal/style.js +161 -0
  11. package/_commonjs/modules/extension-router/ExtensionRouter.js +241 -0
  12. package/_commonjs/modules/extension-router/index.js +19 -0
  13. package/_commonjs/modules/extension-router/modal.js +80 -0
  14. package/_commonjs/modules/extension-router/modal.style.js +161 -0
  15. package/_commonjs/modules/extension-router/multiChannel.js +18 -0
  16. package/_commonjs/modules/extension-router/session.js +37 -0
  17. package/_commonjs/modules/extension-router/types.js +16 -0
  18. package/_commonjs/modules/legacy-extension/LegacyExtensionConnector.js +143 -0
  19. package/_commonjs/modules/legacy-extension/createFixedExtension.js +236 -0
  20. package/_commonjs/modules/legacy-extension/index.js +19 -0
  21. package/_commonjs/modules/readonly-wallet/connect.js +24 -0
  22. package/_commonjs/modules/readonly-wallet/index.js +20 -0
  23. package/_commonjs/modules/readonly-wallet/modal.js +123 -0
  24. package/_commonjs/modules/readonly-wallet/modal.style.js +204 -0
  25. package/_commonjs/modules/readonly-wallet/storage.js +40 -0
  26. package/_commonjs/modules/readonly-wallet/types.js +3 -0
  27. package/_commonjs/modules/walletconnect/connect.js +421 -0
  28. package/_commonjs/modules/walletconnect/errors.js +51 -0
  29. package/_commonjs/modules/walletconnect/impl/socket-transport/index.js +204 -0
  30. package/_commonjs/modules/walletconnect/impl/socket-transport/network.js +30 -0
  31. package/_commonjs/modules/walletconnect/index.js +22 -0
  32. package/_commonjs/modules/walletconnect/modal.js +147 -0
  33. package/_commonjs/modules/walletconnect/modal.style.js +138 -0
  34. package/_commonjs/modules/walletconnect/types.js +13 -0
  35. package/_commonjs/operators/getExtensions.js +55 -0
  36. package/_commonjs/operators/toConnectedWallet.js +24 -0
  37. package/_commonjs/operators/toLcdClient.js +15 -0
  38. package/_commonjs/utils/browser-check.js +47 -0
  39. package/_commonjs/utils/checkExtensionReady.js +28 -0
  40. package/_commonjs/utils/sortConnections.js +13 -0
  41. package/_commonjs/verifyBytes.js +19 -0
  42. package/controller.d.ts +220 -0
  43. package/controller.js +697 -0
  44. package/env.d.ts +2 -0
  45. package/env.js +5 -0
  46. package/exception/isError.d.ts +3 -0
  47. package/exception/isError.js +11 -0
  48. package/exception/mapExtensionTxError.d.ts +5 -0
  49. package/exception/mapExtensionTxError.js +41 -0
  50. package/exception/mapWalletConnectError.d.ts +6 -0
  51. package/exception/mapWalletConnectError.js +63 -0
  52. package/getChainOptions.d.ts +3 -0
  53. package/getChainOptions.js +53 -0
  54. package/index.d.ts +6 -0
  55. package/index.js +6 -0
  56. package/modules/connect-modal/index.d.ts +2 -0
  57. package/modules/connect-modal/index.js +76 -0
  58. package/modules/connect-modal/style.d.ts +1 -0
  59. package/modules/connect-modal/style.js +158 -0
  60. package/modules/extension-router/ExtensionRouter.d.ts +43 -0
  61. package/modules/extension-router/ExtensionRouter.js +237 -0
  62. package/modules/extension-router/index.d.ts +2 -0
  63. package/modules/extension-router/index.js +3 -0
  64. package/modules/extension-router/modal.d.ts +2 -0
  65. package/modules/extension-router/modal.js +76 -0
  66. package/modules/extension-router/modal.style.d.ts +1 -0
  67. package/modules/extension-router/modal.style.js +158 -0
  68. package/modules/extension-router/multiChannel.d.ts +13 -0
  69. package/modules/extension-router/multiChannel.js +14 -0
  70. package/modules/extension-router/session.d.ts +8 -0
  71. package/modules/extension-router/session.js +31 -0
  72. package/modules/extension-router/types.d.ts +35 -0
  73. package/modules/extension-router/types.js +13 -0
  74. package/modules/legacy-extension/LegacyExtensionConnector.d.ts +30 -0
  75. package/modules/legacy-extension/LegacyExtensionConnector.js +139 -0
  76. package/modules/legacy-extension/createFixedExtension.d.ts +46 -0
  77. package/modules/legacy-extension/createFixedExtension.js +232 -0
  78. package/modules/legacy-extension/index.d.ts +2 -0
  79. package/modules/legacy-extension/index.js +3 -0
  80. package/modules/readonly-wallet/connect.d.ts +8 -0
  81. package/modules/readonly-wallet/connect.js +19 -0
  82. package/modules/readonly-wallet/index.d.ts +3 -0
  83. package/modules/readonly-wallet/index.js +4 -0
  84. package/modules/readonly-wallet/modal.d.ts +7 -0
  85. package/modules/readonly-wallet/modal.js +119 -0
  86. package/modules/readonly-wallet/modal.style.d.ts +1 -0
  87. package/modules/readonly-wallet/modal.style.js +201 -0
  88. package/modules/readonly-wallet/storage.d.ts +4 -0
  89. package/modules/readonly-wallet/storage.js +34 -0
  90. package/modules/readonly-wallet/types.d.ts +5 -0
  91. package/modules/readonly-wallet/types.js +2 -0
  92. package/modules/walletconnect/connect.d.ts +42 -0
  93. package/modules/walletconnect/connect.js +390 -0
  94. package/modules/walletconnect/errors.d.ts +22 -0
  95. package/modules/walletconnect/errors.js +41 -0
  96. package/modules/walletconnect/impl/socket-transport/index.d.ts +39 -0
  97. package/modules/walletconnect/impl/socket-transport/index.js +199 -0
  98. package/modules/walletconnect/impl/socket-transport/network.d.ts +8 -0
  99. package/modules/walletconnect/impl/socket-transport/network.js +28 -0
  100. package/modules/walletconnect/index.d.ts +5 -0
  101. package/modules/walletconnect/index.js +6 -0
  102. package/modules/walletconnect/modal.d.ts +12 -0
  103. package/modules/walletconnect/modal.js +143 -0
  104. package/modules/walletconnect/modal.style.d.ts +1 -0
  105. package/modules/walletconnect/modal.style.js +135 -0
  106. package/modules/walletconnect/types.d.ts +24 -0
  107. package/modules/walletconnect/types.js +10 -0
  108. package/operators/getExtensions.d.ts +9 -0
  109. package/operators/getExtensions.js +51 -0
  110. package/operators/toConnectedWallet.d.ts +4 -0
  111. package/operators/toConnectedWallet.js +20 -0
  112. package/operators/toLcdClient.d.ts +4 -0
  113. package/operators/toLcdClient.js +11 -0
  114. package/package.json +550 -0
  115. package/utils/browser-check.d.ts +3 -0
  116. package/utils/browser-check.js +38 -0
  117. package/utils/checkExtensionReady.d.ts +6 -0
  118. package/utils/checkExtensionReady.js +24 -0
  119. package/utils/sortConnections.d.ts +2 -0
  120. package/utils/sortConnections.js +9 -0
  121. package/verifyBytes.d.ts +4 -0
  122. package/verifyBytes.js +15 -0
  123. package/~/.npm/_cacache/content-v2/sha512/ad/b5/8c87dfae7c208906a88f1997b323933e7efb4e481bcfdc559cb13199d077e1b40abcb161561a293ca59cd98aae224cd0877555e6e7a2e11021bc55ebedf4 +0 -0
  124. 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRml4ZWRFeHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy9sZWdhY3ktZXh0ZW5zaW9uL2NyZWF0ZUZpeGVkRXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGlGQUs2QztBQUM3QywyQ0FBeUU7QUE0Q3pFLFNBQVMsZUFBZSxDQUFDLEtBQVU7SUFDakMsSUFBSTtRQUNGLElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRTtZQUNyQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7U0FDdEI7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtLQUNGO0lBQUMsV0FBTTtRQUNOLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RCO0FBQ0gsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQVU7SUFDakMsSUFBSSxLQUFLLElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtRQUM1QixRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDbEIseUZBQXlGO1lBQ3pGLEtBQUssQ0FBQztnQkFDSixPQUFPLElBQUksZ0RBQXNCLEVBQUUsQ0FBQztZQUN0Qyx5RkFBeUY7WUFDekYsS0FBSyxDQUFDO2dCQUNKLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtvQkFDZCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDOUIsT0FBTyxJQUFJLDhDQUFvQixDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ3ZFO3FCQUFNO29CQUNMLE9BQU8sSUFBSSw4Q0FBb0IsQ0FDN0IsU0FBUyxFQUNULGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFDdEIsSUFBSSxDQUNMLENBQUM7aUJBQ0g7WUFDSCx5RkFBeUY7WUFDekYsS0FBSyxDQUFDO2dCQUNKLE9BQU8sSUFBSSxvREFBMEIsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNoRTtnQkFDRSxPQUFPLElBQUksd0RBQThCLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDckU7S0FDRjtTQUFNO1FBQ0wsT0FBTyxJQUFJLHdEQUE4QixDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ25FO0FBQ0gsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxFQUFPO0lBQy9DLElBQUksT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtRQUN4QyxPQUFPLEtBQUssQ0FBQztLQUNkO1NBQU0sSUFDTCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssV0FBVztRQUNyQyxPQUFPLEtBQUssS0FBSyxXQUFXLEVBQzVCO1FBQ0EsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO0FBRS9DLFNBQWdCLG9CQUFvQixDQUFDLFVBQWtCO0lBQ3JELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUN4QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFFLENBQUM7S0FDOUI7SUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLG1CQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFNUMsSUFBSSxzQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFFbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBRzFCLENBQUM7SUFFSixNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFHMUIsQ0FBQztJQUVKLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLEVBRy9CLENBQUM7SUFFSixNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBK0MsQ0FBQztJQUU3RSxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUU3QixDQUFDO0lBRUosU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNoQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JDLE9BQU87U0FDUjtRQUVELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUVELE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFFLENBQUM7UUFFekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDcEIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2hDO2FBQU0sSUFBSSxPQUFPLEVBQUU7WUFDbEIsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3RDO1FBRUQsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFakMsSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtZQUM1QixzQkFBc0IsR0FBRyxLQUFLLENBQUM7U0FDaEM7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDaEMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRXJDLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDakMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUUsQ0FBQztZQUV6RCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDcEIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNLElBQUksT0FBTyxFQUFFO2dCQUNsQixPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7YUFDdEM7WUFFRCxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVqQyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO2dCQUM1QixzQkFBc0IsR0FBRyxLQUFLLENBQUM7YUFDaEM7U0FDRjthQUFNLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUM3QyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFFLENBQUM7WUFFOUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNoQztpQkFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDbEIsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2FBQzNDO1lBRUQsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUV0QyxJQUFJLGtCQUFrQixDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2pDLHNCQUFzQixHQUFHLEtBQUssQ0FBQzthQUNoQztTQUNGO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ2hDLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNwQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRXJDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxhQUFhLEVBQUU7WUFDN0MsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2Y7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ2xCO1NBQ0Y7UUFFRCxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQ25DLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTztRQUNwQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBRXJDLEtBQUssTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxnQkFBZ0IsRUFBRTtZQUNoRCxJQUFJLEtBQUssRUFBRTtnQkFDVCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDZjtpQkFBTTtnQkFDTCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDbEI7U0FDRjtRQUVELGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0lBRUgsU0FBUyxJQUFJLENBQUMsSUFBWTtRQUN4QixPQUFPLElBQUksT0FBTyxDQUFlLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRTtZQUMvQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7WUFFOUIsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDeEIsR0FBSSxJQUFZO2dCQUNoQixVQUFVLEVBQUUsSUFBSTthQUNqQixDQUFDLENBQUM7WUFFSCxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUVoQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDekIsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFFekIsSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTt3QkFDNUIsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO3FCQUNoQztpQkFDRjtZQUNILENBQUMsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxJQUFJLENBQUMsSUFBWTtRQUN4QixPQUFPLElBQUksT0FBTyxDQUFlLENBQUMsR0FBRyxRQUFRLEVBQUUsRUFBRTtZQUMvQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7WUFFOUIsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDeEIsR0FBSSxJQUFZO2dCQUNoQixVQUFVLEVBQUUsSUFBSTthQUNqQixDQUFDLENBQUM7WUFFSCxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUVoQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDekIsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFFekIsSUFBSSxhQUFhLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTt3QkFDNUIsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO3FCQUNoQztpQkFDRjtZQUNILENBQUMsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxTQUFTLENBQUMsS0FBYTtRQUM5QixPQUFPLElBQUksT0FBTyxDQUFvQixDQUFDLEdBQUcsUUFBUSxFQUFFLEVBQUU7WUFDcEQsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1lBRTlCLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUM7Z0JBQzdCLEtBQUs7Z0JBQ0wsVUFBVSxFQUFFLElBQUk7YUFDakIsQ0FBQyxDQUFDO1lBRUgsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUVyQyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO29CQUM5QixrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBRTlCLElBQUksa0JBQWtCLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTt3QkFDakMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO3FCQUNoQztpQkFDRjtZQUNILENBQUMsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxPQUFPO1FBQ2QsT0FBTyxJQUFJLE9BQU8sQ0FBa0IsQ0FBQyxHQUFHLFFBQVEsRUFBRSxFQUFFO1lBQ2xELGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvQixTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxJQUFJO1FBQ1gsT0FBTyxJQUFJLE9BQU8sQ0FBZSxDQUFDLEdBQUcsUUFBUSxFQUFFLEVBQUU7WUFDL0MsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsU0FBUyxVQUFVO1FBQ2pCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3pCLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdEIsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3RCLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxTQUFTLHFCQUFxQjtRQUM1QixPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBbUI7UUFDN0IsSUFBSTtRQUNKLElBQUk7UUFDSixTQUFTO1FBQ1QsT0FBTztRQUNQLElBQUk7UUFDSixVQUFVO1FBQ1YscUJBQXFCO0tBQ3RCLENBQUM7SUFFRixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU3QixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBeE9ELG9EQXdPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmtJbmZvIH0gZnJvbSAnQGtzYW5na3VrMTAvd2FsbGV0LXR5cGVzJztcbmltcG9ydCB7XG4gIFdlYkV4dGVuc2lvbkNyZWF0ZVR4RmFpbGVkLFxuICBXZWJFeHRlbnNpb25UeEZhaWxlZCxcbiAgV2ViRXh0ZW5zaW9uVHhVbnNwZWNpZmllZEVycm9yLFxuICBXZWJFeHRlbnNpb25Vc2VyRGVuaWVkLFxufSBmcm9tICdAa3NhbmdrdWsxMC93ZWItZXh0ZW5zaW9uLWludGVyZmFjZSc7XG5pbXBvcnQgeyBDcmVhdGVUeE9wdGlvbnMsIEV4dGVuc2lvbiwgU2lnbk1vZGUsIFR4IH0gZnJvbSAnQHhwbGEveHBsYS5qcyc7XG5cbnR5cGUgQ29ubmVjdFJlc3BvbnNlID0geyBhZGRyZXNzPzogc3RyaW5nIH07XG50eXBlIFBvc3RSZXNwb25zZSA9IHtcbiAgcGF5bG9hZDoge1xuICAgIHJlc3VsdDoge1xuICAgICAgaGVpZ2h0OiBudW1iZXI7XG4gICAgICByYXdfbG9nOiBzdHJpbmc7XG4gICAgICB0eGhhc2g6IHN0cmluZztcbiAgICB9O1xuICB9O1xufTtcbnR5cGUgU2lnblJlc3BvbnNlID0ge1xuICBwYXlsb2FkOiB7XG4gICAgcmVzdWx0OiBUeC5EYXRhO1xuICB9O1xufTtcbnR5cGUgU2lnbkJ5dGVzUmVzcG9uc2UgPSB7XG4gIHBheWxvYWQ6IHtcbiAgICByZXN1bHQ6IHtcbiAgICAgIHB1YmxpY19rZXk6IHN0cmluZztcbiAgICAgIHJlY2lkOiBudW1iZXI7XG4gICAgICBzaWduYXR1cmU6IHN0cmluZztcbiAgICB9O1xuICB9O1xufTtcbnR5cGUgSW5mb1Jlc3BvbnNlID0gTmV0d29ya0luZm87XG5cbmV4cG9ydCBpbnRlcmZhY2UgRml4ZWRFeHRlbnNpb24ge1xuICBwb3N0OiAoZGF0YTogQ3JlYXRlVHhPcHRpb25zKSA9PiBQcm9taXNlPFBvc3RSZXNwb25zZT47XG4gIHNpZ246IChcbiAgICBkYXRhOiBDcmVhdGVUeE9wdGlvbnMgJiB7XG4gICAgICBzZXF1ZW5jZT86IG51bWJlcjtcbiAgICAgIGFjY291bnROdW1iZXI/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=