UNPKG

@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

64 lines (63 loc) 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TemplateUtilities = void 0; const decorator_strategy_1 = require("../decorators/decorator-strategy"); const type_converter_1 = require("./type-converter"); class TemplateUtilities { constructor(decoratorConfigPath) { this.prismaTypeConverter = new type_converter_1.PrismaTypeConverter(); this.decoratorStrategy = new decorator_strategy_1.DecoratorStrategy(decoratorConfigPath); } echo(input) { return input; } when(condition, thenTpl, elseTpl = '') { return condition ? thenTpl : elseTpl; } unless(condition, thenTpl, elseTpl = '') { return !condition ? thenTpl : elseTpl; } each(arr, fn, joinWith = '') { return arr.map(fn).join(joinWith); } hasApiPropertyDoc(field) { var _a; return Boolean((_a = field.documentation) === null || _a === void 0 ? void 0 : _a.includes('@ApiProperty')); } hasSomeApiPropertyDoc(fields) { return fields.some((f) => this.hasApiPropertyDoc(f)); } buildEntityDecorator(field) { var _a; if (!this.hasApiPropertyDoc(field)) { return ''; } const apiPropertyLines = ((_a = field.documentation) !== null && _a !== void 0 ? _a : '') .split('\n') .filter((line) => line.includes('@ApiProperty')) .map((line) => line.trim()); return apiPropertyLines.join('\n') + (apiPropertyLines.length ? '' : ''); } buildDtoDecorator(field) { if (field.kind === 'enum') { return this.buildEnumDecorator(field); } if (['scalar', 'relation-input', 'object'].includes(field.kind)) { return this.buildFieldDecorator(field); } return ''; } buildEnumDecorator(field) { var _a; const isValid = this.decoratorStrategy.verifyIfDecoratorIsValid((_a = field.documentation) !== null && _a !== void 0 ? _a : ''); return isValid ? `${field.documentation}\n` : `@ApiProperty({ enum: ${this.prismaTypeConverter.fieldType(field)} })\n`; } buildFieldDecorator(field) { var _a; const decorators = this.decoratorStrategy.getValidDecorators((_a = field.documentation) !== null && _a !== void 0 ? _a : ''); return (decorators === null || decorators === void 0 ? void 0 : decorators.length) ? `${decorators.join('\n')}` : ''; } } exports.TemplateUtilities = TemplateUtilities;