@whisklabs/grpc
Version:
gRPC generator and http library for typescript
48 lines • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ParseService = 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");
var rpc_1 = require("./rpc");
function ParseService(tokens) {
var _a = (0, utils_1.check)({
type: 'service',
tokens: tokens,
rules: [(0, utils_1.ch)('service'), (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 service = {
name: results[0],
methods: [],
options: {},
};
(0, comment_1.setComment)(service);
while (tokens.length > 0) {
if (tokens[0] === '}') {
tokens.shift();
(0, utils_1.semicolon)(tokens);
(0, comment_1.writeComment)(service);
return service;
}
switch ((0, comment_1.next)(tokens)) {
case 'option': {
var _b = (0, options_1.ParseOptions)(tokens), field = _b.field, value = _b.value;
(0, utils_1.insertOption)(service.options, field, value);
break;
}
case 'rpc':
service.methods.push((0, rpc_1.ParseRPC)(tokens));
break;
case undefined:
continue;
default:
throw new thrower_1.Thrower('rpc', [["Unexpected token in service: ".concat(tokens[0]), 0]]);
}
}
throw new thrower_1.Thrower('rpc', [['no close tag "}"', 0]]);
}
exports.ParseService = ParseService;
//# sourceMappingURL=service.js.map