UNPKG

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
"use strict"; 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