aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2020-10-24 22:13:47 -0700
committerAdam Soltys <[email protected]>2020-10-24 22:33:52 -0700
commit12091db2a92bc52e3ae97eab98a4d9f7c1a3dd08 (patch)
treee8767781dbd19d62f089277c1bc979ac97aeae48
parentae9e9e0fa9cffd2545aa210321b34ce2bb5c4b8b (diff)
downloadcoinos-server-12091db2a92bc52e3ae97eab98a4d9f7c1a3dd08.tar.gz
coinos-server-12091db2a92bc52e3ae97eab98a4d9f7c1a3dd08.zip
funding and withdrawals
-rw-r--r--.gitignore1
-rw-r--r--db/index.js2
-rw-r--r--db/models/deposits.js75
-rw-r--r--db/models/users.js9
-rw-r--r--db/models/withdrawals.js102
-rw-r--r--db/schema.sql61
-rw-r--r--index.js9
-rw-r--r--lib/whitelist.js1
-rw-r--r--package.json1
-rw-r--r--routes/assets.js8
-rw-r--r--routes/funding.js82
-rw-r--r--routes/swaps.js2
-rw-r--r--yarn.lock65
13 files changed, 397 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore
index 84c6d61f..f23b1deb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@ leveldb
swaps
exceptions
fx
+uploads
diff --git a/db/index.js b/db/index.js
index 2ee61643..197a7f86 100644
--- a/db/index.js
+++ b/db/index.js
@@ -10,11 +10,13 @@ db = new Sequelize(conf.database, conf.username, conf.password, {
require("./models/accounts.js");
require("./models/codes.js");
+require("./models/deposits.js");
require("./models/invoices.js");
require("./models/keys.js");
require("./models/payments.js");
require("./models/orders.js");
require("./models/users.js");
+require("./models/withdrawals.js");
const { User, Account, Payment, Invoice, Key, Order } = db;
diff --git a/db/models/deposits.js b/db/models/deposits.js
new file mode 100644
index 00000000..df870330
--- /dev/null
+++ b/db/models/deposits.js
@@ -0,0 +1,75 @@
+const { DataTypes } = require('sequelize');
+
+const attributes = {
+ id: {
+ type: DataTypes.INTEGER(11),
+ allowNull: false,
+ defaultValue: null,
+ primaryKey: true,
+ autoIncrement: true,
+ comment: null,
+ field: "id"
+ },
+ amount: {
+ type: DataTypes.DOUBLE,
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "amount"
+ },
+ user_id: {
+ type: DataTypes.INTEGER(11),
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "user_id"
+ },
+ createdAt: {
+ type: DataTypes.DATE,
+ allowNull: false,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "createdAt"
+ },
+ updatedAt: {
+ type: DataTypes.DATE,
+ allowNull: false,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "updatedAt"
+ },
+ credited: {
+ type: DataTypes.BOOLEAN,
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "credited"
+ },
+ code: {
+ type: DataTypes.STRING(255),
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "code"
+ },
+};
+
+const options = {
+ tableName: "deposits",
+ comment: "",
+ indexes: []
+};
+
+db["Deposit"] = db.define("deposits_model", attributes, options);
diff --git a/db/models/users.js b/db/models/users.js
index 1bb4caaa..48384767 100644
--- a/db/models/users.js
+++ b/db/models/users.js
@@ -10,6 +10,15 @@ const attributes = {
comment: null,
field: "id"
},
+ verified: {
+ type: DataTypes.STRING,
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "verified"
+ },
fiat: {
type: DataTypes.BOOLEAN,
allowNull: true,
diff --git a/db/models/withdrawals.js b/db/models/withdrawals.js
new file mode 100644
index 00000000..7ece9b58
--- /dev/null
+++ b/db/models/withdrawals.js
@@ -0,0 +1,102 @@
+const { DataTypes } = require('sequelize');
+
+const attributes = {
+ id: {
+ type: DataTypes.INTEGER(11),
+ allowNull: false,
+ defaultValue: null,
+ primaryKey: true,
+ autoIncrement: true,
+ comment: null,
+ field: "id"
+ },
+ amount: {
+ type: DataTypes.DOUBLE,
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "amount"
+ },
+ user_id: {
+ type: DataTypes.INTEGER(11),
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "user_id"
+ },
+ createdAt: {
+ type: DataTypes.DATE,
+ allowNull: false,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "createdAt"
+ },
+ updatedAt: {
+ type: DataTypes.DATE,
+ allowNull: false,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "updatedAt"
+ },
+ transit: {
+ type: DataTypes.STRING(255),
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "transit"
+ },
+ institution: {
+ type: DataTypes.STRING(255),
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "institution"
+ },
+ account: {
+ type: DataTypes.STRING(255),
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "account"
+ },
+ email: {
+ type: DataTypes.STRING(255),
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "email"
+ },
+ notes: {
+ type: DataTypes.TEXT,
+ allowNull: true,
+ defaultValue: null,
+ primaryKey: false,
+ autoIncrement: false,
+ comment: null,
+ field: "notes"
+ },
+};
+
+const options = {
+ tableName: "withdrawals",
+ comment: "",
+ indexes: []
+};
+
+db["Withdrawal"] = db.define("withdrawals_model", attributes, options);
diff --git a/db/schema.sql b/db/schema.sql
index 51dd6ed8..0cc7f74b 100644
--- a/db/schema.sql
+++ b/db/schema.sql
@@ -1,8 +1,8 @@
--- MySQL dump 10.17 Distrib 10.3.24-MariaDB, for debian-linux-gnu (x86_64)
+-- MySQL dump 10.17 Distrib 10.3.25-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: localhost Database: coinos
-- ------------------------------------------------------
--- Server version 10.3.24-MariaDB-1:10.3.24+maria~bionic
+-- Server version 10.3.25-MariaDB-1:10.3.25+maria~bionic
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
@@ -66,7 +66,7 @@ CREATE TABLE `accounts` (
`network` varchar(255) DEFAULT NULL,
`privkey` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=4095 DEFAULT CHARSET=latin1;
+) ENGINE=InnoDB AUTO_INCREMENT=4108 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -84,6 +84,25 @@ CREATE TABLE `codes` (
/*!40101 SET character_set_client = @saved_cs_client */;
--
+-- Table structure for table `deposits`
+--
+
+DROP TABLE IF EXISTS `deposits`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `deposits` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `user_id` int(11) DEFAULT NULL,
+ `createdAt` datetime NOT NULL,
+ `updatedAt` datetime NOT NULL,
+ `amount` double DEFAULT NULL,
+ `credited` tinyint(1) DEFAULT NULL,
+ `code` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4110 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
-- Table structure for table `invoices`
--
@@ -109,7 +128,7 @@ CREATE TABLE `invoices` (
`account_id` int(11) DEFAULT NULL,
`path` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=7010 DEFAULT CHARSET=latin1;
+) ENGINE=InnoDB AUTO_INCREMENT=7341 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -126,7 +145,7 @@ CREATE TABLE `linkingkeys` (
`createdAt` datetime NOT NULL,
`updatedAt` datetime NOT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=4606 DEFAULT CHARSET=latin1;
+) ENGINE=InnoDB AUTO_INCREMENT=4612 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -149,7 +168,7 @@ CREATE TABLE `orders` (
`a1_id` int(11) DEFAULT NULL,
`a2_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=9062 DEFAULT CHARSET=utf8mb4;
+) ENGINE=InnoDB AUTO_INCREMENT=9106 DEFAULT CHARSET=utf8mb4;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -181,7 +200,7 @@ CREATE TABLE `payments` (
`redeemed` tinyint(1) NOT NULL DEFAULT 0,
`path` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=38830 DEFAULT CHARSET=latin1;
+) ENGINE=InnoDB AUTO_INCREMENT=38951 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
@@ -225,9 +244,33 @@ CREATE TABLE `users` (
`linkingKeys` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`fiat` tinyint(1) NOT NULL DEFAULT 0,
`index` int(11) NOT NULL DEFAULT 0,
+ `verified` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ip` (`ip`)
-) ENGINE=InnoDB AUTO_INCREMENT=730 DEFAULT CHARSET=latin1;
+) ENGINE=InnoDB AUTO_INCREMENT=736 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Table structure for table `withdrawals`
+--
+
+DROP TABLE IF EXISTS `withdrawals`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `withdrawals` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `user_id` int(11) NOT NULL,
+ `createdAt` datetime NOT NULL,
+ `updatedAt` datetime NOT NULL,
+ `amount` double DEFAULT NULL,
+ `completed` tinyint(1) DEFAULT NULL,
+ `transit` varchar(255) DEFAULT NULL,
+ `account` varchar(255) DEFAULT NULL,
+ `institution` varchar(255) DEFAULT NULL,
+ `notes` text DEFAULT NULL,
+ `email` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4113 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
@@ -239,4 +282,4 @@ CREATE TABLE `users` (
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
--- Dump completed on 2020-10-09 10:06:08
+-- Dump completed on 2020-10-24 15:08:28
diff --git a/index.js b/index.js
index 115fdc26..a84df00d 100644
--- a/index.js
+++ b/index.js
@@ -12,7 +12,7 @@ l = require("pino")();
config = require("./config");
networks = [];
prod = process.env.NODE_ENV === "production";
-fail = (msg) => {
+fail = msg => {
throw new Error(msg);
};
@@ -26,7 +26,7 @@ if (config.liquid) networks.push("liquid");
if (config.lna) networks.push("lightning");
SATS = 100000000;
-toSats = (n) => parseInt((n * SATS).toFixed());
+toSats = n => parseInt((n * SATS).toFixed());
app = express();
app.enable("trust proxy");
@@ -53,6 +53,7 @@ require("./routes/payments");
require("./routes/info");
require("./routes/swaps");
require("./routes/users");
+require("./routes/funding");
if (config.lnurl) {
require("./routes/lnurl");
@@ -63,7 +64,7 @@ app.use((err, req, res, next) => {
path: req.path,
body: req.body,
msg: err.message,
- stack: err.stack,
+ stack: err.stack
};
if (req.user) details.username = req.user.username;
@@ -71,7 +72,7 @@ app.use((err, req, res, next) => {
l.error("Error: ", details);
res.status(500);
res.set({
- "Cache-Control": "no-cache",
+ "Cache-Control": "no-cache"
});
res.send(err.message);
return res.end();
diff --git a/lib/whitelist.js b/lib/whitelist.js
index a2abeb16..9bbf83e1 100644
--- a/lib/whitelist.js
+++ b/lib/whitelist.js
@@ -14,4 +14,5 @@ whitelist = [
"seed",
"keys",
"index",
+ "verified",
];
diff --git a/package.json b/package.json
index 53668ac7..950ac2b3 100644
--- a/package.json
+++ b/package.json
@@ -38,6 +38,7 @@
"long": "^4.0.0",
"mailgun-js": "^0.22.0",
"mariadb": "^2.4.0",
+ "multer": "^1.4.2",
"mysql": "^2.18.1",
"mysql2": "^2.1.0",
"otplib": "^12.0.1",
diff --git a/routes/assets.js b/routes/assets.js
index 52509cd9..324acb7b 100644
--- a/routes/assets.js
+++ b/routes/assets.js
@@ -26,10 +26,14 @@ app.get(
group: ["asset"]
});
- Object.keys(assets).map(a => (assets[a].registered = true));
+ Object.keys(assets).map(a => {
+ assets[a].registered = true;
+ assets[a].asset = assets[a].asset_id;
+ });
accounts.map(a => {
- if (!assets[a.asset]) assets[a.asset] = a;
+ if (!a.asset) console.log(a.id);
+ if (!assets[a.asset]) assets[a.asset] = a.get({ plain: true });
});
res.send(assets);
diff --git a/routes/funding.js b/routes/funding.js
new file mode 100644
index 00000000..3a5f30e0
--- /dev/null
+++ b/routes/funding.js
@@ -0,0 +1,82 @@
+const multer = require("multer");
+
+const storage = multer.diskStorage({
+ destination: (req, file, cb) => {
+ cb(null, "uploads");
+ },
+ filename: (req, file, cb) => {
+ const parts = file.originalname.split(".");
+ const ext = parts.length > 1 ? parts[parts.length - 1] : 'bin';
+ cb(null, `${req.user.username}-${file.fieldname}.${ext}`)
+ }
+});
+
+const upload = multer({
+ storage,
+ onFileUploadStart: (file, req, res) => {
+ const maxSize = 32 * 1000 * 1000;
+ if (req.files.file.length > maxSize) {
+ return false;
+ }
+ }
+});
+
+app.post("/id", auth, upload.single("id"), ah(async (req, res) => {
+ const { user } = req;
+ if (user.verified === 'proof') user.verified = 'pending';
+ else user.verified = 'id';
+ await user.save();
+ emit(user.username, "user", user);
+
+ res.end();
+}));
+
+app.post("/proof", auth, upload.single("proof"), ah(async (req, res) => {
+ const { user } = req;
+ if (user.verified === 'id') user.verified = 'pending';
+ else user.verified = 'proof';
+ await user.save();
+ emit(user.username, "user", user);
+
+ res.end();
+}));
+
+app.post("/funding", auth, ah(async (req, res) => {
+ try {
+ const { amount, code } = req.body;
+ if (!parseFloat(amount) || parseFloat(amount) < 0) throw new Error("Invalid amount");
+
+ await db.Deposit.create({
+ user_id: req.user.id,
+ amount,
+ code,
+ });
+
+ res.end();
+ } catch(e) {
+ l.error("funding error", e.message);
+ res.status(500).send("Funding request failed");
+ }
+}));
+
+app.post("/withdrawal", auth, ah(async (req, res) => {
+ try {
+ const { account, amount, email, institution, transit, notes } = req.body;
+ if (!parseFloat(amount) || parseFloat(amount) < 0) throw new Error("Invalid amount");
+
+ await db.Withdrawal.create({
+ user_id: req.user.id,
+ account,
+ amount,
+ email,
+ institution,
+ transit,
+ notes,
+ });
+
+ res.end();
+ } catch(e) {
+ l.error("withdrawal error", e.message);
+ res.status(500).send("Withdrawal request failed");
+ }
+}));
diff --git a/routes/swaps.js b/routes/swaps.js
index 10beb0b2..e12dd450 100644
--- a/routes/swaps.js
+++ b/routes/swaps.js
@@ -1000,4 +1000,4 @@ setInterval(async () => {
}
}
});
-}, 20000);
+}, 2000);
diff --git a/yarn.lock b/yarn.lock
index b5b6c58a..fca33739 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -416,6 +416,11 @@ anymatch@~3.1.1:
normalize-path "^3.0.0"
picomatch "^2.0.4"
+append-field@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/append-field/-/append-field-1.0.0.tgz#1e3440e915f0b1203d23748e78edd7b9b5b43e56"
+ integrity sha1-HjRA6RXwsSA9I3SOeO3XubW0PlY=
+
aproba@^1.0.3:
version "1.2.0"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
@@ -950,6 +955,14 @@ bunyan@^1.8.1:
mv "~2"
safe-json-stringify "~1"
+busboy@^0.2.11:
+ version "0.2.14"
+ resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453"
+ integrity sha1-bCpiLvz0fFe7vh4qnDetNseSVFM=
+ dependencies:
+ dicer "0.2.5"
+ readable-stream "1.1.x"
+
bytebuffer@~5:
version "5.0.1"
resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd"
@@ -1281,6 +1294,16 @@ [email protected]:
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+concat-stream@^1.5.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
configstore@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96"
@@ -1592,6 +1615,14 @@ detect-libc@^1.0.2, detect-libc@^1.0.3:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/dicer/-/dicer-0.2.5.tgz#5996c086bb33218c812c090bddc09cd12facb70f"
+ integrity sha1-WZbAhrszIYyBLAkL3cCc0S+stw8=
+ dependencies:
+ readable-stream "1.1.x"
+ streamsearch "0.1.2"
+
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
@@ -3687,6 +3718,20 @@ [email protected], ms@^2.1.1:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+multer@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.2.tgz#2f1f4d12dbaeeba74cb37e623f234bf4d3d2057a"
+ integrity sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==
+ dependencies:
+ append-field "^1.0.0"
+ busboy "^0.2.11"
+ concat-stream "^1.5.2"
+ mkdirp "^0.5.1"
+ object-assign "^4.1.1"
+ on-finished "^2.3.0"
+ type-is "^1.6.4"
+ xtend "^4.0.0"
+
mute-stream@~0.0.4:
version "0.0.8"
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
@@ -3950,7 +3995,7 @@ oauth-sign@~0.9.0:
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-object-assign@^4, object-assign@^4.1.0:
+object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -4024,7 +4069,7 @@ object.pick@^1.2.0, object.pick@^1.3.0:
dependencies:
isobject "^3.0.1"
-on-finished@~2.3.0:
+on-finished@^2.3.0, on-finished@~2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
@@ -4683,7 +4728,7 @@ [email protected]:
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@2, [email protected], readable-stream@^2.0.6:
+readable-stream@2, [email protected], readable-stream@^2.0.6, readable-stream@^2.2.2:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -5267,6 +5312,11 @@ static-extend@^0.1.1:
resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a"
+ integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=
+
strict-uri-encode@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546"
@@ -5594,7 +5644,7 @@ type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-type-is@~1.6.17, type-is@~1.6.18:
+type-is@^1.6.4, type-is@~1.6.17, type-is@~1.6.18:
version "1.6.18"
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
@@ -5609,6 +5659,11 @@ typedarray-to-buffer@^3.1.5:
dependencies:
is-typedarray "^1.0.0"
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
typeforce@^1.11.3, typeforce@^1.11.5:
version "1.18.0"
resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc"
@@ -5914,7 +5969,7 @@ [email protected]:
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=
-xtend@^4.0.2, xtend@~4.0.0:
+xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.0:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==