typegraphql-prisma-nestjs
Version:
This project is a fork of another with minor changes, created for personal use.
39 lines • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = generateEnumFromDef;
const tslib_1 = require("tslib");
const path_1 = tslib_1.__importDefault(require("path"));
const imports_1 = require("./imports");
const config_1 = require("./config");
const helpers_1 = require("./helpers");
function generateEnumFromDef(project, baseDirPath, enumDef, options) {
const dirPath = path_1.default.resolve(baseDirPath, config_1.enumsFolderName);
const filePath = path_1.default.resolve(dirPath, `${enumDef.typeName}.ts`);
const sourceFile = project.createSourceFile(filePath, undefined, {
overwrite: true,
});
(0, imports_1.generateTypeGraphQLImport)(sourceFile);
sourceFile.addEnum({
isExported: true,
name: enumDef.typeName,
...(enumDef.docs && {
docs: [{ description: (0, helpers_1.convertNewLines)(enumDef.docs) }],
}),
members: enumDef.valuesMap.map(({ name, value }) => ({
name,
value,
// TODO: add support for string enums (values)
// TODO: add support for enum members docs
})),
});
// TODO: refactor to AST
sourceFile.addStatements([
`registerEnumType(${enumDef.typeName}, {
name: "${[options.enumTypePrefix, enumDef.typeName]
.filter(Boolean)
.join("")}",
description: ${enumDef.docs ? `"${enumDef.docs}"` : "undefined"},
});`,
]);
}
//# sourceMappingURL=enum.js.map