{ "version": 3, "sources": ["src/lib/validators.ts"], "sourcesContent": ["import { FormControl, FormGroup } from \"@angular/forms\";\nimport { subYears } from \"date-fns\";\nimport { rationalizeLicense, rationalizeVIN } from \"./util\";\n\n/**\n * Vehicles\n */\nexport const vinIsValid = (\n vinField: FormControl,\n allowEmpty = false\n) => {\n const vin = vinField.value;\n\n return (vin?.length > 0 && rationalizeVIN(vin)) ||\n (vin?.length === 0 && allowEmpty)\n ? null\n : { invalid: true };\n};\n\nexport const licenseIsValid = (lpField: FormControl) => {\n const lp = lpField.value;\n\n return lp?.length > 0 && rationalizeLicense(lp) ? null : { invalid: true };\n};\n\nexport const vehicleIsValid = (\n vehicleFormGroup: FormGroup<{\n license: FormControl;\n state: FormControl;\n vin: FormControl;\n }>\n) => {\n const license = vehicleFormGroup.get(\"license\").value;\n const state = vehicleFormGroup.get(\"state\").value;\n const vin = vehicleFormGroup.get(\"vin\").value;\n\n const licenseValid =\n state?.length === 2 && license?.length > 0 && !!rationalizeLicense(license);\n const vinValid = vin?.length == 17 && !!rationalizeVIN(vin);\n return !license === !state && (licenseValid || vinValid)\n ? null\n : { invalid: true };\n};\n\n/**\n * People\n */\nexport const dobValidator = (dobField: FormControl, min = 18, max = 123) => {\n const dob =\n dobField.value instanceof Date ? dobField.value : new Date(dobField.value);\n const now = new Date();\n\n return !!dob && dob < subYears(now, min) && dob > subYears(now, max)\n ? null\n : { invalid: true };\n};\n\nexport const oldEnough = (dobField: FormControl, min = 18) => {\n const dob =\n dobField.value instanceof Date ? dobField.value : new Date(dobField.value);\n const now = new Date();\n\n return !!dob && dob < subYears(now, min) ? null : { invalid: true };\n};\n\nexport const notDead = (dobField: FormControl, max = 123) => {\n const dob =\n dobField.value instanceof Date ? dobField.value : new Date(dobField.value);\n const now = new Date();\n\n return !!dob && dob > subYears(now, max) ? null : { invalid: true };\n};\n"], "mappings": "iDAOO,IAAMA,EAAaA,CACxBC,EACAC,EAAa,KACX,CACF,IAAMC,EAAMF,EAASG,MAErB,OAAQD,GAAKE,OAAS,GAAKC,EAAeH,CAAG,GAC1CA,GAAKE,SAAW,GAAKH,EACpB,KACA,CAAEK,QAAS,EAAI,CACrB,EAEaC,EAAkBC,GAAgC,CAC7D,IAAMC,EAAKD,EAAQL,MAEnB,OAAOM,GAAIL,OAAS,GAAKM,EAAmBD,CAAE,EAAI,KAAO,CAAEH,QAAS,EAAI,CAC1E,EAEaK,EACXC,GAKE,CACF,IAAMC,EAAUD,EAAiBE,IAAI,SAAS,EAAEX,MAC1CY,EAAQH,EAAiBE,IAAI,OAAO,EAAEX,MACtCD,EAAMU,EAAiBE,IAAI,KAAK,EAAEX,MAElCa,EACJD,GAAOX,SAAW,GAAKS,GAAST,OAAS,GAAK,CAAC,CAACM,EAAmBG,CAAO,EACtEI,EAAWf,GAAKE,QAAU,IAAM,CAAC,CAACC,EAAeH,CAAG,EAC1D,MAAO,CAACW,GAAY,CAACE,IAAUC,GAAgBC,GAC3C,KACA,CAAEX,QAAS,EAAI,CACrB", "names": ["vinIsValid", "vinField", "allowEmpty", "vin", "value", "length", "rationalizeVIN", "invalid", "licenseIsValid", "lpField", "lp", "rationalizeLicense", "vehicleIsValid", "vehicleFormGroup", "license", "get", "state", "licenseValid", "vinValid"] }