UNPKG

node-imei-ts

Version:

imei generator/checker fork from https://github.com/BadMachine/node-imei with added TS compatibility

100 lines (82 loc) 2.58 kB
var codes = require('../TAC/codes') function SN() { return (Math.floor(Math.random() * (999999 - 100000)) + 100000).toString(); } function upTo(digit){ while (Number.isInteger(digit/10) == false) digit++; return digit; } function Luhn(line) { var summEven=0; var even=[]; var summOdd =0; for(var i = 1; i< line.length;i=i+2){ even.push(Number(line[i])*2); summOdd = summOdd + Number(line[i-1]); if(i==13) { break; } } for(var y = 0;y<even.length;y++){ if(Number(even[y])/10<1) { summEven = summEven + Number(even[y]); }else { var st = Number(even[y].toString().charAt(0)); var nd = Number(even[y].toString().charAt(1)) summEven = summEven + st+nd; } } var Luhndigit = summEven+summOdd; Luhndigit = upTo(Luhndigit) - Luhndigit; return Luhndigit; } function GetRandom(){ var randImei; var objLength = Object.keys(codes).length; var keys = Object.keys(codes) var randDevice = codes[keys[ keys.length * Math.random() << 0]]; var SNs = Object.keys(randDevice); var randCode = randDevice[SNs[ SNs.length * Math.random() << 0]]; if(typeof randCode!= "object") { randImei = randCode + SN(); randImei = randImei + Luhn(randImei).toString(); return randImei; }else { var deeper = Object.keys(randCode); randCode = randCode[deeper[deeper.length * Math.random() << 0]]; randImei = randCode + SN(); randImei = randImei + Luhn(randImei).toString(); return randImei; } } function ByDevice(device,model) { var code = codes[device][model]; var randImei; if (typeof code == "object"){ var objLength = Object.keys(code).length; var keys = Object.keys(code) code = code[keys[ keys.length * Math.random() << 0]]; randImei = code + SN(); randImei = randImei.toString() + Luhn(randImei).toString(); return randImei; }else { randImei = code + SN(); randImei = randImei.toString() + Luhn(randImei).toString(); return randImei; } } function checkDigit(str) { var LastDigit = str.toString(); var line = str.toString().slice(0,14); LastDigit = LastDigit.charAt(LastDigit.length-1); var LuhnDigit = Luhn(line); if (LuhnDigit == LastDigit) return true; else return false; } module.exports = { random: GetRandom, device: ByDevice, isValid: checkDigit };