UNPKG

@jeremyling/sg-paynow-qr

Version:

A PayNow QR Generator for Singapore

3 lines (2 loc) 5.43 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("yup");function r(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})}})),r.default=e,Object.freeze(r)}require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/regenerator");var t=r(e),n=new Date,i=t.object().shape({amount:t.number().moreThan(0).nullable(),editable:t.mixed().oneOf([0,1]).nullable().default(1),billNumber:t.string().default("***"),merchantName:t.string().default("NA"),merchantCountry:t.string().default("SG"),merchantCity:t.string().default("Singapore"),expiry:t.date().transform((function(e){return new Date(e)})).min(n).default(new Date(n.setDate(n.getDate()+1))).required(),uen:t.string().nullable(),mobile:t.string().when("uen",(function(e){return e?t.string().nullable():t.string().matches(/^(\+65){0,1}[3689][0-9]{7}$/g).required()}))}),a="0",u="2",o=[0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920];function l(e,r){return r<String(e).length?e.toString():Array(r-String(e).length+1).join("0")+e}function c(e){return e.getFullYear()+("0"+(e.getMonth()+1)).slice(-2)+("0"+e.getDate()).slice(-2)+("0"+e.getHours()).slice(-2)+("0"+e.getMinutes()).slice(-2)+("0"+e.getSeconds()).slice(-2)}function f(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=function(e,r){if(!e)return;if("string"==typeof e)return d(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);"Object"===t&&e.constructor&&(t=e.constructor.name);if("Map"===t||"Set"===t)return Array.from(e);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return d(e,r)}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,u=!0,o=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return u=e.done,e},e:function(e){o=!0,a=e},f:function(){try{u||null==t.return||t.return()}finally{if(o)throw a}}}}function d(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}exports.generateQr=function(r){try{var t=i.validateSync(r);return t.uen?t.paymentType=u:t.paymentType=a,t.mobile&&(t.mobile=t.mobile.replace(/^([3689][0-9]{7})$/g,"+65$1")),[function(e){var r,t="",n=f(e);try{for(n.s();!(r=n.n()).done;){var i=r.value,a=i.id,u=i.value;if(Array.isArray(u)){var c,d="",g=f(u);try{for(g.s();!(c=g.n()).done;){var s=c.value,m=s.id,v=s.value;d+=String(m)+l(v.length.toString(),2)+v}}catch(e){g.e(e)}finally{g.f()}u=d}t+=String(a)+l(u.length.toString(),2)+u}}catch(e){n.e(e)}finally{n.f()}return t+="6304"+l(function(e){var r,t=65535;for(r=0;r<e.length;r++){var n=e.charCodeAt(r);if(n>255)throw new RangeError;t=o[255&(n^t>>8)]^t<<8}return(65535&(0^t)).toString(16).toUpperCase()}(t+"6304"),4)}(function(e){var r=!!e.amount,t=[{id:"00",value:"01"},{id:"01",value:r?"12":"11"},{id:"26",value:[{id:"00",value:"SG.PAYNOW"},{id:"01",value:String(e.paymentType)},{id:"02",value:"2"===e.paymentType?String(e.uen):String(e.mobile)},{id:"03",value:r&&!e.editable?"0":"1"},{id:"04",value:c(new Date(e.expiry))}]},{id:"52",value:"0000"},{id:"53",value:"702"},{id:"58",value:String(e.merchantCountry)},{id:"59",value:String(e.merchantName)},{id:"60",value:String(e.merchantCity)}];r&&(e.amount&&t.push({id:"54",value:(Math.round(100*e.amount)/100).toFixed(2)}),e.billNumber&&t.push({id:"62",value:[{id:"01",value:String(e.billNumber)}]}));return t.sort((function(e,r){return Number(e.id)-Number(r.id)}))}(t))]}catch(r){return r instanceof e.ValidationError?[void 0,r.errors]:[void 0,r]}}; //# sourceMappingURL=index.cjs.js.map