New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

awesome-qr

Package Overview
Dependencies
Maintainers
1
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

awesome-qr - npm Package Compare versions

Comparing version 2.0.0-beta.8 to 2.0.0-beta.9

lib/index.d.ts

1

lib/awesome-qr.d.ts
/// <reference types="node" />
export * from "./qrcode";
export declare type Options = {

@@ -4,0 +3,0 @@ /**

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {

@@ -21,29 +11,2 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }

};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -54,11 +17,10 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

exports.AwesomeQR = void 0;
var canvas_1 = require("canvas");
var gifuct_js_1 = require("./gifuct-js");
var qrcode_1 = require("./qrcode");
var GIFEncoder_1 = __importDefault(require("./gif.js/GIFEncoder"));
__exportStar(require("./qrcode"), exports);
var AwesomeQR = /** @class */ (function () {
function AwesomeQR(options) {
var _options = Object.assign({}, options);
Object.keys(AwesomeQR._defaultOptions).map(function (k) {
const canvas_1 = require("canvas");
const gifuct_js_1 = require("./gifuct-js");
const qrcode_1 = require("./qrcode");
const GIFEncoder_1 = __importDefault(require("./gif.js/GIFEncoder"));
class AwesomeQR {
constructor(options) {
const _options = Object.assign({}, options);
Object.keys(AwesomeQR._defaultOptions).map((k) => {
if (!(k in _options)) {

@@ -79,10 +41,9 @@ Object.defineProperty(_options, k, {

}
AwesomeQR.prototype.draw = function () {
var _this = this;
return new Promise(function (resolve) { return _this._draw().then(resolve); });
};
AwesomeQR.prototype._clear = function () {
draw() {
return new Promise((resolve) => this._draw().then(resolve));
}
_clear() {
this.canvasContext.clearRect(0, 0, this.canvas.width, this.canvas.height);
};
AwesomeQR._prepareRoundedCornerClip = function (canvasContext, x, y, w, h, r) {
}
static _prepareRoundedCornerClip(canvasContext, x, y, w, h, r) {
canvasContext.beginPath();

@@ -95,6 +56,6 @@ canvasContext.moveTo(x, y);

canvasContext.closePath();
};
AwesomeQR._getAverageRGB = function (image) {
var blockSize = 5;
var defaultRGB = {
}
static _getAverageRGB(image) {
const blockSize = 5;
const defaultRGB = {
r: 0,

@@ -104,5 +65,5 @@ g: 0,

};
var width, height;
var i = -4;
var rgb = {
let width, height;
let i = -4;
const rgb = {
r: 0,

@@ -112,7 +73,7 @@ g: 0,

};
var count = 0;
let count = 0;
height = image.naturalHeight || image.height;
width = image.naturalWidth || image.width;
var canvas = canvas_1.createCanvas(width, height);
var context = canvas.getContext("2d");
const canvas = canvas_1.createCanvas(width, height);
const context = canvas.getContext("2d");
if (!context) {

@@ -122,3 +83,3 @@ return defaultRGB;

context.drawImage(image, 0, 0);
var data;
let data;
try {

@@ -142,18 +103,14 @@ data = context.getImageData(0, 0, width, height);

return rgb;
};
AwesomeQR._drawDot = function (canvasContext, centerX, centerY, nSize, xyOffset, dotScale) {
if (xyOffset === void 0) { xyOffset = 0; }
if (dotScale === void 0) { dotScale = 1; }
}
static _drawDot(canvasContext, centerX, centerY, nSize, xyOffset = 0, dotScale = 1) {
canvasContext.fillRect((centerX + xyOffset) * nSize, (centerY + xyOffset) * nSize, dotScale * nSize, dotScale * nSize);
};
AwesomeQR._drawAlignProtector = function (canvasContext, centerX, centerY, nWidth, nHeight) {
}
static _drawAlignProtector(canvasContext, centerX, centerY, nWidth, nHeight) {
canvasContext.clearRect((centerX - 2) * nWidth, (centerY - 2) * nHeight, 5 * nWidth, 5 * nHeight);
canvasContext.fillRect((centerX - 2) * nWidth, (centerY - 2) * nHeight, 5 * nWidth, 5 * nHeight);
};
AwesomeQR._drawAlign = function (canvasContext, centerX, centerY, nSize, xyOffset, dotScale, colorDark) {
if (xyOffset === void 0) { xyOffset = 0; }
if (dotScale === void 0) { dotScale = 1; }
var oldFillStyle = canvasContext.fillStyle;
}
static _drawAlign(canvasContext, centerX, centerY, nSize, xyOffset = 0, dotScale = 1, colorDark) {
const oldFillStyle = canvasContext.fillStyle;
canvasContext.fillStyle = colorDark;
new Array(4).fill(0).map(function (_, i) {
new Array(4).fill(0).map((_, i) => {
AwesomeQR._drawDot(canvasContext, centerX - 2 + i, centerY - 2, nSize, xyOffset, dotScale);

@@ -166,3 +123,3 @@ AwesomeQR._drawDot(canvasContext, centerX + 2, centerY - 2 + i, nSize, xyOffset, dotScale);

canvasContext.fillStyle = "rgba(255, 255, 255, 0.6)";
new Array(2).fill(0).map(function (_, i) {
new Array(2).fill(0).map((_, i) => {
AwesomeQR._drawDot(canvasContext, centerX - 1 + i, centerY - 1, nSize, xyOffset, dotScale);

@@ -174,305 +131,302 @@ AwesomeQR._drawDot(canvasContext, centerX + 1, centerY - 1 + i, nSize, xyOffset, dotScale);

canvasContext.fillStyle = oldFillStyle;
};
AwesomeQR.prototype._draw = function () {
}
_draw() {
var _a;
return __awaiter(this, void 0, void 0, function () {
var nCount, rawSize, rawMargin, margin, rawViewportSize, whiteMargin, backgroundDimming, nSize, viewportSize, size, mainCanvas, mainCanvasContext, dotScale, backgroundCanvas, backgroundCanvasContext, parsedGIFBackground, gifFrames, gif, r, g, b, count, i, c, backgroundImage, avgRGB, agnPatternCenter, xyOffset, row, col, bIsDark, isBlkPosCtr, bProtected, i, nLeft, nTop, inAgnRange, protectorStyle, edgeCenter, i, i, j, agnX, agnY, logoImage, logoScale, logoMargin, logoCornerRadius, logoSize, x, y, gifOutput_1, backgroundCanvas_1, backgroundCanvasContext_1, patchCanvas_1, patchCanvasContext_1, patchData_1, u8array, binary, outCanvas, outCanvasContext;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
nCount = (_a = this.qrCode) === null || _a === void 0 ? void 0 : _a.moduleCount;
rawSize = this.options.size;
rawMargin = this.options.margin;
if (rawMargin < 0 || rawMargin * 2 >= rawSize) {
rawMargin = 0;
return __awaiter(this, void 0, void 0, function* () {
const nCount = (_a = this.qrCode) === null || _a === void 0 ? void 0 : _a.moduleCount;
const rawSize = this.options.size;
let rawMargin = this.options.margin;
if (rawMargin < 0 || rawMargin * 2 >= rawSize) {
rawMargin = 0;
}
const margin = Math.ceil(rawMargin);
const rawViewportSize = rawSize - 2 * rawMargin;
const whiteMargin = this.options.whiteMargin;
const backgroundDimming = this.options.backgroundDimming;
const nSize = Math.ceil(rawViewportSize / nCount);
const viewportSize = nSize * nCount;
const size = viewportSize + 2 * margin;
const mainCanvas = canvas_1.createCanvas(size, size);
const mainCanvasContext = mainCanvas.getContext("2d");
const dotScale = this.options.dotScale;
this._clear();
if (dotScale <= 0 || dotScale > 1) {
throw new Error("Scale should be in range (0, 1].");
}
// Leave room for margin
mainCanvasContext.save();
mainCanvasContext.translate(margin, margin);
const backgroundCanvas = canvas_1.createCanvas(size, size);
const backgroundCanvasContext = backgroundCanvas.getContext("2d");
let parsedGIFBackground = null;
let gifFrames = [];
if (!!this.options.gifBackground) {
const gif = gifuct_js_1.parseGIF(this.options.gifBackground);
parsedGIFBackground = gif;
gifFrames = gifuct_js_1.decompressFrames(gif, true);
if (this.options.autoColor) {
let r = 0, g = 0, b = 0;
let count = 0;
for (let i = 0; i < gifFrames[0].colorTable.length; i++) {
const c = gifFrames[0].colorTable[i];
if (c[0] > 200 || c[1] > 200 || c[2] > 200)
continue;
if (c[0] === 0 && c[1] === 0 && c[2] === 0)
continue;
count++;
r += c[0];
g += c[1];
b += c[2];
}
r = ~~(r / count);
g = ~~(g / count);
b = ~~(b / count);
this.options.colorDark = `rgb(${r},${g},${b})`;
}
}
else if (!!this.options.backgroundImage) {
const backgroundImage = yield canvas_1.loadImage(this.options.backgroundImage);
if (this.options.autoColor) {
const avgRGB = AwesomeQR._getAverageRGB(backgroundImage);
this.options.colorDark = `rgb(${avgRGB.r},${avgRGB.g},${avgRGB.b})`;
}
backgroundCanvasContext.drawImage(backgroundImage, 0, 0, backgroundImage.width, backgroundImage.height, 0, 0, size, size);
backgroundCanvasContext.rect(0, 0, size, size);
backgroundCanvasContext.fillStyle = backgroundDimming;
backgroundCanvasContext.fill();
}
else {
backgroundCanvasContext.rect(0, 0, size, size);
backgroundCanvasContext.fillStyle = this.options.colorLight;
backgroundCanvasContext.fill();
}
const agnPatternCenter = qrcode_1.QRUtil.getPatternPosition(this.qrCode.typeNumber);
const xyOffset = (1 - dotScale) * 0.5;
for (let row = 0; row < nCount; row++) {
for (let col = 0; col < nCount; col++) {
const bIsDark = this.qrCode.isDark(row, col);
const isBlkPosCtr = (col < 8 && (row < 8 || row >= nCount - 8)) || (col >= nCount - 8 && row < 8);
let bProtected = isBlkPosCtr;
for (let i = 0; i < agnPatternCenter.length - 1; i++) {
bProtected =
bProtected ||
(row >= agnPatternCenter[i] - 2 &&
row <= agnPatternCenter[i] + 2 &&
col >= agnPatternCenter[i] - 2 &&
col <= agnPatternCenter[i] + 2);
}
const nLeft = col * nSize + (bProtected ? 0 : xyOffset * nSize);
const nTop = row * nSize + (bProtected ? 0 : xyOffset * nSize);
mainCanvasContext.strokeStyle = bIsDark ? this.options.colorDark : this.options.colorLight;
mainCanvasContext.lineWidth = 0.5;
mainCanvasContext.fillStyle = bIsDark ? this.options.colorDark : "rgba(255, 255, 255, 0.6)";
if (agnPatternCenter.length === 0) {
if (!bProtected) {
mainCanvasContext.fillRect(nLeft, nTop, (bProtected ? (isBlkPosCtr ? 1 : 1) : dotScale) * nSize, (bProtected ? (isBlkPosCtr ? 1 : 1) : dotScale) * nSize);
}
margin = Math.ceil(rawMargin);
rawViewportSize = rawSize - 2 * rawMargin;
whiteMargin = this.options.whiteMargin;
backgroundDimming = this.options.backgroundDimming;
nSize = Math.ceil(rawViewportSize / nCount);
viewportSize = nSize * nCount;
size = viewportSize + 2 * margin;
mainCanvas = canvas_1.createCanvas(size, size);
mainCanvasContext = mainCanvas.getContext("2d");
dotScale = this.options.dotScale;
this._clear();
if (dotScale <= 0 || dotScale > 1) {
throw new Error("Scale should be in range (0, 1].");
}
else {
const inAgnRange = col < nCount - 4 && col >= nCount - 4 - 5 && row < nCount - 4 && row >= nCount - 4 - 5;
if (!bProtected && !inAgnRange) {
// if align pattern list is empty, then it means that we don't need to leave room for the align patterns
mainCanvasContext.fillRect(nLeft, nTop, (bProtected ? (isBlkPosCtr ? 1 : 1) : dotScale) * nSize, (bProtected ? (isBlkPosCtr ? 1 : 1) : dotScale) * nSize);
}
// Leave room for margin
mainCanvasContext.save();
mainCanvasContext.translate(margin, margin);
backgroundCanvas = canvas_1.createCanvas(size, size);
}
}
}
// Draw POSITION protectors
const protectorStyle = "rgba(255, 255, 255, 0.6)";
mainCanvasContext.fillStyle = protectorStyle;
mainCanvasContext.fillRect(0, 0, 8 * nSize, 8 * nSize);
mainCanvasContext.fillRect(0, (nCount - 8) * nSize, 8 * nSize, 8 * nSize);
mainCanvasContext.fillRect((nCount - 8) * nSize, 0, 8 * nSize, 8 * nSize);
// Protectors for timing patterns
// mainCanvasContext.fillRect(8 * nSize, 6 * nSize, (nCount - 8 - 8) * nSize, nSize);
// mainCanvasContext.fillRect(6 * nSize, 8 * nSize, nSize, (nCount - 8 - 8) * nSize);
const edgeCenter = agnPatternCenter[agnPatternCenter.length - 1];
// Draw ALIGN protectors
// for (let i = 0; i < agnPatternCenter.length; i++) {
// for (let j = 0; j < agnPatternCenter.length; j++) {
// const agnX = agnPatternCenter[j];
// const agnY = agnPatternCenter[i];
// if (agnX === 6 && (agnY === 6 || agnY === edgeCenter)) {
// continue;
// } else if (agnY === 6 && (agnX === 6 || agnX === edgeCenter)) {
// continue;
// } else if (agnX !== 6 && agnX !== edgeCenter && agnY !== 6 && agnY !== edgeCenter) {
// AwesomeQR._drawAlignProtector(mainCanvasContext, agnX, agnY, dotScale * nSize, dotScale * nSize);
// } else {
// AwesomeQR._drawAlignProtector(mainCanvasContext, agnX, agnY, dotScale * nSize, dotScale * nSize);
// }
// }
// }
// Draw POSITION patterns
mainCanvasContext.fillStyle = this.options.colorDark;
mainCanvasContext.fillRect(0, 0, 7 * nSize, nSize);
mainCanvasContext.fillRect((nCount - 7) * nSize, 0, 7 * nSize, nSize);
mainCanvasContext.fillRect(0, 6 * nSize, 7 * nSize, nSize);
mainCanvasContext.fillRect((nCount - 7) * nSize, 6 * nSize, 7 * nSize, nSize);
mainCanvasContext.fillRect(0, (nCount - 7) * nSize, 7 * nSize, nSize);
mainCanvasContext.fillRect(0, (nCount - 7 + 6) * nSize, 7 * nSize, nSize);
mainCanvasContext.fillRect(0, 0, nSize, 7 * nSize);
mainCanvasContext.fillRect(6 * nSize, 0, nSize, 7 * nSize);
mainCanvasContext.fillRect((nCount - 7) * nSize, 0, nSize, 7 * nSize);
mainCanvasContext.fillRect((nCount - 7 + 6) * nSize, 0, nSize, 7 * nSize);
mainCanvasContext.fillRect(0, (nCount - 7) * nSize, nSize, 7 * nSize);
mainCanvasContext.fillRect(6 * nSize, (nCount - 7) * nSize, nSize, 7 * nSize);
mainCanvasContext.fillRect(2 * nSize, 2 * nSize, 3 * nSize, 3 * nSize);
mainCanvasContext.fillRect((nCount - 7 + 2) * nSize, 2 * nSize, 3 * nSize, 3 * nSize);
mainCanvasContext.fillRect(2 * nSize, (nCount - 7 + 2) * nSize, 3 * nSize, 3 * nSize);
for (let i = 0; i < nCount - 8; i += 2) {
mainCanvasContext.fillRect((8 + i + xyOffset) * nSize, (6 + xyOffset) * nSize, dotScale * nSize, dotScale * nSize);
mainCanvasContext.fillRect((6 + xyOffset) * nSize, (8 + i + xyOffset) * nSize, dotScale * nSize, dotScale * nSize);
}
for (let i = 0; i < agnPatternCenter.length; i++) {
for (let j = 0; j < agnPatternCenter.length; j++) {
const agnX = agnPatternCenter[j];
const agnY = agnPatternCenter[i];
if (agnX === 6 && (agnY === 6 || agnY === edgeCenter)) {
continue;
}
else if (agnY === 6 && (agnX === 6 || agnX === edgeCenter)) {
continue;
}
else if (agnX !== 6 && agnX !== edgeCenter && agnY !== 6 && agnY !== edgeCenter) {
// mainCanvasContext.fillStyle = "rgba(0, 0, 0, .2)";
AwesomeQR._drawAlign(mainCanvasContext, agnX, agnY, nSize, xyOffset, dotScale, this.options.colorDark);
}
else {
// mainCanvasContext.fillStyle = this.options.colorDark!;
AwesomeQR._drawAlign(mainCanvasContext, agnX, agnY, nSize, xyOffset, dotScale, this.options.colorDark);
}
}
}
// Fill the margin
if (whiteMargin) {
mainCanvasContext.fillStyle = "#FFFFFF";
mainCanvasContext.fillRect(-margin, -margin, size, margin);
mainCanvasContext.fillRect(-margin, viewportSize, size, margin);
mainCanvasContext.fillRect(viewportSize, -margin, margin, size);
mainCanvasContext.fillRect(-margin, -margin, margin, size);
}
if (!!this.options.logoImage) {
const logoImage = yield canvas_1.loadImage(this.options.logoImage);
let logoScale = this.options.logoScale;
let logoMargin = this.options.logoMargin;
let logoCornerRadius = this.options.logoCornerRadius;
if (logoScale <= 0 || logoScale >= 1.0) {
logoScale = 0.2;
}
if (logoMargin < 0) {
logoMargin = 0;
}
if (logoCornerRadius < 0) {
logoCornerRadius = 0;
}
mainCanvasContext.restore();
const logoSize = viewportSize * logoScale;
const x = 0.5 * (size - logoSize);
const y = x;
mainCanvasContext.fillStyle = "#FFFFFF";
mainCanvasContext.save();
AwesomeQR._prepareRoundedCornerClip(mainCanvasContext, x - logoMargin, y - logoMargin, logoSize + 2 * logoMargin, logoSize + 2 * logoMargin, logoCornerRadius);
mainCanvasContext.clip();
mainCanvasContext.fill();
mainCanvasContext.restore();
mainCanvasContext.save();
AwesomeQR._prepareRoundedCornerClip(mainCanvasContext, x, y, logoSize, logoSize, logoCornerRadius);
mainCanvasContext.clip();
mainCanvasContext.drawImage(logoImage, x, y, logoSize, logoSize);
mainCanvasContext.restore();
}
if (!!parsedGIFBackground) {
let gifOutput;
// Reuse in order to apply the patch
let backgroundCanvas;
let backgroundCanvasContext;
let patchCanvas;
let patchCanvasContext;
let patchData;
gifFrames.forEach(function (frame) {
if (!gifOutput) {
gifOutput = new GIFEncoder_1.default(rawSize, rawSize);
gifOutput.setDelay(frame.delay);
gifOutput.setRepeat(0);
}
const { width, height } = frame.dims;
if (!backgroundCanvas) {
backgroundCanvas = canvas_1.createCanvas(width, height);
backgroundCanvasContext = backgroundCanvas.getContext("2d");
parsedGIFBackground = null;
gifFrames = [];
if (!!!this.options.gifBackground) return [3 /*break*/, 1];
gif = gifuct_js_1.parseGIF(this.options.gifBackground);
parsedGIFBackground = gif;
gifFrames = gifuct_js_1.decompressFrames(gif, true);
if (this.options.autoColor) {
r = 0, g = 0, b = 0;
count = 0;
for (i = 0; i < gifFrames[0].colorTable.length; i++) {
c = gifFrames[0].colorTable[i];
if (c[0] > 200 || c[1] > 200 || c[2] > 200)
continue;
if (c[0] === 0 && c[1] === 0 && c[2] === 0)
continue;
count++;
r += c[0];
g += c[1];
b += c[2];
}
r = ~~(r / count);
g = ~~(g / count);
b = ~~(b / count);
this.options.colorDark = "rgb(" + r + "," + g + "," + b + ")";
}
return [3 /*break*/, 4];
case 1:
if (!!!this.options.backgroundImage) return [3 /*break*/, 3];
return [4 /*yield*/, canvas_1.loadImage(this.options.backgroundImage)];
case 2:
backgroundImage = _b.sent();
if (this.options.autoColor) {
avgRGB = AwesomeQR._getAverageRGB(backgroundImage);
this.options.colorDark = "rgb(" + avgRGB.r + "," + avgRGB.g + "," + avgRGB.b + ")";
}
backgroundCanvasContext.drawImage(backgroundImage, 0, 0, backgroundImage.width, backgroundImage.height, 0, 0, size, size);
backgroundCanvasContext.rect(0, 0, size, size);
backgroundCanvasContext.fillStyle = backgroundDimming;
backgroundCanvasContext.rect(0, 0, backgroundCanvas.width, backgroundCanvas.height);
backgroundCanvasContext.fillStyle = "#ffffff";
backgroundCanvasContext.fill();
return [3 /*break*/, 4];
case 3:
backgroundCanvasContext.rect(0, 0, size, size);
backgroundCanvasContext.fillStyle = this.options.colorLight;
backgroundCanvasContext.fill();
_b.label = 4;
case 4:
agnPatternCenter = qrcode_1.QRUtil.getPatternPosition(this.qrCode.typeNumber);
xyOffset = (1 - dotScale) * 0.5;
for (row = 0; row < nCount; row++) {
for (col = 0; col < nCount; col++) {
bIsDark = this.qrCode.isDark(row, col);
isBlkPosCtr = (col < 8 && (row < 8 || row >= nCount - 8)) || (col >= nCount - 8 && row < 8);
bProtected = isBlkPosCtr;
for (i = 0; i < agnPatternCenter.length - 1; i++) {
bProtected =
bProtected ||
(row >= agnPatternCenter[i] - 2 &&
row <= agnPatternCenter[i] + 2 &&
col >= agnPatternCenter[i] - 2 &&
col <= agnPatternCenter[i] + 2);
}
nLeft = col * nSize + (bProtected ? 0 : xyOffset * nSize);
nTop = row * nSize + (bProtected ? 0 : xyOffset * nSize);
mainCanvasContext.strokeStyle = bIsDark ? this.options.colorDark : this.options.colorLight;
mainCanvasContext.lineWidth = 0.5;
mainCanvasContext.fillStyle = bIsDark ? this.options.colorDark : "rgba(255, 255, 255, 0.6)";
if (agnPatternCenter.length === 0) {
if (!bProtected) {
mainCanvasContext.fillRect(nLeft, nTop, (bProtected ? (isBlkPosCtr ? 1 : 1) : dotScale) * nSize, (bProtected ? (isBlkPosCtr ? 1 : 1) : dotScale) * nSize);
}
}
else {
inAgnRange = col < nCount - 4 && col >= nCount - 4 - 5 && row < nCount - 4 && row >= nCount - 4 - 5;
if (!bProtected && !inAgnRange) {
// if align pattern list is empty, then it means that we don't need to leave room for the align patterns
mainCanvasContext.fillRect(nLeft, nTop, (bProtected ? (isBlkPosCtr ? 1 : 1) : dotScale) * nSize, (bProtected ? (isBlkPosCtr ? 1 : 1) : dotScale) * nSize);
}
}
}
}
protectorStyle = "rgba(255, 255, 255, 0.6)";
mainCanvasContext.fillStyle = protectorStyle;
mainCanvasContext.fillRect(0, 0, 8 * nSize, 8 * nSize);
mainCanvasContext.fillRect(0, (nCount - 8) * nSize, 8 * nSize, 8 * nSize);
mainCanvasContext.fillRect((nCount - 8) * nSize, 0, 8 * nSize, 8 * nSize);
edgeCenter = agnPatternCenter[agnPatternCenter.length - 1];
// Draw ALIGN protectors
// for (let i = 0; i < agnPatternCenter.length; i++) {
// for (let j = 0; j < agnPatternCenter.length; j++) {
// const agnX = agnPatternCenter[j];
// const agnY = agnPatternCenter[i];
// if (agnX === 6 && (agnY === 6 || agnY === edgeCenter)) {
// continue;
// } else if (agnY === 6 && (agnX === 6 || agnX === edgeCenter)) {
// continue;
// } else if (agnX !== 6 && agnX !== edgeCenter && agnY !== 6 && agnY !== edgeCenter) {
// AwesomeQR._drawAlignProtector(mainCanvasContext, agnX, agnY, dotScale * nSize, dotScale * nSize);
// } else {
// AwesomeQR._drawAlignProtector(mainCanvasContext, agnX, agnY, dotScale * nSize, dotScale * nSize);
// }
// }
// }
// Draw POSITION patterns
mainCanvasContext.fillStyle = this.options.colorDark;
mainCanvasContext.fillRect(0, 0, 7 * nSize, nSize);
mainCanvasContext.fillRect((nCount - 7) * nSize, 0, 7 * nSize, nSize);
mainCanvasContext.fillRect(0, 6 * nSize, 7 * nSize, nSize);
mainCanvasContext.fillRect((nCount - 7) * nSize, 6 * nSize, 7 * nSize, nSize);
mainCanvasContext.fillRect(0, (nCount - 7) * nSize, 7 * nSize, nSize);
mainCanvasContext.fillRect(0, (nCount - 7 + 6) * nSize, 7 * nSize, nSize);
mainCanvasContext.fillRect(0, 0, nSize, 7 * nSize);
mainCanvasContext.fillRect(6 * nSize, 0, nSize, 7 * nSize);
mainCanvasContext.fillRect((nCount - 7) * nSize, 0, nSize, 7 * nSize);
mainCanvasContext.fillRect((nCount - 7 + 6) * nSize, 0, nSize, 7 * nSize);
mainCanvasContext.fillRect(0, (nCount - 7) * nSize, nSize, 7 * nSize);
mainCanvasContext.fillRect(6 * nSize, (nCount - 7) * nSize, nSize, 7 * nSize);
mainCanvasContext.fillRect(2 * nSize, 2 * nSize, 3 * nSize, 3 * nSize);
mainCanvasContext.fillRect((nCount - 7 + 2) * nSize, 2 * nSize, 3 * nSize, 3 * nSize);
mainCanvasContext.fillRect(2 * nSize, (nCount - 7 + 2) * nSize, 3 * nSize, 3 * nSize);
for (i = 0; i < nCount - 8; i += 2) {
mainCanvasContext.fillRect((8 + i + xyOffset) * nSize, (6 + xyOffset) * nSize, dotScale * nSize, dotScale * nSize);
mainCanvasContext.fillRect((6 + xyOffset) * nSize, (8 + i + xyOffset) * nSize, dotScale * nSize, dotScale * nSize);
}
for (i = 0; i < agnPatternCenter.length; i++) {
for (j = 0; j < agnPatternCenter.length; j++) {
agnX = agnPatternCenter[j];
agnY = agnPatternCenter[i];
if (agnX === 6 && (agnY === 6 || agnY === edgeCenter)) {
continue;
}
else if (agnY === 6 && (agnX === 6 || agnX === edgeCenter)) {
continue;
}
else if (agnX !== 6 && agnX !== edgeCenter && agnY !== 6 && agnY !== edgeCenter) {
// mainCanvasContext.fillStyle = "rgba(0, 0, 0, .2)";
AwesomeQR._drawAlign(mainCanvasContext, agnX, agnY, nSize, xyOffset, dotScale, this.options.colorDark);
}
else {
// mainCanvasContext.fillStyle = this.options.colorDark!;
AwesomeQR._drawAlign(mainCanvasContext, agnX, agnY, nSize, xyOffset, dotScale, this.options.colorDark);
}
}
}
// Fill the margin
if (whiteMargin) {
mainCanvasContext.fillStyle = "#FFFFFF";
mainCanvasContext.fillRect(-margin, -margin, size, margin);
mainCanvasContext.fillRect(-margin, viewportSize, size, margin);
mainCanvasContext.fillRect(viewportSize, -margin, margin, size);
mainCanvasContext.fillRect(-margin, -margin, margin, size);
}
if (!!!this.options.logoImage) return [3 /*break*/, 6];
return [4 /*yield*/, canvas_1.loadImage(this.options.logoImage)];
case 5:
logoImage = _b.sent();
logoScale = this.options.logoScale;
logoMargin = this.options.logoMargin;
logoCornerRadius = this.options.logoCornerRadius;
if (logoScale <= 0 || logoScale >= 1.0) {
logoScale = 0.2;
}
if (logoMargin < 0) {
logoMargin = 0;
}
if (logoCornerRadius < 0) {
logoCornerRadius = 0;
}
mainCanvasContext.restore();
logoSize = viewportSize * logoScale;
x = 0.5 * (size - logoSize);
y = x;
mainCanvasContext.fillStyle = "#FFFFFF";
mainCanvasContext.save();
AwesomeQR._prepareRoundedCornerClip(mainCanvasContext, x - logoMargin, y - logoMargin, logoSize + 2 * logoMargin, logoSize + 2 * logoMargin, logoCornerRadius);
mainCanvasContext.clip();
mainCanvasContext.fill();
mainCanvasContext.restore();
mainCanvasContext.save();
AwesomeQR._prepareRoundedCornerClip(mainCanvasContext, x, y, logoSize, logoSize, logoCornerRadius);
mainCanvasContext.clip();
mainCanvasContext.drawImage(logoImage, x, y, logoSize, logoSize);
mainCanvasContext.restore();
_b.label = 6;
case 6:
if (!!parsedGIFBackground) {
gifFrames.forEach(function (frame) {
if (!gifOutput_1) {
gifOutput_1 = new GIFEncoder_1.default(rawSize, rawSize);
gifOutput_1.setDelay(frame.delay);
gifOutput_1.setRepeat(0);
}
var _a = frame.dims, width = _a.width, height = _a.height;
if (!backgroundCanvas_1) {
backgroundCanvas_1 = canvas_1.createCanvas(width, height);
backgroundCanvasContext_1 = backgroundCanvas_1.getContext("2d");
backgroundCanvasContext_1.rect(0, 0, backgroundCanvas_1.width, backgroundCanvas_1.height);
backgroundCanvasContext_1.fillStyle = "#ffffff";
backgroundCanvasContext_1.fill();
}
if (!patchCanvas_1 || !patchData_1 || width !== patchCanvas_1.width || height !== patchCanvas_1.height) {
patchCanvas_1 = canvas_1.createCanvas(width, height);
patchCanvasContext_1 = patchCanvas_1.getContext("2d");
patchData_1 = patchCanvasContext_1.createImageData(width, height);
}
patchData_1.data.set(frame.patch);
patchCanvasContext_1.putImageData(patchData_1, 0, 0);
backgroundCanvasContext_1.drawImage(patchCanvas_1, frame.dims.left, frame.dims.top);
var unscaledCanvas = canvas_1.createCanvas(size, size);
var unscaledCanvasContext = unscaledCanvas.getContext("2d");
unscaledCanvasContext.drawImage(backgroundCanvas_1, 0, 0, size, size);
unscaledCanvasContext.rect(0, 0, size, size);
unscaledCanvasContext.fillStyle = backgroundDimming;
unscaledCanvasContext.fill();
unscaledCanvasContext.drawImage(mainCanvas, 0, 0, size, size);
// Scale the final image
var outCanvas = canvas_1.createCanvas(rawSize, rawSize);
var outCanvasContext = outCanvas.getContext("2d");
outCanvasContext.drawImage(unscaledCanvas, 0, 0, rawSize, rawSize);
gifOutput_1.addFrame(outCanvasContext.getImageData(0, 0, outCanvas.width, outCanvas.height).data);
});
if (!gifOutput_1) {
throw new Error("No frames.");
}
gifOutput_1.finish();
if (isElement(this.canvas)) {
u8array = gifOutput_1.stream().toFlattenUint8Array();
binary = u8array.reduce(function (bin, u8) { return bin + String.fromCharCode(u8); }, "");
return [2 /*return*/, Promise.resolve("data:image/gif;base64," + window.btoa(binary))];
}
return [2 /*return*/, Promise.resolve(Buffer.from(gifOutput_1.stream().toFlattenUint8Array()))];
}
else {
// Swap and merge the foreground and the background
backgroundCanvasContext.drawImage(mainCanvas, 0, 0, size, size);
mainCanvasContext.drawImage(backgroundCanvas, -margin, -margin, size, size);
outCanvas = canvas_1.createCanvas(rawSize, rawSize);
outCanvasContext = outCanvas.getContext("2d");
outCanvasContext.drawImage(mainCanvas, 0, 0, rawSize, rawSize);
this.canvas = outCanvas;
if (isElement(this.canvas)) {
return [2 /*return*/, Promise.resolve(this.canvas.toDataURL())];
}
return [2 /*return*/, Promise.resolve(this.canvas.toBuffer())];
}
return [2 /*return*/];
}
if (!patchCanvas || !patchData || width !== patchCanvas.width || height !== patchCanvas.height) {
patchCanvas = canvas_1.createCanvas(width, height);
patchCanvasContext = patchCanvas.getContext("2d");
patchData = patchCanvasContext.createImageData(width, height);
}
patchData.data.set(frame.patch);
patchCanvasContext.putImageData(patchData, 0, 0);
backgroundCanvasContext.drawImage(patchCanvas, frame.dims.left, frame.dims.top);
const unscaledCanvas = canvas_1.createCanvas(size, size);
const unscaledCanvasContext = unscaledCanvas.getContext("2d");
unscaledCanvasContext.drawImage(backgroundCanvas, 0, 0, size, size);
unscaledCanvasContext.rect(0, 0, size, size);
unscaledCanvasContext.fillStyle = backgroundDimming;
unscaledCanvasContext.fill();
unscaledCanvasContext.drawImage(mainCanvas, 0, 0, size, size);
// Scale the final image
const outCanvas = canvas_1.createCanvas(rawSize, rawSize);
const outCanvasContext = outCanvas.getContext("2d");
outCanvasContext.drawImage(unscaledCanvas, 0, 0, rawSize, rawSize);
gifOutput.addFrame(outCanvasContext.getImageData(0, 0, outCanvas.width, outCanvas.height).data);
});
if (!gifOutput) {
throw new Error("No frames.");
}
});
gifOutput.finish();
if (isElement(this.canvas)) {
const u8array = gifOutput.stream().toFlattenUint8Array();
const binary = u8array.reduce((bin, u8) => bin + String.fromCharCode(u8), "");
return Promise.resolve(`data:image/gif;base64,${window.btoa(binary)}`);
}
return Promise.resolve(Buffer.from(gifOutput.stream().toFlattenUint8Array()));
}
else {
// Swap and merge the foreground and the background
backgroundCanvasContext.drawImage(mainCanvas, 0, 0, size, size);
mainCanvasContext.drawImage(backgroundCanvas, -margin, -margin, size, size);
// Scale the final image
const outCanvas = canvas_1.createCanvas(rawSize, rawSize); //document.createElement("canvas");
const outCanvasContext = outCanvas.getContext("2d");
outCanvasContext.drawImage(mainCanvas, 0, 0, rawSize, rawSize);
this.canvas = outCanvas;
if (isElement(this.canvas)) {
return Promise.resolve(this.canvas.toDataURL());
}
return Promise.resolve(this.canvas.toBuffer());
}
});
};
AwesomeQR.CorrectLevel = qrcode_1.QRErrorCorrectLevel;
AwesomeQR._defaultOptions = {
text: "",
size: 400,
margin: 20,
colorDark: "#000000",
colorLight: "#ffffff",
correctLevel: qrcode_1.QRErrorCorrectLevel.M,
backgroundImage: undefined,
backgroundDimming: "rgba(0,0,0,0)",
logoImage: undefined,
logoScale: 0.2,
logoMargin: 6,
logoCornerRadius: 8,
whiteMargin: true,
dotScale: 0.4,
autoColor: true,
};
return AwesomeQR;
}());
}
}
exports.AwesomeQR = AwesomeQR;
AwesomeQR.CorrectLevel = qrcode_1.QRErrorCorrectLevel;
AwesomeQR._defaultOptions = {
text: "",
size: 400,
margin: 20,
colorDark: "#000000",
colorLight: "#ffffff",
correctLevel: qrcode_1.QRErrorCorrectLevel.M,
backgroundImage: undefined,
backgroundDimming: "rgba(0,0,0,0)",
logoImage: undefined,
logoScale: 0.2,
logoMargin: 6,
logoCornerRadius: 8,
whiteMargin: true,
dotScale: 0.4,
autoColor: true,
};
function isElement(obj) {

@@ -479,0 +433,0 @@ try {

@@ -36,6 +36,6 @@ "use strict";

ByteArray.prototype.toFlattenUint8Array = function () {
var chunks = [];
const chunks = [];
for (var p = 0; p < this.pages.length; p++) {
if (p === this.pages.length - 1) {
var chunk = Uint8Array.from(this.pages[p].slice(0, this.cursor));
const chunk = Uint8Array.from(this.pages[p].slice(0, this.cursor));
chunks.push(chunk);

@@ -47,4 +47,4 @@ }

}
var flatten = new Uint8Array(chunks.reduce(function (acc, chunk) { return acc + chunk.length; }, 0));
chunks.reduce(function (lastLength, chunk) {
const flatten = new Uint8Array(chunks.reduce((acc, chunk) => acc + chunk.length, 0));
chunks.reduce((lastLength, chunk) => {
flatten.set(chunk, lastLength);

@@ -51,0 +51,0 @@ return lastLength + chunk.length;

@@ -7,12 +7,12 @@ "use strict";

exports.deinterlace = void 0;
exports.deinterlace = function (pixels, width) {
var newPixels = new Array(pixels.length);
var rows = pixels.length / width;
var cpRow = function (toRow, fromRow) {
var fromPixels = pixels.slice(fromRow * width, (fromRow + 1) * width);
exports.deinterlace = (pixels, width) => {
const newPixels = new Array(pixels.length);
const rows = pixels.length / width;
const cpRow = function (toRow, fromRow) {
const fromPixels = pixels.slice(fromRow * width, (fromRow + 1) * width);
newPixels.splice.apply(newPixels, [toRow * width, width].concat(fromPixels));
};
// See appendix E.
var offsets = [0, 4, 2, 1];
var steps = [8, 8, 4, 2];
const offsets = [0, 4, 2, 1];
const steps = [8, 8, 4, 2];
var fromRow = 0;

@@ -19,0 +19,0 @@ for (var pass = 0; pass < 4; pass++) {

@@ -7,18 +7,18 @@ "use strict";

exports.decompressFrames = exports.decompressFrame = exports.parseGIF = void 0;
var gif_1 = __importDefault(require("js-binary-schema-parser/lib/schemas/gif"));
var js_binary_schema_parser_1 = require("js-binary-schema-parser");
var uint8_1 = require("js-binary-schema-parser/lib/parsers/uint8");
var deinterlace_1 = require("./deinterlace");
var lzw_1 = require("./lzw");
exports.parseGIF = function (arrayBuffer) {
var byteData = new Uint8Array(arrayBuffer);
const gif_1 = __importDefault(require("js-binary-schema-parser/lib/schemas/gif"));
const js_binary_schema_parser_1 = require("js-binary-schema-parser");
const uint8_1 = require("js-binary-schema-parser/lib/parsers/uint8");
const deinterlace_1 = require("./deinterlace");
const lzw_1 = require("./lzw");
exports.parseGIF = arrayBuffer => {
const byteData = new Uint8Array(arrayBuffer);
return js_binary_schema_parser_1.parse(uint8_1.buildStream(byteData), gif_1.default);
};
var generatePatch = function (image) {
var totalPixels = image.pixels.length;
var patchData = new Uint8ClampedArray(totalPixels * 4);
const generatePatch = image => {
const totalPixels = image.pixels.length;
const patchData = new Uint8ClampedArray(totalPixels * 4);
for (var i = 0; i < totalPixels; i++) {
var pos = i * 4;
var colorIndex = image.pixels[i];
var color = image.colorTable[colorIndex];
const pos = i * 4;
const colorIndex = image.pixels[i];
const color = image.colorTable[colorIndex];
patchData[pos] = color[0];

@@ -31,3 +31,3 @@ patchData[pos + 1] = color[1];

};
exports.decompressFrame = function (frame, gct, buildImagePatch) {
exports.decompressFrame = (frame, gct, buildImagePatch) => {
if (!frame.image) {

@@ -37,5 +37,5 @@ console.warn('gif frame does not have associated image.');

}
var image = frame.image;
const { image } = frame;
// get the number of pixels
var totalPixels = image.descriptor.width * image.descriptor.height;
const totalPixels = image.descriptor.width * image.descriptor.height;
// do lzw decompression

@@ -47,3 +47,3 @@ var pixels = lzw_1.lzw(image.data.minCodeSize, image.data.blocks, totalPixels);

}
var resultImage = {
const resultImage = {
pixels: pixels,

@@ -79,6 +79,6 @@ dims: {

};
exports.decompressFrames = function (parsedGif, buildImagePatches) {
exports.decompressFrames = (parsedGif, buildImagePatches) => {
return parsedGif.frames
.filter(function (f) { return f.image; })
.map(function (f) { return exports.decompressFrame(f, parsedGif.gct, buildImagePatches); });
.filter(f => f.image)
.map(f => exports.decompressFrame(f, parsedGif.gct, buildImagePatches));
};

@@ -8,11 +8,11 @@ "use strict";

exports.lzw = void 0;
exports.lzw = function (minCodeSize, data, pixelCount) {
var MAX_STACK_SIZE = 4096;
var nullCode = -1;
var npix = pixelCount;
exports.lzw = (minCodeSize, data, pixelCount) => {
const MAX_STACK_SIZE = 4096;
const nullCode = -1;
const npix = pixelCount;
var available, clear, code_mask, code_size, end_of_information, in_code, old_code, bits, code, i, datum, data_size, first, top, bi, pi;
var dstPixels = new Array(pixelCount);
var prefix = new Array(MAX_STACK_SIZE);
var suffix = new Array(MAX_STACK_SIZE);
var pixelStack = new Array(MAX_STACK_SIZE + 1);
const dstPixels = new Array(pixelCount);
const prefix = new Array(MAX_STACK_SIZE);
const suffix = new Array(MAX_STACK_SIZE);
const pixelStack = new Array(MAX_STACK_SIZE + 1);
// Initialize GIF data stream decoder.

@@ -19,0 +19,0 @@ data_size = minCodeSize;

@@ -57,12 +57,12 @@ "use strict";

}
var QR8bitByte = /** @class */ (function () {
function QR8bitByte(data) {
class QR8bitByte {
constructor(data) {
this.mode = QRMode.MODE_8BIT_BYTE;
this.parsedData = [];
this.data = data;
var byteArrays = [];
const byteArrays = [];
// Added to support UTF-8 Characters
for (var i = 0, l = this.data.length; i < l; i++) {
var byteArray = [];
var code = this.data.charCodeAt(i);
for (let i = 0, l = this.data.length; i < l; i++) {
const byteArray = [];
const code = this.data.charCodeAt(i);
if (code > 0x10000) {

@@ -95,16 +95,13 @@ byteArray[0] = 0xf0 | ((code & 0x1c0000) >>> 18);

}
QR8bitByte.prototype.getLength = function () {
getLength() {
return this.parsedData.length;
};
QR8bitByte.prototype.write = function (buffer) {
for (var i = 0, l = this.parsedData.length; i < l; i++) {
}
write(buffer) {
for (let i = 0, l = this.parsedData.length; i < l; i++) {
buffer.put(this.parsedData[i], 8);
}
};
return QR8bitByte;
}());
var QRCodeModel = /** @class */ (function () {
function QRCodeModel(typeNumber, errorCorrectLevel) {
if (typeNumber === void 0) { typeNumber = -1; }
if (errorCorrectLevel === void 0) { errorCorrectLevel = exports.QRErrorCorrectLevel.L; }
}
}
class QRCodeModel {
constructor(typeNumber = -1, errorCorrectLevel = exports.QRErrorCorrectLevel.L) {
this.moduleCount = 0;

@@ -117,28 +114,28 @@ this.dataList = [];

}
QRCodeModel.prototype.addData = function (data) {
addData(data) {
if (this.typeNumber <= 0) {
this.typeNumber = _getTypeNumber(data, this.errorCorrectLevel);
}
var newData = new QR8bitByte(data);
const newData = new QR8bitByte(data);
this.dataList.push(newData);
this.dataCache = undefined;
};
QRCodeModel.prototype.isDark = function (row, col) {
}
isDark(row, col) {
if (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {
throw new Error(row + "," + col);
throw new Error(`${row},${col}`);
}
return this.modules[row][col];
};
QRCodeModel.prototype.getModuleCount = function () {
}
getModuleCount() {
return this.moduleCount;
};
QRCodeModel.prototype.make = function () {
}
make() {
this.makeImpl(false, this.getBestMaskPattern());
};
QRCodeModel.prototype.makeImpl = function (test, maskPattern) {
}
makeImpl(test, maskPattern) {
this.moduleCount = this.typeNumber * 4 + 17;
this.modules = new Array(this.moduleCount);
for (var row = 0; row < this.moduleCount; row++) {
for (let row = 0; row < this.moduleCount; row++) {
this.modules[row] = new Array(this.moduleCount);
for (var col = 0; col < this.moduleCount; col++) {
for (let col = 0; col < this.moduleCount; col++) {
this.modules[row][col] = null;

@@ -160,8 +157,8 @@ }

this.mapData(this.dataCache, maskPattern);
};
QRCodeModel.prototype.setupPositionProbePattern = function (row, col) {
for (var r = -1; r <= 7; r++) {
}
setupPositionProbePattern(row, col) {
for (let r = -1; r <= 7; r++) {
if (row + r <= -1 || this.moduleCount <= row + r)
continue;
for (var c = -1; c <= 7; c++) {
for (let c = -1; c <= 7; c++) {
if (col + c <= -1 || this.moduleCount <= col + c)

@@ -179,9 +176,9 @@ continue;

}
};
QRCodeModel.prototype.getBestMaskPattern = function () {
var minLostPoint = 0;
var pattern = 0;
for (var i = 0; i < 8; i++) {
}
getBestMaskPattern() {
let minLostPoint = 0;
let pattern = 0;
for (let i = 0; i < 8; i++) {
this.makeImpl(true, i);
var lostPoint = QRUtil.getLostPoint(this);
const lostPoint = QRUtil.getLostPoint(this);
if (i == 0 || minLostPoint > lostPoint) {

@@ -193,5 +190,5 @@ minLostPoint = lostPoint;

return pattern;
};
QRCodeModel.prototype.setupTimingPattern = function () {
for (var r = 8; r < this.moduleCount - 8; r++) {
}
setupTimingPattern() {
for (let r = 8; r < this.moduleCount - 8; r++) {
if (this.modules[r][6] != null) {

@@ -202,3 +199,3 @@ continue;

}
for (var c = 8; c < this.moduleCount - 8; c++) {
for (let c = 8; c < this.moduleCount - 8; c++) {
if (this.modules[6][c] != null) {

@@ -209,14 +206,14 @@ continue;

}
};
QRCodeModel.prototype.setupPositionAdjustPattern = function () {
var pos = QRUtil.getPatternPosition(this.typeNumber);
for (var i = 0; i < pos.length; i++) {
for (var j = 0; j < pos.length; j++) {
var row = pos[i];
var col = pos[j];
}
setupPositionAdjustPattern() {
const pos = QRUtil.getPatternPosition(this.typeNumber);
for (let i = 0; i < pos.length; i++) {
for (let j = 0; j < pos.length; j++) {
const row = pos[i];
const col = pos[j];
if (this.modules[row][col] != null) {
continue;
}
for (var r = -2; r <= 2; r++) {
for (var c = -2; c <= 2; c++) {
for (let r = -2; r <= 2; r++) {
for (let c = -2; c <= 2; c++) {
if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {

@@ -232,5 +229,5 @@ this.modules[row + r][col + c] = true;

}
};
QRCodeModel.prototype.setupTypeNumber = function (test) {
var bits = QRUtil.getBCHTypeNumber(this.typeNumber);
}
setupTypeNumber(test) {
const bits = QRUtil.getBCHTypeNumber(this.typeNumber);
for (var i = 0; i < 18; i++) {

@@ -244,6 +241,6 @@ var mod = !test && ((bits >> i) & 1) == 1;

}
};
QRCodeModel.prototype.setupTypeInfo = function (test, maskPattern) {
var data = (this.errorCorrectLevel << 3) | maskPattern;
var bits = QRUtil.getBCHTypeInfo(data);
}
setupTypeInfo(test, maskPattern) {
const data = (this.errorCorrectLevel << 3) | maskPattern;
const bits = QRUtil.getBCHTypeInfo(data);
for (var i = 0; i < 15; i++) {

@@ -274,19 +271,19 @@ var mod = !test && ((bits >> i) & 1) == 1;

this.modules[this.moduleCount - 8][8] = !test;
};
QRCodeModel.prototype.mapData = function (data, maskPattern) {
var inc = -1;
var row = this.moduleCount - 1;
var bitIndex = 7;
var byteIndex = 0;
for (var col = this.moduleCount - 1; col > 0; col -= 2) {
}
mapData(data, maskPattern) {
let inc = -1;
let row = this.moduleCount - 1;
let bitIndex = 7;
let byteIndex = 0;
for (let col = this.moduleCount - 1; col > 0; col -= 2) {
if (col == 6)
col--;
while (true) {
for (var c = 0; c < 2; c++) {
for (let c = 0; c < 2; c++) {
if (this.modules[row][col - c] == null) {
var dark = false;
let dark = false;
if (byteIndex < data.length) {
dark = ((data[byteIndex] >>> bitIndex) & 1) == 1;
}
var mask = QRUtil.getMask(maskPattern, row, col - c);
const mask = QRUtil.getMask(maskPattern, row, col - c);
if (mask) {

@@ -311,8 +308,8 @@ dark = !dark;

}
};
QRCodeModel.createData = function (typeNumber, errorCorrectLevel, dataList) {
var rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);
var buffer = new QRBitBuffer();
}
static createData(typeNumber, errorCorrectLevel, dataList) {
const rsBlocks = QRRSBlock.getRSBlocks(typeNumber, errorCorrectLevel);
const buffer = new QRBitBuffer();
for (var i = 0; i < dataList.length; i++) {
var data = dataList[i];
const data = dataList[i];
buffer.put(data.mode, 4);

@@ -322,3 +319,3 @@ buffer.put(data.getLength(), QRUtil.getLengthInBits(data.mode, typeNumber));

}
var totalDataCount = 0;
let totalDataCount = 0;
for (var i = 0; i < rsBlocks.length; i++) {

@@ -328,3 +325,3 @@ totalDataCount += rsBlocks[i].dataCount;

if (buffer.getLengthInBits() > totalDataCount * 8) {
throw new Error("code length overflow. (" + buffer.getLengthInBits() + ">" + totalDataCount * 8 + ")");
throw new Error(`code length overflow. (${buffer.getLengthInBits()}>${totalDataCount * 8})`);
}

@@ -348,12 +345,12 @@ if (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {

return QRCodeModel.createBytes(buffer, rsBlocks);
};
QRCodeModel.createBytes = function (buffer, rsBlocks) {
var offset = 0;
var maxDcCount = 0;
var maxEcCount = 0;
var dcdata = new Array(rsBlocks.length);
var ecdata = new Array(rsBlocks.length);
}
static createBytes(buffer, rsBlocks) {
let offset = 0;
let maxDcCount = 0;
let maxEcCount = 0;
const dcdata = new Array(rsBlocks.length);
const ecdata = new Array(rsBlocks.length);
for (var r = 0; r < rsBlocks.length; r++) {
var dcCount = rsBlocks[r].dataCount;
var ecCount = rsBlocks[r].totalCount - dcCount;
const dcCount = rsBlocks[r].dataCount;
const ecCount = rsBlocks[r].totalCount - dcCount;
maxDcCount = Math.max(maxDcCount, dcCount);

@@ -366,17 +363,17 @@ maxEcCount = Math.max(maxEcCount, ecCount);

offset += dcCount;
var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);
var modPoly = rawPoly.mod(rsPoly);
const rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount);
const rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1);
const modPoly = rawPoly.mod(rsPoly);
ecdata[r] = new Array(rsPoly.getLength() - 1);
for (var i = 0; i < ecdata[r].length; i++) {
var modIndex = i + modPoly.getLength() - ecdata[r].length;
const modIndex = i + modPoly.getLength() - ecdata[r].length;
ecdata[r][i] = modIndex >= 0 ? modPoly.get(modIndex) : 0;
}
}
var totalCodeCount = 0;
let totalCodeCount = 0;
for (var i = 0; i < rsBlocks.length; i++) {
totalCodeCount += rsBlocks[i].totalCount;
}
var data = new Array(totalCodeCount);
var index = 0;
const data = new Array(totalCodeCount);
let index = 0;
for (var i = 0; i < maxDcCount; i++) {

@@ -397,11 +394,10 @@ for (var r = 0; r < rsBlocks.length; r++) {

return data;
};
QRCodeModel.PAD0 = 0xec;
QRCodeModel.PAD1 = 0x11;
return QRCodeModel;
}());
}
}
exports.QRCodeModel = QRCodeModel;
QRCodeModel.PAD0 = 0xec;
QRCodeModel.PAD1 = 0x11;
exports.QRErrorCorrectLevel = { L: 1, M: 0, Q: 3, H: 2 };
var QRMode = { MODE_NUMBER: 1 << 0, MODE_ALPHA_NUM: 1 << 1, MODE_8BIT_BYTE: 1 << 2, MODE_KANJI: 1 << 3 };
var QRMaskPattern = {
const QRMode = { MODE_NUMBER: 1 << 0, MODE_ALPHA_NUM: 1 << 1, MODE_8BIT_BYTE: 1 << 2, MODE_KANJI: 1 << 3 };
const QRMaskPattern = {
PATTERN000: 0,

@@ -416,7 +412,5 @@ PATTERN001: 1,

};
var QRUtil = /** @class */ (function () {
function QRUtil() {
}
QRUtil.getBCHTypeInfo = function (data) {
var d = data << 10;
class QRUtil {
static getBCHTypeInfo(data) {
let d = data << 10;
while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {

@@ -426,5 +420,5 @@ d ^= QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15));

return ((data << 10) | d) ^ QRUtil.G15_MASK;
};
QRUtil.getBCHTypeNumber = function (data) {
var d = data << 12;
}
static getBCHTypeNumber(data) {
let d = data << 12;
while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {

@@ -434,5 +428,5 @@ d ^= QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18));

return (data << 12) | d;
};
QRUtil.getBCHDigit = function (data) {
var digit = 0;
}
static getBCHDigit(data) {
let digit = 0;
while (data != 0) {

@@ -443,7 +437,7 @@ digit++;

return digit;
};
QRUtil.getPatternPosition = function (typeNumber) {
}
static getPatternPosition(typeNumber) {
return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];
};
QRUtil.getMask = function (maskPattern, i, j) {
}
static getMask(maskPattern, i, j) {
switch (maskPattern) {

@@ -467,13 +461,13 @@ case QRMaskPattern.PATTERN000:

default:
throw new Error("bad maskPattern:" + maskPattern);
throw new Error(`bad maskPattern:${maskPattern}`);
}
};
QRUtil.getErrorCorrectPolynomial = function (errorCorrectLength) {
var a = new QRPolynomial([1], 0);
for (var i = 0; i < errorCorrectLength; i++) {
}
static getErrorCorrectPolynomial(errorCorrectLength) {
let a = new QRPolynomial([1], 0);
for (let i = 0; i < errorCorrectLength; i++) {
a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0));
}
return a;
};
QRUtil.getLengthInBits = function (mode, type) {
}
static getLengthInBits(mode, type) {
if (1 <= type && type < 10) {

@@ -490,3 +484,3 @@ switch (mode) {

default:
throw new Error("mode:" + mode);
throw new Error(`mode:${mode}`);
}

@@ -505,3 +499,3 @@ }

default:
throw new Error("mode:" + mode);
throw new Error(`mode:${mode}`);
}

@@ -520,21 +514,21 @@ }

default:
throw new Error("mode:" + mode);
throw new Error(`mode:${mode}`);
}
}
else {
throw new Error("type:" + type);
throw new Error(`type:${type}`);
}
};
QRUtil.getLostPoint = function (qrCode) {
var moduleCount = qrCode.getModuleCount();
var lostPoint = 0;
}
static getLostPoint(qrCode) {
const moduleCount = qrCode.getModuleCount();
let lostPoint = 0;
for (var row = 0; row < moduleCount; row++) {
for (var col = 0; col < moduleCount; col++) {
var sameCount = 0;
var dark = qrCode.isDark(row, col);
for (var r = -1; r <= 1; r++) {
let sameCount = 0;
const dark = qrCode.isDark(row, col);
for (let r = -1; r <= 1; r++) {
if (row + r < 0 || moduleCount <= row + r) {
continue;
}
for (var c = -1; c <= 1; c++) {
for (let c = -1; c <= 1; c++) {
if (col + c < 0 || moduleCount <= col + c) {

@@ -558,3 +552,3 @@ continue;

for (var col = 0; col < moduleCount - 1; col++) {
var count = 0;
let count = 0;
if (qrCode.isDark(row, col))

@@ -599,3 +593,3 @@ count++;

}
var darkCount = 0;
let darkCount = 0;
for (var col = 0; col < moduleCount; col++) {

@@ -608,64 +602,61 @@ for (var row = 0; row < moduleCount; row++) {

}
var ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;
const ratio = Math.abs((100 * darkCount) / moduleCount / moduleCount - 50) / 5;
lostPoint += ratio * 10;
return lostPoint;
};
QRUtil.PATTERN_POSITION_TABLE = [
[],
[6, 18],
[6, 22],
[6, 26],
[6, 30],
[6, 34],
[6, 22, 38],
[6, 24, 42],
[6, 26, 46],
[6, 28, 50],
[6, 30, 54],
[6, 32, 58],
[6, 34, 62],
[6, 26, 46, 66],
[6, 26, 48, 70],
[6, 26, 50, 74],
[6, 30, 54, 78],
[6, 30, 56, 82],
[6, 30, 58, 86],
[6, 34, 62, 90],
[6, 28, 50, 72, 94],
[6, 26, 50, 74, 98],
[6, 30, 54, 78, 102],
[6, 28, 54, 80, 106],
[6, 32, 58, 84, 110],
[6, 30, 58, 86, 114],
[6, 34, 62, 90, 118],
[6, 26, 50, 74, 98, 122],
[6, 30, 54, 78, 102, 126],
[6, 26, 52, 78, 104, 130],
[6, 30, 56, 82, 108, 134],
[6, 34, 60, 86, 112, 138],
[6, 30, 58, 86, 114, 142],
[6, 34, 62, 90, 118, 146],
[6, 30, 54, 78, 102, 126, 150],
[6, 24, 50, 76, 102, 128, 154],
[6, 28, 54, 80, 106, 132, 158],
[6, 32, 58, 84, 110, 136, 162],
[6, 26, 54, 82, 110, 138, 166],
[6, 30, 58, 86, 114, 142, 170],
];
QRUtil.G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);
QRUtil.G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);
QRUtil.G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);
return QRUtil;
}());
}
}
exports.QRUtil = QRUtil;
var QRMath = /** @class */ (function () {
function QRMath() {
}
QRMath.glog = function (n) {
QRUtil.PATTERN_POSITION_TABLE = [
[],
[6, 18],
[6, 22],
[6, 26],
[6, 30],
[6, 34],
[6, 22, 38],
[6, 24, 42],
[6, 26, 46],
[6, 28, 50],
[6, 30, 54],
[6, 32, 58],
[6, 34, 62],
[6, 26, 46, 66],
[6, 26, 48, 70],
[6, 26, 50, 74],
[6, 30, 54, 78],
[6, 30, 56, 82],
[6, 30, 58, 86],
[6, 34, 62, 90],
[6, 28, 50, 72, 94],
[6, 26, 50, 74, 98],
[6, 30, 54, 78, 102],
[6, 28, 54, 80, 106],
[6, 32, 58, 84, 110],
[6, 30, 58, 86, 114],
[6, 34, 62, 90, 118],
[6, 26, 50, 74, 98, 122],
[6, 30, 54, 78, 102, 126],
[6, 26, 52, 78, 104, 130],
[6, 30, 56, 82, 108, 134],
[6, 34, 60, 86, 112, 138],
[6, 30, 58, 86, 114, 142],
[6, 34, 62, 90, 118, 146],
[6, 30, 54, 78, 102, 126, 150],
[6, 24, 50, 76, 102, 128, 154],
[6, 28, 54, 80, 106, 132, 158],
[6, 32, 58, 84, 110, 136, 162],
[6, 26, 54, 82, 110, 138, 166],
[6, 30, 58, 86, 114, 142, 170],
];
QRUtil.G15 = (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0);
QRUtil.G18 = (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0);
QRUtil.G15_MASK = (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1);
class QRMath {
static glog(n) {
if (n < 1) {
throw new Error("glog(" + n + ")");
throw new Error(`glog(${n})`);
}
return QRMath.LOG_TABLE[n];
};
QRMath.gexp = function (n) {
}
static gexp(n) {
while (n < 0) {

@@ -678,26 +669,25 @@ n += 255;

return QRMath.EXP_TABLE[n];
};
QRMath.EXP_TABLE = new Array(256);
QRMath.LOG_TABLE = new Array(256);
QRMath._constructor = (function () {
for (var i = 0; i < 8; i++) {
QRMath.EXP_TABLE[i] = 1 << i;
}
for (var i = 8; i < 256; i++) {
QRMath.EXP_TABLE[i] =
QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];
}
for (var i = 0; i < 255; i++) {
QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
}
})();
return QRMath;
}());
}
}
exports.QRMath = QRMath;
var QRPolynomial = /** @class */ (function () {
function QRPolynomial(num, shift) {
QRMath.EXP_TABLE = new Array(256);
QRMath.LOG_TABLE = new Array(256);
QRMath._constructor = (function () {
for (var i = 0; i < 8; i++) {
QRMath.EXP_TABLE[i] = 1 << i;
}
for (var i = 8; i < 256; i++) {
QRMath.EXP_TABLE[i] =
QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8];
}
for (var i = 0; i < 255; i++) {
QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
}
})();
class QRPolynomial {
constructor(num, shift) {
if (num.length == undefined) {
throw new Error(num.length + "/" + shift);
throw new Error(`${num.length}/${shift}`);
}
var offset = 0;
let offset = 0;
while (offset < num.length && num[offset] == 0) {

@@ -707,16 +697,16 @@ offset++;

this.num = new Array(num.length - offset + shift);
for (var i = 0; i < num.length - offset; i++) {
for (let i = 0; i < num.length - offset; i++) {
this.num[i] = num[i + offset];
}
}
QRPolynomial.prototype.get = function (index) {
get(index) {
return this.num[index];
};
QRPolynomial.prototype.getLength = function () {
}
getLength() {
return this.num.length;
};
QRPolynomial.prototype.multiply = function (e) {
var num = new Array(this.getLength() + e.getLength() - 1);
for (var i = 0; i < this.getLength(); i++) {
for (var j = 0; j < e.getLength(); j++) {
}
multiply(e) {
const num = new Array(this.getLength() + e.getLength() - 1);
for (let i = 0; i < this.getLength(); i++) {
for (let j = 0; j < e.getLength(); j++) {
num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j)));

@@ -726,9 +716,9 @@ }

return new QRPolynomial(num, 0);
};
QRPolynomial.prototype.mod = function (e) {
}
mod(e) {
if (this.getLength() - e.getLength() < 0) {
return this;
}
var ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0));
var num = new Array(this.getLength());
const ratio = QRMath.glog(this.get(0)) - QRMath.glog(e.get(0));
const num = new Array(this.getLength());
for (var i = 0; i < this.getLength(); i++) {

@@ -741,22 +731,21 @@ num[i] = this.get(i);

return new QRPolynomial(num, 0).mod(e);
};
return QRPolynomial;
}());
var QRRSBlock = /** @class */ (function () {
function QRRSBlock(totalCount, dataCount) {
}
}
class QRRSBlock {
constructor(totalCount, dataCount) {
this.totalCount = totalCount;
this.dataCount = dataCount;
}
QRRSBlock.getRSBlocks = function (typeNumber, errorCorrectLevel) {
var rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);
static getRSBlocks(typeNumber, errorCorrectLevel) {
const rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);
if (rsBlock == undefined) {
throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel);
throw new Error(`bad rs block @ typeNumber:${typeNumber}/errorCorrectLevel:${errorCorrectLevel}`);
}
var length = rsBlock.length / 3;
var list = [];
for (var i = 0; i < length; i++) {
var count = rsBlock[i * 3 + 0];
var totalCount = rsBlock[i * 3 + 1];
var dataCount = rsBlock[i * 3 + 2];
for (var j = 0; j < count; j++) {
const length = rsBlock.length / 3;
const list = [];
for (let i = 0; i < length; i++) {
const count = rsBlock[i * 3 + 0];
const totalCount = rsBlock[i * 3 + 1];
const dataCount = rsBlock[i * 3 + 2];
for (let j = 0; j < count; j++) {
list.push(new QRRSBlock(totalCount, dataCount));

@@ -766,4 +755,4 @@ }

return list;
};
QRRSBlock.getRsBlockTable = function (typeNumber, errorCorrectLevel) {
}
static getRsBlockTable(typeNumber, errorCorrectLevel) {
switch (errorCorrectLevel) {

@@ -781,186 +770,185 @@ case exports.QRErrorCorrectLevel.L:

}
};
QRRSBlock.RS_BLOCK_TABLE = [
[1, 26, 19],
[1, 26, 16],
[1, 26, 13],
[1, 26, 9],
[1, 44, 34],
[1, 44, 28],
[1, 44, 22],
[1, 44, 16],
[1, 70, 55],
[1, 70, 44],
[2, 35, 17],
[2, 35, 13],
[1, 100, 80],
[2, 50, 32],
[2, 50, 24],
[4, 25, 9],
[1, 134, 108],
[2, 67, 43],
[2, 33, 15, 2, 34, 16],
[2, 33, 11, 2, 34, 12],
[2, 86, 68],
[4, 43, 27],
[4, 43, 19],
[4, 43, 15],
[2, 98, 78],
[4, 49, 31],
[2, 32, 14, 4, 33, 15],
[4, 39, 13, 1, 40, 14],
[2, 121, 97],
[2, 60, 38, 2, 61, 39],
[4, 40, 18, 2, 41, 19],
[4, 40, 14, 2, 41, 15],
[2, 146, 116],
[3, 58, 36, 2, 59, 37],
[4, 36, 16, 4, 37, 17],
[4, 36, 12, 4, 37, 13],
[2, 86, 68, 2, 87, 69],
[4, 69, 43, 1, 70, 44],
[6, 43, 19, 2, 44, 20],
[6, 43, 15, 2, 44, 16],
[4, 101, 81],
[1, 80, 50, 4, 81, 51],
[4, 50, 22, 4, 51, 23],
[3, 36, 12, 8, 37, 13],
[2, 116, 92, 2, 117, 93],
[6, 58, 36, 2, 59, 37],
[4, 46, 20, 6, 47, 21],
[7, 42, 14, 4, 43, 15],
[4, 133, 107],
[8, 59, 37, 1, 60, 38],
[8, 44, 20, 4, 45, 21],
[12, 33, 11, 4, 34, 12],
[3, 145, 115, 1, 146, 116],
[4, 64, 40, 5, 65, 41],
[11, 36, 16, 5, 37, 17],
[11, 36, 12, 5, 37, 13],
[5, 109, 87, 1, 110, 88],
[5, 65, 41, 5, 66, 42],
[5, 54, 24, 7, 55, 25],
[11, 36, 12],
[5, 122, 98, 1, 123, 99],
[7, 73, 45, 3, 74, 46],
[15, 43, 19, 2, 44, 20],
[3, 45, 15, 13, 46, 16],
[1, 135, 107, 5, 136, 108],
[10, 74, 46, 1, 75, 47],
[1, 50, 22, 15, 51, 23],
[2, 42, 14, 17, 43, 15],
[5, 150, 120, 1, 151, 121],
[9, 69, 43, 4, 70, 44],
[17, 50, 22, 1, 51, 23],
[2, 42, 14, 19, 43, 15],
[3, 141, 113, 4, 142, 114],
[3, 70, 44, 11, 71, 45],
[17, 47, 21, 4, 48, 22],
[9, 39, 13, 16, 40, 14],
[3, 135, 107, 5, 136, 108],
[3, 67, 41, 13, 68, 42],
[15, 54, 24, 5, 55, 25],
[15, 43, 15, 10, 44, 16],
[4, 144, 116, 4, 145, 117],
[17, 68, 42],
[17, 50, 22, 6, 51, 23],
[19, 46, 16, 6, 47, 17],
[2, 139, 111, 7, 140, 112],
[17, 74, 46],
[7, 54, 24, 16, 55, 25],
[34, 37, 13],
[4, 151, 121, 5, 152, 122],
[4, 75, 47, 14, 76, 48],
[11, 54, 24, 14, 55, 25],
[16, 45, 15, 14, 46, 16],
[6, 147, 117, 4, 148, 118],
[6, 73, 45, 14, 74, 46],
[11, 54, 24, 16, 55, 25],
[30, 46, 16, 2, 47, 17],
[8, 132, 106, 4, 133, 107],
[8, 75, 47, 13, 76, 48],
[7, 54, 24, 22, 55, 25],
[22, 45, 15, 13, 46, 16],
[10, 142, 114, 2, 143, 115],
[19, 74, 46, 4, 75, 47],
[28, 50, 22, 6, 51, 23],
[33, 46, 16, 4, 47, 17],
[8, 152, 122, 4, 153, 123],
[22, 73, 45, 3, 74, 46],
[8, 53, 23, 26, 54, 24],
[12, 45, 15, 28, 46, 16],
[3, 147, 117, 10, 148, 118],
[3, 73, 45, 23, 74, 46],
[4, 54, 24, 31, 55, 25],
[11, 45, 15, 31, 46, 16],
[7, 146, 116, 7, 147, 117],
[21, 73, 45, 7, 74, 46],
[1, 53, 23, 37, 54, 24],
[19, 45, 15, 26, 46, 16],
[5, 145, 115, 10, 146, 116],
[19, 75, 47, 10, 76, 48],
[15, 54, 24, 25, 55, 25],
[23, 45, 15, 25, 46, 16],
[13, 145, 115, 3, 146, 116],
[2, 74, 46, 29, 75, 47],
[42, 54, 24, 1, 55, 25],
[23, 45, 15, 28, 46, 16],
[17, 145, 115],
[10, 74, 46, 23, 75, 47],
[10, 54, 24, 35, 55, 25],
[19, 45, 15, 35, 46, 16],
[17, 145, 115, 1, 146, 116],
[14, 74, 46, 21, 75, 47],
[29, 54, 24, 19, 55, 25],
[11, 45, 15, 46, 46, 16],
[13, 145, 115, 6, 146, 116],
[14, 74, 46, 23, 75, 47],
[44, 54, 24, 7, 55, 25],
[59, 46, 16, 1, 47, 17],
[12, 151, 121, 7, 152, 122],
[12, 75, 47, 26, 76, 48],
[39, 54, 24, 14, 55, 25],
[22, 45, 15, 41, 46, 16],
[6, 151, 121, 14, 152, 122],
[6, 75, 47, 34, 76, 48],
[46, 54, 24, 10, 55, 25],
[2, 45, 15, 64, 46, 16],
[17, 152, 122, 4, 153, 123],
[29, 74, 46, 14, 75, 47],
[49, 54, 24, 10, 55, 25],
[24, 45, 15, 46, 46, 16],
[4, 152, 122, 18, 153, 123],
[13, 74, 46, 32, 75, 47],
[48, 54, 24, 14, 55, 25],
[42, 45, 15, 32, 46, 16],
[20, 147, 117, 4, 148, 118],
[40, 75, 47, 7, 76, 48],
[43, 54, 24, 22, 55, 25],
[10, 45, 15, 67, 46, 16],
[19, 148, 118, 6, 149, 119],
[18, 75, 47, 31, 76, 48],
[34, 54, 24, 34, 55, 25],
[20, 45, 15, 61, 46, 16],
];
return QRRSBlock;
}());
var QRBitBuffer = /** @class */ (function () {
function QRBitBuffer() {
}
}
QRRSBlock.RS_BLOCK_TABLE = [
[1, 26, 19],
[1, 26, 16],
[1, 26, 13],
[1, 26, 9],
[1, 44, 34],
[1, 44, 28],
[1, 44, 22],
[1, 44, 16],
[1, 70, 55],
[1, 70, 44],
[2, 35, 17],
[2, 35, 13],
[1, 100, 80],
[2, 50, 32],
[2, 50, 24],
[4, 25, 9],
[1, 134, 108],
[2, 67, 43],
[2, 33, 15, 2, 34, 16],
[2, 33, 11, 2, 34, 12],
[2, 86, 68],
[4, 43, 27],
[4, 43, 19],
[4, 43, 15],
[2, 98, 78],
[4, 49, 31],
[2, 32, 14, 4, 33, 15],
[4, 39, 13, 1, 40, 14],
[2, 121, 97],
[2, 60, 38, 2, 61, 39],
[4, 40, 18, 2, 41, 19],
[4, 40, 14, 2, 41, 15],
[2, 146, 116],
[3, 58, 36, 2, 59, 37],
[4, 36, 16, 4, 37, 17],
[4, 36, 12, 4, 37, 13],
[2, 86, 68, 2, 87, 69],
[4, 69, 43, 1, 70, 44],
[6, 43, 19, 2, 44, 20],
[6, 43, 15, 2, 44, 16],
[4, 101, 81],
[1, 80, 50, 4, 81, 51],
[4, 50, 22, 4, 51, 23],
[3, 36, 12, 8, 37, 13],
[2, 116, 92, 2, 117, 93],
[6, 58, 36, 2, 59, 37],
[4, 46, 20, 6, 47, 21],
[7, 42, 14, 4, 43, 15],
[4, 133, 107],
[8, 59, 37, 1, 60, 38],
[8, 44, 20, 4, 45, 21],
[12, 33, 11, 4, 34, 12],
[3, 145, 115, 1, 146, 116],
[4, 64, 40, 5, 65, 41],
[11, 36, 16, 5, 37, 17],
[11, 36, 12, 5, 37, 13],
[5, 109, 87, 1, 110, 88],
[5, 65, 41, 5, 66, 42],
[5, 54, 24, 7, 55, 25],
[11, 36, 12],
[5, 122, 98, 1, 123, 99],
[7, 73, 45, 3, 74, 46],
[15, 43, 19, 2, 44, 20],
[3, 45, 15, 13, 46, 16],
[1, 135, 107, 5, 136, 108],
[10, 74, 46, 1, 75, 47],
[1, 50, 22, 15, 51, 23],
[2, 42, 14, 17, 43, 15],
[5, 150, 120, 1, 151, 121],
[9, 69, 43, 4, 70, 44],
[17, 50, 22, 1, 51, 23],
[2, 42, 14, 19, 43, 15],
[3, 141, 113, 4, 142, 114],
[3, 70, 44, 11, 71, 45],
[17, 47, 21, 4, 48, 22],
[9, 39, 13, 16, 40, 14],
[3, 135, 107, 5, 136, 108],
[3, 67, 41, 13, 68, 42],
[15, 54, 24, 5, 55, 25],
[15, 43, 15, 10, 44, 16],
[4, 144, 116, 4, 145, 117],
[17, 68, 42],
[17, 50, 22, 6, 51, 23],
[19, 46, 16, 6, 47, 17],
[2, 139, 111, 7, 140, 112],
[17, 74, 46],
[7, 54, 24, 16, 55, 25],
[34, 37, 13],
[4, 151, 121, 5, 152, 122],
[4, 75, 47, 14, 76, 48],
[11, 54, 24, 14, 55, 25],
[16, 45, 15, 14, 46, 16],
[6, 147, 117, 4, 148, 118],
[6, 73, 45, 14, 74, 46],
[11, 54, 24, 16, 55, 25],
[30, 46, 16, 2, 47, 17],
[8, 132, 106, 4, 133, 107],
[8, 75, 47, 13, 76, 48],
[7, 54, 24, 22, 55, 25],
[22, 45, 15, 13, 46, 16],
[10, 142, 114, 2, 143, 115],
[19, 74, 46, 4, 75, 47],
[28, 50, 22, 6, 51, 23],
[33, 46, 16, 4, 47, 17],
[8, 152, 122, 4, 153, 123],
[22, 73, 45, 3, 74, 46],
[8, 53, 23, 26, 54, 24],
[12, 45, 15, 28, 46, 16],
[3, 147, 117, 10, 148, 118],
[3, 73, 45, 23, 74, 46],
[4, 54, 24, 31, 55, 25],
[11, 45, 15, 31, 46, 16],
[7, 146, 116, 7, 147, 117],
[21, 73, 45, 7, 74, 46],
[1, 53, 23, 37, 54, 24],
[19, 45, 15, 26, 46, 16],
[5, 145, 115, 10, 146, 116],
[19, 75, 47, 10, 76, 48],
[15, 54, 24, 25, 55, 25],
[23, 45, 15, 25, 46, 16],
[13, 145, 115, 3, 146, 116],
[2, 74, 46, 29, 75, 47],
[42, 54, 24, 1, 55, 25],
[23, 45, 15, 28, 46, 16],
[17, 145, 115],
[10, 74, 46, 23, 75, 47],
[10, 54, 24, 35, 55, 25],
[19, 45, 15, 35, 46, 16],
[17, 145, 115, 1, 146, 116],
[14, 74, 46, 21, 75, 47],
[29, 54, 24, 19, 55, 25],
[11, 45, 15, 46, 46, 16],
[13, 145, 115, 6, 146, 116],
[14, 74, 46, 23, 75, 47],
[44, 54, 24, 7, 55, 25],
[59, 46, 16, 1, 47, 17],
[12, 151, 121, 7, 152, 122],
[12, 75, 47, 26, 76, 48],
[39, 54, 24, 14, 55, 25],
[22, 45, 15, 41, 46, 16],
[6, 151, 121, 14, 152, 122],
[6, 75, 47, 34, 76, 48],
[46, 54, 24, 10, 55, 25],
[2, 45, 15, 64, 46, 16],
[17, 152, 122, 4, 153, 123],
[29, 74, 46, 14, 75, 47],
[49, 54, 24, 10, 55, 25],
[24, 45, 15, 46, 46, 16],
[4, 152, 122, 18, 153, 123],
[13, 74, 46, 32, 75, 47],
[48, 54, 24, 14, 55, 25],
[42, 45, 15, 32, 46, 16],
[20, 147, 117, 4, 148, 118],
[40, 75, 47, 7, 76, 48],
[43, 54, 24, 22, 55, 25],
[10, 45, 15, 67, 46, 16],
[19, 148, 118, 6, 149, 119],
[18, 75, 47, 31, 76, 48],
[34, 54, 24, 34, 55, 25],
[20, 45, 15, 61, 46, 16],
];
class QRBitBuffer {
constructor() {
this.buffer = [];
this.length = 0;
}
QRBitBuffer.prototype.get = function (index) {
var bufIndex = Math.floor(index / 8);
get(index) {
const bufIndex = Math.floor(index / 8);
return ((this.buffer[bufIndex] >>> (7 - (index % 8))) & 1) == 1;
};
QRBitBuffer.prototype.put = function (num, length) {
for (var i = 0; i < length; i++) {
}
put(num, length) {
for (let i = 0; i < length; i++) {
this.putBit(((num >>> (length - i - 1)) & 1) == 1);
}
};
QRBitBuffer.prototype.getLengthInBits = function () {
}
getLengthInBits() {
return this.length;
};
QRBitBuffer.prototype.putBit = function (bit) {
var bufIndex = Math.floor(this.length / 8);
}
putBit(bit) {
const bufIndex = Math.floor(this.length / 8);
if (this.buffer.length <= bufIndex) {

@@ -973,6 +961,5 @@ this.buffer.push(0);

this.length++;
};
return QRBitBuffer;
}());
var QRCodeLimitLength = [
}
}
const QRCodeLimitLength = [
[17, 14, 11, 7],

@@ -979,0 +966,0 @@ [32, 26, 20, 14],

{
"name": "awesome-qr",
"version": "2.0.0-beta.8",
"version": "2.0.0-beta.9",
"description": "An awesome but simple QR code generator written in JavaScript.",
"main": "./lib/awesome-qr.js",
"types": "./lib/awesome-qr.d.ts",
"main": "./lib/index.js",
"types": "./lib/index.d.ts",
"scripts": {

@@ -8,0 +8,0 @@ "test": "echo \"Error: no test specified\" && exit 1",

@@ -6,4 +6,2 @@ import { Canvas, CanvasRenderingContext2D, createCanvas, Image, loadImage } from "canvas";

export * from "./qrcode";
export type Options = {

@@ -10,0 +8,0 @@ /**

{
"compilerOptions": {
"target": "ES5",
"target": "ES6",
"module": "CommonJS",

@@ -5,0 +5,0 @@ "outDir": "./lib",

@@ -5,3 +5,3 @@ const path = require("path");

mode: "production",
entry: "./src/awesome-qr.ts",
entry: "./src/index.ts",
module: {

@@ -8,0 +8,0 @@ rules: [

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc