typegraphql-prisma-nestjs
Version:
This project is a fork of another with minor changes, created for personal use.
56 lines • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = generateArgsTypeClassFromArgs;
const tslib_1 = require("tslib");
const ts_morph_1 = require("ts-morph");
const path_1 = tslib_1.__importDefault(require("path"));
const config_1 = require("./config");
const imports_1 = require("./imports");
function generateArgsTypeClassFromArgs(project, generateDirPath, fields, argsTypeName, dmmfDocument, inputImportsLevel = 3) {
const dirPath = path_1.default.resolve(generateDirPath, config_1.argsFolderName);
const filePath = path_1.default.resolve(dirPath, `${argsTypeName}.ts`);
const sourceFile = project.createSourceFile(filePath, undefined, {
overwrite: true,
});
(0, imports_1.generateTypeGraphQLImport)(sourceFile);
(0, imports_1.generateGraphQLScalarsImport)(sourceFile);
(0, imports_1.generateInputsImports)(sourceFile, fields
.map(arg => arg.selectedInputType)
.filter(argInputType => argInputType.location === "inputObjectTypes")
.map(argInputType => argInputType.type), inputImportsLevel);
(0, imports_1.generateEnumsImports)(sourceFile, fields
.map(field => field.selectedInputType)
.filter(argType => argType.location === "enumTypes")
.map(argType => argType.type), 4);
sourceFile.addClass({
name: argsTypeName,
isExported: true,
decorators: [
{
name: "ArgsType",
arguments: [],
},
],
properties: fields.map(arg => {
return {
name: arg.typeName,
type: arg.fieldTSType,
hasExclamationToken: arg.isRequired,
hasQuestionToken: !arg.isRequired,
trailingTrivia: "\r\n",
decorators: [
{
name: "Field",
arguments: [
`_type => ${arg.typeGraphQLType}`,
ts_morph_1.Writers.object({
nullable: `${!arg.isRequired}`,
}),
],
},
],
};
}),
});
}
//# sourceMappingURL=args-class.js.map