@xelis/sdk 0.10.11 → 0.11.0

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.
@@ -21,7 +21,7 @@ var App = /** @class */ (function () {
21
21
  this.errElement.classList.add("xelis-xswd-relayer-error");
22
22
  this.qrCodeElement = document.createElement("div");
23
23
  this.qrCodeElement.classList.add("xelis-xswd-relayer-qrcode");
24
- this.qrCodeElement.innerHTML = "\n <div>XSWD Relayer</div>\n <canvas></canvas>\n ";
24
+ this.qrCodeElement.innerHTML = "\n <div class=\"xelis-xswd-relayer-scan-logo\">\n <svg fill=\"currentColor\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4,4h6v6H4V4M20,4v6H14V4h6M14,15h2V13H14V11h2v2h2V11h2v2H18v2h2v3H18v2H16V18H13v2H11V16h3V15m2,0v3h2V15H16M4,20V14h6v6H4M6,6V8H8V6H6M16,6V8h2V6H16M6,16v2H8V16H6M4,11H6v2H4V11m5,0h4v4H11V13H9V11m2-5h2v4H11V6M2,2V6H0V2A2,2,0,0,1,2,0H6V2H2M22,0a2,2,0,0,1,2,2V6H22V2H18V0h4M2,18v4H6v2H2a2,2,0,0,1-2-2V18H2m20,4V18h2v4a2,2,0,0,1-2,2H18V22Z\"/>\n </svg>\n </div>\n <div class=\"xelis-xswd-relayer-logo-wrap\">\n <div class=\"xelis-xswd-relayer-logo\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 778 743\" fill=\"currentColor\">\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M388.909 742.872L777.817 353.964L424.056 0.202599L478.809 132.737L700.036 353.964L388.909 665.091L77.7817 353.964L299.507 129.121L353.964 0L0 353.964L388.909 742.872Z\" />\n <path d=\"M388.909 665.091L353.964 0L299.507 129.121L388.909 665.091Z\" />\n <path d=\"M424.056 0.202599L388.909 665.091L478.809 132.737L424.056 0.202599Z\" />\n </svg>\n </div>\n </div>\n <div class=\"xelis-xswd-relayer-title\">XSWD Relayer</div>\n <canvas></canvas>\n ";
25
25
  this.element.addEventListener("click", function (e) {
26
26
  // close the app if clicking outside
27
27
  if (_this.element.isEqualNode(e.target)) {
@@ -38,7 +38,7 @@ var App = /** @class */ (function () {
38
38
  };
39
39
  App.prototype.setError = function (msg) {
40
40
  this.clear();
41
- this.errElement.innerHTML = "error: ".concat(msg);
41
+ this.errElement.innerHTML = "\n <div class=\"xelis-xswd-relayer-error-text\">error: ".concat(msg, "</div>\n ");
42
42
  this.contentElement.appendChild(this.errElement);
43
43
  };
44
44
  App.prototype.setLoading = function () {
@@ -54,7 +54,12 @@ var App = /** @class */ (function () {
54
54
  relayer: this.relayer.props.url,
55
55
  encryption_mode: this.relayer.props.encryption_mode
56
56
  });
57
- qrcode_1["default"].toCanvas(canvas, qrCodeData);
57
+ qrcode_1["default"].toCanvas(canvas, qrCodeData, {
58
+ color: {
59
+ dark: "#fff",
60
+ light: "#000" // background
61
+ }
62
+ });
58
63
  this.contentElement.appendChild(this.qrCodeElement);
59
64
  };
60
65
  return App;
@@ -1,11 +1,21 @@
1
1
  .xelis-xswd-relayer {
2
+ font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
2
3
  position: fixed;
3
4
  top: 0;
4
5
  left: 0;
5
6
  bottom: 0;
6
7
  right: 0;
7
- background-color: rgba(0, 0, 0, 0.5);
8
- backdrop-filter: blur(10px);
8
+ background-color: rgba(0, 0, 0, 0.8);
9
+ backdrop-filter: blur(30px);
10
+ opacity: 0;
11
+ animation: xelis-xswd-relayer-appear .25s forwards;
12
+ user-select: none;
13
+ }
14
+
15
+ @keyframes xelis-xswd-relayer-appear {
16
+ 100% {
17
+ opacity: 1;
18
+ }
9
19
  }
10
20
 
11
21
  .xelis-xswd-relayer-content {
@@ -13,16 +23,51 @@
13
23
  top: 50%;
14
24
  left: 50%;
15
25
  translate: -50% -50%;
16
- background-color: aquamarine;
17
- filter: drop-shadow(0px 0px 25px black);
18
26
  }
19
27
 
20
- .xelis-xswd-relayer-error {}
28
+ .xelis-xswd-relayer-error {
29
+ background-color: #02ffcf;
30
+ padding: 15px;
31
+ border-radius: 10px;
32
+ animation: xelis-xswd-relayer-error-appear .5s forwards;
33
+ opacity: 0;
34
+ }
35
+
36
+ @keyframes xelis-xswd-relayer-error-appear {
37
+ 25% {
38
+ translate: -4px 0;
39
+ rotate: -3deg;
40
+ }
41
+
42
+ 50% {
43
+ translate: 4px 0;
44
+ rotate: 3deg;
45
+ }
46
+
47
+ 75% {
48
+ translate: -4px 0;
49
+ rotate: -3deg;
50
+ }
51
+
52
+ 100% {
53
+ opacity: 1;
54
+ translate: 0 0;
55
+ rotate: 0;
56
+ }
57
+ }
58
+
59
+
60
+ .xelis-xswd-relayer-error-text {
61
+ background-color: rgba(31, 31, 31, 1);
62
+ border-radius: 5px;
63
+ padding: 5px 10px;
64
+ color: rgb(255, 63, 63);
65
+ }
21
66
 
22
67
  .xelis-xswd-relayer-loading {
23
- width: 50px;
24
- height: 50px;
25
- color: black;
68
+ width: 75px;
69
+ height: 75px;
70
+ color: #02ffcf;
26
71
  animation: xelis-xswd-relayer-loading-animation .75s infinite;
27
72
  }
28
73
 
@@ -32,6 +77,87 @@
32
77
  }
33
78
  }
34
79
 
35
- .xelis-xswd-relayer-qrcode {}
80
+ .xelis-xswd-relayer-qrcode {
81
+ background-color: rgba(2, 255, 207, 1);
82
+ padding: 30px 30px 50px 30px;
83
+ border-radius: 15px;
84
+ animation: xelis-xswd-relayer-qrcode-appear .25s forwards, xelis-xswd-relayer-qrcode-animation 2s infinite alternate;
85
+ translate: 0 -100%;
86
+ opacity: 0;
87
+ position: relative;
88
+ }
89
+
90
+ @keyframes xelis-xswd-relayer-qrcode-appear {
91
+ 100% {
92
+ translate: 0 0;
93
+ opacity: 1;
94
+ }
95
+ }
96
+
97
+ @keyframes xelis-xswd-relayer-qrcode-animation {
98
+ 0% {
99
+ background-color: rgba(2, 255, 207, 0.3);
100
+ filter: drop-shadow(0px 0px 100px rgba(2, 255, 209, 0.1));
101
+ }
102
+
103
+ 100% {
104
+ background-color: rgba(2, 255, 207, 1);
105
+ filter: drop-shadow(0px 0px 200px rgba(2, 255, 209, 0.1));
106
+ }
107
+ }
108
+
109
+ .xelis-xswd-relayer-scan-logo {
110
+ position: absolute;
111
+ bottom: -30px;
112
+ left: 50%;
113
+ translate: -50% 0;
114
+ width: 25px;
115
+ height: 25px;
116
+ color: white;
117
+ background-color: black;
118
+ padding: 20px;
119
+ border-radius: 100%;
120
+ }
121
+
122
+ .xelis-xswd-relayer-logo-wrap {
123
+ position: absolute;
124
+ width: 100%;
125
+ height: 100%;
126
+ overflow: hidden;
127
+ top: 0;
128
+ left: 0;
129
+ border-radius: 15px;
130
+ }
131
+
132
+ .xelis-xswd-relayer-logo {
133
+ position: absolute;
134
+ width: 100%;
135
+ height: 100%;
136
+ top: 25%;
137
+ left: 5%;
138
+ scale: 1.8;
139
+ z-index: -1;
140
+ animation: xelis-xswd-relayer-logo-animation 2s infinite alternate;
141
+ }
142
+
143
+ @keyframes xelis-xswd-relayer-logo-animation {
144
+ 0% {
145
+ color: rgba(0, 206, 168, 0);
146
+ }
147
+
148
+ 100% {
149
+ color: rgba(0, 206, 168, 0.8);
150
+ }
151
+ }
152
+
153
+
154
+ .xelis-xswd-relayer-title {
155
+ font-size: 25px;
156
+ font-weight: bold;
157
+ margin-bottom: 10px;
158
+ color: black;
159
+ }
36
160
 
37
- .xelis-xswd-relayer-qrcode canvas {}
161
+ .xelis-xswd-relayer-qrcode canvas {
162
+ border-radius: 10px;
163
+ }
@@ -21,9 +21,9 @@ var websocket_2 = require("../daemon/websocket");
21
21
  var websocket_3 = require("../wallet/websocket");
22
22
  var WS = /** @class */ (function (_super) {
23
23
  __extends(WS, _super);
24
- function WS() {
25
- var _this = _super.call(this) || this;
26
- _this.timeout = 0;
24
+ function WS(endpoint) {
25
+ var _this = _super.call(this, endpoint) || this;
26
+ _this.callTimeout = 0; // xswd needs user input for confirmation - timeout should not be used
27
27
  _this.daemon = new websocket_2.DaemonMethods(_this, "node.");
28
28
  _this.wallet = new websocket_3.WalletMethods(_this, "wallet.");
29
29
  return _this;
@@ -24,65 +24,11 @@ var DaemonMethods = /** @class */ (function () {
24
24
  DaemonMethods.prototype.dataCall = function (method, params) {
25
25
  return this.ws.dataCall(this.prefix + method, params);
26
26
  };
27
- DaemonMethods.prototype.onNewBlock = function (onData) {
28
- return this.ws.listenEvent(this.prefix + RPCEvent.NewBlock, onData);
27
+ DaemonMethods.prototype.closeListener = function (event, listener) {
28
+ this.ws.closeListener(event, listener);
29
29
  };
30
- DaemonMethods.prototype.onBlockOrdered = function (onData) {
31
- return this.ws.listenEvent(this.prefix + RPCEvent.BlockOrdered, onData);
32
- };
33
- DaemonMethods.prototype.onBlockOrphaned = function (onData) {
34
- return this.ws.listenEvent(this.prefix + RPCEvent.BlockOrphaned, onData);
35
- };
36
- DaemonMethods.prototype.onStableHeightChanged = function (onData) {
37
- return this.ws.listenEvent(this.prefix + RPCEvent.StableHeightChanged, onData);
38
- };
39
- DaemonMethods.prototype.onStableTopoHeightChanged = function (onData) {
40
- return this.ws.listenEvent(this.prefix + RPCEvent.StableTopoHeightChanged, onData);
41
- };
42
- DaemonMethods.prototype.onTransactionOrphaned = function (onData) {
43
- return this.ws.listenEvent(this.prefix + RPCEvent.TransactionOrphaned, onData);
44
- };
45
- DaemonMethods.prototype.onTransactionAddedInMempool = function (onData) {
46
- return this.ws.listenEvent(this.prefix + RPCEvent.TransactionAddedInMempool, onData);
47
- };
48
- DaemonMethods.prototype.onTransactionExecuted = function (onData) {
49
- return this.ws.listenEvent(this.prefix + RPCEvent.TransactionExecuted, onData);
50
- };
51
- DaemonMethods.prototype.onInvokeContract = function (contract, onData) {
52
- var _a;
53
- return this.ws.listenEvent((_a = {}, _a[this.prefix + RPCEvent.InvokeContract] = { contract: contract }, _a), onData);
54
- };
55
- DaemonMethods.prototype.onContractTransfer = function (address, onData) {
56
- var _a;
57
- return this.ws.listenEvent((_a = {}, _a[this.prefix + RPCEvent.ContractTransfer] = { address: address }, _a), onData);
58
- };
59
- DaemonMethods.prototype.onContractEvent = function (contract, id, onData) {
60
- var _a;
61
- return this.ws.listenEvent((_a = {}, _a[this.prefix + RPCEvent.ContractEvent] = { contract: contract, id: id }, _a), onData);
62
- };
63
- DaemonMethods.prototype.onDeployContract = function (onData) {
64
- return this.ws.listenEvent(this.prefix + RPCEvent.DeployContract, onData);
65
- };
66
- DaemonMethods.prototype.onNewAsset = function (onData) {
67
- return this.ws.listenEvent(this.prefix + RPCEvent.NewAsset, onData);
68
- };
69
- DaemonMethods.prototype.onPeerConnected = function (onData) {
70
- return this.ws.listenEvent(this.prefix + RPCEvent.PeerConnected, onData);
71
- };
72
- DaemonMethods.prototype.onPeerDisconnected = function (onData) {
73
- return this.ws.listenEvent(this.prefix + RPCEvent.PeerDisconnected, onData);
74
- };
75
- DaemonMethods.prototype.onPeerStateUpdated = function (onData) {
76
- return this.ws.listenEvent(this.prefix + RPCEvent.PeerStateUpdated, onData);
77
- };
78
- DaemonMethods.prototype.onPeerPeerListUpdated = function (onData) {
79
- return this.ws.listenEvent(this.prefix + RPCEvent.PeerPeerListUpdated, onData);
80
- };
81
- DaemonMethods.prototype.onPeerPeerDisconnected = function (onData) {
82
- return this.ws.listenEvent(this.prefix + RPCEvent.PeerPeerDisconnected, onData);
83
- };
84
- DaemonMethods.prototype.onNewBlockTemplate = function (onData) {
85
- return this.ws.listenEvent(this.prefix + RPCEvent.NewBlockTemplate, onData);
30
+ DaemonMethods.prototype.listen = function (event, listener) {
31
+ this.ws.listen(this.prefix + event, listener);
86
32
  };
87
33
  DaemonMethods.prototype.getVersion = function () {
88
34
  return this.dataCall(RPCMethod.GetVersion);
@@ -293,8 +239,8 @@ var DaemonMethods = /** @class */ (function () {
293
239
  export { DaemonMethods };
294
240
  var WS = /** @class */ (function (_super) {
295
241
  __extends(WS, _super);
296
- function WS() {
297
- var _this = _super.call(this) || this;
242
+ function WS(endpoint) {
243
+ var _this = _super.call(this, endpoint) || this;
298
244
  _this.methods = new DaemonMethods(_this);
299
245
  return _this;
300
246
  }
@@ -1,39 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
1
  var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
38
2
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
39
3
  if (ar || !(i in from)) {
@@ -44,49 +8,34 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
44
8
  return to.concat(ar || Array.prototype.slice.call(from));
45
9
  };
46
10
  import React, { createContext, useContext, useEffect, useState } from 'react';
47
- import { to } from 'await-to-js';
48
11
  import DaemonWS from '../daemon/websocket.js';
49
12
  export var INITIATING = -1;
50
- var daemon = new DaemonWS();
51
13
  var Context = createContext({
52
14
  err: undefined,
53
- daemon: daemon,
15
+ daemon: undefined,
54
16
  readyState: INITIATING
55
17
  });
56
18
  export var NodeSocketProvider = function (props) {
57
19
  var children = props.children, endpoint = props.endpoint, timeout = props.timeout;
58
20
  var _a = useState(INITIATING), readyState = _a[0], setReadyState = _a[1];
59
21
  var _b = useState(), err = _b[0], setErr = _b[1];
22
+ var _c = useState(), daemon = _c[0], setDaemon = _c[1];
60
23
  useEffect(function () {
61
- var connect = function () { return __awaiter(void 0, void 0, void 0, function () {
62
- var _a, err, _;
63
- return __generator(this, function (_b) {
64
- switch (_b.label) {
65
- case 0:
66
- setErr(undefined);
67
- return [4 /*yield*/, to(daemon.connect(endpoint))];
68
- case 1:
69
- _a = _b.sent(), err = _a[0], _ = _a[1];
70
- if (err)
71
- setErr(err);
72
- return [2 /*return*/];
73
- }
74
- });
75
- }); };
76
- connect();
24
+ var daemon = new DaemonWS(endpoint);
25
+ setDaemon(daemon);
26
+ return function () { return daemon.socket.close(); };
77
27
  }, [endpoint]);
78
28
  useEffect(function () {
79
29
  if (!timeout)
80
30
  return;
81
- daemon.timeout = timeout;
31
+ if (daemon)
32
+ daemon.callTimeout = timeout;
82
33
  }, [timeout]);
83
34
  useEffect(function () {
84
- if (!daemon.socket)
35
+ if (!daemon)
85
36
  return;
86
37
  setReadyState(daemon.socket.readyState);
87
38
  var onOpen = function () {
88
- if (!daemon.socket)
89
- return;
90
39
  setReadyState(daemon.socket.readyState);
91
40
  setErr(undefined);
92
41
  };
@@ -112,31 +61,24 @@ export var NodeSocketProvider = function (props) {
112
61
  daemon.socket.removeEventListener("close", onClose);
113
62
  daemon.socket.removeEventListener("error", onError);
114
63
  };
115
- }, [daemon.socket]);
64
+ }, [daemon]);
116
65
  return React.createElement(Context.Provider, { value: { daemon: daemon, err: err, readyState: readyState } }, children);
117
66
  };
118
67
  export var useNodeSocketSubscribe = function (_a, dependencies) {
119
68
  var event = _a.event, onLoad = _a.onLoad, onData = _a.onData;
120
69
  var nodeSocket = useNodeSocket();
121
70
  useEffect(function () {
71
+ if (!nodeSocket.daemon)
72
+ return;
122
73
  if (nodeSocket.readyState !== WebSocket.OPEN)
123
74
  return;
124
75
  if (typeof onLoad === "function")
125
76
  onLoad();
126
- var closeEvent;
127
- var listen = function () { return __awaiter(void 0, void 0, void 0, function () {
128
- return __generator(this, function (_a) {
129
- switch (_a.label) {
130
- case 0: return [4 /*yield*/, nodeSocket.daemon.listenEvent(event, onData)];
131
- case 1:
132
- closeEvent = _a.sent();
133
- return [2 /*return*/];
134
- }
135
- });
136
- }); };
137
- listen();
77
+ nodeSocket.daemon.listen(event, onData);
138
78
  return function () {
139
- closeEvent && closeEvent();
79
+ if (!nodeSocket.daemon)
80
+ return;
81
+ nodeSocket.daemon.closeListener(event, onData);
140
82
  };
141
83
  }, __spreadArray([nodeSocket], dependencies, true));
142
84
  };