rchain-toolkit
Version:
Node JS utils and methods to interact with rchain's rnode api and proto interfaces
71 lines (70 loc) • 2.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMethod = (options, client, method) => {
return new Promise((resolve, reject) => {
client[method](options, async (err, resp) => {
if (err) {
reject(err);
}
else {
resolve(resp);
}
});
});
};
// Get block
exports.getBlock = (options, client) => {
return exports.getMethod(options, client, "getBlock");
};
// Get blocks
exports.getBlocks = (options, client) => {
return exports.getMethod(options, client, "getBlocks");
};
// Get blocks
exports.lastFinalizedBlock = (client) => {
return exports.getMethod(undefined, client, "lastFinalizedBlock");
};
exports.doDeploy = (options, client) => {
return exports.getMethod(options, client, "doDeploy");
};
// Preview private names
exports.previewPrivateNames = (options, client) => {
return exports.getMethod(options, client, "previewPrivateNames");
};
// Propose
exports.propose = (options, client) => {
return exports.getMethod(options, client, "propose");
};
exports.getClient = (grpcEndPoint, grpc, protoLoader, protoService) => {
let path = "/protobuf/DeployServiceV1.proto";
if (protoService === "proposeService") {
path = "/protobuf/ProposeServiceV1.proto";
}
return new Promise((resolve, reject) => {
protoLoader
.load(__dirname + path, {
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true,
})
.then((packageDefinition) => {
const packageObject = grpc.loadPackageDefinition(packageDefinition);
let client;
if (protoService === "deployService") {
client = new packageObject.casper.v1.DeployService(grpcEndPoint, grpc.credentials.createInsecure());
}
else {
client = new packageObject.casper.v1.ProposeService(grpcEndPoint, grpc.credentials.createInsecure());
}
resolve(client);
})
.catch((err) => {
reject(err);
});
});
};
exports.getGrpcProposeClient = (grpcEndPoint, grpc, protoLoader) => {
return exports.getClient(grpcEndPoint, grpc, protoLoader, "proposeService");
};