nestjs-custom-class-validators
Version:
This package contains a few custom validator I have found to be repetitive, So I made templates that handles both class-validator checks and Swagger configuration
81 lines • 3.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TransformDateStringToDateObject = exports.TransformSingleItemToArray = exports.TransformSortStringArray = exports.TransformStringToJSONArray = exports.SortStringArrayAlphabetically = exports.TransformNumberStringToNumber = exports.TransformBooleanStringToBoolean = void 0;
const common_1 = require("@nestjs/common");
const TransformBooleanStringToBoolean = ({ value }) => {
if (typeof value === "boolean") {
return value;
}
if (value && typeof value == "string") {
if (value.trim().toLocaleLowerCase() === "true") {
return true;
}
else if (value.trim().toLocaleLowerCase() === "false") {
return false;
}
}
return "";
};
exports.TransformBooleanStringToBoolean = TransformBooleanStringToBoolean;
const TransformNumberStringToNumber = ({ value }) => {
if (Array.isArray(value)) {
return value.map((_value) => typeof _value == "string" ? Number(_value) : _value);
}
else if (!Array.isArray(value) && typeof value === "string") {
return Number(value);
}
return value;
};
exports.TransformNumberStringToNumber = TransformNumberStringToNumber;
const SortStringArrayAlphabetically = ({ value }) => {
return value && Array.isArray(value)
? value.sort((a, b) => a.localeCompare(b))
: value;
};
exports.SortStringArrayAlphabetically = SortStringArrayAlphabetically;
const TransformStringToJSONArray = ({ value, key }) => {
if (!value) {
throw new common_1.UnprocessableEntityException(`${key}: Must not be empty`);
}
try {
if (Array.isArray(value)) {
return value;
}
if (typeof value === "string") {
const splitAsString = value.split(",");
const isJSONArrayString = value.constructor === [].constructor;
if (Array.isArray(splitAsString) &&
splitAsString.length > 0 &&
!isJSONArrayString) {
return splitAsString;
}
if (isJSONArrayString) {
return JSON.parse(value);
}
}
throw new Error("validation failed");
}
catch (err) {
throw new common_1.UnprocessableEntityException(`${key}: Must be an array, JSON array or comma separated string`);
}
};
exports.TransformStringToJSONArray = TransformStringToJSONArray;
const TransformSortStringArray = ({ value }) => {
return Array.isArray(value) && value.length
? value.sort((a, b) => a.localeCompare(b))
: value;
};
exports.TransformSortStringArray = TransformSortStringArray;
const TransformSingleItemToArray = ({ value }) => {
return Array.isArray(value) ? value : [value];
};
exports.TransformSingleItemToArray = TransformSingleItemToArray;
const TransformDateStringToDateObject = ({ value }) => {
const date = new Date(value);
if (typeof value === "string" && date) {
return date;
}
return value;
};
exports.TransformDateStringToDateObject = TransformDateStringToDateObject;
//# sourceMappingURL=validatorTransformers.js.map