aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2021-06-02 12:47:29 -0700
committerAdam Soltys <[email protected]>2021-06-09 16:07:31 -0700
commit95b44666041ca5ad5b07a13a5c1a36e4bd596fe8 (patch)
treeeb274750d0cf8088965bf87d78f98b7cecf00078
parent8b51586af1d7ed02660df880587d574ee591f0e6 (diff)
downloadcoinos-server-95b44666041ca5ad5b07a13a5c1a36e4bd596fe8.tar.gz
coinos-server-95b44666041ca5ad5b07a13a5c1a36e4bd596fe8.zip
remove atomic swap code
-rw-r--r--package.json1
-rw-r--r--routes/swaps.js356
-rw-r--r--yarn.lock176
3 files changed, 2 insertions, 531 deletions
diff --git a/package.json b/package.json
index c4a80372..cd029027 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,6 @@
"imap": "^0.8.19",
"jsonwebtoken": "^8.5.1",
"knex": "^0.95.6",
- "level": "^6.0.1",
"lnurl": "^0.16.1",
"long": "^4.0.0",
"mailgun-js": "^0.22.0",
diff --git a/routes/swaps.js b/routes/swaps.js
index 9d0f9929..a220a1fc 100644
--- a/routes/swaps.js
+++ b/routes/swaps.js
@@ -1,9 +1,6 @@
const axios = require("axios");
const crypto = require("crypto");
-const level = require("level");
const fs = require("fs");
-const { spawn } = require("child_process");
-const leveldb = level("leveldb");
const getAccount = require("../lib/account");
const { Op, col } = require("sequelize");
const uuidv4 = require("uuid/v4");
@@ -23,105 +20,8 @@ const assets = {
"4eebe36eb0819e6daa5dd3c97733251ff4eb728c810d949365d6dacaad5ef6e8": "tether"
};
-const swapsdir = "swaps/";
-if (!fs.existsSync(swapsdir)) {
- fs.mkdirSync(swapsdir);
-}
-
const timeout = 20000;
-const cli = (...args) => {
- const params = ["--regtest", "-c", config.liquid.conf, ...args];
- if (config.liquid.network !== "regtest") params.shift();
- l.info("spawning liquidswap-cli with params:", params);
- return spawn("liquidswap-cli", params);
-};
-
-const getInfo = filename =>
- new Promise((resolve, reject) => {
- const proc = cli("info", swapsdir + filename);
-
- proc.stdout.on("data", data => {
- resolve(data.toString());
- });
-
- proc.stderr.on("data", err => {
- l.error("info error", err.toString());
- reject(err.toString());
- });
-
- proc.on("close", (code, signal) => {
- let msg = (code && code.toString()) || (signal && signal.toString());
- reject(new Error(`Liquid swap tool process closed unexpectedly: ${msg}`));
- });
-
- proc.on("exit", (code, signal) => {
- let msg = (code && code.toString()) || (signal && signal.toString());
- reject(new Error(`Liquid swap tool process exited unexpectedly: ${msg}`));
- });
-
- setTimeout(
- () => reject(new Error("Liquid swap tool timed out"), proc),
- timeout
- );
- });
-
-app.post(
- "/propose",
- auth,
- ah(async (req, res) => {
- const { a1, v1, a2, v2 } = req.body;
-
- const text = await new Promise((resolve, reject) => {
- l.info(
- "running liquid-cli tool %s %s %s %s %s",
- config.liquid.conf,
- a1,
- v1,
- a2,
- v2
- );
- const proc = cli(
- "propose",
- a1,
- (v1 / SATS).toFixed(8),
- a2,
- (v2 / SATS).toFixed(8)
- );
-
- proc.stdout.on("data", data => {
- resolve(data.toString());
- });
-
- proc.stderr.on("error", err => {
- l.error("order error", err.toString());
- reject(err.toString());
- });
-
- proc.on("close", (code, signal) => {
- let msg = (code && code.toString()) || (signal && signal.toString());
- reject(
- new Error(`Liquid swap tool process closed unexpectedly: ${msg}`)
- );
- });
-
- proc.on("exit", (code, signal) => {
- let msg = (code && code.toString()) || (signal && signal.toString());
- reject(
- new Error(`Liquid swap tool process exited unexpectedly: ${msg}`)
- );
- });
-
- setTimeout(
- () => reject(new Error("Liquid swap tool timed out"), proc),
- timeout
- );
- });
-
- res.send(text);
- })
-);
-
const swap = async (user, { a1, a2, v1, v2 }) => {
if (!parseInt(v1) || v1 < 0 || !parseInt(v2) || v2 < 0)
throw new Error("Invalid amount");
@@ -461,245 +361,6 @@ app.post(
})
);
-app.post(
- "/accept",
- optionalAuth,
- ah(async (req, res) => {
- try {
- const { text } = req.body;
- const { user } = req;
- const id = uuidv4();
-
- if (text) {
- const filename = `acceptance-${id}.txt`;
- fs.writeFileSync(swapsdir + filename, text);
-
- let info = JSON.parse(await getInfo(filename));
- let [fee, rate, asset] = parse(info);
- let { tx, u_address_p, u_address_r } = JSON.parse(
- Buffer.from(text, "base64").toString()
- );
- const sha256 = crypto.createHash("sha256");
- sha256.update(tx);
- const hash = sha256.digest("hex");
-
- const leg1 = info.legs.find(leg => !leg.incoming);
- const leg2 = info.legs.find(leg => leg.incoming);
-
- let orders = await db.Order.findAll({
- where: {
- rate: { [Op.lte]: leg2.amount / leg1.amount },
- accepted: false,
- "$acc1.asset$": leg1.asset,
- "$acc2.asset$": leg2.asset
- },
- attributes: {
- include: [
- [col("acc1.asset"), "a1"],
- [col("acc2.asset"), "a2"]
- ]
- },
- order: [["rate", "DESC"]],
- include: [
- {
- model: db.User,
- as: "user"
- },
- {
- model: db.Account,
- as: "acc1",
- attributes: []
- },
- {
- model: db.Account,
- as: "acc2",
- attributes: []
- }
- ]
- });
-
- let total = orders.reduce((a, b) => a + b.v1, 0);
- let remaining = Math.round(leg1.amount * SATS);
- if (total < remaining)
- throw new Error("Not enough coins for sale at that price");
-
- await db.transaction(async transaction => {
- for (let i = 0; i < orders.length; i++) {
- let order = orders[i];
- const account = await getAccount(
- leg1.asset,
- order.user,
- transaction
- );
-
- let { v1: amount } = order;
- if (remaining >= amount) {
- remaining -= amount;
-
- await db.Invoice.create({
- user_id: order.user_id,
- text: u_address_p,
- address: u_address_p,
- unconfidential: u_address_p,
- currency: order.user.currency,
- memo: "Atomic Swap",
- rate: app.get("rates")[order.user.currency],
- amount,
- tip: 0,
- network: "liquid",
- account_id: account.id
- });
-
- addresses[u_address_p] = order.user.username;
-
- order.accepted = true;
- order.completedAt = new Date();
- await order.save({ transaction });
-
- order = order.get({ plain: true });
- order.a1 = leg2.asset;
- order.a2 = leg1.asset;
- order.rate = order.v2 / order.v1;
-
- broadcast("order", shallow(order));
- } else {
- await db.Invoice.create({
- user_id: order.user_id,
- text: u_address_p,
- address: u_address_p,
- unconfidential: u_address_p,
- currency: order.user.currency,
- memo: "Atomic Swap",
- rate: app.get("rates")[order.user.currency],
- amount: remaining,
- tip: 0,
- network: "liquid",
- account_id: account.id
- });
-
- addresses[u_address_p] = order.user.username;
-
- order.decrement(
- {
- v1: remaining,
- v2: Math.round((order.v2 * remaining) / amount)
- },
- { transaction }
- );
- await order.save({ transaction });
- await order.reload({ transaction });
-
- order = order.get({ plain: true });
- order.a1 = leg2.asset;
- order.a2 = leg1.asset;
- order.rate = order.v2 / order.v1;
-
- broadcast("order", shallow(order));
- }
- }
-
- await finalize(filename);
- });
-
- res.send(info);
- } else {
- throw new Error("No acceptance provided");
- }
- } catch (e) {
- l.error(e.message, e.stack);
- res.status(500).send(e.message);
- }
- })
-);
-
-app.post(
- "/acceptance",
- ah(async (req, res) => {
- const { acceptance: text } = req.body;
- l.info("acceptance received");
-
- fs.writeFile(swapsdir + "accepted.txt", text, async err => {
- if (err) {
- return res.status(500).send(err);
- }
-
- try {
- let info = JSON.parse(
- await new Promise((resolve, reject) => {
- const proc = cli("info", swapsdir + "accepted.txt");
-
- proc.stdout.on("data", data => {
- resolve(data.toString());
- });
-
- proc.stderr.on("data", err => {
- reject(err.toString());
- });
-
- setTimeout(
- () => reject(new Error("Liquid swap tool timed out"), proc),
- timeout
- );
- })
- );
-
- const time = Math.floor(new Date()).toString();
- const [fee, rate, asset] = parse(info);
- if (!asset) throw new Error("Unsupported asset");
- l.info("accepted", info, rate, asset);
-
- leveldb.put(time, JSON.stringify({ text, info, rate, asset }));
- l.info({ text, info, rate, asset });
-
- res.send({ info, rate });
- } catch (e) {
- l.error(e);
- res.status(500).send(e.message);
- }
- });
- })
-);
-
-const parse = info => {
- const fee = info.legs[0].fee;
- return [
- fee,
- (info.legs[1].amount / (info.legs[0].amount + fee)).toFixed(8),
- assets[info.legs[0].asset]
- ];
-};
-
-const finalize = (filename = "finalized.txt", text) => {
- if (text) fs.writeFileSync(swapsdir + filename, text);
-
- return new Promise((resolve, reject) => {
- const proc = cli("finalize", swapsdir + filename, "-s");
-
- proc.stdout.on("data", data => {
- resolve(data.toString());
- });
-
- proc.stderr.on("data", err => {
- reject(new Error(err.toString()));
- });
-
- proc.on("close", (code, signal) => {
- let msg = (code && code.toString()) || (signal && signal.toString());
- reject(new Error(`Liquid swap tool process closed unexpectedly: ${msg}`));
- });
-
- proc.on("exit", (code, signal) => {
- let msg = (code && code.toString()) || (signal && signal.toString());
- reject(new Error(`Liquid swap tool process exited unexpectedly: ${msg}`));
- });
-
- setTimeout(
- () => reject(new Error("Liquid swap tool timed out"), proc),
- timeout
- );
- });
-};
-
app.get(
"/orders",
optionalAuth,
@@ -738,23 +399,6 @@ app.get(
})
);
-app.post(
- "/publish",
- auth,
- ah(async (req, res) => {
- try {
- const { id } = req.body;
- await db.Order.update(
- { public: true },
- { where: { id, user_id: req.user.id } }
- );
- res.end();
- } catch (e) {
- res.status(500).send(e.message);
- }
- })
-);
-
if (config.maker) {
debug('setup maker account...')
config.maker.map(({ amount, c1, c2, currency, askMultiplier, bidMultiplier }) => {
diff --git a/yarn.lock b/yarn.lock
index 98d5691e..96096131 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -341,28 +341,6 @@ abbrev@1:
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-abstract-leveldown@^6.2.1:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a"
- integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==
- dependencies:
- buffer "^5.5.0"
- immediate "^3.2.3"
- level-concat-iterator "~2.0.0"
- level-supports "~1.0.0"
- xtend "~4.0.0"
-
-abstract-leveldown@~6.2.1, abstract-leveldown@~6.2.3:
- version "6.2.3"
- resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb"
- integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==
- dependencies:
- buffer "^5.5.0"
- immediate "^3.2.3"
- level-concat-iterator "~2.0.0"
- level-supports "~1.0.0"
- xtend "~4.0.0"
-
accepts@~1.3.5, accepts@~1.3.7:
version "1.3.7"
resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd"
@@ -615,11 +593,6 @@ base-x@^3.0.2:
dependencies:
safe-buffer "^5.0.1"
-base64-js@^1.3.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
- integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-
bcrypt-pbkdf@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
@@ -902,14 +875,6 @@ buffer-xor@^1.0.3:
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
-buffer@^5.5.0, buffer@^5.6.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
- integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.1.13"
-
busboy@^0.2.11:
version "0.2.14"
resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.2.14.tgz#6c2a622efcf47c57bbbe1e2a9c37ad36c7925453"
@@ -1360,14 +1325,6 @@ defer-to-connect@^1.0.1:
resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==
-deferred-leveldown@~5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058"
- integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==
- dependencies:
- abstract-leveldown "~6.2.1"
- inherits "^2.0.3"
-
degenerator@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-1.0.4.tgz#fcf490a37ece266464d9cc431ab98c5819ced095"
@@ -1518,16 +1475,6 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-encoding-down@^6.3.0:
- version "6.3.0"
- resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b"
- integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==
- dependencies:
- abstract-leveldown "^6.2.1"
- inherits "^2.0.3"
- level-codec "^9.0.0"
- level-errors "^2.0.0"
-
end-of-stream@^1.1.0:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@@ -1542,13 +1489,6 @@ [email protected]:
dependencies:
ansi-colors "^4.1.1"
-errno@~0.1.1:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
- integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
- dependencies:
- prr "~1.0.1"
-
error@^7.2.0:
version "7.2.1"
resolved "https://registry.yarnpkg.com/error/-/error-7.2.1.tgz#eab21a4689b5f684fc83da84a0e390de82d94894"
@@ -2201,11 +2141,6 @@ iconv-lite@^0.6.2:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
-ieee754@^1.1.13:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
- integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-
ignore-by-default@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
@@ -2226,11 +2161,6 @@ imap@^0.8.19:
readable-stream "1.1.x"
utf7 ">=1.0.2"
-immediate@^3.2.3:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266"
- integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==
-
import-lazy@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
@@ -2574,88 +2504,6 @@ lazy@~1.0.11:
resolved "https://registry.yarnpkg.com/lazy/-/lazy-1.0.11.tgz#daa068206282542c088288e975c297c1ae77b690"
integrity sha1-2qBoIGKCVCwIgojpdcKXwa53tpA=
-level-codec@^9.0.0:
- version "9.0.2"
- resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc"
- integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==
- dependencies:
- buffer "^5.6.0"
-
-level-concat-iterator@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263"
- integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==
-
-level-errors@^2.0.0, level-errors@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8"
- integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==
- dependencies:
- errno "~0.1.1"
-
-level-iterator-stream@~4.0.0:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c"
- integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==
- dependencies:
- inherits "^2.0.4"
- readable-stream "^3.4.0"
- xtend "^4.0.2"
-
-level-js@^5.0.0:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/level-js/-/level-js-5.0.2.tgz#5e280b8f93abd9ef3a305b13faf0b5397c969b55"
- integrity sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg==
- dependencies:
- abstract-leveldown "~6.2.3"
- buffer "^5.5.0"
- inherits "^2.0.3"
- ltgt "^2.1.2"
-
-level-packager@^5.1.0:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939"
- integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==
- dependencies:
- encoding-down "^6.3.0"
- levelup "^4.3.2"
-
-level-supports@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d"
- integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==
- dependencies:
- xtend "^4.0.2"
-
-level@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/level/-/level-6.0.1.tgz#dc34c5edb81846a6de5079eac15706334b0d7cd6"
- integrity sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw==
- dependencies:
- level-js "^5.0.0"
- level-packager "^5.1.0"
- leveldown "^5.4.0"
-
-leveldown@^5.4.0:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-5.6.0.tgz#16ba937bb2991c6094e13ac5a6898ee66d3eee98"
- integrity sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==
- dependencies:
- abstract-leveldown "~6.2.1"
- napi-macros "~2.0.0"
- node-gyp-build "~4.1.0"
-
-levelup@^4.3.2:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6"
- integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==
- dependencies:
- deferred-leveldown "~5.3.0"
- level-errors "~2.0.0"
- level-iterator-stream "~4.0.0"
- level-supports "~1.0.0"
- xtend "~4.0.0"
-
version "2.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
@@ -2771,11 +2619,6 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
-ltgt@^2.1.2:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5"
- integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=
-
mailgun-js@^0.22.0:
version "0.22.0"
resolved "https://registry.yarnpkg.com/mailgun-js/-/mailgun-js-0.22.0.tgz#128942b5e47a364a470791608852bf68c96b3a05"
@@ -3031,11 +2874,6 @@ [email protected], nan@^2.13.2, nan@^2.14.0:
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
-napi-macros@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b"
- integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==
-
version "2.4.0"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
@@ -3089,11 +2927,6 @@ node-gyp-build@^4.2.0, node-gyp-build@^4.2.3:
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739"
integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==
-node-gyp-build@~4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.1.1.tgz#d7270b5d86717068d114cc57fff352f96d745feb"
- integrity sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==
-
version "3.8.0"
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
@@ -3661,11 +3494,6 @@ proxy-from-env@^1.0.0:
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
-prr@~1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
- integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
-
version "6.3.0"
resolved "https://registry.yarnpkg.com/ps-list/-/ps-list-6.3.0.tgz#a2b775c2db7d547a28fbaa3a05e4c281771259be"
@@ -3815,7 +3643,7 @@ readable-stream@2, [email protected], readable-stream@^2.0.6, readable-strea
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@^3.0.0, readable-stream@^3.4.0, readable-stream@^3.6.0:
+readable-stream@^3.0.0, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -4768,7 +4596,7 @@ [email protected]:
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943"
integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=
-xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.0:
+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==