/** * Entity Merger * * Merges generated entity code with existing TypeScript entity files. * Uses string-based parsing to add new fields with JSDoc comments. */ import type { ColumnNode, RelationshipNode } from '../../schema/types.js'; /** * Options for entity merging. */ export interface EntityMergerOptions { /** Add JSDoc @sync-added comments to new fields */ addSyncComments?: boolean; /** Mark removed fields with @deprecated instead of deleting */ markRemovedAsDeprecated?: boolean; /** Custom property name transformer */ propertyNameTransformer?: (columnName: string) => string; } /** * Represents a field to add to an entity. */ export interface FieldToAdd { column: ColumnNode; propertyName: string; isRelation?: boolean; relation?: RelationshipNode; } /** * Represents a field to mark as deprecated. */ export interface FieldToDeprecate { propertyName: string; reason: string; } /** * Result of entity merge operation. */ export interface MergeResult { /** The merged source code */ code: string; /** Number of fields added */ fieldsAdded: number; /** Number of fields marked deprecated */ fieldsDeprecated: number; /** Whether the file was modified */ modified: boolean; } /** * Merges new fields from database schema into existing entity files. */ export declare class EntityMerger { private readonly options; constructor(options?: EntityMergerOptions); /** * Merge new fields into existing entity source code. */ merge(existingCode: string, fieldsToAdd: FieldToAdd[], fieldsToDeprecate?: FieldToDeprecate[]): MergeResult; /** * Extract existing property names from entity code. */ private extractPropertyNames; /** * Find the position to insert new fields (before the last closing brace). */ private findInsertPosition; /** * Count net brace depth change in a line. */ private countBraces; /** * Generate code for new fields. */ private generateFieldsCode; /** * Generate code for a column field. */ private generateColumnField; /** * Generate code for a relation field. */ private generateRelationField; /** * Mark a field as deprecated in the source code. */ private markFieldAsDeprecated; /** * Build Field decorator options string. */ private buildFieldOptions; /** * Format type for description. */ private formatTypeDescription; /** * Get relation decorator name. */ private getRelationDecoratorName; /** * Default property name transformer (delegates to shared utility). */ private defaultPropertyNameTransformer; /** * Convert to PascalCase (delegates to shared utility). */ private toPascalCase; /** * Singularize (delegates to shared utility). */ private singularize; } /** * Create an EntityMerger instance. */ export declare function createEntityMerger(options?: EntityMergerOptions): EntityMerger; //# sourceMappingURL=entityMerger.d.ts.map