diff --git a/README.md b/README.md
index c6debc8..5eac7e0 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,8 @@
Signing provider for dApps: Maiar DeFi Wallet.
+An integration sample can be found [here](examples/app.js). However, for all purposes, **we recommend using [dapp-core](https://github.com/ElrondNetwork/dapp-core)** instead of integrating the signing provider on your own.
+
## Distribution
[npm](https://www.npmjs.com/package/@elrondnetwork/erdjs-extension-provider)
diff --git a/examples/app.js b/examples/app.js
index f8c9d57..25cbe6c 100644
--- a/examples/app.js
+++ b/examples/app.js
@@ -1,71 +1,62 @@
import { ExtensionProvider } from "../out/extensionProvider";
-import { TransactionFactoryLocator, SignableMessageFactoryLocator } from "../out/locators";
+import { Address } from "../out/primitives";
+import { DummyMessage } from "./dummyMessage";
+import { DummyTransaction } from "./dummyTransaction";
-export async function main() {
+export async function login() {
let provider = ExtensionProvider.getInstance();
await provider.init();
let address = await provider.login();
- console.log("Address:", address);
- // Setup transaction factory (dependency of extension provider).
- TransactionFactoryLocator.setTransactionFactory({
- fromPlainObject: function(obj) {
- console.log("transactionFactory.fromPlainObject()");
- console.log(obj);
- // In production, if using erdjs, a Transaction object could be created & returned.
- return obj;
- }
- });
+ alert(`Address: ${address}`);
+}
+
+export async function signTransactions() {
+ let provider = ExtensionProvider.getInstance();
- // Setup message factory (dependency of extension provider).
- SignableMessageFactoryLocator.setMessageFactory({
- fromPlainObject: function(obj) {
- console.log("messageFactory.fromPlainObject()");
- console.log(obj);
- // In production, if using erdjs, a SignableMessage object could be created & returned.
- return obj;
- }
+ let firstTransaction = new DummyTransaction({
+ nonce: 42,
+ value: "1",
+ receiver: new Address("erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa"),
+ gasPrice: 1000000000,
+ gasLimit: 50000,
+ data: "",
+ chainID: "T",
+ version: 1
});
- // Sign a transaction
- let firstTransaction = await provider.signTransaction({
- toPlainObject: function() {
- return {
- nonce: 42,
- value: "1",
- receiver: "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa",
- gasPrice: 1000000000,
- gasLimit: 50000,
- data: "",
- chainID: "T"
- };
- }
+ let secondTransaction = new DummyTransaction({
+ nonce: 43,
+ value: "100000000",
+ receiver: new Address("erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa"),
+ gasPrice: 1000000000,
+ gasLimit: 50000,
+ data: "hello world",
+ chainID: "T",
+ version: 1
});
+ await provider.signTransactions([firstTransaction, secondTransaction]);
console.log("First transaction, upon signing:");
console.log(firstTransaction);
+ console.log("Second transaction, upon signing:");
+ console.log(secondTransaction);
- // Sign & broadcast another transaction.
- // This should fail (bad nonce etc.)
- await provider.sendTransaction({
- toPlainObject: function() {
- return {
- nonce: 43,
- value: "1",
- receiver: "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa",
- gasPrice: 1000000000,
- gasLimit: 200000,
- data: Buffer.from("hello").toString("base64"),
- chainID: "T"
- };
- }
- });
+ alert(`Signatures: [${firstTransaction.signature}, ${secondTransaction.signature}]`);
+}
- // Sign a message.
- let message = await provider.signMessage({
- message: "hello"
+export async function signMessages() {
+ let provider = ExtensionProvider.getInstance();
+
+ let message = new DummyMessage({
+ message: Buffer.from("hello")
});
+ await provider.signMessage(message);
console.log("Message, upon signing:");
console.log(message);
+
+ alert(`Signature: ${message.signature}`);
}
+
+
diff --git a/examples/dummyMessage.js b/examples/dummyMessage.js
new file mode 100644
index 0000000..c1b5a2c
--- /dev/null
+++ b/examples/dummyMessage.js
@@ -0,0 +1,15 @@
+export class DummyMessage {
+ address = null;
+ message = Buffer.from("");
+ signature = null;
+
+ constructor(init) {
+ Object.assign(this, init);
+ }
+
+ applySignature(signature, signedBy) {
+ this.signature = signature.hex();
+ this.address = signedBy.bech32();
+ console.log("applySignature()", this.signature, this.signedBy);
+ }
+}
diff --git a/examples/dummyTransaction.js b/examples/dummyTransaction.js
new file mode 100644
index 0000000..6cdf1ff
--- /dev/null
+++ b/examples/dummyTransaction.js
@@ -0,0 +1,37 @@
+export class DummyTransaction {
+ nonce = 0;
+ value = "";
+ receiver = null;
+ sender = null;
+ gasPrice = 0;
+ gasLimit = 0;
+ data = "";
+ chainID = "";
+ version = 0;
+ options = undefined;
+ signature = null;
+
+ constructor(init) {
+ Object.assign(this, init);
+ }
+
+ toPlainObject() {
+ return {
+ nonce: this.nonce,
+ value: this.value,
+ receiver: this.receiver.bech32(),
+ gasPrice: this.gasPrice,
+ gasLimit: this.gasLimit,
+ data: Buffer.from(this.data).toString("base64"),
+ chainID: this.chainID,
+ version: this.version,
+ options: this.options
+ };
+ }
+
+ applySignature(signature, signedBy) {
+ this.signature = signature.hex();
+ this.address = signedBy.bech32();
+ console.log("applySignature()", this.signature, this.signedBy);
+ }
+}
diff --git a/examples/index.html b/examples/index.html
index d68f294..aed2f02 100644
--- a/examples/index.html
+++ b/examples/index.html
@@ -7,13 +7,23 @@
-
+
+
+
diff --git a/package-lock.json b/package-lock.json
index 45b1715..08a90da 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@elrondnetwork/erdjs-extension-provider",
- "version": "1.0.0",
+ "version": "2.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@elrondnetwork/erdjs-extension-provider",
- "version": "1.0.0",
+ "version": "2.0.0",
"license": "GPL-3.0-or-later",
"devDependencies": {
"@types/node": "17.0.23",
@@ -16,12 +16,13 @@
}
},
"node_modules/@ampproject/remapping": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
- "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
"dev": true,
"dependencies": {
- "@jridgewell/trace-mapping": "^0.3.0"
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
},
"engines": {
"node": ">=6.0.0"
@@ -40,34 +41,34 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
- "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz",
+ "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==",
"dev": true,
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/core": {
- "version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz",
- "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz",
+ "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==",
"dev": true,
"dependencies": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.17.7",
- "@babel/helper-compilation-targets": "^7.17.7",
+ "@babel/generator": "^7.17.10",
+ "@babel/helper-compilation-targets": "^7.17.10",
"@babel/helper-module-transforms": "^7.17.7",
- "@babel/helpers": "^7.17.8",
- "@babel/parser": "^7.17.8",
+ "@babel/helpers": "^7.17.9",
+ "@babel/parser": "^7.17.10",
"@babel/template": "^7.16.7",
- "@babel/traverse": "^7.17.3",
- "@babel/types": "^7.17.0",
+ "@babel/traverse": "^7.17.10",
+ "@babel/types": "^7.17.10",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
- "json5": "^2.1.2",
+ "json5": "^2.2.1",
"semver": "^6.3.0"
},
"engines": {
@@ -94,28 +95,28 @@
"dev": true
},
"node_modules/@babel/generator": {
- "version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
- "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz",
+ "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==",
"dev": true,
"dependencies": {
- "@babel/types": "^7.17.0",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
+ "@babel/types": "^7.17.10",
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "jsesc": "^2.5.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
- "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz",
+ "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==",
"dev": true,
"dependencies": {
- "@babel/compat-data": "^7.17.7",
+ "@babel/compat-data": "^7.17.10",
"@babel/helper-validator-option": "^7.16.7",
- "browserslist": "^4.17.5",
+ "browserslist": "^4.20.2",
"semver": "^6.3.0"
},
"engines": {
@@ -138,26 +139,13 @@
}
},
"node_modules/@babel/helper-function-name": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
- "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
+ "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==",
"dev": true,
"dependencies": {
- "@babel/helper-get-function-arity": "^7.16.7",
"@babel/template": "^7.16.7",
- "@babel/types": "^7.16.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-get-function-arity": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
- "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.17.0"
},
"engines": {
"node": ">=6.9.0"
@@ -258,13 +246,13 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz",
- "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz",
+ "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==",
"dev": true,
"dependencies": {
"@babel/template": "^7.16.7",
- "@babel/traverse": "^7.17.3",
+ "@babel/traverse": "^7.17.9",
"@babel/types": "^7.17.0"
},
"engines": {
@@ -272,9 +260,9 @@
}
},
"node_modules/@babel/highlight": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
- "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz",
+ "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==",
"dev": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.16.7",
@@ -286,9 +274,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz",
- "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz",
+ "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -334,9 +322,9 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz",
- "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz",
+ "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==",
"dev": true,
"dependencies": {
"@babel/helper-module-transforms": "^7.17.7",
@@ -366,19 +354,19 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.17.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
- "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz",
+ "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.17.3",
+ "@babel/generator": "^7.17.10",
"@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
+ "@babel/helper-function-name": "^7.17.9",
"@babel/helper-hoist-variables": "^7.16.7",
"@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/parser": "^7.17.3",
- "@babel/types": "^7.17.0",
+ "@babel/parser": "^7.17.10",
+ "@babel/types": "^7.17.10",
"debug": "^4.1.0",
"globals": "^11.1.0"
},
@@ -387,9 +375,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
- "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz",
+ "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==",
"dev": true,
"dependencies": {
"@babel/helper-validator-identifier": "^7.16.7",
@@ -399,10 +387,32 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/@jridgewell/resolve-uri": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
- "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==",
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz",
+ "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz",
+ "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==",
"dev": true,
"engines": {
"node": ">=6.0.0"
@@ -415,9 +425,9 @@
"dev": true
},
"node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz",
- "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==",
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
@@ -934,9 +944,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.20.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
- "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
+ "version": "4.20.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz",
+ "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==",
"dev": true,
"funding": [
{
@@ -949,10 +959,10 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001317",
- "electron-to-chromium": "^1.4.84",
+ "caniuse-lite": "^1.0.30001332",
+ "electron-to-chromium": "^1.4.118",
"escalade": "^3.1.1",
- "node-releases": "^2.0.2",
+ "node-releases": "^2.0.3",
"picocolors": "^1.0.0"
},
"bin": {
@@ -1010,9 +1020,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001322",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001322.tgz",
- "integrity": "sha512-neRmrmIrCGuMnxGSoh+x7zYtQFFgnSY2jaomjU56sCkTA6JINqQrxutF459JpWcWRajvoyn95sOXq4Pqrnyjew==",
+ "version": "1.0.30001335",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz",
+ "integrity": "sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w==",
"dev": true,
"funding": [
{
@@ -1218,15 +1228,19 @@
}
},
"node_modules/define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
"dev": true,
"dependencies": {
- "object-keys": "^1.0.12"
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
},
"engines": {
"node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/defined": {
@@ -1314,9 +1328,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.4.101",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.101.tgz",
- "integrity": "sha512-XJH+XmJjACx1S7ASl/b//KePcda5ocPnFH2jErztXcIS8LpP0SE6rX8ZxiY5/RaDPnaF1rj0fPaHfppzb0e2Aw==",
+ "version": "1.4.129",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz",
+ "integrity": "sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ==",
"dev": true
},
"node_modules/elliptic": {
@@ -1341,9 +1355,9 @@
"dev": true
},
"node_modules/es-abstract": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz",
- "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==",
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz",
+ "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
@@ -1357,7 +1371,7 @@
"is-callable": "^1.2.4",
"is-negative-zero": "^2.0.2",
"is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.1",
+ "is-shared-array-buffer": "^1.0.2",
"is-string": "^1.0.7",
"is-weakref": "^1.0.2",
"object-inspect": "^1.12.0",
@@ -1578,9 +1592,9 @@
}
},
"node_modules/has-bigints": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -1595,6 +1609,18 @@
"node": ">=4"
}
},
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "dependencies": {
+ "get-intrinsic": "^1.1.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
@@ -1838,9 +1864,9 @@
}
},
"node_modules/is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
"dev": true,
"dependencies": {
"has": "^1.0.3"
@@ -1892,9 +1918,9 @@
}
},
"node_modules/is-number-object": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
- "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
"dependencies": {
"has-tostringtag": "^1.0.0"
@@ -1923,10 +1949,13 @@
}
},
"node_modules/is-shared-array-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
- "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
"dev": true,
+ "dependencies": {
+ "call-bind": "^1.0.2"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -2189,9 +2218,9 @@
"dev": true
},
"node_modules/node-releases": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
- "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz",
+ "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==",
"dev": true
},
"node_modules/object-assign": {
@@ -2822,14 +2851,14 @@
}
},
"node_modules/unbox-primitive": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
"dev": true,
"dependencies": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
"which-boxed-primitive": "^1.0.2"
},
"funding": {
@@ -2948,12 +2977,13 @@
},
"dependencies": {
"@ampproject/remapping": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz",
- "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
"dev": true,
"requires": {
- "@jridgewell/trace-mapping": "^0.3.0"
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
}
},
"@babel/code-frame": {
@@ -2966,31 +2996,31 @@
}
},
"@babel/compat-data": {
- "version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz",
- "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz",
+ "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==",
"dev": true
},
"@babel/core": {
- "version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz",
- "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz",
+ "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==",
"dev": true,
"requires": {
"@ampproject/remapping": "^2.1.0",
"@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.17.7",
- "@babel/helper-compilation-targets": "^7.17.7",
+ "@babel/generator": "^7.17.10",
+ "@babel/helper-compilation-targets": "^7.17.10",
"@babel/helper-module-transforms": "^7.17.7",
- "@babel/helpers": "^7.17.8",
- "@babel/parser": "^7.17.8",
+ "@babel/helpers": "^7.17.9",
+ "@babel/parser": "^7.17.10",
"@babel/template": "^7.16.7",
- "@babel/traverse": "^7.17.3",
- "@babel/types": "^7.17.0",
+ "@babel/traverse": "^7.17.10",
+ "@babel/types": "^7.17.10",
"convert-source-map": "^1.7.0",
"debug": "^4.1.0",
"gensync": "^1.0.0-beta.2",
- "json5": "^2.1.2",
+ "json5": "^2.2.1",
"semver": "^6.3.0"
},
"dependencies": {
@@ -3012,25 +3042,25 @@
}
},
"@babel/generator": {
- "version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
- "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz",
+ "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==",
"dev": true,
"requires": {
- "@babel/types": "^7.17.0",
- "jsesc": "^2.5.1",
- "source-map": "^0.5.0"
+ "@babel/types": "^7.17.10",
+ "@jridgewell/gen-mapping": "^0.1.0",
+ "jsesc": "^2.5.1"
}
},
"@babel/helper-compilation-targets": {
- "version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz",
- "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz",
+ "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==",
"dev": true,
"requires": {
- "@babel/compat-data": "^7.17.7",
+ "@babel/compat-data": "^7.17.10",
"@babel/helper-validator-option": "^7.16.7",
- "browserslist": "^4.17.5",
+ "browserslist": "^4.20.2",
"semver": "^6.3.0"
}
},
@@ -3044,23 +3074,13 @@
}
},
"@babel/helper-function-name": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz",
- "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz",
+ "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==",
"dev": true,
"requires": {
- "@babel/helper-get-function-arity": "^7.16.7",
"@babel/template": "^7.16.7",
- "@babel/types": "^7.16.7"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz",
- "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.16.7"
+ "@babel/types": "^7.17.0"
}
},
"@babel/helper-hoist-variables": {
@@ -3134,20 +3154,20 @@
"dev": true
},
"@babel/helpers": {
- "version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz",
- "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz",
+ "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==",
"dev": true,
"requires": {
"@babel/template": "^7.16.7",
- "@babel/traverse": "^7.17.3",
+ "@babel/traverse": "^7.17.9",
"@babel/types": "^7.17.0"
}
},
"@babel/highlight": {
- "version": "7.16.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz",
- "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz",
+ "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.16.7",
@@ -3156,9 +3176,9 @@
}
},
"@babel/parser": {
- "version": "7.17.8",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz",
- "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz",
+ "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==",
"dev": true
},
"@babel/plugin-syntax-async-generators": {
@@ -3189,9 +3209,9 @@
}
},
"@babel/plugin-transform-modules-commonjs": {
- "version": "7.17.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz",
- "integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==",
+ "version": "7.17.9",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz",
+ "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==",
"dev": true,
"requires": {
"@babel/helper-module-transforms": "^7.17.7",
@@ -3212,37 +3232,53 @@
}
},
"@babel/traverse": {
- "version": "7.17.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
- "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz",
+ "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.16.7",
- "@babel/generator": "^7.17.3",
+ "@babel/generator": "^7.17.10",
"@babel/helper-environment-visitor": "^7.16.7",
- "@babel/helper-function-name": "^7.16.7",
+ "@babel/helper-function-name": "^7.17.9",
"@babel/helper-hoist-variables": "^7.16.7",
"@babel/helper-split-export-declaration": "^7.16.7",
- "@babel/parser": "^7.17.3",
- "@babel/types": "^7.17.0",
+ "@babel/parser": "^7.17.10",
+ "@babel/types": "^7.17.10",
"debug": "^4.1.0",
"globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.17.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz",
- "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==",
+ "version": "7.17.10",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz",
+ "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==",
"dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.16.7",
"to-fast-properties": "^2.0.0"
}
},
+ "@jridgewell/gen-mapping": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.0",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
"@jridgewell/resolve-uri": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz",
- "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==",
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz",
+ "integrity": "sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw==",
+ "dev": true
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz",
+ "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==",
"dev": true
},
"@jridgewell/sourcemap-codec": {
@@ -3252,9 +3288,9 @@
"dev": true
},
"@jridgewell/trace-mapping": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz",
- "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==",
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
"requires": {
"@jridgewell/resolve-uri": "^3.0.3",
@@ -3718,15 +3754,15 @@
}
},
"browserslist": {
- "version": "4.20.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz",
- "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==",
+ "version": "4.20.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.3.tgz",
+ "integrity": "sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001317",
- "electron-to-chromium": "^1.4.84",
+ "caniuse-lite": "^1.0.30001332",
+ "electron-to-chromium": "^1.4.118",
"escalade": "^3.1.1",
- "node-releases": "^2.0.2",
+ "node-releases": "^2.0.3",
"picocolors": "^1.0.0"
}
},
@@ -3775,9 +3811,9 @@
}
},
"caniuse-lite": {
- "version": "1.0.30001322",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001322.tgz",
- "integrity": "sha512-neRmrmIrCGuMnxGSoh+x7zYtQFFgnSY2jaomjU56sCkTA6JINqQrxutF459JpWcWRajvoyn95sOXq4Pqrnyjew==",
+ "version": "1.0.30001335",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz",
+ "integrity": "sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w==",
"dev": true
},
"chalk": {
@@ -3956,12 +3992,13 @@
}
},
"define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
"dev": true,
"requires": {
- "object-keys": "^1.0.12"
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
}
},
"defined": {
@@ -4038,9 +4075,9 @@
}
},
"electron-to-chromium": {
- "version": "1.4.101",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.101.tgz",
- "integrity": "sha512-XJH+XmJjACx1S7ASl/b//KePcda5ocPnFH2jErztXcIS8LpP0SE6rX8ZxiY5/RaDPnaF1rj0fPaHfppzb0e2Aw==",
+ "version": "1.4.129",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz",
+ "integrity": "sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ==",
"dev": true
},
"elliptic": {
@@ -4067,9 +4104,9 @@
}
},
"es-abstract": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz",
- "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==",
+ "version": "1.19.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz",
+ "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
@@ -4083,7 +4120,7 @@
"is-callable": "^1.2.4",
"is-negative-zero": "^2.0.2",
"is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.1",
+ "is-shared-array-buffer": "^1.0.2",
"is-string": "^1.0.7",
"is-weakref": "^1.0.2",
"object-inspect": "^1.12.0",
@@ -4253,9 +4290,9 @@
}
},
"has-bigints": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
- "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
"dev": true
},
"has-flag": {
@@ -4264,6 +4301,15 @@
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
+ "has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.1"
+ }
+ },
"has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
@@ -4447,9 +4493,9 @@
"dev": true
},
"is-core-module": {
- "version": "2.8.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
- "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
+ "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
"dev": true,
"requires": {
"has": "^1.0.3"
@@ -4480,9 +4526,9 @@
"dev": true
},
"is-number-object": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
- "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
"dev": true,
"requires": {
"has-tostringtag": "^1.0.0"
@@ -4499,10 +4545,13 @@
}
},
"is-shared-array-buffer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
- "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
- "dev": true
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
},
"is-string": {
"version": "1.0.7",
@@ -4707,9 +4756,9 @@
"dev": true
},
"node-releases": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz",
- "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.4.tgz",
+ "integrity": "sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ==",
"dev": true
},
"object-assign": {
@@ -5228,14 +5277,14 @@
"dev": true
},
"unbox-primitive": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
- "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
"dev": true,
"requires": {
- "function-bind": "^1.1.1",
- "has-bigints": "^1.0.1",
- "has-symbols": "^1.0.2",
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
"which-boxed-primitive": "^1.0.2"
}
},
diff --git a/package.json b/package.json
index 431456b..4be5a76 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@elrondnetwork/erdjs-extension-provider",
- "version": "1.0.0",
+ "version": "2.0.0",
"description": "Signing provider for dApps: Maiar DeFi Wallet",
"main": "out/index.js",
"types": "out/index.d.js",
diff --git a/src/extensionProvider.ts b/src/extensionProvider.ts
index 5f5f97d..aa55849 100644
--- a/src/extensionProvider.ts
+++ b/src/extensionProvider.ts
@@ -1,5 +1,6 @@
-import { IDappProvider, ISignableMessage, ISignableMessageFactory, ISignedMessage, ISignedTransaction, ITransaction, ITransactionFactory } from "./interface";
-import { SignableMessageFactoryLocator, TransactionFactoryLocator } from "./locators";
+import { ISignableMessage, ITransaction } from "./interface";
+import { Address, Signature } from "./primitives";
+import { Operation } from "./operation";
declare global {
interface Window {
@@ -13,11 +14,11 @@ interface IExtensionAccount {
signature?: string;
}
-export class ExtensionProvider implements IDappProvider {
+export class ExtensionProvider {
public account: IExtensionAccount;
private initialized: boolean = false;
private static _instance: ExtensionProvider = new ExtensionProvider();
-
+
private constructor() {
if (ExtensionProvider._instance) {
throw new Error(
@@ -57,7 +58,7 @@ export class ExtensionProvider implements IDappProvider {
}
const { token } = options;
const data = token ? token : "";
- await this.startBgrMsgChannel("connect", data);
+ await this.startBgrMsgChannel(Operation.Connect, data);
return this.account.address;
}
@@ -68,7 +69,7 @@ export class ExtensionProvider implements IDappProvider {
);
}
try {
- await this.startBgrMsgChannel("logout", this.account.address);
+ await this.startBgrMsgChannel(Operation.Logout, this.account.address);
} catch (error) {
console.warn("Extension origin url is already cleared!", error);
}
@@ -93,69 +94,40 @@ export class ExtensionProvider implements IDappProvider {
return !!this.account;
}
- async sendTransaction(transaction: ITransaction): Promise {
- const txResponse = await this.startBgrMsgChannel("sendTransactions", {
- from: this.account.address,
- transactions: [transaction.toPlainObject()],
- });
-
- return this.getTransactionFactory().fromPlainObject(txResponse[0]);
+ async signTransaction(transaction: ITransaction) {
+ await this.signTransactions([transaction]);
}
- async signTransaction(transaction: ITransaction): Promise {
- const txResponse = await this.startBgrMsgChannel("signTransactions", {
+ async signTransactions(transactions: Array) {
+ const extensionResponse = await this.startBgrMsgChannel(Operation.SignTransactions, {
from: this.account.address,
- transactions: [transaction.toPlainObject()],
+ transactions: transactions.map(transaction => transaction.toPlainObject()),
});
- return this.getTransactionFactory().fromPlainObject(txResponse[0]);
- }
- async signTransactions(
- transactions: Array
- ): Promise> {
- transactions = transactions.map((transaction) =>
- transaction.toPlainObject()
- );
- let txResponse = await this.startBgrMsgChannel("signTransactions", {
- from: this.account.address,
- transactions: transactions,
- });
try {
- // TODO: Find out whether transaction.applySignature() is better suited here,
- // It seems that the extension only sets "sender" and "signature"
- // (version, nonce, chainID, gasLimit etc. do not seem to ever be overridden).
- // If so, we don't need factories here.
- txResponse = txResponse.map((transaction: any) =>
- this.getTransactionFactory().fromPlainObject(transaction)
- );
- } catch (error) {
- throw new Error("Transaction canceled.");
+ for (let i = 0; i < transactions.length; i++) {
+ let transaction = transactions[i];
+ let plainSignedTransaction = extensionResponse[i];
+
+ transaction.applySignature(new Signature(plainSignedTransaction.signature), new Address(this.account.address));
+ }
+ } catch (error: any) {
+ throw new Error(`Transaction canceled: ${error.message}.`);
}
-
- return txResponse;
}
- async signMessage(message: ISignableMessage): Promise {
+ async signMessage(message: ISignableMessage) {
const data = {
account: this.account.address,
- // TODO: Why not message.serializeForSigningRaw()?
- message: message.message.toString(),
+ message: message.message.toString()
};
- const signResponse = await this.startBgrMsgChannel("signMessage", data);
- // TODO: Find out whether message.applySignature() is better suited here.
- // If so, we don't need factories here.
- const signedMsg = this.getMessageFactory().fromPlainObject({
- // TODO: Why not signResponse.address?
- address: data.account,
- message: Buffer.from(signResponse.message),
- signature: signResponse.signature
- });
-
- return signedMsg;
+ const extensionResponse = await this.startBgrMsgChannel(Operation.SignMessage, data);
+ message.applySignature(new Signature(extensionResponse.signature), new Address(this.account.address));
+ return message;
}
cancelAction() {
- return this.startBgrMsgChannel("cancelAction", {});
+ return this.startBgrMsgChannel(Operation.CancelAction, {});
}
private startBgrMsgChannel(
@@ -187,12 +159,4 @@ export class ExtensionProvider implements IDappProvider {
window.addEventListener("message", eventHandler, false);
});
}
-
- private getTransactionFactory(): ITransactionFactory {
- return TransactionFactoryLocator.getTransactionFactory();
- }
-
- private getMessageFactory(): ISignableMessageFactory {
- return SignableMessageFactoryLocator.getMessageFactory();
- }
}
diff --git a/src/index.ts b/src/index.ts
index 5c51fa9..6980473 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,2 +1 @@
export * from "./extensionProvider";
-export * from "./locators";
diff --git a/src/interface.ts b/src/interface.ts
index 712bd58..48f465c 100644
--- a/src/interface.ts
+++ b/src/interface.ts
@@ -1,34 +1,17 @@
-export interface IDappProvider {
- init(): Promise;
- login(options?: {callbackUrl?: string; token?: string; addressIndex?: number}): Promise;
- logout(options?: {callbackUrl?: string}): Promise;
- getAddress(): Promise;
- isInitialized(): boolean;
- isConnected(): Promise;
- sendTransaction(transaction: ITransaction, options?: {callbackUrl?: string}): Promise;
- signTransaction(transaction: ITransaction, options?: {callbackUrl?: string}): Promise;
- signTransactions(transaction: Array, options?: {callbackUrl?: string}): Promise>;
- signMessage(transaction: ISignableMessage, options?: {callbackUrl?: string}): Promise;
+export interface ISignature {
+ hex(): string;
}
-export interface ITransaction {
- toPlainObject(): any;
+export interface IAddress {
+ bech32(): string;
}
-export interface ISignedTransaction {
+export interface ITransaction {
+ toPlainObject(): any;
+ applySignature(signature: ISignature, signedBy: IAddress): void;
}
export interface ISignableMessage {
message: Buffer;
-}
-
-export interface ISignedMessage {
-}
-
-export interface ITransactionFactory {
- fromPlainObject(obj: any): ISignedTransaction;
-}
-
-export interface ISignableMessageFactory {
- fromPlainObject(obj: any): ISignedMessage;
+ applySignature(signature: ISignature, signedBy: IAddress): void;
}
diff --git a/src/locators.ts b/src/locators.ts
deleted file mode 100644
index c61c976..0000000
--- a/src/locators.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import { ErrIncorrectSetup } from "./errors";
-import { ISignableMessageFactory, ITransactionFactory } from "./interface";
-
-export class TransactionFactoryLocator {
- private static factory: ITransactionFactory;
-
- static setTransactionFactory(factory: ITransactionFactory) {
- this.factory = factory;
- }
-
- static getTransactionFactory() {
- if (!this.factory) {
- throw new ErrIncorrectSetup("[ITransactionFactory] isn't set on [TransactionFactoryLocator]");
- }
-
- return this.factory;
- }
-}
-
-export class SignableMessageFactoryLocator {
- private static factory: ISignableMessageFactory;
-
- static setMessageFactory(factory: ISignableMessageFactory) {
- this.factory = factory;
- }
-
- static getMessageFactory() {
- if (!this.factory) {
- throw new ErrIncorrectSetup("[ISignableMessageFactory] isn't set on [SignableMessageFactoryLocator]");
- }
-
- return this.factory;
- }
-}
diff --git a/src/operation.ts b/src/operation.ts
new file mode 100644
index 0000000..d5921a2
--- /dev/null
+++ b/src/operation.ts
@@ -0,0 +1,7 @@
+export enum Operation {
+ Connect = "connect",
+ Logout = "logout",
+ SignTransactions = "signTransactions",
+ SignMessage = "signMessage",
+ CancelAction = "cancelAction",
+}
diff --git a/src/primitives.ts b/src/primitives.ts
new file mode 100644
index 0000000..1eed6f8
--- /dev/null
+++ b/src/primitives.ts
@@ -0,0 +1,26 @@
+import { IAddress } from "./interface";
+import { ISignature } from "./interface";
+
+export class Address implements IAddress {
+ private readonly value: string;
+
+ public constructor(value: string) {
+ this.value = value;
+ }
+
+ bech32(): string {
+ return this.value;
+ }
+}
+
+export class Signature implements ISignature {
+ private readonly value: string;
+
+ constructor(value: string) {
+ this.value = value;
+ }
+
+ hex() {
+ return this.value;
+ }
+}