UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

34 lines (31 loc) 1.5 kB
import { AUTO_CONTEXT_DTO_CONSTANT } from '../../../../constant/dto/auto-context.constant.js'; import { FlushAutoDtoContextExecutions } from '../../../auto-dto-context-queue.utility.js'; import { GetRegisteredAutoDtoChildren } from '../../../register-auto-dto-child.utility.js'; /** * Pushes DTO auto-context onto the provided DTO prototype so property decorators can read it later. * @param {object} target - DTO prototype to annotate. * @param {EApiRouteType} method - Route method currently being generated. * @param {EApiDtoType} dtoType - DTO type currently being generated. * @param {WeakSet<object>} [visited] - Set of visited prototypes to avoid infinite recursion. */ function DtoAutoContextPush(target, method, dtoType, visited) { if (!target) return; const stack = Reflect.getMetadata?.(AUTO_CONTEXT_DTO_CONSTANT.METADATA_KEY, target) ?? []; stack.push({ dtoType, method }); Reflect.defineMetadata?.(AUTO_CONTEXT_DTO_CONSTANT.METADATA_KEY, stack, target); FlushAutoDtoContextExecutions(target); visited ??= new WeakSet(); if (visited.has(target)) return; visited.add(target); // eslint-disable-next-line @elsikora/typescript/no-unsafe-function-type const children = GetRegisteredAutoDtoChildren(target); if (!children) return; for (const child of children) { DtoAutoContextPush(child.prototype, method, dtoType, visited); } } export { DtoAutoContextPush }; //# sourceMappingURL=push.utility.js.map