@cosmology/ast
Version:
Cosmos TypeScript AST generation
50 lines (47 loc) • 2.2 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _class = require("../class");
var _protoParser = require("@cosmology/proto-parser");
var _utils = require("@cosmology/utils");
var _types = require("@cosmology/types");
var _generator = _interopRequireDefault(require("@babel/generator"));
var _encoding = require("../../../encoding");
var _testUtils = require("../../../../test-utils");
var store = (0, _testUtils.getTestProtoStore)();
store.traverseAll();
var expectCode = function expectCode(ast) {
expect((0, _generator["default"])(ast).code).toMatchSnapshot();
};
var printCode = function printCode(ast) {
console.log((0, _generator["default"])(ast).code);
};
it('AggregatedLCDClient', function () {
var ref1 = store.findProto('cosmos/bank/v1beta1/query.proto');
var ref2 = store.findProto('osmosis/gamm/v1beta1/query.proto');
var res1 = (0, _protoParser.traverse)(store, ref1);
var res2 = (0, _protoParser.traverse)(store, ref2);
var service1 = (0, _utils.getNestedProto)(res1).Query;
var service2 = (0, _utils.getNestedProto)(res2).Query;
var context = new _encoding.GenericParseContext(ref1, store, _types.defaultTelescopeOptions);
var ast = (0, _class.createAggregatedLCDClient)(context, [service1, service2], 'QueryClient');
expectCode(ast);
});
// TODO - use package names to shape the class
// e.g. osmosis.gamm.v1beta1.pools()
it('options', function () {
var packages = ['cosmos.bank.v1beta1', 'osmosis.gamm.v1beta1'];
var refs = store.filterProtoWhere(function (ref) {
return packages.includes(ref.proto["package"]);
});
var services = refs.map(function (ref) {
var _proto$Query;
var proto = (0, _utils.getNestedProto)(ref.traversed);
if (!(proto !== null && proto !== void 0 && proto.Query) || ((_proto$Query = proto.Query) === null || _proto$Query === void 0 ? void 0 : _proto$Query.type) !== 'Service') {
return;
}
return proto.Query;
}).filter(Boolean);
var context = new _encoding.GenericParseContext(refs[0], store, _types.defaultTelescopeOptions);
var ast = (0, _class.createAggregatedLCDClient)(context, services, 'QueryClient');
expectCode(ast);
});
;