node-apis
Version:
🚀 Advanced TypeScript API generator with clean architecture, comprehensive testing, and automatic formatting. Generate production-ready Node.js APIs with complete integration test suites.
51 lines (49 loc) • 2.17 kB
JavaScript
"use strict";
/**
* Custom validator templates
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateCustomValidatorContent = exports.getCustomValidatorFileNames = void 0;
const naming_utils_1 = require("../shared/utils/naming.utils");
/**
* Gets custom validator file names for a module
*/
const getCustomValidatorFileNames = ({ customNames, moduleName, }) => {
const naming = (0, naming_utils_1.getModuleNaming)(moduleName);
return customNames.map(customName => `${customName}.${naming.file}.ts`);
};
exports.getCustomValidatorFileNames = getCustomValidatorFileNames;
/**
* Generates TypeScript validator file content for custom operations
*/
const generateCustomValidatorContent = ({ customName, moduleName, }) => {
const naming = (0, naming_utils_1.getModuleNaming)(moduleName);
const capitalizedCustom = customName.charAt(0).toUpperCase() + customName.slice(1);
return generateGenericCustomValidatorContent(customName, naming.class, capitalizedCustom, naming.file);
};
exports.generateCustomValidatorContent = generateCustomValidatorContent;
/**
* Generates generic custom validator content
*/
const generateGenericCustomValidatorContent = (customName, _capitalizedModule, _capitalizedCustom, moduleName) => {
return `import { z } from 'zod';
import type { typePayload } from '../types/${customName}.${moduleName}';
export const payloadSchema = z.object({
// Define validation rules for ${customName} ${moduleName}
id: z.string().min(1).max(255).optional(), // Customize based on your ID format
// Common validation patterns:
// - Strings: z.string().min(1).max(500)
// - Email: z.string().email().min(3).max(255)
// - Numbers: z.number().min(0).max(999999999)
// - Arrays: z.array(z.string()).min(0).max(100)
});
export const validatePayload = (data: unknown): { success: true; data: typePayload } | { success: false; error: z.ZodError } => {
const result = payloadSchema.safeParse(data);
if (result.success) {
return { success: true, data: result.data as typePayload };
}
return { success: false, error: result.error };
};
`;
};
//# sourceMappingURL=custom.validators.js.map