UNPKG

@accounter/shaam-uniform-format-generator

Version:

Fully typed application that generates, parses, and validates SHAAM uniform format tax reports (INI.TXT and BKMVDATA.TXT).

58 lines (57 loc) 1.92 kB
"use strict"; /** * Input validation utilities */ Object.defineProperty(exports, "__esModule", { value: true }); exports.validateInput = validateInput; const zod_1 = require("zod"); const index_js_1 = require("../types/index.js"); const errors_js_1 = require("./errors.js"); /** * Converts Zod errors to ValidationError format */ function convertZodErrorsToValidationErrors(zodError) { return zodError.issues.map((issue, index) => ({ recordType: 'input', recordIndex: index, field: issue.path.join('.') || 'unknown', message: issue.message, value: issue.input, })); } /** * Validates report input data against the schema * * @param input - The input data to validate * @param mode - Validation mode ('fail-fast' or 'collect-all') * @returns Array of validation errors (empty if valid) */ function validateInput(input, mode = 'fail-fast') { const errors = []; try { index_js_1.ReportInputSchema.parse(input); } catch (error) { if (error instanceof zod_1.ZodError) { const validationErrors = convertZodErrorsToValidationErrors(error); if (mode === 'fail-fast') { throw new errors_js_1.ShaamFormatError(`Validation failed: ${validationErrors[0]?.message || 'Unknown error'}`, validationErrors); } errors.push(...validationErrors); } else { // Handle non-Zod errors const unknownError = { recordType: 'unknown', recordIndex: 0, field: 'unknown', message: error instanceof Error ? error.message : 'Unknown validation error', }; if (mode === 'fail-fast') { throw new errors_js_1.ShaamFormatError('Validation failed', [unknownError]); } errors.push(unknownError); } } return errors; }