@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
69 lines (65 loc) • 4.36 kB
JavaScript
'use strict';
require('../../../../enum/decorator/api/action.enum.js');
require('../../../../enum/decorator/api/authentication-type.enum.js');
require('../../../../enum/decorator/api/controller/get-list/query/filter/missing-behavior.enum.js');
require('../../../../enum/decorator/api/controller/get-list/query/unlisted-fields.enum.js');
require('../../../../enum/decorator/api/controller/relation-reference-shape.enum.js');
require('../../../../enum/decorator/api/controller/request/target.enum.js');
require('../../../../enum/decorator/api/controller/request/transformer-type.enum.js');
require('../../../../enum/decorator/api/controller/response-target.enum.js');
var dtoType_enum = require('../../../../enum/decorator/api/dto-type.enum.js');
require('../../../../enum/decorator/api/function/context-storage-kind.enum.js');
require('../../../../enum/decorator/api/function/subscriber-transaction-expectation.enum.js');
require('../../../../enum/decorator/api/function/transaction/event-status.enum.js');
require('../../../../enum/decorator/api/function/transaction/failure-stage.enum.js');
require('../../../../enum/decorator/api/function/transaction/mode.enum.js');
require('../../../../enum/decorator/api/function/transaction/outcome.enum.js');
require('../../../../enum/decorator/api/function/transaction/owner-kind.enum.js');
require('../../../../enum/decorator/api/function/transaction/trace-type.enum.js');
require('../../../../enum/decorator/api/function/type.enum.js');
require('../../../../enum/decorator/api/on-type.enum.js');
require('../../../../enum/decorator/api/property/data-type.enum.js');
require('../../../../enum/decorator/api/property/date/identifier.enum.js');
require('../../../../enum/decorator/api/property/date/type.enum.js');
var desribeType_enum = require('../../../../enum/decorator/api/property/desribe-type.enum.js');
require('../../../../enum/decorator/api/property/number-type.enum.js');
require('../../../../enum/decorator/api/property/string-type.enum.js');
require('../../../../enum/decorator/api/route/subscriber-authorization-expectation.enum.js');
var type_enum = require('../../../../enum/decorator/api/route/type.enum.js');
var exposedForGuard_utility = require('./exposed-for-guard.utility.js');
var infrastructureTimestamp_utility = require('./infrastructure-timestamp.utility.js');
/**
* Determines if a property should be marked for inclusion in a specific DTO type
* @param {EApiRouteType} method - The API route type (GET, POST, etc.)
* @param {EApiDtoType} dtoType - The DTO type (request, response, etc.)
* @param {string} _propertyName - The name of the property
* @param {TApiPropertyDescribeProperties} propertyMetadata - The property's metadata
* @param {boolean} isPrimary - Whether the property is a primary key
* @param {Type<IAuthGuard>} currentGuard - The current authentication guard
* @returns {boolean} True if the property should be marked, false otherwise
*/
function DtoIsPropertyShouldBeMarked(method, dtoType, _propertyName, propertyMetadata, isPrimary, currentGuard) {
const isWriteBody = dtoType === dtoType_enum.EApiDtoType.BODY && (method === type_enum.EApiRouteType.CREATE || method === type_enum.EApiRouteType.UPDATE || method === type_enum.EApiRouteType.PARTIAL_UPDATE);
if (isWriteBody && infrastructureTimestamp_utility.DtoIsPropertyInfrastructureTimestamp(propertyMetadata)) {
return false;
}
const properties = propertyMetadata.properties?.[method];
if (properties?.[dtoType]?.isEnabled === false) {
return false;
}
if (!exposedForGuard_utility.DtoIsPropertyExposedForGuard(method, propertyMetadata, dtoType, currentGuard)) {
return false;
}
if (dtoType === dtoType_enum.EApiDtoType.QUERY && propertyMetadata.type === desribeType_enum.EApiPropertyDescribeType.OBJECT) {
return false;
}
if (dtoType === dtoType_enum.EApiDtoType.PARAMETERS && isPrimary) {
return true;
}
if ((dtoType === dtoType_enum.EApiDtoType.QUERY || dtoType === dtoType_enum.EApiDtoType.BODY) && !isPrimary) {
return true;
}
return dtoType !== dtoType_enum.EApiDtoType.PARAMETERS && dtoType !== dtoType_enum.EApiDtoType.QUERY && dtoType !== dtoType_enum.EApiDtoType.BODY;
}
exports.DtoIsPropertyShouldBeMarked = DtoIsPropertyShouldBeMarked;
//# sourceMappingURL=should-be-marked.utility.js.map