@whisklabs/grpc
Version:
gRPC generator and http library for typescript
68 lines • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ParseRPC = void 0;
var comment_1 = require("../comment");
var thrower_1 = require("../thrower");
var utils_1 = require("../utils");
var validators_1 = require("../validators");
var options_1 = require("./options");
function ParseRPC(tokens) {
var _a = (0, utils_1.check)({
type: 'rpc',
tokens: tokens,
rules: [
(0, utils_1.ch)('rpc'),
(0, utils_1.ch)(validators_1.isText, { result: true }),
(0, utils_1.ch)('('),
(0, utils_1.ch)('stream', { ignore: true, result: true }),
(0, utils_1.ch)(validators_1.isText, { result: true }),
(0, utils_1.ch)(')'),
(0, utils_1.ch)('returns'),
(0, utils_1.ch)('('),
(0, utils_1.ch)('stream', { ignore: true, result: true }),
(0, utils_1.ch)(validators_1.isText, { result: true }),
(0, utils_1.ch)(')'),
],
}), results = _a.results, len = _a.len;
(0, utils_1.cut)(tokens, len);
var rpc = {
name: results[0],
inputType: results[2],
outputType: results[4],
clientStreaming: results[1] === 'stream',
serverStreaming: results[3] === 'stream',
options: {},
};
(0, comment_1.setComment)(rpc);
if (tokens[0] === ';') {
tokens.shift();
return rpc;
}
(0, utils_1.check)({
type: 'rpc',
tokens: [tokens[0], tokens[tokens.indexOf('}')]],
rules: [(0, utils_1.ch)('{'), (0, utils_1.ch)('}')],
});
tokens.shift();
while (tokens.length > 0) {
switch ((0, comment_1.next)(tokens)) {
case '}':
(0, utils_1.cut)(tokens, 1);
(0, utils_1.semicolon)(tokens);
(0, comment_1.writeComment)(rpc);
return rpc;
case 'option': {
var _b = (0, options_1.ParseOptions)(tokens), field = _b.field, value = _b.value;
(0, utils_1.insertOption)(rpc.options, field, value);
break;
}
case undefined:
continue;
default:
throw new thrower_1.Thrower('rpc', [["Unexpected token \"".concat(tokens[0], "\""), 0]]);
}
}
throw new thrower_1.Thrower('rpc', [['no close tag "}"', 0]]);
}
exports.ParseRPC = ParseRPC;
//# sourceMappingURL=rpc.js.map