@cosmology/ast
Version:
Cosmos TypeScript AST generation
93 lines (92 loc) • 3.37 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.optionalBool = exports.returnReponseType = exports.cleanType = exports.processRpcComment = void 0;
const utils_1 = require("../../../../utils");
const t = __importStar(require("@babel/types"));
const ensureOneSpaceEnd = (str) => {
if (/[\s\n\t]$/.test(str))
return str;
return `${str} `;
};
const ensureOneSpace = (str) => {
if (/^[\s\n\t]+/.test(str))
return str;
return ` ${str}`;
};
const processRpcComment = (e) => {
const comment = e.comment;
if (!comment)
return '';
if (!/[\n]+/.test(comment)) {
return `*${ensureOneSpaceEnd(ensureOneSpace((0, utils_1.cleanComment)(comment)))}`;
}
let lines = comment.split('\n');
lines = ['*', ...lines, ' '];
const comments = lines.map((line, i) => {
if (i == 0)
return line;
if (i == (lines.length - 1))
return (0, utils_1.cleanComment)(line);
return ` *${ensureOneSpace((0, utils_1.cleanComment)(line))}`;
});
return comments.join('\n');
};
exports.processRpcComment = processRpcComment;
const cleanType = (ResponseType) => {
// MARKED AS NOT DRY [google.protobuf names]
// TODO some have google.protobuf.Any shows up... figure out the better way to handle this
if (/\./.test(ResponseType)) {
ResponseType = ResponseType.split('.')[ResponseType.split('.').length - 1];
}
return ResponseType;
};
exports.cleanType = cleanType;
const returnReponseType = (ResponseType) => {
let typeRef;
if (typeof ResponseType === "string") {
ResponseType = (0, exports.cleanType)(ResponseType);
typeRef = t.tsTypeReference(t.identifier(ResponseType));
}
else {
typeRef = ResponseType;
}
return t.tsTypeAnnotation(t.tsTypeReference(t.identifier('Promise'), t.tsTypeParameterInstantiation([
typeRef
])));
};
exports.returnReponseType = returnReponseType;
const optionalBool = (hasParams, fieldNames) => {
if (!hasParams) {
return true;
}
else if (hasParams && fieldNames.length === 1 && fieldNames.includes('pagination')) {
// if only argument "required" is pagination
// also default to empty
return true;
}
return false;
};
exports.optionalBool = optionalBool;