@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,204 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@walletconnect/utils");
7
+ const network_1 = __importDefault(require("./network"));
8
+ // @ts-ignore
9
+ const WS = typeof global.WebSocket !== 'undefined' ? global.WebSocket : require('ws');
10
+ // -- SocketTransport ------------------------------------------------------ //
11
+ class SocketTransport {
12
+ // -- constructor ----------------------------------------------------- //
13
+ constructor(opts) {
14
+ this.opts = opts;
15
+ this._queue = [];
16
+ this._events = [];
17
+ this._subscriptions = [];
18
+ // -- public ---------------------------------------------------------- //
19
+ this.open = () => {
20
+ this._socketCreate();
21
+ };
22
+ this.close = () => {
23
+ this._socketClose();
24
+ };
25
+ this.send = (message, topic, silent) => {
26
+ if (!topic || typeof topic !== 'string') {
27
+ throw new Error('Missing or invalid topic field');
28
+ }
29
+ this._socketSend({
30
+ topic: topic,
31
+ type: 'pub',
32
+ payload: message,
33
+ silent: !!silent,
34
+ });
35
+ };
36
+ this.subscribe = (topic) => {
37
+ this._socketSend({
38
+ topic: topic,
39
+ type: 'sub',
40
+ payload: '',
41
+ silent: true,
42
+ });
43
+ };
44
+ this.on = (event, callback) => {
45
+ this._events.push({ event, callback });
46
+ };
47
+ // -- private ---------------------------------------------------------- //
48
+ this._socketCreate = () => {
49
+ if (this._nextSocket) {
50
+ return;
51
+ }
52
+ const url = getWebSocketUrl(this._url, this._protocol, this._version);
53
+ this._nextSocket = new WS(url);
54
+ if (!this._nextSocket) {
55
+ throw new Error('Failed to create socket');
56
+ }
57
+ this._nextSocket.onmessage = (event) => this._socketReceive(event);
58
+ this._nextSocket.onopen = () => this._socketOpen();
59
+ this._nextSocket.onerror = (event) => this._socketError(event);
60
+ this._nextSocket.onclose = () => {
61
+ this._nextSocket = null;
62
+ setTimeout(this._socketCreate, 500);
63
+ };
64
+ };
65
+ this._socketOpen = () => {
66
+ this._socketClose();
67
+ this._socket = this._nextSocket;
68
+ this._nextSocket = null;
69
+ this._queueSubscriptions();
70
+ this._pushQueue();
71
+ };
72
+ this._socketClose = () => {
73
+ if (this._socket) {
74
+ this._socket.onclose = () => {
75
+ // empty
76
+ };
77
+ this._socket.close();
78
+ }
79
+ };
80
+ this._socketSend = (socketMessage) => {
81
+ const message = JSON.stringify(socketMessage);
82
+ if (this._socket && this._socket.readyState === 1) {
83
+ this._socket.send(message);
84
+ }
85
+ else {
86
+ this._setToQueue(socketMessage);
87
+ this._socketCreate();
88
+ }
89
+ };
90
+ this._socketReceive = async (event) => {
91
+ let socketMessage;
92
+ try {
93
+ socketMessage = JSON.parse(event.data);
94
+ }
95
+ catch (error) {
96
+ return;
97
+ }
98
+ this._socketSend({
99
+ topic: socketMessage.topic,
100
+ type: 'ack',
101
+ payload: '',
102
+ silent: true,
103
+ });
104
+ if (this._socket && this._socket.readyState === 1) {
105
+ const events = this._events.filter((itemEvent) => itemEvent.event === 'message');
106
+ if (events && events.length) {
107
+ events.forEach((itemEvent) => itemEvent.callback(socketMessage));
108
+ }
109
+ }
110
+ };
111
+ this._socketError = (e) => {
112
+ const events = this._events.filter((event) => event.event === 'error');
113
+ if (events && events.length) {
114
+ events.forEach((event) => event.callback(e));
115
+ }
116
+ };
117
+ this._queueSubscriptions = () => {
118
+ const subscriptions = this._subscriptions;
119
+ subscriptions.forEach((topic) => this._queue.push({
120
+ topic: topic,
121
+ type: 'sub',
122
+ payload: '',
123
+ silent: true,
124
+ }));
125
+ this._subscriptions = this.opts.subscriptions || [];
126
+ };
127
+ this._setToQueue = (socketMessage) => {
128
+ this._queue.push(socketMessage);
129
+ };
130
+ this._pushQueue = () => {
131
+ const queue = this._queue;
132
+ queue.forEach((socketMessage) => this._socketSend(socketMessage));
133
+ this._queue = [];
134
+ };
135
+ this._protocol = opts.protocol;
136
+ this._version = opts.version;
137
+ this._url = '';
138
+ this._netMonitor = null;
139
+ this._socket = null;
140
+ this._nextSocket = null;
141
+ this._subscriptions = opts.subscriptions || [];
142
+ this._netMonitor = opts.netMonitor || new network_1.default();
143
+ if (!opts.url || typeof opts.url !== 'string') {
144
+ throw new Error('Missing or invalid WebSocket url');
145
+ }
146
+ this._url = opts.url;
147
+ this._netMonitor.on('online', () => this._socketCreate());
148
+ }
149
+ set readyState(value) {
150
+ // empty
151
+ }
152
+ get readyState() {
153
+ return this._socket ? this._socket.readyState : -1;
154
+ }
155
+ set connecting(value) {
156
+ // empty
157
+ }
158
+ get connecting() {
159
+ return this.readyState === 0;
160
+ }
161
+ set connected(value) {
162
+ // empty
163
+ }
164
+ get connected() {
165
+ return this.readyState === 1;
166
+ }
167
+ set closing(value) {
168
+ // empty
169
+ }
170
+ get closing() {
171
+ return this.readyState === 2;
172
+ }
173
+ set closed(value) {
174
+ // empty
175
+ }
176
+ get closed() {
177
+ return this.readyState === 3;
178
+ }
179
+ }
180
+ function getWebSocketUrl(webUrl, protocol, version) {
181
+ var _a, _b;
182
+ const url = webUrl.startsWith('https')
183
+ ? webUrl.replace('https', 'wss')
184
+ : webUrl.startsWith('http')
185
+ ? webUrl.replace('http', 'ws')
186
+ : webUrl;
187
+ const splitUrl = url.split('?');
188
+ const params = (0, utils_1.isBrowser)()
189
+ ? {
190
+ protocol,
191
+ version,
192
+ env: 'browser',
193
+ host: ((_a = (0, utils_1.getLocation)()) === null || _a === void 0 ? void 0 : _a.host) || '',
194
+ }
195
+ : {
196
+ protocol,
197
+ version,
198
+ env: ((_b = (0, utils_1.detectEnv)()) === null || _b === void 0 ? void 0 : _b.name) || '',
199
+ };
200
+ const queryString = (0, utils_1.appendToQueryString)((0, utils_1.getQueryString)(splitUrl[1] || ''), params);
201
+ return splitUrl[0] + '?' + queryString;
202
+ }
203
+ exports.default = SocketTransport;
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy93YWxsZXRjb25uZWN0L2ltcGwvc29ja2V0LXRyYW5zcG9ydC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQU9BLGdEQU04QjtBQUU5Qix3REFBdUM7QUFFdkMsYUFBYTtBQUNiLE1BQU0sRUFBRSxHQUNOLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUU3RSwrRUFBK0U7QUFFL0UsTUFBTSxlQUFlO0lBV25CLDBFQUEwRTtJQUUxRSxZQUFvQixJQUE2QjtRQUE3QixTQUFJLEdBQUosSUFBSSxDQUF5QjtRQU56QyxXQUFNLEdBQXFCLEVBQUUsQ0FBQztRQUM5QixZQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUNoQyxtQkFBYyxHQUFhLEVBQUUsQ0FBQztRQStEdEMsMEVBQTBFO1FBRW5FLFNBQUksR0FBRyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztRQUVLLFVBQUssR0FBRyxHQUFHLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQztRQUVLLFNBQUksR0FBRyxDQUFDLE9BQWUsRUFBRSxLQUFjLEVBQUUsTUFBZ0IsRUFBUSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO2dCQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7YUFDbkQ7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUNmLEtBQUssRUFBRSxLQUFLO2dCQUNaLElBQUksRUFB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LEVBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUNqQyxNQUFNLENBQ1AsQ0FBQztJQUNGLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUM7QUFDekMsQ0FBQztBQUVELGtCQUFlLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElTb2NrZXRNZXNzYWdlLFxuICBJVHJhbnNwb3J0RXZlbnQsXG4gIElOZXR3b3JrTW9uaXRvcixcbiAgSVRyYW5zcG9ydExpYixcbiAgSVNvY2tldFRyYW5zcG9ydE9wdGlvbnMsXG59IGZyb20gJ0B3YWxsZXRjb25uZWN0L3R5cGVzJztcbmltcG9ydCB7XG4gIGlzQnJvd3NlcixcbiAgZ2V0TG9jYXRpb24sXG4gIGdldFF1ZXJ5U3RyaW5nLFxuICBkZXRlY3RFbnYsXG4gIGFwcGVuZFRvUXVlcnlTdHJpbmcsXG59IGZyb20gJ0B3YWxsZXRjb25uZWN0L3V0aWxzJztcblxuaW1wb3J0IE5ldHdvcmtNb25pdG9yIGZyb20gJy4vbmV0d29yayc7XG5cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IFdTID1cbiAgdHlwZW9mIGdsb2JhbC5XZWJTb2NrZXQgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsLldlYlNvY2tldCA6IHJlcXVpcmUoJ3dzJyk7XG5cbi8vIC0tIFNvY2tldFRyYW5zcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuY2xhc3MgU29ja2V0VHJhbnNwb3J0IGltcGxlbWVudHMgSVRyYW5zcG9ydExpYiB7XG4gIHByaXZhdGUgX3Byb3RvY29sOiBzdHJpbmc7XG4gIHByaXZhdGUgX3ZlcnNpb246IG51bWJlcjtcbiAgcHJpdmF0ZSBfdXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgX25ldE1vbml0b3I6IElOZXR3b3JrTW9uaXRvciB8IG51bGw7XG4gIHByaXZhdGUgX3NvY2tldDogV2ViU29ja2V0IHwgbnVsbDtcbiAgcHJpdmF0ZSBfbmV4dFNvY2tldDogV2ViU29ja2V0IHwgbnVsbDtcbiAgcHJpdmF0ZSBfcXVldWU6IElTb2NrZXRNZXNzYWdlW10gPSBbXTtcbiAgcHJpdmF0ZSBfZXZlbnRzOiBJVHJhbnNwb3J0RXZlbnRbXSA9IFtdO1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIC0tIGNvbnN0cnVjdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcHRzOiBJU29ja2V0VHJhbnNwb3J0T3B0aW9ucykge1xuICAgIHRoaXMuX3Byb3RvY29sID0gb3B0cy5wcm90b2NvbDtcbiAgICB0aGlzLl92ZXJzaW9uID0gb3B0cy52ZXJzaW9uO1xuICAgIHRoaXMuX3VybCA9ICcnO1xuICAgIHRoaXMuX25ldE1vbml0b3IgPSBudWxsO1xuICAgIHRoaXMuX3NvY2tldCA9IG51bGw7XG4gICAgdGhpcy5fbmV4dFNvY2tldCA9IG51bGw7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyA9IG9wdHMuc3Vic2NyaXB0aW9ucyB8fCBbXTtcbiAgICB0aGlzLl9uZXRNb25pdG9yID0gb3B0cy5uZXRNb25pdG9yIHx8IG5ldyBOZXR3b3JrTW9uaXRvcigpO1xuXG4gICAgaWYgKCFvcHRzLnVybCB8fCB0eXBlb2Ygb3B0cy51cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgb3IgaW52YWxpZCBXZWJTb2NrZXQgdXJsJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fdXJsID0gb3B0cy51cmw7XG5cbiAgICB0aGlzLl9uZXRNb25pdG9yLm9uKCdvbmxpbmUnLCAoKSA9PiB0aGlzLl9zb2NrZXRDcmVhdGUoKSk7XG4gIH1cblxuICBzZXQgcmVhZHlTdGF0ZSh2YWx1ZSkge1xuICAgIC8vIGVtcHR5XG4gIH1cblxuICBnZXQgcmVhZHlTdGF0ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zb2NrZXQgPyB0aGlzLl9zb2NrZXQucmVhZHlTdGF0ZSA6IC0xO1xuICB9XG5cbiAgc2V0IGNvbm5lY3RpbmcodmFsdWUpIHtcbiAgICAvLyBlbXB0eVxuICB9XG5cbiAgZ2V0IGNvbm5lY3RpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZHlTdGF0ZSA9PT0gMDtcbiAgfVxuXG4gIHNldCBjb25uZWN0ZWQodmFsdWUpIHtcbiAgICAvLyBlbXB0eVxuICB9XG5cbiAgZ2V0IGNvbm5lY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkeVN0YXRlID09PSAxO1xuICB9XG5cbiAgc2V0IGNsb3NpbmcodmFsdWUpIHtcbiAgICAvLyBlbXB0eVxuICB9XG5cbiAgZ2V0IGNsb3NpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZHlTdGF0ZSA9PT0gMjtcbiAgfVxuXG4gIHNldCBjbG9zZWQodmFsdWUpIHtcbiAgICAvLyBlbXB0eVxuICB9XG5cbiAgZ2V0IGNsb3NlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkeVN0YXRlID09PSAzO1xuICB9XG5cbiAgLy8gLS0gcHVibGljIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuICBwdWJsaWMgb3BlbiA9ICgpID0+IHtcbiAgICB0aGlzLl9zb2NrZXRDcmVhdGUoKTtcbiAgfTtcblxuICBwdWJsaWMgY2xvc2UgPSAoKSA9PiB7XG4gICAgdGhpcy5fc29ja2V0Q2xvc2UoKTtcbiAgfTtcblxuICBwdWJsaWMgc2VuZCA9IChtZXNzYWdlOiBzdHJpbmcsIHRvcGljPzogc3RyaW5nLCBzaWxlbnQ/OiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0b3BpYyB8fCB0eXBlb2YgdG9waWMgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgb3IgaW52YWxpZCB0b3BpYyBmaWVsZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3NvY2tldFNlbmQoe1xuICAgICAgdG9waWM6IHRvcGljLFxuICAgICAgdHlwZTogJ3B1YicsXG4gICAgICBwYXlsb2FkOiBtZXNzYWdlLFxuICAgICAgc2lsZW50OiAhIXNpbGVudCxcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgc3Vic2NyaWJlID0gKHRvcGljOiBzdHJpbmcpID0+IHtcbiAgICB0aGlzLl9zb2NrZXRTZW5kKHtcbiAgICAgIHRvcGljOiB0b3BpYyxcbiAgICAgIHR5cGU6ICdzdWInLFxuICAgICAgcGF5bG9hZDogJycsXG4gICAgICBzaWxlbnQ6IHRydWUsXG4gICAgfSk7XG4gIH07XG5cbiAgcHVibGljIG9uID0gKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiAocGF5bG9hZDogYW55KSA9PiB2b2lkKSA9PiB7XG4gICAgdGhpcy5fZXZlbnRzLnB1c2goeyBldmVudCwgY2FsbGJhY2sgfSk7XG4gIH07XG5cbiAgLy8gLS0gcHJpdmF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbiAgcHJpdmF0ZSBfc29ja2V0Q3JlYXRlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLl9uZXh0U29ja2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gZ2V0V2ViU29ja2V0VXJsKHRoaXMuX3VybCwgdGhpcy5fcHJvdG9jb2wsIHRoaXMuX3ZlcnNpb24pO1xuXG4gICAgdGhpcy5fbmV4dFNvY2tldCA9IG5ldyBXUyh1cmwpO1xuXG4gICAgaWYgKCF0aGlzLl9uZXh0U29ja2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgc29ja2V0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbmV4dFNvY2tldC5vbm1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT5cbiAgICAgIHRoaXMuX3NvY2tldFJlY2VpdmUoZXZlbnQpO1xuXG4gICAgdGhpcy5fbmV4dFNvY2tldC5vbm9wZW4gPSAoKSA9PiB0aGlzLl9zb2NrZXRPcGVuKCk7XG5cbiAgICB0aGlzLl9uZXh0U29ja2V0Lm9uZXJyb3IgPSAoZXZlbnQ6IEV2ZW50KSA9PiB0aGlzLl9zb2NrZXRFcnJvcihldmVudCk7XG5cbiAgICB0aGlzLl9uZXh0U29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9uZXh0U29ja2V0ID0gbnVsbDtcbiAgICAgIHNldFRpbWVvdXQodGhpcy5fc29ja2V0Q3JlYXRlLCA1MDApO1xuICAgIH07XG4gIH07XG5cbiAgcHJpdmF0ZSBfc29ja2V0T3BlbiA9ICgpID0+IHtcbiAgICB0aGlzLl9zb2NrZXRDbG9zZSgpO1xuICAgIHRoaXMuX3NvY2tldCA9IHRoaXMuX25leHRTb2NrZXQ7XG4gICAgdGhpcy5fbmV4dFNvY2tldCA9IG51bGw7XG4gICAgdGhpcy5fcXVldWVTdWJzY3JpcHRpb25zKCk7XG4gICAgdGhpcy5fcHVzaFF1ZXVlKCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfc29ja2V0Q2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuX3NvY2tldCkge1xuICAgICAgdGhpcy5fc29ja2V0Lm9uY2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIC8vIGVtcHR5XG4gICAgICB9O1xuICAgICAgdGhpcy5fc29ja2V0LmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX3NvY2tldFNlbmQgPSAoc29ja2V0TWVzc2FnZTogSVNvY2tldE1lc3NhZ2UpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShzb2NrZXRNZXNzYWdlKTtcblxuICAgIGlmICh0aGlzLl9zb2NrZXQgJiYgdGhpcy5fc29ja2V0LnJlYWR5U3RhdGUgPT09IDEpIHtcbiAgICAgIHRoaXMuX3NvY2tldC5zZW5kKG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRUb1F1ZXVlKHNvY2tldE1lc3NhZ2UpO1xuICAgICAgdGhpcy5fc29ja2V0Q3JlYXRlKCk7XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX3NvY2tldFJlY2VpdmUgPSBhc3luYyAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgIGxldCBzb2NrZXRNZXNzYWdlOiBJU29ja2V0TWVzc2FnZTtcblxuICAgIHRyeSB7XG4gICAgICBzb2NrZXRNZXNzYWdlID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3NvY2tldFNlbmQoe1xuICAgICAgdG9waWM6IHNvY2tldE1lc3NhZ2UudG9waWMsXG4gICAgICB0eXBlOiAnYWNrJyxcbiAgICAgIHBheWxvYWQ6ICcnLFxuICAgICAgc2lsZW50OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX3NvY2tldCAmJiB0aGlzLl9zb2NrZXQucmVhZHlTdGF0ZSA9PT0gMSkge1xuICAgICAgY29uc3QgZXZlbnRzID0gdGhpcy5fZXZlbnRzLmZpbHRlcihcbiAgICAgICAgKGl0ZW1FdmVudCkgPT4gaXRlbUV2ZW50LmV2ZW50ID09PSAnbWVzc2FnZScsXG4gICAgICApO1xuICAgICAgaWYgKGV2ZW50cyAmJiBldmVudHMubGVuZ3RoKSB7XG4gICAgICAgIGV2ZW50cy5mb3JFYWNoKChpdGVtRXZlbnQpID0+IGl0ZW1FdmVudC5jYWxsYmFjayhzb2NrZXRNZXNzYWdlKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHByaXZhdGUgX3NvY2tldEVycm9yID0gKGU6IEV2ZW50KSA9PiB7XG4gICAgY29uc3QgZXZlbnRzID0gdGhpcy5fZXZlbnRzLmZpbHRlcigoZXZlbnQpID0+IGV2ZW50LmV2ZW50ID09PSAnZXJyb3InKTtcbiAgICBpZiAoZXZlbnRzICYmIGV2ZW50cy5sZW5ndGgpIHtcbiAgICAgIGV2ZW50cy5mb3JFYWNoKChldmVudCkgPT4gZXZlbnQuY2FsbGJhY2soZSkpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIF9xdWV1ZVN1YnNjcmlwdGlvbnMgPSAoKSA9PiB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IHRoaXMuX3N1YnNjcmlwdGlvbnM7XG5cbiAgICBzdWJzY3JpcHRpb25zLmZvckVhY2goKHRvcGljOiBzdHJpbmcpID0+XG4gICAgICB0aGlzLl9xdWV1ZS5wdXNoKHtcbiAgICAgICAgdG9waWM6IHRvcGljLFxuICAgICAgICB0eXBlOiAnc3ViJyxcbiAgICAgICAgcGF5bG9hZDogJycsXG4gICAgICAgIHNpbGVudDogdHJ1ZSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zID0gdGhpcy5vcHRzLnN1YnNjcmlwdGlvbnMgfHwgW107XG4gIH07XG5cbiAgcHJpdmF0ZSBfc2V0VG9RdWV1ZSA9IChzb2NrZXRNZXNzYWdlOiBJU29ja2V0TWVzc2FnZSkgPT4ge1xuICAgIHRoaXMuX3F1ZXVlLnB1c2goc29ja2V0TWVzc2FnZSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBfcHVzaFF1ZXVlID0gKCkgPT4ge1xuICAgIGNvbnN0IHF1ZXVlID0gdGhpcy5fcXVldWU7XG5cbiAgICBxdWV1ZS5mb3JFYWNoKChzb2NrZXRNZXNzYWdlOiBJU29ja2V0TWVzc2FnZSkgPT5cbiAgICAgIHRoaXMuX3NvY2tldFNlbmQoc29ja2V0TWVzc2FnZSksXG4gICAgKTtcblxuICAgIHRoaXMuX3F1ZXVlID0gW107XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFdlYlNvY2tldFVybChcbiAgd2ViVXJsOiBzdHJpbmcsXG4gIHByb3RvY29sOiBzdHJpbmcsXG4gIHZlcnNpb246IG51bWJlcixcbik6IHN0cmluZyB7XG4gIGNvbnN0IHVybCA9IHdlYlVybC5zdGFydHNXaXRoKCdodHRwcycpXG4gICAgPyB3ZWJVcmwucmVwbGFjZSgnaHR0cHMnLCAnd3NzJylcbiAgICA6IHdlYlVybC5zdGFydHNXaXRoKCdodHRwJylcbiAgICA/IHdlYlVybC5yZXBsYWNlKCdodHRwJywgJ3dzJylcbiAgICA6IHdlYlVybDtcbiAgY29uc3Qgc3BsaXRVcmwgPSB1cmwuc3BsaXQoJz8nKTtcbiAgY29uc3QgcGFyYW1zID0gaXNCcm93c2VyKClcbiAgICA/IHtcbiAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIGVudjogJ2Jyb3dzZXInLFxuICAgICAgICBob3N0OiBnZXRMb2NhdGlvbigpPy5ob3N0IHx8ICcnLFxuICAgICAgfVxuICAgIDoge1xuICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgZW52OiBkZXRlY3RFbnYoKT8ubmFtZSB8fCAnJyxcbiAgICAgIH07XG4gIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYXBwZW5kVG9RdWVyeVN0cmluZyhcbiAgICBnZXRRdWVyeVN0cmluZyhzcGxpdFVybFsxXSB8fCAnJyksXG4gICAgcGFyYW1zLFxuICApO1xuICByZXR1cm4gc3BsaXRVcmxbMF0gKyAnPycgKyBxdWVyeVN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgU29ja2V0VHJhbnNwb3J0O1xuIl19
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // -- NetworkMonitor --------------------------------------------------------- //
4
+ class NetworkMonitor {
5
+ constructor() {
6
+ this._eventEmitters = [];
7
+ if (typeof window !== 'undefined' &&
8
+ typeof window.addEventListener !== 'undefined') {
9
+ window.addEventListener('online', () => this.trigger('online'));
10
+ window.addEventListener('offline', () => this.trigger('offline'));
11
+ }
12
+ }
13
+ on(event, callback) {
14
+ this._eventEmitters.push({
15
+ event,
16
+ callback,
17
+ });
18
+ }
19
+ trigger(event) {
20
+ let eventEmitters = [];
21
+ if (event) {
22
+ eventEmitters = this._eventEmitters.filter((eventEmitter) => eventEmitter.event === event);
23
+ }
24
+ eventEmitters.forEach((eventEmitter) => {
25
+ eventEmitter.callback();
26
+ });
27
+ }
28
+ }
29
+ exports.default = NetworkMonitor;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9Aa3NhbmdrdWsxMC93YWxsZXQtY29udHJvbGxlci9tb2R1bGVzL3dhbGxldGNvbm5lY3QvaW1wbC9zb2NrZXQtdHJhbnNwb3J0L25ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSxpRkFBaUY7QUFFakYsTUFBTSxjQUFjO0lBR2xCO1FBQ0UsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFFekIsSUFDRSxPQUFPLE1BQU0sS0FBSyxXQUFXO1lBQzdCLE9BQVEsTUFBYyxDQUFDLGdCQUFnQixLQUFLLFdBQVcsRUFDdkQ7WUFDQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNoRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUNuRTtJQUNILENBQUM7SUFFTSxFQUFFLENBQUMsS0FBbUIsRUFBRSxRQUFvQjtRQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN2QixLQUFLO1lBQ0wsUUFBUTtTQUNULENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBbUI7UUFDaEMsSUFBSSxhQUFhLEdBQTJCLEVBQUUsQ0FBQztRQUUvQyxJQUFJLEtBQUssRUFBRTtZQUNULGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxZQUFrQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FDckUsQ0FBQztTQUNIO1FBRUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWtDLEVBQUUsRUFBRTtZQUMzRCxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxrQkFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBOZXR3b3JrRXZlbnQsXG4gIElOZXR3b3JrRXZlbnRFbWl0dGVyLFxuICBJTmV0d29ya01vbml0b3IsXG59IGZyb20gJ0B3YWxsZXRjb25uZWN0L3R5cGVzJztcblxuLy8gLS0gTmV0d29ya01vbml0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbmNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSU5ldHdvcmtNb25pdG9yIHtcbiAgcHJpdmF0ZSBfZXZlbnRFbWl0dGVyczogSU5ldHdvcmtFdmVudEVtaXR0ZXJbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9ldmVudEVtaXR0ZXJzID0gW107XG5cbiAgICBpZiAoXG4gICAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgdHlwZW9mICh3aW5kb3cgYXMgYW55KS5hZGRFdmVudExpc3RlbmVyICE9PSAndW5kZWZpbmVkJ1xuICAgICkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29ubGluZScsICgpID0+IHRoaXMudHJpZ2dlcignb25saW5lJykpO1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ29mZmxpbmUnLCAoKSA9PiB0aGlzLnRyaWdnZXIoJ29mZmxpbmUnKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uKGV2ZW50OiBOZXR3b3JrRXZlbnQsIGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fZXZlbnRFbWl0dGVycy5wdXNoKHtcbiAgICAgIGV2ZW50LFxuICAgICAgY2FsbGJhY2ssXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdHJpZ2dlcihldmVudDogTmV0d29ya0V2ZW50KTogdm9pZCB7XG4gICAgbGV0IGV2ZW50RW1pdHRlcnM6IElOZXR3b3JrRXZlbnRFbWl0dGVyW10gPSBbXTtcblxuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnRFbWl0dGVycyA9IHRoaXMuX2V2ZW50RW1pdHRlcnMuZmlsdGVyKFxuICAgICAgICAoZXZlbnRFbWl0dGVyOiBJTmV0d29ya0V2ZW50RW1pdHRlcikgPT4gZXZlbnRFbWl0dGVyLmV2ZW50ID09PSBldmVudCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZXZlbnRFbWl0dGVycy5mb3JFYWNoKChldmVudEVtaXR0ZXI6IElOZXR3b3JrRXZlbnRFbWl0dGVyKSA9PiB7XG4gICAgICBldmVudEVtaXR0ZXIuY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOZXR3b3JrTW9uaXRvcjtcbiJdfQ==
@@ -0,0 +1,22 @@
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("./connect"), exports);
18
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./errors"), exports);
20
+ __exportStar(require("./impl/socket-transport"), exports);
21
+ __exportStar(require("./modal"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy93YWxsZXRjb25uZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLDJDQUF5QjtBQUN6QiwwREFBd0M7QUFDeEMsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25uZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbXBsL3NvY2tldC10cmFuc3BvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RhbCc7XG4iXX0=
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XplaWalletconnectQrcodeModal = void 0;
4
+ const wallet_types_1 = require("@ksangkuk10/wallet-types");
5
+ const qrcode_1 = require("qrcode");
6
+ const browser_check_1 = require("../../utils/browser-check");
7
+ const modal_style_1 = require("./modal.style");
8
+ const walletName = {
9
+ [wallet_types_1.WalletApp.XPLA_VAULT]: 'XPLA Vault',
10
+ [wallet_types_1.WalletApp.XPLA_GAMES]: 'XPLA GAMES',
11
+ [wallet_types_1.WalletApp.XPLA_GAMES_NEW]: 'XPLA GAMES NEW',
12
+ [wallet_types_1.WalletApp.XPLAYZ]: 'xPlayz',
13
+ };
14
+ class XplaWalletconnectQrcodeModal {
15
+ constructor(walletApp) {
16
+ this.modalContainer = null;
17
+ this.styleContainer = null;
18
+ this.callback = null;
19
+ this.setCloseCallback = (callback) => {
20
+ this.callback = callback;
21
+ };
22
+ this.open = (uri, cb, _qrcodeModalOptions) => {
23
+ var _a, _b;
24
+ const modalContainer = document.createElement('div');
25
+ const stylecontainer = document.createElement('style');
26
+ const encodeURI = encodeURIComponent(uri);
27
+ const query = encodeURIComponent(`action=wallet_connect&payload=${encodeURI}`);
28
+ const walletSchemeUri = {
29
+ [wallet_types_1.WalletApp.XPLA_VAULT]: `https://xplavault.page.link/?link=https://www.xpla.io?${query}&apn=xpla.android&isi=1640593143&ibi=xpla.ios`,
30
+ [wallet_types_1.WalletApp.XPLA_GAMES]: `https://c2xvault.page.link/?link=https://www.xpla.games?${query}&apn=c2xvault.android&isi=1642858297&ibi=c2xvault.ios`,
31
+ [wallet_types_1.WalletApp.XPLA_GAMES_NEW]: `xgameswallet://wallet_connect?action=wallet_connect&payload=${query}`,
32
+ [wallet_types_1.WalletApp.XPLAYZ]: `https://xplayz.page.link/?link=https://www.zenaad.com?${query}&apn=com.zenaad.xplayz&isi=1524577064&ibi=com.zenaad.xplayz`,
33
+ };
34
+ let schemeUri = '';
35
+ let appName = '';
36
+ if (!this.walletApp || typeof this.walletApp === 'boolean') {
37
+ if (this.walletApp) {
38
+ // XPLA GAMES
39
+ schemeUri = walletSchemeUri[wallet_types_1.WalletApp.XPLA_GAMES];
40
+ appName = walletName[wallet_types_1.WalletApp.XPLA_GAMES];
41
+ }
42
+ else {
43
+ // XPLA Vault
44
+ schemeUri = walletSchemeUri[wallet_types_1.WalletApp.XPLA_VAULT];
45
+ appName = walletName[wallet_types_1.WalletApp.XPLA_VAULT];
46
+ }
47
+ }
48
+ else {
49
+ schemeUri = walletSchemeUri[this.walletApp];
50
+ appName = walletName[this.walletApp];
51
+ }
52
+ const element = createModalElement({
53
+ schemeUri,
54
+ onClose: () => {
55
+ if (this.callback) {
56
+ this.callback();
57
+ this.callback = null;
58
+ }
59
+ this.close();
60
+ },
61
+ appName
62
+ });
63
+ if ((0, browser_check_1.isMobile)()) {
64
+ window.location.href = schemeUri;
65
+ }
66
+ stylecontainer.textContent = modal_style_1.modalStyle;
67
+ modalContainer.appendChild(element);
68
+ (_a = document.querySelector('head')) === null || _a === void 0 ? void 0 : _a.appendChild(stylecontainer);
69
+ (_b = document.querySelector('body')) === null || _b === void 0 ? void 0 : _b.appendChild(modalContainer);
70
+ this.modalContainer = modalContainer;
71
+ this.styleContainer = stylecontainer;
72
+ };
73
+ this.close = () => {
74
+ var _a, _b;
75
+ if (this.modalContainer) {
76
+ (_a = this.modalContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.modalContainer);
77
+ }
78
+ if (this.styleContainer) {
79
+ (_b = this.styleContainer.parentElement) === null || _b === void 0 ? void 0 : _b.removeChild(this.styleContainer);
80
+ }
81
+ this.callback = null;
82
+ };
83
+ this.walletApp = walletApp;
84
+ }
85
+ }
86
+ exports.XplaWalletconnectQrcodeModal = XplaWalletconnectQrcodeModal;
87
+ function createModalElement({ schemeUri, onClose, appName }) {
88
+ const isMobile = (0, browser_check_1.isMobile)();
89
+ // ---------------------------------------------
90
+ // container
91
+ // ---------------------------------------------
92
+ const container = document.createElement('div');
93
+ container.setAttribute('class', 'wallet-wc-modal');
94
+ // ---------------------------------------------
95
+ // container > div.wallet-wc-modal--dim
96
+ // ---------------------------------------------
97
+ const dim = document.createElement('div');
98
+ dim.setAttribute('class', 'wallet-wc-modal--dim');
99
+ container.appendChild(dim);
100
+ // ---------------------------------------------
101
+ // container > div.wallet-wc-modal--content
102
+ // ---------------------------------------------
103
+ const content = document.createElement('section');
104
+ content.setAttribute('class', 'wallet-wc-modal--content');
105
+ content.setAttribute('data-device', isMobile ? 'mobile' : 'desktop');
106
+ container.appendChild(content);
107
+ // h1
108
+ const title = document.createElement('h1');
109
+ content.appendChild(title);
110
+ const img = document.createElement('img');
111
+ img.setAttribute('src', 'https://assets.xpla.io/icon/wallet-provider/walletconnect.svg');
112
+ img.setAttribute('style', 'width: 1em; margin-right: 10px; transform: scale(1.5) translateY(0.08em)');
113
+ const span = document.createElement('span');
114
+ span.textContent = 'Wallet Connect';
115
+ title.appendChild(img);
116
+ title.appendChild(span);
117
+ // p
118
+ const description = document.createElement('p');
119
+ description.textContent =
120
+ 'Scan QR code with a WalletConnect-compatible wallet';
121
+ content.appendChild(description);
122
+ if (isMobile) {
123
+ // button
124
+ const button = document.createElement('button');
125
+ button.addEventListener('click', () => {
126
+ window.location.href = schemeUri;
127
+ });
128
+ button.textContent = `Open ${appName}`;
129
+ content.appendChild(button);
130
+ }
131
+ else {
132
+ // qrcode
133
+ const canvas = document.createElement('canvas');
134
+ (0, qrcode_1.toCanvas)(canvas, schemeUri, {
135
+ width: 220,
136
+ margin: 0,
137
+ color: {
138
+ dark: '#2043b5ff',
139
+ },
140
+ });
141
+ content.appendChild(canvas);
142
+ }
143
+ // events
144
+ dim.addEventListener('click', onClose);
145
+ return container;
146
+ }
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy93YWxsZXRjb25uZWN0L21vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUFxRDtBQUVyRCxtQ0FBa0M7QUFDbEMsNkRBQXdFO0FBQ3hFLCtDQUEyQztBQUUzQyxNQUFNLFVBQVUsR0FBRztJQUNqQixDQUFDLHdCQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsWUFBWTtJQUNwQyxDQUFDLHdCQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsWUFBWTtJQUNwQyxDQUFDLHdCQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsZ0JBQWdCO0lBQzVDLENBQUMsd0JBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0NBQzdCLENBQUE7QUFFRCxNQUFhLDRCQUE0QjtJQUd2QyxZQUFZLFNBQStCO1FBSTNDLG1CQUFjLEdBQTBCLElBQUksQ0FBQztRQUM3QyxtQkFBYyxHQUE0QixJQUFJLENBQUM7UUFFdkMsYUFBUSxHQUF3QixJQUFJLENBQUM7UUFFN0MscUJBQWdCLEdBQUcsQ0FBQyxRQUFvQixFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDM0IsQ0FBQyxDQUFDO1FBRUYsU0FBSSxHQUFHLENBQ0wsR0FBVyxFQUNYLEVBQWMsRUFDZCxtQkFBeUMsRUFDekMsRUFBRTs7WUFDRixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFdkQsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUMsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQzlCLGlDQUFpQyxTQUFTLEVBQUUs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YUFDbEI7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQzdCO0lBRUQsU0FBUztJQUNULEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdkMsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdhbGxldEFwcCB9IGZyb20gJ0Brc2FuZ2t1azEwL3dhbGxldC10eXBlcyc7XG5pbXBvcnQgeyBJUVJDb2RlTW9kYWwsIElRUkNvZGVNb2RhbE9wdGlvbnMgfSBmcm9tICdAd2FsbGV0Y29ubmVjdC90eXBlcyc7XG5pbXBvcnQgeyB0b0NhbnZhcyB9IGZyb20gJ3FyY29kZSc7XG5pbXBvcnQgeyBpc01vYmlsZSBhcyBpc01vYmlsZUJyb3dzZXIgfSBmcm9tICcuLi8uLi91dGlscy9icm93c2VyLWNoZWNrJztcbmltcG9ydCB7IG1vZGFsU3R5bGUgfSBmcm9tICcuL21vZGFsLnN0eWxlJztcblxuY29uc3Qgd2FsbGV0TmFtZSA9IHtcbiAgW1dhbGxldEFwcC5YUExBX1ZBVUxUXTogJ1hQTEEgVmF1bHQnLFxuICBbV2FsbGV0QXBwLlhQTEFfR0FNRVNdOiAnWFBMQSBHQU1FUycsXG4gIFtXYWxsZXRBcHAuWFBMQV9HQU1FU19ORVddOiAnWFBMQSBHQU1FUyBORVcnLFxuICBbV2FsbGV0QXBwLlhQTEFZWl06ICd4UGxheXonLFxufVxuXG5leHBvcnQgY2xhc3MgWHBsYVdhbGxldGNvbm5lY3RRcmNvZGVNb2RhbCBpbXBsZW1lbnRzIElRUkNvZGVNb2RhbCB7XG4gIHdhbGxldEFwcD86IFdhbGxldEFwcCB8IGJvb2xlYW5cblxuICBjb25zdHJ1Y3Rvcih3YWxsZXRBcHA/OiBXYWxsZXRBcHAgfCBib29sZWFuKSB7XG4gICAgdGhpcy53YWxsZXRBcHAgPSB3YWxsZXRBcHBcbiAgfVxuXG4gIG1vZGFsQ29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBzdHlsZUNvbnRhaW5lcjogSFRNTFN0eWxlRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgY2FsbGJhY2s6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gIHNldENsb3NlQ2FsbGJhY2sgPSAoY2FsbGJhY2s6ICgpID0+IHZvaWQpID0+IHtcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gIH07XG5cbiAgb3BlbiA9IChcbiAgICB1cmk6IHN0cmluZyxcbiAgICBjYjogKCkgPT4gdm9pZCxcbiAgICBfcXJjb2RlTW9kYWxPcHRpb25zPzogSVFSQ29kZU1vZGFsT3B0aW9ucyxcbiAgKSA9PiB7XG4gICAgY29uc3QgbW9kYWxDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBjb25zdCBzdHlsZWNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG5cbiAgICBjb25zdCBlbmNvZGVVUkkgPSBlbmNvZGVVUklDb21wb25lbnQodXJpKTtcbiAgICBjb25zdCBxdWVyeSA9IGVuY29kZVVSSUNvbXBvbmVudChcbiAgICAgIGBhY3Rpb249d2FsbGV0X2Nvbm5lY3QmcGF5bG9hZD0ke2VuY29kZVVSSX1gLFxuICAgICk7XG5cbiAgICBjb25zdCB3YWxsZXRTY2hlbWVVcmkgPSB7XG4gICAgICBbV2FsbGV0QXBwLlhQTEFfVkFVTFRdOiBgaHR0cHM6Ly94cGxhdmF1bHQucGFnZS5saW5rLz9saW5rPWh0dHBzOi8vd3d3LnhwbGEuaW8/JHtxdWVyeX0mYXBuPXhwbGEuYW5kcm9pZCZpc2k9MTY0MDU5MzE0MyZpYmk9eHBsYS5pb3NgLFxuICAgICAgW1dhbGxldEFwcC5YUExBX0dBTUVTXTogYGh0dHBzOi8vYzJ4dmF1bHQucGFnZS5saW5rLz9saW5rPWh0dHBzOi8vd3d3LnhwbGEuZ2FtZXM/JHtxdWVyeX0mYXBuPWMyeHZhdWx0LmFuZHJvaWQmaXNpPTE2NDI4NTgyOTcmaWJpPWMyeHZhdWx0Lmlvc2AsXG4gICAgICBbV2FsbGV0QXBwLlhQTEFfR0FNRVNfTkVXXTogYHhnYW1lc3dhbGxldDovL3dhbGxldF9jb25uZWN0P2FjdGlvbj13YWxsZXRfY29ubmVjdCZwYXlsb2FkPSR7cXVlcnl9YCxcbiAgICAgIFtXYWxsZXRBcHAuWFBMQVlaXTogYGh0dHBzOi8veHBsYXl6LnBhZ2UubGluay8/bGluaz1odHRwczovL3d3dy56ZW5hYWQuY29tPyR7cXVlcnl9JmFwbj1jb20uemVuYWFkLnhwbGF5eiZpc2k9MTUyNDU3NzA2NCZpYmk9Y29tLnplbmFhZC54cGxheXpgLFxuICAgIH1cblxuICAgIGxldCBzY2hlbWVVcmkgPSAnJztcbiAgICBsZXQgYXBwTmFtZSA9ICcnO1xuXG4gICAgaWYgKCF0aGlzLndhbGxldEFwcCB8fCB0eXBlb2YgdGhpcy53YWxsZXRBcHAgPT09ICdib29sZWFuJykge1xuICAgICAgaWYgKHRoaXMud2FsbGV0QXBwKSB7XG4gICAgICAgIC8vIFhQTEEgR0FNRVNcbiAgICAgICAgc2NoZW1lVXJpID0gd2FsbGV0U2NoZW1lVXJpW1dhbGxldEFwcC5YUExBX0dBTUVTXTtcbiAgICAgICAgYXBwTmFtZSA9IHdhbGxldE5hbWVbV2FsbGV0QXBwLlhQTEFfR0FNRVNdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gWFBMQSBWYXVsdFxuICAgICAgICBzY2hlbWVVcmkgPSB3YWxsZXRTY2hlbWVVcmlbV2FsbGV0QXBwLlhQTEFfVkFVTFRdO1xuICAgICAgICBhcHBOYW1lID0gd2FsbGV0TmFtZVtXYWxsZXRBcHAuWFBMQV9WQVVMVF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjaGVtZVVyaSA9IHdhbGxldFNjaGVtZVVyaVt0aGlzLndhbGxldEFwcF07XG4gICAgICBhcHBOYW1lID0gd2FsbGV0TmFtZVt0aGlzLndhbGxldEFwcF07XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IGNyZWF0ZU1vZGFsRWxlbWVudCh7XG4gICAgICBzY2hlbWVVcmksXG4gICAgICBvbkNsb3NlOiAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNhbGxiYWNrKSB7XG4gICAgICAgICAgdGhpcy5jYWxsYmFjaygpO1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2sgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0sXG4gICAgICBhcHBOYW1lXG4gICAgfSk7XG5cbiAgICBpZiAoaXNNb2JpbGVCcm93c2VyKCkpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc2NoZW1lVXJpO1xuICAgIH1cblxuICAgIHN0eWxlY29udGFpbmVyLnRleHRDb250ZW50ID0gbW9kYWxTdHlsZTtcbiAgICBtb2RhbENvbnRhaW5lci5hcHBlbmRDaGlsZChlbGVtZW50KTtcblxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKT8uYXBwZW5kQ2hpbGQoc3R5bGVjb250YWluZXIpO1xuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKT8uYXBwZW5kQ2hpbGQobW9kYWxDb250YWluZXIpO1xuXG4gICAgdGhpcy5tb2RhbENvbnRhaW5lciA9IG1vZGFsQ29udGFpbmVyO1xuICAgIHRoaXMuc3R5bGVDb250YWluZXIgPSBzdHlsZWNvbnRhaW5lcjtcbiAgfTtcblxuICBjbG9zZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5tb2RhbENvbnRhaW5lcikge1xuICAgICAgdGhpcy5tb2RhbENvbnRhaW5lci5wYXJlbnRFbGVtZW50Py5yZW1vdmVDaGlsZCh0aGlzLm1vZGFsQ29udGFpbmVyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdHlsZUNvbnRhaW5lcikge1xuICAgICAgdGhpcy5zdHlsZUNvbnRhaW5lci5wYXJlbnRFbGVtZW50Py5yZW1vdmVDaGlsZCh0aGlzLnN0eWxlQ29udGFpbmVyKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhbGxiYWNrID0gbnVsbDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTW9kYWxFbGVtZW50KHtcbiAgc2NoZW1lVXJpLFxuICBvbkNsb3NlLFxuICBhcHBOYW1lXG59OiB7XG4gIHNjaGVtZVVyaTogc3RyaW5nO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBhcHBOYW1lOiBzdHJpbmc7XG59KTogSFRNTEVsZW1lbnQge1xuICBjb25zdCBpc01vYmlsZSA9IGlzTW9iaWxlQnJvd3NlcigpO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBjb250YWluZXJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb250YWluZXIuc2V0QXR0cmlidXRlKCdjbGFzcycsICd3YWxsZXQtd2MtbW9kYWwnKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gY29udGFpbmVyID4gZGl2LndhbGxldC13Yy1tb2RhbC0tZGltXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICBjb25zdCBkaW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgZGltLnNldEF0dHJpYnV0ZSgnY2xhc3MnLCAnd2FsbGV0LXdjLW1vZGFsLS1kaW0nKTtcblxuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZGltKTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gY29udGFpbmVyID4gZGl2LndhbGxldC13Yy1tb2RhbC0tY29udGVudFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgY29uc3QgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24nKTtcbiAgY29udGVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ3dhbGxldC13Yy1tb2RhbC0tY29udGVudCcpO1xuICBjb250ZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1kZXZpY2UnLCBpc01vYmlsZSA/ICdtb2JpbGUnIDogJ2Rlc2t0b3AnKTtcblxuICBjb250YWluZXIuYXBwZW5kQ2hpbGQoY29udGVudCk7XG5cbiAgLy8gaDFcbiAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdoMScpO1xuICBjb250ZW50LmFwcGVuZENoaWxkKHRpdGxlKTtcblxuICBjb25zdCBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgaW1nLnNldEF0dHJpYnV0ZShcbiAgICAnc3JjJyxcbiAgICAnaHR0cHM6Ly9hc3NldHMueHBsYS5pby9pY29uL3dhbGxldC1wcm92aWRlci93YWxsZXRjb25uZWN0LnN2ZycsXG4gICk7XG4gIGltZy5zZXRBdHRyaWJ1dGUoXG4gICAgJ3N0eWxlJyxcbiAgICAnd2lkdGg6IDFlbTsgbWFyZ2luLXJpZ2h0OiAxMHB4OyB0cmFuc2Zvcm06IHNjYWxlKDEuNSkgdHJhbnNsYXRlWSgwLjA4ZW0pJyxcbiAgKTtcblxuICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBzcGFuLnRleHRDb250ZW50ID0gJ1dhbGxldCBDb25uZWN0JztcblxuICB0aXRsZS5hcHBlbmRDaGlsZChpbWcpO1xuICB0aXRsZS5hcHBlbmRDaGlsZChzcGFuKTtcblxuICAvLyBwXG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICBkZXNjcmlwdGlvbi50ZXh0Q29udGVudCA9XG4gICAgJ1NjYW4gUVIgY29kZSB3aXRoIGEgV2FsbGV0Q29ubmVjdC1jb21wYXRpYmxlIHdhbGxldCc7XG4gIGNvbnRlbnQuYXBwZW5kQ2hpbGQoZGVzY3JpcHRpb24pO1xuXG4gIGlmIChpc01vYmlsZSkge1xuICAgIC8vIGJ1dHRvblxuICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc2NoZW1lVXJpO1xuICAgIH0pO1xuICAgIGJ1dHRvbi50ZXh0Q29udGVudCA9IGBPcGVuICR7YXBwTmFtZX1gO1xuXG4gICAgY29udGVudC5hcHBlbmRDaGlsZChidXR0b24pO1xuICB9IGVsc2Uge1xuICAgIC8vIHFyY29kZVxuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIHRvQ2FudmFzKGNhbnZhcywgc2NoZW1lVXJpLCB7XG4gICAgICB3aWR0aDogMjIwLFxuICAgICAgbWFyZ2luOiAwLFxuICAgICAgY29sb3I6IHtcbiAgICAgICAgZGFyazogJyMyMDQzYjVmZicsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29udGVudC5hcHBlbmRDaGlsZChjYW52YXMpO1xuICB9XG5cbiAgLy8gZXZlbnRzXG4gIGRpbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIG9uQ2xvc2UpO1xuXG4gIHJldHVybiBjb250YWluZXI7XG59XG4iXX0=
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.modalStyle = void 0;
4
+ // language=css
5
+ exports.modalStyle = `
6
+
7
+ @keyframes wallet-wc-modal--dim-enter {
8
+ 0% {
9
+ opacity: 0;
10
+ }
11
+
12
+ 100% {
13
+ opacity: 1;
14
+ }
15
+ }
16
+
17
+ @keyframes wallet-wc-modal--content-enter {
18
+ 0% {
19
+ opacity: 0;
20
+ transform: scale(0.4);
21
+ }
22
+
23
+ 100% {
24
+ opacity: 1;
25
+ transform: scale(1);
26
+ }
27
+ }
28
+
29
+ .wallet-wc-modal {
30
+ position: fixed;
31
+ z-index: 100000;
32
+
33
+ color: #212121;
34
+
35
+ left: 0;
36
+ top: 0;
37
+ width: 100vw;
38
+ height: 100vh;
39
+
40
+ display: grid;
41
+ place-content: center;
42
+ }
43
+
44
+ .wallet-wc-modal > .wallet-wc-modal--dim {
45
+ position: fixed;
46
+ z-index: -1;
47
+
48
+ left: 0;
49
+ top: 0;
50
+ width: 100vw;
51
+ height: 100vh;
52
+ background-color: rgba(0, 0, 0, 0.3);
53
+
54
+ animation: wallet-wc-modal--dim-enter 0.2s ease-in-out;
55
+ }
56
+
57
+ .wallet-wc-modal > .wallet-wc-modal--content {
58
+ border-radius: 8px;
59
+
60
+ background-color: #ffffff;
61
+ box-shadow: 0 4px 18px 3px rgba(0, 0, 0, 0.43);
62
+
63
+ text-align: center;
64
+
65
+ animation: wallet-wc-modal--content-enter 0.2s ease-in-out;
66
+ }
67
+
68
+ .wallet-wc-modal > .wallet-wc-modal--content h1 {
69
+ color: #3b99fc;
70
+
71
+ font-size: 20px;
72
+ font-family: sans-serif;
73
+ font-weight: bold;
74
+
75
+ margin: 0 0 12px 0;
76
+ display: flex;
77
+ align-items: center;
78
+ justify-content: center;
79
+ }
80
+
81
+ .wallet-wc-modal > .wallet-wc-modal--content h1 img {
82
+ margin-bottom: 4px;
83
+ }
84
+
85
+ .wallet-wc-modal > .wallet-wc-modal--content h1 span {
86
+ display: flex;
87
+ align-items: center;
88
+ line-height: 1;
89
+ }
90
+
91
+ .wallet-wc-modal > .wallet-wc-modal--content canvas {
92
+ margin: 0 auto;
93
+ }
94
+
95
+ .wallet-wc-modal > .wallet-wc-modal--content p {
96
+ color: #212121;
97
+
98
+ font-size: 14px;
99
+ font-family: sans-serif;
100
+
101
+ margin: 0 0 32px 0;
102
+ }
103
+
104
+ .wallet-wc-modal > .wallet-wc-modal--content button {
105
+ display: block;
106
+
107
+ cursor: pointer;
108
+ outline: none;
109
+ border: 0;
110
+
111
+ width: 295px;
112
+ height: 48px;
113
+ border-radius: 30px;
114
+
115
+ font-size: 14px;
116
+ font-weight: bold;
117
+
118
+ color: #ffffff;
119
+ background-color: #00b1ff;
120
+ }
121
+
122
+ .wallet-wc-modal > .wallet-wc-modal--content[data-device="desktop"] {
123
+ padding: 40px 80px;
124
+ }
125
+
126
+ .wallet-wc-modal > .wallet-wc-modal--content[data-device="mobile"] {
127
+ padding: 40px 20px;
128
+ }
129
+
130
+ .wallet-wc-modal > .wallet-wc-modal--content[data-device="mobile"] h1 {
131
+ margin-bottom: 32px;
132
+ }
133
+
134
+ .wallet-wc-modal > .wallet-wc-modal--content[data-device="mobile"] p {
135
+ display: none;
136
+ }
137
+ `;
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuc3R5bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy93YWxsZXRjb25uZWN0L21vZGFsLnN0eWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGVBQWU7QUFDRixRQUFBLFVBQVUsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBb0l6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbGFuZ3VhZ2U9Y3NzXG5leHBvcnQgY29uc3QgbW9kYWxTdHlsZSA9IGBcblxuQGtleWZyYW1lcyB3YWxsZXQtd2MtbW9kYWwtLWRpbS1lbnRlciB7XG4gIDAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIFxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgd2FsbGV0LXdjLW1vZGFsLS1jb250ZW50LWVudGVyIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjQpO1xuICB9XG4gIFxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cbn1cblxuLndhbGxldC13Yy1tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMTAwMDAwO1xuXG4gIGNvbG9yOiAjMjEyMTIxO1xuXG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMHZ3O1xuICBoZWlnaHQ6IDEwMHZoO1xuXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIHBsYWNlLWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLndhbGxldC13Yy1tb2RhbCA+IC53YWxsZXQtd2MtbW9kYWwtLWRpbSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogLTE7XG5cbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMTAwdnc7XG4gIGhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4zKTtcblxuICBhbmltYXRpb246IHdhbGxldC13Yy1tb2RhbC0tZGltLWVudGVyIDAuMnMgZWFzZS1pbi1vdXQ7XG59XG5cbi53YWxsZXQtd2MtbW9kYWwgPiAud2FsbGV0LXdjLW1vZGFsLS1jb250ZW50IHtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDE4cHggM3B4IHJnYmEoMCwgMCwgMCwgMC40Myk7XG4gIFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgYW5pbWF0aW9uOiB3YWxsZXQtd2MtbW9kYWwtLWNvbnRlbnQtZW50ZXIgMC4ycyBlYXNlLWluLW91dDtcbn1cblxuLndhbGxldC13Yy1tb2RhbCA+IC53YWxsZXQtd2MtbW9kYWwtLWNvbnRlbnQgaDEge1xuICBjb2xvcjogIzNiOTlmYztcbiAgXG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBcbiAgbWFyZ2luOiAwIDAgMTJweCAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cblxuLndhbGxldC13Yy1tb2RhbCA+IC53YWxsZXQtd2MtbW9kYWwtLWNvbnRlbnQgaDEgaW1nIHtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG59XG5cbi53YWxsZXQtd2MtbW9kYWwgPiAud2FsbGV0LXdjLW1vZGFsLS1jb250ZW50IGgxIHNwYW4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBsaW5lLWhlaWdodDogMTtcbn1cblxuLndhbGxldC13Yy1tb2RhbCA+IC53YWxsZXQtd2MtbW9kYWwtLWNvbnRlbnQgY2FudmFzIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLndhbGxldC13Yy1tb2RhbCA+IC53YWxsZXQtd2MtbW9kYWwtLWNvbnRlbnQgcCB7XG4gIGNvbG9yOiAjMjEyMTIxO1xuICBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgXG4gIG1hcmdpbjogMCAwIDMycHggMDtcbn1cblxuLndhbGxldC13Yy1tb2RhbCA+IC53YWxsZXQtd2MtbW9kYWwtLWNvbnRlbnQgYnV0dG9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJvcmRlcjogMDtcbiAgXG4gIHdpZHRoOiAyOTVweDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBib3JkZXItcmFkaXVzOiAzMHB4O1xuICBcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgXG4gIGNvbG9yOiAjZmZmZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiMWZmO1xufVxuXG4ud2FsbGV0LXdjLW1vZGFsID4gLndhbGxldC13Yy1tb2RhbC0tY29udGVudFtkYXRhLWRldmljZT1cImRlc2t0b3BcIl0ge1xuICBwYWRkaW5nOiA0MHB4IDgwcHg7XG59XG5cbi53YWxsZXQtd2MtbW9kYWwgPiAud2FsbGV0LXdjLW1vZGFsLS1jb250ZW50W2RhdGEtZGV2aWNlPVwibW9iaWxlXCJdIHtcbiAgcGFkZGluZzogNDBweCAyMHB4O1xufVxuXG4ud2FsbGV0LXdjLW1vZGFsID4gLndhbGxldC13Yy1tb2RhbC0tY29udGVudFtkYXRhLWRldmljZT1cIm1vYmlsZVwiXSBoMSB7XG4gIG1hcmdpbi1ib3R0b206IDMycHg7XG59XG5cbi53YWxsZXQtd2MtbW9kYWwgPiAud2FsbGV0LXdjLW1vZGFsLS1jb250ZW50W2RhdGEtZGV2aWNlPVwibW9iaWxlXCJdIHAge1xuICBkaXNwbGF5OiBub25lO1xufVxuYDtcbiJdfQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WalletConnectSessionStatus = void 0;
4
+ // ---------------------------------------------
5
+ // session
6
+ // ---------------------------------------------
7
+ var WalletConnectSessionStatus;
8
+ (function (WalletConnectSessionStatus) {
9
+ WalletConnectSessionStatus["REQUESTED"] = "REQUESTED";
10
+ WalletConnectSessionStatus["CONNECTED"] = "CONNECTED";
11
+ WalletConnectSessionStatus["DISCONNECTED"] = "DISCONNECTED";
12
+ })(WalletConnectSessionStatus = exports.WalletConnectSessionStatus || (exports.WalletConnectSessionStatus = {}));
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvQGtzYW5na3VrMTAvd2FsbGV0LWNvbnRyb2xsZXIvbW9kdWxlcy93YWxsZXRjb25uZWN0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUFnRDtBQUNoRCxVQUFVO0FBQ1YsZ0RBQWdEO0FBQ2hELElBQVksMEJBSVg7QUFKRCxXQUFZLDBCQUEwQjtJQUNwQyxxREFBdUIsQ0FBQTtJQUN2QixxREFBdUIsQ0FBQTtJQUN2QiwyREFBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSlcsMEJBQTBCLEdBQTFCLGtDQUEwQixLQUExQixrQ0FBMEIsUUFJckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQ2xpZW50TWV0YSB9IGZyb20gJ0B3YWxsZXRjb25uZWN0L3R5cGVzJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBzZXNzaW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBlbnVtIFdhbGxldENvbm5lY3RTZXNzaW9uU3RhdHVzIHtcbiAgUkVRVUVTVEVEID0gJ1JFUVVFU1RFRCcsXG4gIENPTk5FQ1RFRCA9ICdDT05ORUNURUQnLFxuICBESVNDT05ORUNURUQgPSAnRElTQ09OTkVDVEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRDb25uZWN0U2Vzc2lvblJlcXVlc3RlZCB7XG4gIHN0YXR1czogV2FsbGV0Q29ubmVjdFNlc3Npb25TdGF0dXMuUkVRVUVTVEVEO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdhbGxldENvbm5lY3RTZXNzaW9uQ29ubmVjdGVkIHtcbiAgc3RhdHVzOiBXYWxsZXRDb25uZWN0U2Vzc2lvblN0YXR1cy5DT05ORUNURUQ7XG4gIGNoYWluSWQ6IG51bWJlcjtcbiAgeHBsYUFkZHJlc3M6IHN0cmluZztcbiAgcGVlck1ldGE6IElDbGllbnRNZXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdhbGxldENvbm5lY3RTZXNzaW9uRGlzY29ubmVjdGVkIHtcbiAgc3RhdHVzOiBXYWxsZXRDb25uZWN0U2Vzc2lvblN0YXR1cy5ESVNDT05ORUNURUQ7XG59XG5cbmV4cG9ydCB0eXBlIFdhbGxldENvbm5lY3RTZXNzaW9uID1cbiAgfCBXYWxsZXRDb25uZWN0U2Vzc2lvblJlcXVlc3RlZFxuICB8IFdhbGxldENvbm5lY3RTZXNzaW9uQ29ubmVjdGVkXG4gIHwgV2FsbGV0Q29ubmVjdFNlc3Npb25EaXNjb25uZWN0ZWQ7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gdHhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGludGVyZmFjZSBXYWxsZXRDb25uZWN0VHhSZXN1bHQge1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgcmF3X2xvZzogc3RyaW5nO1xuICB0eGhhc2g6IHN0cmluZztcbn1cbiJdfQ==