1 const RE_CODE_LENGTH_OVERFLOW = /code length overflow/i;
3 const qr_gen = require('qrcode-generator');
4 qr_gen.stringToBytes = qr_gen.stringToBytesFuncs['UTF-8'];
6 const min_qrcode = (text, level, min_ver = 1) => {
7 min_ver = Math.max(1, min_ver);
9 for (let version = min_ver; version <= 40; version += 1) {
11 const qr = qr_gen(version, level);
14 const moduleCount = qr.getModuleCount();
15 const isDark = (row, col) => {
22 return {text, level, version, moduleCount, isDark};
24 if (!(version < 40 && RE_CODE_LENGTH_OVERFLOW.test(err))) {
32 const quiet_qrcode = (text = '', level = 'L', min_ver = 1, quiet = 0) => {
33 const qr = min_qrcode(text, level, min_ver);
35 const prev_is_dark = qr.isDark;
36 qr.moduleCount += 2 * quiet;
37 qr.isDark = (row, col) => prev_is_dark(row - quiet, col - quiet);
42 module.exports = quiet_qrcode;