UNPKG

@elsikora/nestjs-crud-automator

Version:

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

44 lines (40 loc) 1.79 kB
'use strict'; var exception_utility = require('../error/exception.utility.js'); var constructor_utility = require('../is/entity/constructor.utility.js'); var factory_utility = require('../is/entity/factory.utility.js'); var literal_utility = require('../is/entity/literal.utility.js'); /** * Resolves property decorator entity references immediately or throws if unavailable. * @param {TApiPropertyEntity} entity - Entity reference or resolver. * @param {string} decoratorName - Decorator name for error context. * @returns {IApiBaseEntity | Type<IApiBaseEntity>} Normalized entity reference. */ function ResolvePropertyEntity(entity, decoratorName) { // eslint-disable-next-line @elsikora/sonar/use-type-alias const resolved = TryResolvePropertyEntity(entity); if (!resolved) { throw exception_utility.ErrorException(`Entity for ${decoratorName} could not be resolved. Provide the entity class or a factory that returns it.`); } return resolved; } /** * Attempts to resolve the entity reference without throwing when the resolver returns undefined. * @param {TApiPropertyEntity} entity - Entity reference or factory. * @returns {IApiBaseEntity | Type<IApiBaseEntity> | undefined} Resolved entity or undefined when not ready. */ function TryResolvePropertyEntity(entity) { if (constructor_utility.IsEntityConstructor(entity)) { return entity; } if (literal_utility.IsEntityLiteral(entity)) { return entity; } if (factory_utility.IsEntityFactory(entity)) { const factory = entity; return factory(); } return undefined; } exports.ResolvePropertyEntity = ResolvePropertyEntity; exports.TryResolvePropertyEntity = TryResolvePropertyEntity; //# sourceMappingURL=property-entity.utility.js.map