upc-generator
Version:
A randomly generated UPC-12(UPC-A) code For Amazon
92 lines (90 loc) • 3.16 kB
JavaScript
var UPC = /** @class */ (function () {
function UPC(prop) {
if (prop === void 0) { prop = {}; }
this._flagCode = '0';
this._manufacturer = '';
var flagCode = prop.flagCode, manufacturer = prop.manufacturer;
this._flagCode = flagCode || '';
if (manufacturer && manufacturer.length !== 5) {
throw new RangeError('the length of manufacturer must be 5');
}
this._manufacturer = manufacturer || '';
}
UPC.prototype.create = function (prop) {
if (prop === void 0) { prop = {}; }
var flagCode = prop.flagCode, manufacturer = prop.manufacturer;
if (manufacturer && manufacturer.length !== 5) {
throw new RangeError('the length of manufacturer must be 5');
}
else {
prop.manufacturer = this._manufacturer;
}
if (!flagCode) {
prop.flagCode = this._flagCode;
}
return this._create(prop);
};
UPC.prototype.createMultiple = function (prop) {
if (prop === void 0) { prop = { size: 1 }; }
var size = prop.size;
if (!size || Number(size) <= 0 || isNaN(Number(size))) {
size = 1;
}
var arr = new Array(size);
for (var i = 0; i < size; i++) {
arr[i] = this.create(prop);
}
return arr;
};
UPC.prototype.isValid = function (num) {
if (num.length !== 12) {
return false;
}
var computedLastNum = this.computedEanLastNum(num);
var lastNum = num.toString().charAt(11);
return lastNum === computedLastNum;
};
UPC.prototype._create = function (prop) {
var flagCode = prop.flagCode, manufacturer = prop.manufacturer;
var code = '';
if (!flagCode) {
var randomNum = Math.floor(Math.random() * UPC.flagCodeArr.length);
flagCode = UPC.flagCodeArr[randomNum];
}
if (!manufacturer) {
manufacturer = this.fillNumber(5);
}
code = flagCode + manufacturer + this.fillNumber(5);
var lastestNum = this.computedEanLastNum(code);
return code + lastestNum;
};
UPC.prototype.computedEanLastNum = function (num) {
var subNum = num.substr(0, 11);
var odd = 0;
var even = 0;
var bOdd = true;
for (var i = 0; i < subNum.length; i++) {
if (bOdd) {
odd += Number(subNum[i]);
}
else {
even += Number(subNum[i]);
}
bOdd = !bOdd;
}
var sum = odd * 3 + even;
var lastestNum = (10 - (sum % 10)) % 10;
return lastestNum.toString();
};
UPC.prototype.fillNumber = function (len) {
var str = '';
for (var i = 0; i < len; i++) {
str += Math.floor(Math.random() * 10).toString();
}
return str;
};
UPC.flagCodeArr = ['0', '1', '6', '7', '8', '9'];
return UPC;
}());
export default UPC;
//# sourceMappingURL=upc-generator.es5.js.map