UNPKG

gs1-barcode-parser

Version:

The barcode parser is a library for handling the contents of GS1 barcodes.

3 lines (2 loc) 10.9 kB
/*! gs1-barcode-parser 2018-11-20 */ var parseBarcode=function(){"use strict";return function(e){var N=String.fromCharCode(29),a=e.length,c={},s="",r={};function d(e,a,c){switch(this.ai=e,this.dataTitle=a,c){case"S":this.data="";break;case"N":this.data=0;break;case"D":this.data=new Date,this.data.setHours(0,0,0,0);break;default:this.data=""}this.unit=""}function t(b){var e=b.slice(0,1),a=b.slice(1,2),c="",s="",k="",h=b.length,o="";function I(e,a){var c,s=e.length-a,r=0;c=e.slice(0,s)+"."+e.slice(s,e.length);try{r=parseFloat(c)}catch(e){throw"36"}return r}function r(e,a){o=new d(e,a,"D");var c=e.length,s=b.slice(c,c+6),r=0,t=0,i=0;try{r=parseInt(s.slice(0,2),10)}catch(e){throw"33"}try{t=parseInt(s.slice(2,4),10)}catch(e){throw"34"}try{i=parseInt(s.slice(4,6),10)}catch(e){throw"35"}r+=50<r?1900:2e3,0<i&&t--,o.data.setFullYear(r,t,i),k=b.slice(c+6,h)}function t(e,a,c){o=new d(e,a,"S");var s=e.length;o.data=b.slice(s,c+s),k=b.slice(c+s,h)}function i(e,a){o=new d(e,a,"S");var c=e.length,s=b.indexOf(N);-1===s?(o.data=b.slice(c,h),k=""):(o.data=b.slice(c,s),k=b.slice(s+1,h))}function l(e,a,c,s){o=new d(e+a,c,"N");var r=e.length+1,t=parseInt(a,10),i=b.slice(r,r+6);o.data=I(i,t),o.unit=s,k=b.slice(r+6,h)}function T(e,a,c,s){o=new d(e+a,c,"N");var r=e.length+1,t=b.indexOf(N),i=parseInt(a,10),l="";-1===t?(l=b.slice(r,h),k=""):(l=b.slice(r,t),k=b.slice(t+1,h)),o.data=I(l,i),o.unit=s}function n(e,a,c){o=new d(e+a,c,"N");var s,r=e.length+1,t=b.indexOf(N),i=parseInt(a,10),l="";-1===t?(l=b.slice(r,h),k=""):(l=b.slice(r,t),k=b.slice(t+1,h)),s=l.slice(3,l.length),o.data=I(s,i),o.unit=l.slice(0,3)}function w(e,a){o=new d(e,a,"S");var c=e.length,s=b.indexOf(N),r="";-1===s?(r=b.slice(c,h),k=""):(r=b.slice(c,s),k=b.slice(s+1,h)),o.data=r.slice(3,r.length),o.unit=r.slice(0,3)}switch(e){case"0":switch(a){case"0":t("00","SSCC",18);break;case"1":t("01","GTIN",14);break;case"2":t("02","CONTENT",14);break;default:throw"01"}break;case"1":switch(a){case"0":i("10","BATCH/LOT");break;case"1":r("11","PROD DATE");break;case"2":r("12","DUE DATE");break;case"3":r("13","PACK DATE");break;case"5":r("15","BEST BEFORE or BEST BY");break;case"6":r("16","SELL BY");break;case"7":r("17","USE BY OR EXPIRY");break;default:throw"02"}break;case"2":switch(a){case"0":t("20","VARIANT",2);break;case"1":i("21","SERIAL");break;case"2":i("22","CPV");break;case"4":switch(c=b.slice(2,3)){case"0":i("240","ADDITIONAL ID");break;case"1":i("241","CUST. PART NO.");break;case"2":i("242","MTO VARIANT");break;case"3":i("243","PCN");break;default:throw"03"}break;case"5":switch(c=b.slice(2,3)){case"0":i("250","SECONDARY SERIAL");break;case"1":i("251","REF. TO SOURCE");break;case"3":i("253","GDTI");break;case"4":i("254","GLN EXTENSION COMPONENT");break;case"5":i("255","GCN");break;default:throw"04"}break;default:throw"05"}break;case"3":switch(a){case"0":i("30","VAR. COUNT");break;case"1":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":l("310",s,"NET WEIGHT (kg)","KGM");break;case"1":l("311",s,"LENGTH (m)","MTR");break;case"2":l("312",s,"WIDTH (m)","MTR");break;case"3":l("313",s,"HEIGHT (m)","MTR");break;case"4":l("314",s,"AREA (m2)","MTK");break;case"5":l("315",s,"NET VOLUME (l)","LTR");break;case"6":l("316",s,"NET VOLUME (m3)","MTQ");break;default:throw"06"}break;case"2":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":l("320",s,"NET WEIGHT (lb)","LBR");break;case"1":l("321",s,"LENGTH (i)","INH");break;case"2":l("322",s,"LENGTH (f)","FOT");break;case"3":l("323",s,"LENGTH (y)","YRD");break;case"4":l("324",s,"WIDTH (i)","INH");break;case"5":l("325",s,"WIDTH (f)","FOT");break;case"6":l("326",s,"WIDTH (y)","YRD");break;case"7":l("327",s,"HEIGHT (i)","INH");break;case"8":l("328",s,"HEIGHT (f)","FOT");break;case"9":l("329",s,"HEIGHT (y)","YRD");break;default:throw"07"}break;case"3":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":l("330",s,"GROSS WEIGHT (kg)","KGM");break;case"1":l("331",s,"LENGTH (m), log","MTR");break;case"2":l("332",s,"WIDTH (m), log","MTR");break;case"3":l("333",s,"HEIGHT (m), log","MTR");break;case"4":l("334",s,"AREA (m2), log","MTK");break;case"5":l("335",s,"VOLUME (l), log","LTR");break;case"6":l("336",s,"VOLUME (m3), log","MTQ");break;case"7":l("337",s,"KG PER m²","28");break;default:throw"08"}break;case"4":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":l("340",s,"GROSS WEIGHT (lb)","LBR");break;case"1":l("341",s,"LENGTH (i), log","INH");break;case"2":l("342",s,"LENGTH (f), log","FOT");break;case"3":l("343",s,"LENGTH (y), log","YRD");break;case"4":l("344",s,"WIDTH (i), log","INH");break;case"5":l("345",s,"WIDTH (f), log","FOT");break;case"6":l("346",s,"WIDTH (y), log","YRD");break;case"7":l("347",s,"HEIGHT (i), log","INH");break;case"8":l("348",s,"HEIGHT (f), log","FOT");break;case"9":l("349",s,"HEIGHT (y), log","YRD");break;default:throw"09"}break;case"5":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":l("350",s,"AREA (i2)","INK");break;case"1":l("351",s,"AREA (f2)","FTK");break;case"2":l("352",s,"AREA (y2)","YDK");break;case"3":l("353",s,"AREA (i2), log","INK");break;case"4":l("354",s,"AREA (f2), log","FTK");break;case"5":l("355",s,"AREA (y2), log","YDK");break;case"6":l("356",s,"NET WEIGHT (t)","APZ");break;case"7":l("357",s,"NET VOLUME (oz)","ONZ");break;default:throw"10"}break;case"6":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":l("360",s,"NET VOLUME (q)","QT");break;case"1":l("361",s,"NET VOLUME (g)","GLL");break;case"2":l("362",s,"VOLUME (q), log","QT");break;case"3":l("363",s,"VOLUME (g), log","GLL");break;case"4":l("364",s,"VOLUME (i3)","INQ");break;case"5":l("365",s,"VOLUME (f3)","FTQ");break;case"6":l("366",s,"VOLUME (y3)","YDQ");break;case"7":l("367",s,"VOLUME (i3), log","INQ");break;case"8":l("368",s,"VOLUME (f3), log","FTQ");break;case"9":l("369",s,"VOLUME (y3), log","YDQ");break;default:throw"11"}break;case"7":i("37","COUNT");break;case"9":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":T("390",s,"AMOUNT","");break;case"1":n("391",s,"AMOUNT");break;case"2":T("392",s,"PRICE","");break;case"3":n("393",s,"PRICE");break;default:throw"12"}break;default:throw"13"}break;case"4":switch(a){case"0":switch(c=b.slice(2,3)){case"0":i("400","ORDER NUMBER");break;case"1":i("401","GINC");break;case"2":i("402","GSIN");break;case"3":i("403","ROUTE");break;default:throw"14"}break;case"1":switch(c=b.slice(2,3)){case"0":t("410","SHIP TO LOC",13);break;case"1":t("411","BILL TO",13);break;case"2":t("412","PURCHASE FROM",13);break;case"3":t("413","SHIP FOR LOC",13);break;default:throw"15"}break;case"2":switch(c=b.slice(2,3)){case"0":i("420","SHIP TO POST");break;case"1":w("421","SHIP TO POST");break;case"2":t("422","ORIGIN",3);break;case"3":i("423","COUNTRY - INITIAL PROCESS.");break;case"4":t("424","COUNTRY - PROCESS.",3);break;case"5":t("425","COUNTRY - DISASSEMBLY",3);break;case"6":t("426","COUNTRY – FULL PROCESS",3);break;case"7":i("427","ORIGIN SUBDIVISION");break;default:throw"16"}break;default:throw"17"}break;case"7":switch(a){case"0":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":switch(s){case"1":i("7001","NSN");break;case"2":i("7002","MEAT CUT");break;case"3":i("7003","EXPIRY TIME");break;case"4":i("7004","ACTIVE POTENCY");break;default:throw"18"}break;case"3":w("703"+s,"PROCESSOR # "+s);break;default:throw"19"}break;case"1":switch(c=b.slice(2,3)){case"0":i("710","NHRN PZN");break;case"1":i("711","NHRN CIP");break;case"2":i("712","NHRN CN");break;case"3":i("713","NHRN DRN");break;default:throw"20"}break;default:throw"21"}break;case"8":switch(a){case"0":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":switch(s){case"1":i("8001","DIMENSIONS");break;case"2":i("8002","CMT No");break;case"3":i("8003","GRAI");break;case"4":i("8004","GIAI");break;case"5":i("8005","PRICE PER UNIT");break;case"6":i("8006","GCTIN");break;case"7":i("8007","IBAN");break;case"8":i("8008","PROD TIME");break;default:throw"22"}break;case"1":switch(s){case"0":i("8010","CPID");break;case"1":i("8011","CPID SERIAL");break;case"7":i("8017","GSRN - PROVIDER");break;case"8":i("8018","GSRN - RECIPIENT");break;case"9":i("8019","SRIN");break;default:throw"23"}break;case"2":switch(s){case"0":i("8020","REF No");break;default:throw"24"}break;default:throw"25"}break;case"1":switch(c=b.slice(2,3),s=b.slice(3,4),c){case"0":switch(s){case"0":i("8100","-");break;case"1":i("8101","-");break;case"2":i("8102","-");break;default:throw"26"}break;case"1":switch(s){case"0":i("8110","-");break;default:throw"27"}break;default:throw"28"}break;case"2":switch(c=b.slice(2,3)){case"0":i("8200","PRODUCT URL");break;default:throw"29"}break;default:throw"30"}break;case"9":switch(a){case"0":i("90","INTERNAL");break;case"1":i("91","INTERNAL");break;case"2":i("92","INTERNAL");break;case"3":i("93","INTERNAL");break;case"4":i("94","INTERNAL");break;case"5":i("95","INTERNAL");break;case"6":i("96","INTERNAL");break;case"7":i("97","INTERNAL");break;case"8":i("98","INTERNAL");break;case"9":i("99","INTERNAL");break;default:throw"31"}break;default:throw"32"}return{element:o,codestring:function(e){for(var a=e.slice(0,1);a===N;)a=(e=e.slice(1,e.length)).slice(0,1);return e}(k)}}switch(e.slice(0,3)){case"]C1":c.codeName="GS1-128",s=e.slice(3,a);break;case"]e0":c.codeName="GS1 DataBar",s=e.slice(3,a);break;case"]e1":case"]e2":c.codeName="GS1 Composite",s=e.slice(3,a);break;case"]d2":c.codeName="GS1 DataMatrix",s=e.slice(3,a);break;case"]Q3":c.codeName="GS1 QR Code",s=e.slice(3,a);break;default:c.codeName="",s=e}for(c.parsedCodeItems=[];0<s.length;)try{s=(r=t(s)).codestring,c.parsedCodeItems.push(r.element)}catch(e){switch(e){case"01":throw"invalid AI after '0'";case"02":throw"invalid AI after '1'";case"03":throw"invalid AI after '24'";case"04":throw"invalid AI after '25'";case"05":throw"invalid AI after '2'";case"06":throw"invalid AI after '31'";case"07":throw"invalid AI after '32'";case"08":throw"invalid AI after '33'";case"09":throw"invalid AI after '34'";case"10":throw"invalid AI after '35'";case"11":throw"invalid AI after '36'";case"12":throw"invalid AI after '39'";case"13":throw"invalid AI after '3'";case"14":throw"invalid AI after '40'";case"15":throw"invalid AI after '41'";case"16":throw"invalid AI after '42'";case"17":throw"invalid AI after '4'";case"18":throw"invalid AI after '700'";case"19":throw"invalid AI after '70'";case"20":throw"invalid AI after '71'";case"21":throw"invalid AI after '7'";case"22":throw"invalid AI after '800'";case"23":throw"invalid AI after '801'";case"24":throw"invalid AI after '802'";case"25":throw"invalid AI after '80'";case"26":throw"invalid AI after '810'";case"27":throw"invalid AI after '811'";case"28":throw"invalid AI after '81'";case"29":throw"invalid AI after '82'";case"30":throw"invalid AI after '8'";case"31":throw"invalid AI after '9'";case"32":throw"no valid AI";case"33":throw"invalid year in date";case"34":throw"invalid month in date";case"35":throw"invalid day in date";case"36":throw"invalid number";default:throw"unknown error"}}return c}}();