UNPKG

grpc-promise

Version:

GRPC promisify module for all Request/Response types: standard and stream

68 lines (60 loc) 2.07 kB
const requestTypes = require('./request-types/request-types'); const promisifyAll = function (client, options) { Object.keys(Object.getPrototypeOf(client)).forEach(function (functionName) { const originalFunction = client[functionName]; if (originalFunction.requestStream === undefined && originalFunction.responseStream === undefined) { return; } const genericFunctionSelector = (originalFunction.requestStream ? 2 : 0) | (originalFunction.responseStream ? 1 : 0); let genericFunctionName; switch (genericFunctionSelector) { case 0: genericFunctionName = 'makeUnaryRequest'; break; case 1: genericFunctionName = 'makeServerStreamRequest'; break; case 2: genericFunctionName = 'makeClientStreamRequest'; break; case 3: genericFunctionName = 'makeBidiStreamRequest'; break; } client[functionName] = requestTypes[genericFunctionName](client, originalFunction, options); }); }; const promisify = function (client, methods, options) { Object.keys(Object.getPrototypeOf(client)).forEach(function (functionName) { const originalFunction = client[functionName]; if (originalFunction.requestStream === undefined && originalFunction.responseStream === undefined) { return; } if (methods.indexOf(functionName) === -1) { return; } const genericFunctionSelector = (originalFunction.requestStream ? 2 : 0) | (originalFunction.responseStream ? 1 : 0); let genericFunctionName; switch (genericFunctionSelector) { case 0: genericFunctionName = 'makeUnaryRequest'; break; case 1: genericFunctionName = 'makeServerStreamRequest'; break; case 2: genericFunctionName = 'makeClientStreamRequest'; break; case 3: genericFunctionName = 'makeBidiStreamRequest'; break; } client[functionName] = requestTypes[genericFunctionName](client, originalFunction, options); }); }; module.exports = { promisifyAll: promisifyAll, promisify: promisify };