@weverson_na/prisma-generator-nestjs-dto
Version:
Advanced Prisma Generator with Smart Merge v2: Creates DTO and Entity classes with AST-based preservation, intelligent import management, and modular architecture for NestJS
78 lines (77 loc) • 3.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TemplateHelpers = void 0;
const import_generator_1 = require("./template-helpers/import-generator");
const naming_strategy_1 = require("./template-helpers/naming-strategy");
const property_renderer_1 = require("./template-helpers/property-renderer");
const template_utilities_1 = require("./template-helpers/template-utilities");
const type_converter_1 = require("./template-helpers/type-converter");
class TemplateHelpers {
constructor(options) {
this.options = options;
this.namingStrategy = new naming_strategy_1.DefaultNamingStrategy(options.transformClassNameCase || ((s) => s), options.transformFileNameCase || ((s) => s));
this.typeConverter = new type_converter_1.PrismaTypeConverter();
this.propertyRenderer = new property_renderer_1.PropertyRenderer(this);
}
entityName(name) {
return this.namingStrategy.transformClassName(name, this.options.entityPrefix, this.options.entitySuffix);
}
connectDtoName(name) {
return this.namingStrategy.transformClassName(name, this.options.connectDtoPrefix, this.options.dtoSuffix);
}
createDtoName(name) {
return this.namingStrategy.transformClassName(name, this.options.createDtoPrefix, this.options.dtoSuffix);
}
updateDtoName(name) {
return this.namingStrategy.transformClassName(name, this.options.updateDtoPrefix, this.options.dtoSuffix);
}
connectDtoFilename(name, withExt = false) {
return this.namingStrategy.transformFileName(name, 'connect-', '.dto', withExt);
}
createDtoFilename(name, withExt = false) {
return this.namingStrategy.transformFileName(name, 'create-', '.dto', withExt);
}
updateDtoFilename(name, withExt = false) {
return this.namingStrategy.transformFileName(name, 'update-', '.dto', withExt);
}
entityFilename(name, withExt = false) {
return this.namingStrategy.transformFileName(name, undefined, '.entity', withExt);
}
fieldType(field, toInputType = false) {
return this.typeConverter.fieldType(field, toInputType);
}
fieldsToDtoProps(fields, useInputTypes = false, forceOptional = false, addExposePropertyDecorator = false) {
return this.propertyRenderer.fieldsToDtoProps(fields, useInputTypes, forceOptional, addExposePropertyDecorator);
}
fieldsToEntityProps(fields) {
return this.propertyRenderer.fieldsToEntityProps(fields);
}
static scalarToTS(scalar, useInputTypes = false) {
const converter = new type_converter_1.PrismaTypeConverter();
return converter.scalarToTS(scalar, useInputTypes);
}
apiExtraModels(names) {
const list = names.map((n) => this.entityName(n)).join(', ');
return ``;
}
get config() {
const { connectDtoPrefix, createDtoPrefix, updateDtoPrefix, dtoSuffix, entityPrefix, entitySuffix, } = this.options;
return {
connectDtoPrefix,
createDtoPrefix,
updateDtoPrefix,
dtoSuffix,
entityPrefix,
entitySuffix,
};
}
}
exports.TemplateHelpers = TemplateHelpers;
TemplateHelpers.echo = template_utilities_1.TemplateUtilities.echo;
TemplateHelpers.when = template_utilities_1.TemplateUtilities.when;
TemplateHelpers.unless = template_utilities_1.TemplateUtilities.unless;
TemplateHelpers.each = template_utilities_1.TemplateUtilities.each;
TemplateHelpers.hasSomeApiPropertyDoc = template_utilities_1.TemplateUtilities.hasSomeApiPropertyDoc;
TemplateHelpers.hasApiPropertyDoc = template_utilities_1.TemplateUtilities.hasApiPropertyDoc;
TemplateHelpers.importStatement = import_generator_1.ImportStatementGenerator.importStatement;
TemplateHelpers.importStatements = import_generator_1.ImportStatementGenerator.importStatements;