genezio
Version:
Command line utility to interact with Genezio infrastructure.
63 lines (62 loc) • 2.7 kB
JavaScript
import { TriggerType } from "../../projectConfiguration/yaml/models.js";
export function getAstSummary(classesInfo) {
const classes = classesInfo
.filter((classConfiguration) => {
const body = classConfiguration.program.body;
// filter if body is undefined
if (body === undefined) {
return false;
}
return true;
})
.map((classConfiguration) => {
const body = classConfiguration.program.body;
// get the class definition
const classElem = body?.find((elem) => {
return elem.type === "ClassDefinition";
});
// get the types
const types = body?.filter((elem) => {
return elem.type !== "ClassDefinition";
}) || [];
const methods = classElem.methods.map((method) => {
const params = method.params.map((param) => {
return {
name: param.name,
type: param.paramType,
optional: param.optional,
};
});
const methodConfiguration = classConfiguration.classConfiguration.methods.find((m) => m.name === method.name);
const methodInfo = {
name: method.name,
type: methodConfiguration?.type ||
classConfiguration.classConfiguration.type ||
TriggerType.jsonrpc,
params: params,
docString: method.docString,
returnType: method.returnType,
};
return methodInfo;
});
const classInfo = {
name: classElem.name,
path: classConfiguration.classConfiguration.path,
language: classConfiguration.classConfiguration.language,
methods: methods,
types: types,
docString: classElem.docString,
timeout: classConfiguration.classConfiguration.timeout,
storageSize: classConfiguration.classConfiguration.storageSize,
instanceSize: classConfiguration.classConfiguration.instanceSize,
vcpuCount: classConfiguration.classConfiguration.vcpuCount,
memoryMb: classConfiguration.classConfiguration.memoryMb,
maxConcurrentRequestsPerInstance: classConfiguration.classConfiguration.maxConcurrentRequestsPerInstance,
maxConcurrentInstances: classConfiguration.classConfiguration.maxConcurrentInstances,
cooldownTime: classConfiguration.classConfiguration.cooldownTime,
persistent: classConfiguration.classConfiguration.persistent,
};
return classInfo;
});
return classes;
}