@lightninglabs/lnc-rn
Version:
Lightning Node Connect npm module for React Native
39 lines (37 loc) • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createRpc = createRpc;
exports.default = void 0;
var _lncCore = require("@lightninglabs/lnc-core");
// capitalize the first letter in the string
const capitalize = s => s && s[0].toUpperCase() + s.slice(1);
/**
* Creates a typed Proxy object which calls the request or subscribe
* methods depending on which function is called on the object
*/
function createRpc(packageName, lnc) {
const rpc = {};
return new Proxy(rpc, {
get(target, key, c) {
const methodName = capitalize(key.toString());
// the full name of the method (ex: lnrpc.Lightning.OpenChannel)
const method = `${packageName}.${methodName}`;
if (_lncCore.subscriptionMethods.includes(method)) {
// call subscribe for streaming methods
return request => {
return lnc.subscribe(method, request);
};
} else {
// call request for unary methods
return async request => {
return await lnc.request(method, request);
};
}
}
});
}
var _default = createRpc;
exports.default = _default;
//# sourceMappingURL=createRpc.js.map