From 4625aca583acb444cf2e08ccc4c6d834312d3080 Mon Sep 17 00:00:00 2001 From: Kevin Malakoff Date: Fri, 14 Jun 2019 14:07:48 -0700 Subject: Removed dependency on forked module --- lib/createLnrpc.js | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lib/createLnrpc.js (limited to 'lib') diff --git a/lib/createLnrpc.js b/lib/createLnrpc.js new file mode 100644 index 00000000..16a59b3c --- /dev/null +++ b/lib/createLnrpc.js @@ -0,0 +1,43 @@ +import fs from 'fs' +import grpc from 'grpc' +import createLnrpc from 'lnrpc' +import {promisify} from 'util' + +export default async ({ server, tls, macaroon, channelpeers }) => { + const lnrpc = await createLnrpc({ server, tls }) + lnrpc.meta = new grpc.Metadata() + lnrpc.meta.add('macaroon', fs.readFileSync(macaroon).toString('hex')) + lnrpc.channelpeers = channelpeers + + // Resolve proxy instance + return new Proxy(lnrpc, { + /** + * Promisify each lightning RPC method + * @param {lnrpc.Lightning} target + * @param {String} key + * @return {Promise} {Any} + */ + get(target, key) { + const method = target[key] + + if (typeof key === 'string' && typeof method === 'function') { + const streaming = key.match(/openChannel$|sendPayment|subscribe.*/) + let fn + + if (streaming) { + if (key === 'sendPayment') { + fn = params => method.call(lnrpc, target.meta, params) + } else { + fn = params => method.call(lnrpc, params, target.meta) + } + } else { + fn = params => promisify(method).call(lnrpc, params, target.meta) + } + + return fn + } + + return target[key]; // forward + } + }); +} -- cgit v1.2.3