speed up telegram commands

This commit is contained in:
Alex Bosworth 2022-08-27 16:13:16 -07:00
parent df03e5e87c
commit a7b28afa17
No known key found for this signature in database
GPG key ID: E80D2F3F311FD87E
5 changed files with 354 additions and 345 deletions

View file

@ -1,5 +1,9 @@
# Versions
## 12.26.5
- `telegram`: Optimize /command speed by reducing duplicate wallet info calls
## 12.26.4
- `telegram`: Fix button push handling and responding to button push queries

615
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "balanceofsatoshis",
"version": "12.26.4",
"version": "12.26.5",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "balanceofsatoshis",
"version": "12.26.4",
"version": "12.26.5",
"license": "MIT",
"dependencies": {
"@alexbosworth/caporal": "1.4.4",
@ -35,7 +35,7 @@
"ini": "3.0.1",
"inquirer": "9.1.0",
"ln-accounting": "5.0.7",
"ln-service": "53.20.0",
"ln-service": "53.21.0",
"ln-sync": "3.13.1",
"ln-telegram": "3.22.3",
"moment": "2.29.4",
@ -5710,14 +5710,14 @@
}
},
"node_modules/lightning": {
"version": "5.19.0",
"resolved": "https://registry.npmjs.org/lightning/-/lightning-5.19.0.tgz",
"integrity": "sha512-ALaqRMWmc6fiZ2e0UvB8B4+QVqaBt43NmUhpFG+TDLP5dZFdOkV2vxdElaIh23iI8l4P4XPRGQQIFJnTJhlEOQ==",
"version": "5.20.0",
"resolved": "https://registry.npmjs.org/lightning/-/lightning-5.20.0.tgz",
"integrity": "sha512-LhYN/WzhLCfIZuTrs2gjBV/0wrSa/7nVxEoQOnDhDAFu3y+REC0xAnwYFWe54n+B/yaEqdNtc58xZ/ZdgjpM2w==",
"dependencies": {
"@grpc/grpc-js": "1.6.10",
"@grpc/proto-loader": "0.7.2",
"@types/express": "4.17.13",
"@types/node": "18.7.9",
"@types/node": "18.7.13",
"@types/request": "2.48.8",
"@types/ws": "8.5.3",
"async": "3.2.4",
@ -5733,7 +5733,7 @@
"invoices": "2.1.0",
"psbt": "2.7.1",
"tiny-secp256k1": "2.2.1",
"type-fest": "2.18.1"
"type-fest": "2.19.0"
},
"engines": {
"node": ">=12.20"
@ -5769,15 +5769,10 @@
"node": ">=6"
}
},
"node_modules/lightning/node_modules/@types/node": {
"version": "18.7.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.9.tgz",
"integrity": "sha512-0N5Y1XAdcl865nDdjbO0m3T6FdmQ4ijE89/urOHLREyTXbpMWbSafx9y7XIsgWGtwUP2iYTinLyyW3FatAxBLQ=="
},
"node_modules/lightning/node_modules/protobufjs": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz",
"integrity": "sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.0.tgz",
"integrity": "sha512-rCuxKlh0UQKSMjrpIcTLbR5TtGQ52cgs1a5nUoPBAKOccdPblN67BJtjrbtudUJK6HmBvUdsmymyYOzO7lxZEA==",
"hasInstallScript": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
@ -5790,7 +5785,6 @@
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.1",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
@ -5804,9 +5798,9 @@
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w=="
},
"node_modules/lightning/node_modules/type-fest": {
"version": "2.18.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.1.tgz",
"integrity": "sha512-UKCINsd4qiATXD6OIlnQw9t1ux/n2ld+Nl0kzPbCONhCaUIS/BhJbNw14w6584HCQWf3frBK8vmWnGZq/sbPHQ==",
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
"engines": {
"node": ">=12.20"
},
@ -6308,158 +6302,16 @@
"node": ">=12"
}
},
"node_modules/ln-docker-daemons/node_modules/@grpc/grpc-js": {
"version": "1.6.10",
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.10.tgz",
"integrity": "sha512-XTX5z/P5kH802MDoVm/rqOil0UwYEOEjf9+NPgfmm5UINIxDzwYaXfVR6z8svCBG8Hlbu/FzkXqhP8J5xaWzSQ==",
"dev": true,
"dependencies": {
"@grpc/proto-loader": "^0.7.0",
"@types/node": ">=12.12.47"
},
"engines": {
"node": "^8.13.0 || >=10.10.0"
}
},
"node_modules/ln-docker-daemons/node_modules/@grpc/proto-loader": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.2.tgz",
"integrity": "sha512-jCdyLIT/tdQ1zhrbTQnJNK5nbDf0GoBpy5jVNywBzzMDF+Vs6uEaHnfz46dMtDxkvwrF2hzk5Z67goliceH0sA==",
"dev": true,
"dependencies": {
"@types/long": "^4.0.1",
"lodash.camelcase": "^4.3.0",
"long": "^4.0.0",
"protobufjs": "^7.0.0",
"yargs": "^16.2.0"
},
"bin": {
"proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
},
"engines": {
"node": ">=6"
}
},
"node_modules/ln-docker-daemons/node_modules/lightning": {
"version": "5.20.0",
"resolved": "https://registry.npmjs.org/lightning/-/lightning-5.20.0.tgz",
"integrity": "sha512-LhYN/WzhLCfIZuTrs2gjBV/0wrSa/7nVxEoQOnDhDAFu3y+REC0xAnwYFWe54n+B/yaEqdNtc58xZ/ZdgjpM2w==",
"dev": true,
"dependencies": {
"@grpc/grpc-js": "1.6.10",
"@grpc/proto-loader": "0.7.2",
"@types/express": "4.17.13",
"@types/node": "18.7.13",
"@types/request": "2.48.8",
"@types/ws": "8.5.3",
"async": "3.2.4",
"asyncjs-util": "1.2.10",
"bitcoinjs-lib": "6.0.2",
"bn.js": "5.2.1",
"body-parser": "1.20.0",
"bolt07": "1.8.2",
"bolt09": "0.2.3",
"cbor": "8.1.0",
"ecpair": "2.0.1",
"express": "4.18.1",
"invoices": "2.1.0",
"psbt": "2.7.1",
"tiny-secp256k1": "2.2.1",
"type-fest": "2.19.0"
},
"engines": {
"node": ">=12.20"
}
},
"node_modules/ln-docker-daemons/node_modules/protobufjs": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz",
"integrity": "sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.1",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/ln-docker-daemons/node_modules/protobufjs/node_modules/long": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==",
"dev": true
},
"node_modules/ln-docker-daemons/node_modules/type-fest": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
"dev": true,
"engines": {
"node": ">=12.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/ln-docker-daemons/node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true,
"engines": {
"node": ">=10"
}
},
"node_modules/ln-docker-daemons/node_modules/yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/ln-docker-daemons/node_modules/yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true,
"engines": {
"node": ">=10"
}
},
"node_modules/ln-service": {
"version": "53.20.0",
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-53.20.0.tgz",
"integrity": "sha512-kp6rgO4VhU1+xYkc6SFUd/+ZbWrZ2TAz3FBUfoRCNClzob4DONfdA0HM0yEX4BgJUQw+TtzNmM/fffYRHMf+tA==",
"version": "53.21.0",
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-53.21.0.tgz",
"integrity": "sha512-3zuiH7X0Ga+oOrzSAcXcW4X+r8broYlWcifJRgPf55lbFYIcbudCIM/ccsMoQoyctbh5tsyUC3aLmyO1fWJrGQ==",
"dependencies": {
"bolt07": "1.8.2",
"cors": "2.8.5",
"express": "4.18.1",
"invoices": "2.1.0",
"lightning": "5.19.0",
"lightning": "5.20.0",
"macaroon": "3.0.4",
"morgan": "1.10.0",
"ws": "8.8.1"
@ -7628,6 +7480,161 @@
"node": ">=12.20"
}
},
"node_modules/paid-services/node_modules/@grpc/grpc-js": {
"version": "1.6.10",
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.10.tgz",
"integrity": "sha512-XTX5z/P5kH802MDoVm/rqOil0UwYEOEjf9+NPgfmm5UINIxDzwYaXfVR6z8svCBG8Hlbu/FzkXqhP8J5xaWzSQ==",
"dependencies": {
"@grpc/proto-loader": "^0.7.0",
"@types/node": ">=12.12.47"
},
"engines": {
"node": "^8.13.0 || >=10.10.0"
}
},
"node_modules/paid-services/node_modules/@grpc/proto-loader": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.2.tgz",
"integrity": "sha512-jCdyLIT/tdQ1zhrbTQnJNK5nbDf0GoBpy5jVNywBzzMDF+Vs6uEaHnfz46dMtDxkvwrF2hzk5Z67goliceH0sA==",
"dependencies": {
"@types/long": "^4.0.1",
"lodash.camelcase": "^4.3.0",
"long": "^4.0.0",
"protobufjs": "^7.0.0",
"yargs": "^16.2.0"
},
"bin": {
"proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
},
"engines": {
"node": ">=6"
}
},
"node_modules/paid-services/node_modules/@types/node": {
"version": "18.7.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.9.tgz",
"integrity": "sha512-0N5Y1XAdcl865nDdjbO0m3T6FdmQ4ijE89/urOHLREyTXbpMWbSafx9y7XIsgWGtwUP2iYTinLyyW3FatAxBLQ=="
},
"node_modules/paid-services/node_modules/lightning": {
"version": "5.19.0",
"resolved": "https://registry.npmjs.org/lightning/-/lightning-5.19.0.tgz",
"integrity": "sha512-ALaqRMWmc6fiZ2e0UvB8B4+QVqaBt43NmUhpFG+TDLP5dZFdOkV2vxdElaIh23iI8l4P4XPRGQQIFJnTJhlEOQ==",
"dependencies": {
"@grpc/grpc-js": "1.6.10",
"@grpc/proto-loader": "0.7.2",
"@types/express": "4.17.13",
"@types/node": "18.7.9",
"@types/request": "2.48.8",
"@types/ws": "8.5.3",
"async": "3.2.4",
"asyncjs-util": "1.2.10",
"bitcoinjs-lib": "6.0.2",
"bn.js": "5.2.1",
"body-parser": "1.20.0",
"bolt07": "1.8.2",
"bolt09": "0.2.3",
"cbor": "8.1.0",
"ecpair": "2.0.1",
"express": "4.18.1",
"invoices": "2.1.0",
"psbt": "2.7.1",
"tiny-secp256k1": "2.2.1",
"type-fest": "2.18.1"
},
"engines": {
"node": ">=12.20"
}
},
"node_modules/paid-services/node_modules/ln-service": {
"version": "53.20.0",
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-53.20.0.tgz",
"integrity": "sha512-kp6rgO4VhU1+xYkc6SFUd/+ZbWrZ2TAz3FBUfoRCNClzob4DONfdA0HM0yEX4BgJUQw+TtzNmM/fffYRHMf+tA==",
"dependencies": {
"bolt07": "1.8.2",
"cors": "2.8.5",
"express": "4.18.1",
"invoices": "2.1.0",
"lightning": "5.19.0",
"macaroon": "3.0.4",
"morgan": "1.10.0",
"ws": "8.8.1"
},
"engines": {
"node": ">=12.20"
}
},
"node_modules/paid-services/node_modules/protobufjs": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.0.tgz",
"integrity": "sha512-rCuxKlh0UQKSMjrpIcTLbR5TtGQ52cgs1a5nUoPBAKOccdPblN67BJtjrbtudUJK6HmBvUdsmymyYOzO7lxZEA==",
"hasInstallScript": true,
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/paid-services/node_modules/protobufjs/node_modules/long": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w=="
},
"node_modules/paid-services/node_modules/type-fest": {
"version": "2.18.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.1.tgz",
"integrity": "sha512-UKCINsd4qiATXD6OIlnQw9t1ux/n2ld+Nl0kzPbCONhCaUIS/BhJbNw14w6584HCQWf3frBK8vmWnGZq/sbPHQ==",
"engines": {
"node": ">=12.20"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/paid-services/node_modules/y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"engines": {
"node": ">=10"
}
},
"node_modules/paid-services/node_modules/yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dependencies": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
},
"engines": {
"node": ">=10"
}
},
"node_modules/paid-services/node_modules/yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"engines": {
"node": ">=10"
}
},
"node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@ -13931,14 +13938,14 @@
}
},
"lightning": {
"version": "5.19.0",
"resolved": "https://registry.npmjs.org/lightning/-/lightning-5.19.0.tgz",
"integrity": "sha512-ALaqRMWmc6fiZ2e0UvB8B4+QVqaBt43NmUhpFG+TDLP5dZFdOkV2vxdElaIh23iI8l4P4XPRGQQIFJnTJhlEOQ==",
"version": "5.20.0",
"resolved": "https://registry.npmjs.org/lightning/-/lightning-5.20.0.tgz",
"integrity": "sha512-LhYN/WzhLCfIZuTrs2gjBV/0wrSa/7nVxEoQOnDhDAFu3y+REC0xAnwYFWe54n+B/yaEqdNtc58xZ/ZdgjpM2w==",
"requires": {
"@grpc/grpc-js": "1.6.10",
"@grpc/proto-loader": "0.7.2",
"@types/express": "4.17.13",
"@types/node": "18.7.9",
"@types/node": "18.7.13",
"@types/request": "2.48.8",
"@types/ws": "8.5.3",
"async": "3.2.4",
@ -13954,7 +13961,7 @@
"invoices": "2.1.0",
"psbt": "2.7.1",
"tiny-secp256k1": "2.2.1",
"type-fest": "2.18.1"
"type-fest": "2.19.0"
},
"dependencies": {
"@grpc/grpc-js": {
@ -13978,15 +13985,10 @@
"yargs": "^16.2.0"
}
},
"@types/node": {
"version": "18.7.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.9.tgz",
"integrity": "sha512-0N5Y1XAdcl865nDdjbO0m3T6FdmQ4ijE89/urOHLREyTXbpMWbSafx9y7XIsgWGtwUP2iYTinLyyW3FatAxBLQ=="
},
"protobufjs": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz",
"integrity": "sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w==",
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.0.tgz",
"integrity": "sha512-rCuxKlh0UQKSMjrpIcTLbR5TtGQ52cgs1a5nUoPBAKOccdPblN67BJtjrbtudUJK6HmBvUdsmymyYOzO7lxZEA==",
"requires": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
@ -13998,7 +14000,6 @@
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.1",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
@ -14011,9 +14012,9 @@
}
},
"type-fest": {
"version": "2.18.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.1.tgz",
"integrity": "sha512-UKCINsd4qiATXD6OIlnQw9t1ux/n2ld+Nl0kzPbCONhCaUIS/BhJbNw14w6584HCQWf3frBK8vmWnGZq/sbPHQ=="
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA=="
},
"y18n": {
"version": "5.0.8",
@ -14414,133 +14415,18 @@
"find-free-ports": "3.0.0",
"lightning": "5.20.0",
"tar-stream": "2.2.0"
},
"dependencies": {
"@grpc/grpc-js": {
"version": "1.6.10",
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.10.tgz",
"integrity": "sha512-XTX5z/P5kH802MDoVm/rqOil0UwYEOEjf9+NPgfmm5UINIxDzwYaXfVR6z8svCBG8Hlbu/FzkXqhP8J5xaWzSQ==",
"dev": true,
"requires": {
"@grpc/proto-loader": "^0.7.0",
"@types/node": ">=12.12.47"
}
},
"@grpc/proto-loader": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.2.tgz",
"integrity": "sha512-jCdyLIT/tdQ1zhrbTQnJNK5nbDf0GoBpy5jVNywBzzMDF+Vs6uEaHnfz46dMtDxkvwrF2hzk5Z67goliceH0sA==",
"dev": true,
"requires": {
"@types/long": "^4.0.1",
"lodash.camelcase": "^4.3.0",
"long": "^4.0.0",
"protobufjs": "^7.0.0",
"yargs": "^16.2.0"
}
},
"lightning": {
"version": "5.20.0",
"resolved": "https://registry.npmjs.org/lightning/-/lightning-5.20.0.tgz",
"integrity": "sha512-LhYN/WzhLCfIZuTrs2gjBV/0wrSa/7nVxEoQOnDhDAFu3y+REC0xAnwYFWe54n+B/yaEqdNtc58xZ/ZdgjpM2w==",
"dev": true,
"requires": {
"@grpc/grpc-js": "1.6.10",
"@grpc/proto-loader": "0.7.2",
"@types/express": "4.17.13",
"@types/node": "18.7.13",
"@types/request": "2.48.8",
"@types/ws": "8.5.3",
"async": "3.2.4",
"asyncjs-util": "1.2.10",
"bitcoinjs-lib": "6.0.2",
"bn.js": "5.2.1",
"body-parser": "1.20.0",
"bolt07": "1.8.2",
"bolt09": "0.2.3",
"cbor": "8.1.0",
"ecpair": "2.0.1",
"express": "4.18.1",
"invoices": "2.1.0",
"psbt": "2.7.1",
"tiny-secp256k1": "2.2.1",
"type-fest": "2.19.0"
}
},
"protobufjs": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.0.0.tgz",
"integrity": "sha512-ffNIEm+quOcYtQvHdW406v1NQmZSuqVklxsXk076BtuFnlYZfigLU+JOMrTD8TUOyqHYbRI/fSVNvgd25YeN3w==",
"dev": true,
"requires": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.1",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"dependencies": {
"long": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==",
"dev": true
}
}
},
"type-fest": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
"integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
"dev": true
},
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
}
},
"yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
"dev": true
}
}
},
"ln-service": {
"version": "53.20.0",
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-53.20.0.tgz",
"integrity": "sha512-kp6rgO4VhU1+xYkc6SFUd/+ZbWrZ2TAz3FBUfoRCNClzob4DONfdA0HM0yEX4BgJUQw+TtzNmM/fffYRHMf+tA==",
"version": "53.21.0",
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-53.21.0.tgz",
"integrity": "sha512-3zuiH7X0Ga+oOrzSAcXcW4X+r8broYlWcifJRgPf55lbFYIcbudCIM/ccsMoQoyctbh5tsyUC3aLmyO1fWJrGQ==",
"requires": {
"bolt07": "1.8.2",
"cors": "2.8.5",
"express": "4.18.1",
"invoices": "2.1.0",
"lightning": "5.19.0",
"lightning": "5.20.0",
"macaroon": "3.0.4",
"morgan": "1.10.0",
"ws": "8.8.1"
@ -15462,6 +15348,131 @@
"p2tr": "1.3.1",
"psbt": "2.7.1",
"tiny-secp256k1": "2.2.1"
},
"dependencies": {
"@grpc/grpc-js": {
"version": "1.6.10",
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.6.10.tgz",
"integrity": "sha512-XTX5z/P5kH802MDoVm/rqOil0UwYEOEjf9+NPgfmm5UINIxDzwYaXfVR6z8svCBG8Hlbu/FzkXqhP8J5xaWzSQ==",
"requires": {
"@grpc/proto-loader": "^0.7.0",
"@types/node": ">=12.12.47"
}
},
"@grpc/proto-loader": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.2.tgz",
"integrity": "sha512-jCdyLIT/tdQ1zhrbTQnJNK5nbDf0GoBpy5jVNywBzzMDF+Vs6uEaHnfz46dMtDxkvwrF2hzk5Z67goliceH0sA==",
"requires": {
"@types/long": "^4.0.1",
"lodash.camelcase": "^4.3.0",
"long": "^4.0.0",
"protobufjs": "^7.0.0",
"yargs": "^16.2.0"
}
},
"@types/node": {
"version": "18.7.9",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.9.tgz",
"integrity": "sha512-0N5Y1XAdcl865nDdjbO0m3T6FdmQ4ijE89/urOHLREyTXbpMWbSafx9y7XIsgWGtwUP2iYTinLyyW3FatAxBLQ=="
},
"lightning": {
"version": "5.19.0",
"resolved": "https://registry.npmjs.org/lightning/-/lightning-5.19.0.tgz",
"integrity": "sha512-ALaqRMWmc6fiZ2e0UvB8B4+QVqaBt43NmUhpFG+TDLP5dZFdOkV2vxdElaIh23iI8l4P4XPRGQQIFJnTJhlEOQ==",
"requires": {
"@grpc/grpc-js": "1.6.10",
"@grpc/proto-loader": "0.7.2",
"@types/express": "4.17.13",
"@types/node": "18.7.9",
"@types/request": "2.48.8",
"@types/ws": "8.5.3",
"async": "3.2.4",
"asyncjs-util": "1.2.10",
"bitcoinjs-lib": "6.0.2",
"bn.js": "5.2.1",
"body-parser": "1.20.0",
"bolt07": "1.8.2",
"bolt09": "0.2.3",
"cbor": "8.1.0",
"ecpair": "2.0.1",
"express": "4.18.1",
"invoices": "2.1.0",
"psbt": "2.7.1",
"tiny-secp256k1": "2.2.1",
"type-fest": "2.18.1"
}
},
"ln-service": {
"version": "53.20.0",
"resolved": "https://registry.npmjs.org/ln-service/-/ln-service-53.20.0.tgz",
"integrity": "sha512-kp6rgO4VhU1+xYkc6SFUd/+ZbWrZ2TAz3FBUfoRCNClzob4DONfdA0HM0yEX4BgJUQw+TtzNmM/fffYRHMf+tA==",
"requires": {
"bolt07": "1.8.2",
"cors": "2.8.5",
"express": "4.18.1",
"invoices": "2.1.0",
"lightning": "5.19.0",
"macaroon": "3.0.4",
"morgan": "1.10.0",
"ws": "8.8.1"
}
},
"protobufjs": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.1.0.tgz",
"integrity": "sha512-rCuxKlh0UQKSMjrpIcTLbR5TtGQ52cgs1a5nUoPBAKOccdPblN67BJtjrbtudUJK6HmBvUdsmymyYOzO7lxZEA==",
"requires": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"dependencies": {
"long": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-5.2.0.tgz",
"integrity": "sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w=="
}
}
},
"type-fest": {
"version": "2.18.1",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.18.1.tgz",
"integrity": "sha512-UKCINsd4qiATXD6OIlnQw9t1ux/n2ld+Nl0kzPbCONhCaUIS/BhJbNw14w6584HCQWf3frBK8vmWnGZq/sbPHQ=="
},
"y18n": {
"version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
},
"yargs": {
"version": "16.2.0",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"requires": {
"cliui": "^7.0.2",
"escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
"y18n": "^5.0.5",
"yargs-parser": "^20.2.2"
}
},
"yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="
}
}
},
"parseurl": {

View file

@ -36,7 +36,7 @@
"ini": "3.0.1",
"inquirer": "9.1.0",
"ln-accounting": "5.0.7",
"ln-service": "53.20.0",
"ln-service": "53.21.0",
"ln-sync": "3.13.1",
"ln-telegram": "3.22.3",
"moment": "2.29.4",
@ -83,5 +83,5 @@
"postpublish": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t alexbosworth/balanceofsatoshis --push .",
"test": "tap --branches=1 --functions=1 --lines=1 --statements=1 -t 60 test/arrays/*.js test/balances/*.js test/chain/*.js test/display/*.js test/encryption/*.js test/lnd/*.js test/network/*.js test/nodes/*.js test/peers/*.js test/responses/*.js test/routing/*.js test/services/*.js test/swaps/*.js test/tags/*.js test/telegram/*.js test/wallets/*.js"
},
"version": "12.26.4"
"version": "12.26.5"
}

View file

@ -1,18 +1,19 @@
const asyncAuto = require('async/auto');
const asyncMap = require('async/map');
const {returnResult} = require('asyncjs-util');
const {getWalletInfo} = require('ln-service');
const {getLnds} = require('./../lnd');
const fromName = node => `${node.alias} ${node.public_key.substring(0, 8)}`;
const {isArray} = Array;
const sanitize = n => (n || '').replace(/_/g, '\\_').replace(/[*~`]/g, '');
/** Get node details for telegram commands
{
logger: <Winston Logger Object>
names: [{
alias: <Node Alias String>
from: <Node Name String>
public_key: <Node Identity Public Key Hex String>
}]
nodes: [<Saved Node Name String>]
}
@ -26,7 +27,7 @@ const sanitize = n => (n || '').replace(/_/g, '\\_').replace(/[*~`]/g, '');
}]
}
*/
module.exports = ({logger, nodes}, cbk) => {
module.exports = ({logger, names, nodes}, cbk) => {
return new Promise((resolve, reject) => {
return asyncAuto({
// Check arguments
@ -45,32 +46,19 @@ module.exports = ({logger, nodes}, cbk) => {
// Get associated LNDs
getLnds: ['validate', ({}, cbk) => getLnds({logger, nodes}, cbk)],
// Get node info for the nodes
getNodes: ['getLnds', ({getLnds}, cbk) => {
return asyncMap(getLnds.lnds, (lnd, cbk) => {
return getWalletInfo({lnd}, (err, res) => {
if (!!err) {
return cbk([503, 'FailedToGetNodeInfoForTelegramNode', {err}]);
}
// Merge node info for the nodes
nodes: ['getLnds', ({getLnds}, cbk) => {
const nodes = getLnds.lnds.map((lnd, i) => {
return {
lnd,
alias: names[i].alias,
from: names[i].from,
public_key: names[i].public_key,
};
});
const named = fromName({
alias: res.alias,
public_key: res.public_key,
});
return cbk(null, {
lnd,
alias: res.alias,
from: sanitize(named),
public_key: res.public_key,
});
});
},
cbk);
return cbk(null, {nodes});
}],
// List of nodes with details
nodes: ['getNodes', ({getNodes}, cbk) => cbk(null, {nodes: getNodes})],
},
returnResult({reject, resolve, of: 'nodes'}, cbk));
});

View file

@ -56,7 +56,7 @@ const {version} = require('./../package');
const fileAsDoc = file => new InputFile(file.source, file.filename);
const fromName = node => `${node.alias} ${node.public_key.substring(0, 8)}`;
const getDetails = (logger, nodes) => getNodeDetails({logger, nodes});
const getLnds = (x, y, z) => getNodeDetails({logger: x, names: y, nodes: z});
const {isArray} = Array;
const isHash = n => /^[0-9A-F]{64}$/i.test(n);
let isBotInit = false;
@ -164,6 +164,12 @@ module.exports = (args, cbk) => {
return cbk();
}
const names = getNodes.map(node => ({
alias: node.alias,
from: node.from,
public_key: node.public_key,
}));
args.bot.catch(err => args.logger.error({telegram_error: err}));
// Catch message editing
@ -183,7 +189,7 @@ module.exports = (args, cbk) => {
await handleBackupCommand({
from: ctx.message.from.id,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
reply: ctx.reply,
send: (n, opts) => ctx.replyWithDocument(fileAsDoc(n), opts),
});
@ -218,7 +224,7 @@ module.exports = (args, cbk) => {
await handleCostsCommand({
from: ctx.message.from.id,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
reply: n => ctx.reply(n, markdown),
request: args.request,
working: () => ctx.replyWithChatAction('typing'),
@ -234,7 +240,7 @@ module.exports = (args, cbk) => {
await handleEarningsCommand({
from: ctx.message.from.id,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
reply: n => ctx.reply(n, markdown),
working: () => ctx.replyWithChatAction('typing'),
});
@ -249,7 +255,7 @@ module.exports = (args, cbk) => {
await handleGraphCommand({
from: ctx.message.from.id,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
remove: () => ctx.deleteMessage(),
reply: (message, options) => ctx.reply(message, options),
text: ctx.message.text,
@ -266,7 +272,7 @@ module.exports = (args, cbk) => {
await handleInfoCommand({
from: ctx.message.from.id,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
remove: () => ctx.deleteMessage(),
reply: (message, options) => ctx.reply(message, options),
});
@ -281,7 +287,7 @@ module.exports = (args, cbk) => {
await handleInvoiceCommand({
ctx,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
});
} catch (err) {
args.logger.error({err});
@ -317,7 +323,7 @@ module.exports = (args, cbk) => {
await handleLiquidityCommand({
from: ctx.message.from.id,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
reply: (n, opt) => ctx.reply(n, opt),
text: ctx.message.text,
working: () => ctx.replyWithChatAction('typing'),
@ -346,7 +352,7 @@ module.exports = (args, cbk) => {
budget,
from: ctx.message.from.id,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
reply: message => ctx.reply(message, markdown),
request: args.request,
text: ctx.message.text,
@ -365,7 +371,7 @@ module.exports = (args, cbk) => {
await handlePendingCommand({
from: ctx.message.from.id,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
reply: (message, options) => ctx.reply(message, options),
working: () => ctx.replyWithChatAction('typing'),
});
@ -444,7 +450,7 @@ module.exports = (args, cbk) => {
ctx,
bot: args.bot,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
});
} catch (err) {
args.logger.error({err});
@ -460,7 +466,7 @@ module.exports = (args, cbk) => {
ctx,
api: args.bot.api,
id: connectedId,
nodes: (await getDetails(args.logger, args.nodes)).nodes,
nodes: (await getLnds(args.logger, names, args.nodes)).nodes,
});
} catch (err) {
args.logger.error({err});