import CSVFileValidator, { ParsedResults, ValidatorConfig } from '../src/csv-file-validator' const requiredError = (headerName: string, rowNumber: number, columnNumber: number) => { return `
${headerName} is required in the ${rowNumber} row / ${columnNumber} column
` } const validateError = (headerName: string, rowNumber: number, columnNumber: number) => { return `
${headerName} is not valid in the ${rowNumber} row / ${columnNumber} column
` } const uniqueError = (headerName: string, rowNumber: number) => { return `
${headerName} is not unique at the ${rowNumber} row
` } const isEmailValid = function (email: string) { const reqExp = /[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$/ return reqExp.test(email) } const isAgeValid = function (age:number) { return age > 0 } const isPasswordValid = function (password: string) { return password.length >= 4 } interface CSVRow { firstName: string; lastName: string; email: string; password: string; roles: string; } interface CSVRow_1 { name: string; surname: string; age: string; } const CSVConfig: ValidatorConfig = { headers: [ { name: 'First Name', inputName: 'firstName', required: true, requiredError }, { name: 'Last Name', inputName: 'lastName', required: true, requiredError, optional: true }, { name: 'Email', inputName: 'email', required: true, requiredError, unique: true, uniqueError, validate: isEmailValid, validateError }, { name: 'Password', inputName: 'password', required: true, requiredError, validate: isPasswordValid, validateError }, { name: 'Roles', inputName: 'roles', required: true, requiredError, isArray: true } ], isColumnIndexAlphabetic: true } document.getElementById('file').onchange = function (event: any) { CSVFileValidator(event.target.files[0], CSVConfig) .then((csvData: ParsedResults) => { csvData.inValidData.forEach((item) => { document.getElementById('invalidMessages').insertAdjacentHTML('beforeend', item.message) }) console.log(csvData.inValidData) console.log(csvData.data) }) } const CSVConfig_1: ValidatorConfig = { headers: [ { name: 'Name', inputName: 'name', required: true, requiredError }, { name: 'Surname', inputName: 'surname', required: true, requiredError, optional: true }, { name: 'Age', inputName: 'age', required: true, requiredError, validate: isAgeValid, validateError }, ], parserConfig: { dynamicTyping: true } } document.getElementById('file_1').onchange = function (event: any) { CSVFileValidator(event.target.files[0], CSVConfig_1) .then((csvData: ParsedResults) => { csvData.inValidData.forEach((item) => { document.getElementById('invalidMessages_1').insertAdjacentHTML('beforeend', item.message) }) console.log(csvData.inValidData) console.log(csvData.data) }) }