backend-smith
Version:
A CLI tool for automating backend component generation in Express.js, including modules, schemas, routes, services, and more.
56 lines (55 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseFieldsHelper = void 0;
var possibleFields = {
String: "string",
Number: "number",
Boolean: "boolean",
};
var getName = function (field) {
var firstColonIndex = field.indexOf(":");
var name = field
.substring(0, firstColonIndex)
.replace("{", "")
.replace("}", "");
if (name.charAt(0) === "*") {
return { name: name.slice(1), required: true };
}
return { name: name, required: false };
};
var getType = function (field) {
var firstColonIndex = field.indexOf(":");
var value = field.substring(firstColonIndex + 1);
if (["[", "{"].includes(value.charAt(0))) {
var fields = value.slice(1, -1);
if (possibleFields[fields]) {
return { type: [fields] };
}
else {
if (value.includes("|")) {
return { type: ["String"], enum: fields.split("|") };
}
var result = (0, exports.parseFieldsHelper)(fields.split(" "));
if (value.charAt(0) == "[")
return { type: [result] };
return { type: result };
}
}
if (value.includes("|")) {
return { type: "String", enum: value.split("|") };
}
return { type: value.replace("}", "") };
};
var parseFieldsHelper = function (fields) {
var result = {};
fields.forEach(function (field) {
var _a = getName(field), name = _a.name, required = _a.required;
var _b = getType(field), type = _b.type, enumTypes = _b.enum;
result[name] = { type: type, required: required };
if (enumTypes) {
result[name].enum = enumTypes;
}
});
return result;
};
exports.parseFieldsHelper = parseFieldsHelper;