diff options
| author | Adam Soltys <[email protected]> | 2020-10-11 01:12:37 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2020-10-11 01:12:37 -0700 |
| commit | e894563fbf75706649db1b67ecdc4661bb31f9c2 (patch) | |
| tree | 8a5f8350f18d2fcfe36988b8c468d2b5fb749d42 | |
| parent | 8b5df12518f245b8e29871a4a71d5bbcee172ce8 (diff) | |
| download | coinos-server-e894563fbf75706649db1b67ecdc4661bb31f9c2.tar.gz coinos-server-e894563fbf75706649db1b67ecdc4661bb31f9c2.zip | |
get maker to check the ask price
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | routes/invoices.js | 9 | ||||
| -rw-r--r-- | routes/liquid/receive.js | 176 | ||||
| -rw-r--r-- | routes/liquid/send.js | 1 | ||||
| -rw-r--r-- | routes/swaps.js | 81 | ||||
| -rw-r--r-- | yarn.lock | 104 |
6 files changed, 231 insertions, 142 deletions
diff --git a/package.json b/package.json index 00f3e213..746e4c6a 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "bcrypt": "^5.0.0", "bip32": "^2.0.5", "bip39": "^3.0.2", - "bitcoin-core": "https://github.com/asoltys/bitcoin-core", + "bitcoin-core": "asoltys/bitcoin-core", "bitcoinjs-lib": "^5.1.8", "body-parser": "^1.19.0", "bolt11": "^1.2.5", diff --git a/routes/invoices.js b/routes/invoices.js index 11d62eb6..59adb862 100644 --- a/routes/invoices.js +++ b/routes/invoices.js @@ -17,6 +17,8 @@ app.get("/invoice", auth, ah(async (req, res, next) => { app.post("/invoice", ah(async (req, res, next) => { try { let { invoice, user } = req.body; + let { blindkey } = invoice; + if (!user) ({ user } = req); else { user = await db.User.findOne({ @@ -38,7 +40,7 @@ app.post("/invoice", ah(async (req, res, next) => { invoice.currency, ); - if (invoice.network === "liquid") { + if (invoice.network === "liquid" && !invoice.unconfidential) { invoice.unconfidential = ( await lq.getAddressInfo(invoice.address) ).unconfidential; @@ -58,7 +60,10 @@ app.post("/invoice", ah(async (req, res, next) => { invoice = exists ? await exists.update(invoice) : await db.Invoice.create(invoice); addresses[invoice.address] = user.username; - if (invoice.unconfidential) addresses[invoice.unconfidential] = user.username; + if (invoice.unconfidential) { + addresses[invoice.unconfidential] = user.username; + // await lq.importBlindingKey(invoice.address, blindkey); + } res.send(invoice); } catch(e) { l.error(e.message, e.stack); diff --git a/routes/liquid/receive.js b/routes/liquid/receive.js index 097dc53a..2976bf57 100644 --- a/routes/liquid/receive.js +++ b/routes/liquid/receive.js @@ -12,16 +12,15 @@ const network = config.liquid.network === "mainnet" ? "liquid" : config.liquid.network ]; -const getAccount = async (params) => { +const getAccount = async params => { let account = await db.Account.findOne({ where: params }); - if (account) { l.info("found account", params, account.asset, account.id); return account; - } + } let { asset, pubkey } = params; let name = asset.substr(0, 6); @@ -29,7 +28,7 @@ const getAccount = async (params) => { let ticker = asset.substr(0, 3).toUpperCase(); let precision = 8; - const assets = app.get('assets'); + const assets = app.get("assets"); if (assets[asset]) { ({ domain, ticker, precision, name } = assets[asset]); @@ -37,10 +36,10 @@ const getAccount = async (params) => { const existing = await db.Account.findOne({ where: { asset, - pubkey, + pubkey }, order: [["id", "ASC"]], - limit: 1, + limit: 1 }); if (existing) { @@ -51,7 +50,7 @@ const getAccount = async (params) => { params = { ...params, ...{ domain, ticker, precision, name } }; params.balance = 0; - params.network = 'liquid'; + params.network = "liquid"; return db.Account.create(params); }; @@ -71,88 +70,93 @@ zmqRawTx.on("message", async (topic, message, sequence) => { if (payments.includes(blinded.txid)) return; Promise.all( - tx.vout.map(async (o) => { - if (!(o.scriptPubKey && o.scriptPubKey.addresses)) return; + tx.vout.map(async o => { + try { + if (!(o.scriptPubKey && o.scriptPubKey.addresses)) return; - const { asset } = o; - const value = toSats(o.value); - const address = o.scriptPubKey.addresses[0]; + const { asset } = o; + const value = toSats(o.value); + const address = o.scriptPubKey.addresses[0]; - if ( - Object.keys(addresses).includes(address) && - !change.includes(address) - ) { - let user = await getUser(addresses[address]); + if ( + Object.keys(addresses).includes(address) && + !change.includes(address) + ) { + let user = await getUser(addresses[address]); - let invoice = await db.Invoice.findOne({ - where: { - unconfidential: address, - user_id: user.id, - network: "liquid", - }, - order: [["id", "DESC"]], - include: { - model: db.Account, - as: "account", - }, - }); + let invoice = await db.Invoice.findOne({ + where: { + unconfidential: address, + user_id: user.id, + network: "liquid" + }, + order: [["id", "DESC"]], + include: { + model: db.Account, + as: "account" + } + }); - if (!invoice) return; + if (!invoice) return; - let confirmed = 0; + let confirmed = 0; - let { account } = invoice; + let { account } = invoice; - if (account.asset === asset && (!account.pubkey || account.network === 'liquid')) { - account.pending += value; - await account.save(); - } else { - account = await getAccount( - { + if ( + account.asset === asset && + (!account.pubkey || account.network === "liquid") + ) { + account.pending += value; + await account.save(); + } else { + account = await getAccount({ seed: account.seed, path: account.path, user_id: user.id, asset, pubkey: account.pubkey, pending: value, - index: 0, - }, - ); - } + index: 0 + }); + } - if (config.liquid.walletpass) - await lq.walletPassphrase(config.liquid.walletpass, 300); + if (config.liquid.walletpass) + await lq.walletPassphrase(config.liquid.walletpass, 300); - await user.save(); + await user.save(); - const currency = invoice ? invoice.currency : user.currency; - const rate = invoice ? invoice.rate : app.get("rates")[user.currency]; - const tip = invoice ? invoice.tip : 0; - const memo = invoice ? invoice.memo : ""; + const currency = invoice ? invoice.currency : user.currency; + const rate = invoice ? invoice.rate : app.get("rates")[user.currency]; + const tip = invoice ? invoice.tip : 0; + const memo = invoice ? invoice.memo : ""; - let payment = await db.Payment.create({ - account_id: account.id, - user_id: user.id, - hash: blinded.txid, - amount: value - tip, - currency, - memo, - rate, - received: true, - tip, - confirmed, - address, - network: "liquid", - }); + let payment = await db.Payment.create({ + account_id: account.id, + user_id: user.id, + hash: blinded.txid, + amount: value - tip, + currency, + memo, + rate, + received: true, + tip, + confirmed, + address, + network: "liquid" + }); - payments.push(blinded.txid); - payment = payment.get({ plain: true }); - payment.account = account.get({ plain: true }); + payments.push(blinded.txid); + payment = payment.get({ plain: true }); + payment.account = account.get({ plain: true }); - emit(user.username, "payment", payment); - emit(user.username, "account", payment.account); - l.info("liquid detected", address, user.username, asset, value); - notify(user, `${value} SAT payment detected`); + emit(user.username, "payment", payment); + emit(user.username, "account", payment.account); + l.info("liquid detected", address, user.username, asset, value); + notify(user, `${value} SAT payment detected`); + } + } catch (e) { + l.error("Problem processing transaction", e.message, e.stack); } }) ); @@ -162,16 +166,16 @@ let queue = {}; zmqRawBlock.on("message", async (topic, message, sequence) => { const payments = await db.Payment.findAll({ - where: { confirmed: 0 }, + where: { confirmed: 0 } }); const block = elements.Block.fromHex(message.toString("hex"), true); const hash = await lq.getBlockHash(block.height); const json = await lq.getBlock(hash, 2); - json.tx.map(async (tx) => { + json.tx.map(async tx => { if (issuances[tx.txid]) { - await db.transaction(async (transaction) => { + await db.transaction(async transaction => { const { user_id, asset, @@ -179,7 +183,7 @@ zmqRawBlock.on("message", async (topic, message, sequence) => { asset_payment_id, token, token_amount, - token_payment_id, + token_payment_id } = issuances[tx.txid]; const user = await getUserById(user_id); @@ -187,7 +191,7 @@ zmqRawBlock.on("message", async (topic, message, sequence) => { let account = await db.Account.findOne({ where: { user_id, asset }, lock: transaction.LOCK.UPDATE, - transaction, + transaction }); account.balance = asset_amount * SATS; account.pending = 0; @@ -197,10 +201,10 @@ zmqRawBlock.on("message", async (topic, message, sequence) => { where: { id: asset_payment_id }, include: { model: db.Account, - as: "account", + as: "account" }, lock: transaction.LOCK.UPDATE, - transaction, + transaction }); payment.confirmed = true; @@ -215,7 +219,7 @@ zmqRawBlock.on("message", async (topic, message, sequence) => { account = await db.Account.findOne({ where: { user_id, asset: token }, lock: transaction.LOCK.UPDATE, - transaction, + transaction }); account.balance = token_amount * SATS; account.pending = 0; @@ -225,10 +229,10 @@ zmqRawBlock.on("message", async (topic, message, sequence) => { where: { id: token_payment_id }, include: { model: db.Account, - as: "account", + as: "account" }, lock: transaction.LOCK.UPDATE, - transaction, + transaction }); payment.confirmed = true; @@ -241,7 +245,7 @@ zmqRawBlock.on("message", async (topic, message, sequence) => { emit(user.username, "payment", payment); } }); - } else if (payments.find((p) => p.hash === tx.txid)) queue[tx.txid] = 1; + } else if (payments.find(p => p.hash === tx.txid)) queue[tx.txid] = 1; }); }); @@ -253,21 +257,21 @@ setInterval(async () => { for (let i = 0; i < arr.length; i++) { const hash = arr[i]; - await db.transaction(async (transaction) => { + await db.transaction(async transaction => { let p = await db.Payment.findOne({ where: { hash, confirmed: 0, received: 1 }, include: [ { model: db.Account, - as: "account", + as: "account" }, { model: db.User, - as: "user", - }, + as: "user" + } ], lock: transaction.LOCK.UPDATE, - transaction, + transaction }); const { user } = p; diff --git a/routes/liquid/send.js b/routes/liquid/send.js index ebda5723..a04bc007 100644 --- a/routes/liquid/send.js +++ b/routes/liquid/send.js @@ -1,4 +1,5 @@ const btc = config.liquid.btcasset; +const lcad = config.liquid.cadasset; module.exports = ah(async (req, res) => { let { user } = req; diff --git a/routes/swaps.js b/routes/swaps.js index b25e6550..a75be910 100644 --- a/routes/swaps.js +++ b/routes/swaps.js @@ -509,7 +509,7 @@ app.post( include: [ { model: db.User, - as: "user", + as: "user" }, { model: db.Account, @@ -592,8 +592,21 @@ app.post( addresses[u_address_p] = order.user.username; - console.log("new math", order.v2, Math.round(order.v2 * remaining / amount), amount, remaining, order.v1 - remaining); - order.decrement({ v1: remaining, v2: Math.round(order.v2 * remaining / amount) }, { transaction }); + console.log( + "new math", + order.v2, + Math.round((order.v2 * remaining) / amount), + amount, + remaining, + order.v1 - remaining + ); + order.decrement( + { + v1: remaining, + v2: Math.round((order.v2 * remaining) / amount) + }, + { transaction } + ); await order.save({ transaction }); await order.reload({ transaction }); @@ -835,10 +848,8 @@ app.post( setInterval(async () => { if (!app.get("rates")) return; const amount = 0.0001; - const btc = - config.liquid.btcasset; - const lcad = - config.liquid.cadasset; + const btc = config.liquid.btcasset; + const lcad = config.liquid.cadasset; const { CAD, USD } = app.get("rates"); const user = await db.User.findOne({ where: { @@ -902,7 +913,10 @@ setInterval(async () => { }, { transaction } ); - if (!bestBid || (params.v2 / params.v1 > bestBid.rate && p.acc2.balance >= params.v2)) { + if ( + !bestBid || + (params.v2 / params.v1 > bestBid.rate && p.acc2.balance >= params.v2) + ) { p.v1 = params.v1; p.v2 = params.v2; await p.save(); @@ -950,16 +964,47 @@ setInterval(async () => { v2: amount * SATS }; - if (p && p.acc1.balance >= p.v1) { - p.v1 = params.v1; - p.v2 = params.v2; - await p.save(); - p = p.get({ plain: true }); - p.a1 = params.a1; - p.a2 = params.a2; - p.rate = p.v2 / p.v1; + if (p) { + let bestAsk = await db.Order.findOne( + { + where: { + "$acc1.asset$": btc, + "$acc2.asset$": lcad, + accepted: false, + id: { + [Op.ne]: p.id + } + }, + include: [ + { + model: db.Account, + as: "acc1" + }, + { + model: db.Account, + as: "acc2" + } + ], + order: [["rate", "ASC"]], + limit: 1 + }, + { transaction } + ); + + if ( + !bestAsk || + (params.v1 / params.v2 < bestAsk.rate && p.acc1.balance >= params.v1) + ) { + p.v1 = params.v1; + p.v2 = params.v2; + await p.save(); + p = p.get({ plain: true }); + p.a1 = params.a1; + p.a2 = params.a2; + p.rate = p.v2 / p.v1; - broadcast("order", shallow(p)); + broadcast("order", shallow(p)); + } } else { try { await swap(user, params); @@ -968,4 +1013,4 @@ setInterval(async () => { } } }); -}, 10000); +}, 20000); @@ -358,10 +358,10 @@ [email protected]: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== -ansi-colors@^3.2.1: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-regex@^2.0.0: version "2.1.1" @@ -704,9 +704,9 @@ bip66@^1.1.0, bip66@^1.1.5: dependencies: safe-buffer "^5.0.1" -"bitcoin-core@https://github.com/asoltys/bitcoin-core": +bitcoin-core@asoltys/bitcoin-core: version "3.0.0" - resolved "https://github.com/asoltys/bitcoin-core#207a9f68c7297f05549f68dcebac01524f34061f" + resolved "https://codeload.github.com/asoltys/bitcoin-core/tar.gz/66d2bc079b542926fcd0c8587af8c46e4f48ace9" dependencies: "@uphold/request-logger" "^2.0.0" debugnyan "^1.0.0" @@ -1445,6 +1445,13 @@ debug@4, [email protected], debug@^4.1.0, debug@^4.1.1, debug@~4.1.1: dependencies: ms "^2.1.1" +debug@^4.2, debug@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + debugnyan@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/debugnyan/-/debugnyan-1.0.0.tgz#90386d5ebc2c63588f17f272be5c2a93b7665d83" @@ -1721,12 +1728,12 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" - version "2.3.5" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.5.tgz#3ab2b838df0a9d8ab9e7dff235b0e8712ef92381" - integrity sha512-BNT1C08P9XD0vNg3J475yIUG+mVdp9T6towYFHUv897X0KoHBjB1shyrNmhmtHWKP17iSWgo7Gqh7BBuzLZMSA== + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - ansi-colors "^3.2.1" + ansi-colors "^4.1.1" errno@~0.1.1: version "0.1.7" @@ -1805,6 +1812,11 @@ [email protected], escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" @@ -3638,11 +3650,16 @@ moment-timezone@^0.5.21, moment-timezone@^0.5.31, moment-timezone@^0.5.x: dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0", moment@^2.19.3, moment@^2.24.0: +"moment@>= 2.9.0", moment@^2.24.0: version "2.27.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d" integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ== +moment@^2.19.3: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + version "1.1.4" resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" @@ -3658,7 +3675,7 @@ [email protected]: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@^2.1.1: [email protected], ms@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -4261,12 +4278,12 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - version "2.0.18" - resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-2.0.18.tgz#9ccef35df5508a5a4b0838c712ea9b79609aff34" - integrity sha512-Y/VfKfh3poHjMEINxU+gJTeVOBjiThQeFAmzR7z56HSNiMx+etl+yBhk42nRPciPYt/VZl8DQLVXNC6P5vH11A== + version "2.0.21" + resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-2.0.21.tgz#7068967b3d952baea73e57668c98b9eaa876894e" + integrity sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA== dependencies: - safe-buffer "^5.1.2" + safe-buffer "^5.2.1" pino-pretty@^3.6.1: version "3.6.1" @@ -4309,14 +4326,31 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" [email protected], pm2-axon-rpc@^0.5.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pm2-axon-rpc/-/pm2-axon-rpc-0.6.0.tgz#ff7ec2627334e5de1bcc1181e532499a708ab9f8" + integrity sha512-xjYR0y1HpOopJ09VL2Qd5H1LajVN+QLPVZ1G+GesbORJDAZiStMhwECtOzm/Gx5ANQxL0usW8WZsElMfQq2hbw== + dependencies: + debug "^3.0" + +pm2-axon-rpc@^0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/pm2-axon-rpc/-/pm2-axon-rpc-0.5.1.tgz#ad3c43c43811c71f13e5eee2821194d03ceb03fe" integrity sha512-hT8gN3/j05895QLXpwg+Ws8PjO4AVID6Uf9StWpud9HB2homjc1KKCcI0vg9BNOt56FmrqKDT1NQgheIz35+sA== dependencies: debug "^3.0" [email protected], pm2-axon@^3.2.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pm2-axon/-/pm2-axon-4.0.0.tgz#70925e9835e9156f278a843f27a8c94a6c22b1bc" + integrity sha512-A8dy0C57cRIm+kX58HrMcnvUdg8EdwCuCmavDdmFE4eoUE+5zfwGbDfZKCBVLNpDwjXPuXQQYZi3wQt/5xC8DQ== + dependencies: + amp "~0.3.1" + amp-message "~0.1.1" + debug "^4.2" + escape-string-regexp "^4.0.0" + +pm2-axon@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/pm2-axon/-/pm2-axon-3.3.0.tgz#a9badfdb8e083fbd5d7d24317b4a21eb708f0735" integrity sha512-dAFlFYRuFbFjX7oAk41zT+dx86EuaFX/TgOp5QpUKRKwxb946IM6ydnoH5sSTkdI2pHSVZ+3Am8n/l0ocr7jdQ== @@ -4341,10 +4375,10 @@ pm2-multimeter@^0.1.2: dependencies: charm "~0.1.1" -pm2@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/pm2/-/pm2-4.4.1.tgz#a96bf6d4c75cf97612de5940835e792899845b54" - integrity sha512-ece2zqVvSg29tIGdznKqk07IwVaO4mX7zLBMVxbJQMfvxpQUotLLERDW0v/RYMHtzj1bX8MLsDUsmPiIbEszKg== +pm2@^4.4.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/pm2/-/pm2-4.5.0.tgz#5cabba66beed866aa1fb1a7eaa904b06ca9df93d" + integrity sha512-sXKn0Qsrqj++qgsdGTASEsWfURhM6vSPIqFPwSwk3bK5/QPLxuRmVDW1y82M9wEnlgEjiIryaLhZUp5saLuhPA== dependencies: "@pm2/agent" "~1.0.2" "@pm2/io" "~4.3.5" @@ -4358,21 +4392,21 @@ pm2@^4.4.0: commander "2.15.1" cron "1.8.2" dayjs "~1.8.25" - debug "4.1.1" - enquirer "2.3.5" + debug "^4.2.0" + enquirer "2.3.6" eventemitter2 "5.0.1" fclone "1.0.11" mkdirp "1.0.4" needle "2.4.0" - pidusage "2.0.18" - pm2-axon "3.3.0" - pm2-axon-rpc "0.5.1" + pidusage "2.0.21" + pm2-axon "4.0.0" + pm2-axon-rpc "0.6.0" pm2-deploy "~1.0.2" pm2-multimeter "^0.1.2" promptly "^2" ps-list "6.3.0" semver "^7.2" - source-map-support "0.5.16" + source-map-support "0.5.19" sprintf-js "1.1.2" vizion "0.2.13" yamljs "0.3.0" @@ -4869,7 +4903,7 @@ [email protected]: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -5131,10 +5165,10 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" |
