UNPKG

@cloud20x/vin-decoder

Version:

VIN (Vehicle Identification Number) Decoder Lite

109 lines (97 loc) 2.71 kB
var vin = require("./"); const fs = require("fs"); const brands = require("./newStuff/brand_options.json"); const vins = require("./newStuff/vin_mapping.json"); // Save brands name let brandsObj = {}; for (let k = 0; k < brands.length; k++) { brandsObj[brands[k].brand_guid] = { name: brands[k].brand_name, options: {}, wmi: [], }; } // Save brands WMIs const keys = Object.keys(brandsObj); for (let k = 0; k < vins.length; k++) { if (keys.find((ky) => ky == vins[k].mb_brand_guid)) { let obj = brandsObj[vins[k].mb_brand_guid]; if (!obj.wmi.find((w) => w == vins[k].vin_wmi_part)) { obj.wmi.push(vins[k].vin_wmi_part); } } } // Save options for (let k = 0; k < brands.length; k++) { let obj = brandsObj[brands[k].brand_guid]; obj.options[brands[k].mb_option_manufacturer_ordercode] = brands[k].mb_option_name; } // Write manufacturers keys.map((k) => { const fileName = brandsObj[k].name.toLowerCase().replaceAll(" ", "_"); const filePath = `./db/manufacturers/${fileName}.js`; const content = `const wmi = ${JSON.stringify(brandsObj[k].wmi)}; const options = ${JSON.stringify(brandsObj[k].options, null, 2)}; const modelYears = require('../modelyears.json'); const rangeYearSelector = require('../../lib/rangeYearSelector'); module.exports = { wmi, decode: function(vin) { let optionCode = vin.slice(3, -11) if(options[optionCode]) { return 'OK' } } }`; fs.writeFileSync(filePath, content, (error) => { console.log({ error }); }); }); // Write manufacturersIndex.json let content = {}; keys.map((k) => { content[brandsObj[k].name.toLowerCase().replaceAll(" ", "_")] = brandsObj[k].wmi; }); fs.writeFileSync( "./db/manufacturersIndex.json", JSON.stringify(content, null, 2), (error) => { console.log({ error }); } ); // Test const testVins = fs.readFileSync( "./newStuff/positivetestcases.test.xxl", "utf-8", (error) => { console.log({ error }); } ); const vinsArr = testVins.split("\n"); let valids = []; let notValids = []; for (let k = 0; k < vinsArr.length; k++) { if (vin.isValid(vinsArr[k])) { valids.push(vinsArr[k]); } else notValids.push(vinsArr[k]); } console.log("Total cases: ", vinsArr.length); console.log("Valids: ", valids.length); console.log("Not valids: ", notValids.length); /* // list all notValids for(i=0;i<notValids.length;i++) { console.log(notValids[i]) } */ /* // decode some of the vins for(i=0;i<valids.length;i=i+25) { console.log(vin.decode(valids[i])) } */ // test single VIN //console.log("WBADATTESTSTUB001", vin.isValid("WBADATTESTSTUB001")) //console.log("ZFADATTESTSTUB001", vin.isValid("ZFADATTESTSTUB001"))