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-rc.3 to 2.0.1-beta.0

22

lib/awesome-qr.d.ts

@@ -30,2 +30,24 @@ /// <reference types="node" />

/**
* **This is an advanced option.**
*
* Specify the mask pattern to be used in QR code encoding.
*
* Accepts a value provided by _QRMaskPattern_.
*
* To find out all eight mask patterns, please refer to [https://en.wikipedia.org/wiki/File:QR_Code_Mask_Patterns.svg](https://en.wikipedia.org/wiki/File:QR_Code_Mask_Patterns.svg)
*
* For more information, please refer to [https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Masking](https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Masking).
*/
maskPattern?: number;
/**
* **This is an advanced option.**
*
* Specify the version to be used in QR code encoding.
*
* Accepts an integer in range [1, 40].
*
* For more information, please refer to [https://www.qrcode.com/en/about/version.html](https://www.qrcode.com/en/about/version.html).
*/
version?: number;
/**
* Color of the blocks on the QR code.

@@ -32,0 +54,0 @@ *

@@ -63,2 +63,8 @@ "use strict";

this.qrCode = new qrcode_1.QRCodeModel(-1, this.options.correctLevel);
if (Number.isInteger(this.options.maskPattern)) {
this.qrCode.maskPattern = this.options.maskPattern;
}
if (Number.isInteger(this.options.version)) {
this.qrCode.typeNumber = this.options.version;
}
this.qrCode.addData(this.options.text);

@@ -65,0 +71,0 @@ this.qrCode.make();

@@ -16,2 +16,3 @@ declare class QR8bitByte {

dataList: QR8bitByte[];
maskPattern?: number;
constructor(typeNumber?: number, errorCorrectLevel?: number);

@@ -41,2 +42,12 @@ addData(data: string): void;

};
export declare const QRMaskPattern: {
PATTERN000: number;
PATTERN001: number;
PATTERN010: number;
PATTERN011: number;
PATTERN100: number;
PATTERN101: number;
PATTERN110: number;
PATTERN111: number;
};
export declare class QRUtil {

@@ -43,0 +54,0 @@ static PATTERN_POSITION_TABLE: number[][];

51

lib/qrcode.js

@@ -19,3 +19,23 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.QRMath = exports.QRUtil = exports.QRErrorCorrectLevel = exports.QRCodeModel = void 0;
exports.QRMath = exports.QRUtil = exports.QRMaskPattern = exports.QRErrorCorrectLevel = exports.QRCodeModel = void 0;
function checkQRVersion(version, sText, nCorrectLevel) {
var length = _getUTF8Length(sText);
var i = version - 1;
var nLimit = 0;
switch (nCorrectLevel) {
case exports.QRErrorCorrectLevel.L:
nLimit = QRCodeLimitLength[i][0];
break;
case exports.QRErrorCorrectLevel.M:
nLimit = QRCodeLimitLength[i][1];
break;
case exports.QRErrorCorrectLevel.Q:
nLimit = QRCodeLimitLength[i][2];
break;
case exports.QRErrorCorrectLevel.H:
nLimit = QRCodeLimitLength[i][3];
break;
}
return length <= nLimit;
}
function _getTypeNumber(sText, nCorrectLevel) {

@@ -120,2 +140,10 @@ var nType = 1;

}
else if (this.typeNumber > 40) {
throw new Error("Invalid QR version: " + this.typeNumber);
}
else {
if (!checkQRVersion(this.typeNumber, data, this.errorCorrectLevel)) {
throw new Error("Data is too long for QR version: " + this.typeNumber);
}
}
var newData = new QR8bitByte(data);

@@ -179,2 +207,5 @@ this.dataList.push(newData);

QRCodeModel.prototype.getBestMaskPattern = function () {
if (Number.isInteger(this.maskPattern) && Object.values(exports.QRMaskPattern).includes(this.maskPattern)) {
return this.maskPattern;
}
var minLostPoint = 0;

@@ -392,3 +423,3 @@ var pattern = 0;

var QRMode = { MODE_NUMBER: 1 << 0, MODE_ALPHA_NUM: 1 << 1, MODE_8BIT_BYTE: 1 << 2, MODE_KANJI: 1 << 3 };
var QRMaskPattern = {
exports.QRMaskPattern = {
PATTERN000: 0,

@@ -433,17 +464,17 @@ PATTERN001: 1,

switch (maskPattern) {
case QRMaskPattern.PATTERN000:
case exports.QRMaskPattern.PATTERN000:
return (i + j) % 2 == 0;
case QRMaskPattern.PATTERN001:
case exports.QRMaskPattern.PATTERN001:
return i % 2 == 0;
case QRMaskPattern.PATTERN010:
case exports.QRMaskPattern.PATTERN010:
return j % 3 == 0;
case QRMaskPattern.PATTERN011:
case exports.QRMaskPattern.PATTERN011:
return (i + j) % 3 == 0;
case QRMaskPattern.PATTERN100:
case exports.QRMaskPattern.PATTERN100:
return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;
case QRMaskPattern.PATTERN101:
case exports.QRMaskPattern.PATTERN101:
return ((i * j) % 2) + ((i * j) % 3) == 0;
case QRMaskPattern.PATTERN110:
case exports.QRMaskPattern.PATTERN110:
return (((i * j) % 2) + ((i * j) % 3)) % 2 == 0;
case QRMaskPattern.PATTERN111:
case exports.QRMaskPattern.PATTERN111:
return (((i * j) % 3) + ((i + j) % 2)) % 2 == 0;

@@ -450,0 +481,0 @@ default:

2

package.json
{
"name": "awesome-qr",
"version": "2.0.0-rc.3",
"version": "2.0.1-beta.0",
"description": "An awesome but simple QR code generator written in JavaScript.",

@@ -5,0 +5,0 @@ "main": "./lib/index.js",

@@ -22,3 +22,2 @@ # Awesome-qr.js <!-- omit in toc -->

- [Getting Started](#getting-started)
- [React](#react)
- [Node.js](#nodejs)

@@ -31,2 +30,4 @@ - [Browsers](#browsers)

- [correctLevel](#correctlevel)
- [maskPattern](#maskpattern)
- [version](#version)
- [colorDark](#colordark)

@@ -53,6 +54,2 @@ - [colorLight](#colorlight)

### React
Please use [react-awesome-qr](https://github.com/AwesomeQR/react-awesome-qr).
### Node.js

@@ -92,2 +89,4 @@

> ⚛️ &nbsp; If you're using React, please use [react-awesome-qr](https://github.com/AwesomeQR/react-awesome-qr).
```html

@@ -126,5 +125,5 @@ <!-- import to the global scope -->

margin?: number;
typeNumber?: number;
correctLevel?: number;
dotScale?: number;
maskPattern?: number;
version?: number;
colorDark?: string;

@@ -137,2 +136,3 @@ colorLight?: string;

whiteMargin?: boolean;
dotScale?: number;
logoImage?: string | Buffer;

@@ -170,3 +170,35 @@ logoScale?: number;

Error correction level of the QR code.
### maskPattern
`number?, continue reading to learn more`
**This is an advanced option.**
Leave untouched to let the code decide which mask pattern to use.
Specify the mask pattern to be used in QR code encoding.
Accepts a value provided by _QRMaskPattern_.
> To find out all eight mask patterns, please refer to [Wikipedia File:QR_Code_Mask_Patterns.svg](https://en.wikipedia.org/wiki/File:QR_Code_Mask_Patterns.svg)
> For more information, please refer to [Reed–Solomon codes for coders: Masking](https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Masking).
### version
`number?, continue reading to learn more`
**This is an advanced option.**
Leave untouched to let the code decide which version to use.
Specify the version to be used in QR code encoding.
Accepts an integer in range [1, 40].
**⚠️ &nbsp; An error might occurs if the specified version does not have enough space for the input data.**
> For more information, please refer to [Information capacity and versions of QR Code | QRcode.com | DENSO WAVE](https://www.qrcode.com/en/about/version.html).
### colorDark

@@ -173,0 +205,0 @@

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

/**
* **This is an advanced option.**
*
* Specify the mask pattern to be used in QR code encoding.
*
* Accepts a value provided by _QRMaskPattern_.
*
* To find out all eight mask patterns, please refer to [https://en.wikipedia.org/wiki/File:QR_Code_Mask_Patterns.svg](https://en.wikipedia.org/wiki/File:QR_Code_Mask_Patterns.svg)
*
* For more information, please refer to [https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Masking](https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders#Masking).
*/
maskPattern?: number;
/**
* **This is an advanced option.**
*
* Specify the version to be used in QR code encoding.
*
* Accepts an integer in range [1, 40].
*
* For more information, please refer to [https://www.qrcode.com/en/about/version.html](https://www.qrcode.com/en/about/version.html).
*/
version?: number;
/**
* Color of the blocks on the QR code.

@@ -184,2 +208,8 @@ *

this.qrCode = new QRCodeModel(-1, this.options.correctLevel!);
if (Number.isInteger(this.options.maskPattern)) {
this.qrCode.maskPattern = this.options.maskPattern!;
}
if (Number.isInteger(this.options.version)) {
this.qrCode.typeNumber = this.options.version!;
}
this.qrCode.addData(this.options.text);

@@ -186,0 +216,0 @@ this.qrCode.make();

@@ -18,2 +18,25 @@ //---------------------------------------------------------------------

function checkQRVersion(version: number, sText: string, nCorrectLevel: number) {
const length = _getUTF8Length(sText);
const i = version - 1;
let nLimit = 0;
switch (nCorrectLevel) {
case QRErrorCorrectLevel.L:
nLimit = QRCodeLimitLength[i][0];
break;
case QRErrorCorrectLevel.M:
nLimit = QRCodeLimitLength[i][1];
break;
case QRErrorCorrectLevel.Q:
nLimit = QRCodeLimitLength[i][2];
break;
case QRErrorCorrectLevel.H:
nLimit = QRCodeLimitLength[i][3];
break;
}
return length <= nLimit;
}
function _getTypeNumber(sText: string, nCorrectLevel: number) {

@@ -123,2 +146,4 @@ var nType = 1;

maskPattern?: number;
constructor(typeNumber = -1, errorCorrectLevel = QRErrorCorrectLevel.L) {

@@ -134,2 +159,8 @@ this.typeNumber = typeNumber;

this.typeNumber = _getTypeNumber(data, this.errorCorrectLevel);
} else if (this.typeNumber > 40) {
throw new Error(`Invalid QR version: ${this.typeNumber}`);
} else {
if (!checkQRVersion(this.typeNumber, data, this.errorCorrectLevel)) {
throw new Error(`Data is too long for QR version: ${this.typeNumber}`);
}
}

@@ -151,2 +182,3 @@ const newData = new QR8bitByte(data);

}
make() {

@@ -199,2 +231,6 @@ this.makeImpl(false, this.getBestMaskPattern());

getBestMaskPattern() {
if (Number.isInteger(this.maskPattern) && Object.values(QRMaskPattern).includes(this.maskPattern!)) {
return this.maskPattern!;
}
let minLostPoint = 0;

@@ -413,3 +449,3 @@ let pattern = 0;

const QRMode = { MODE_NUMBER: 1 << 0, MODE_ALPHA_NUM: 1 << 1, MODE_8BIT_BYTE: 1 << 2, MODE_KANJI: 1 << 3 };
const QRMaskPattern = {
export const QRMaskPattern = {
PATTERN000: 0,

@@ -416,0 +452,0 @@ PATTERN001: 1,

Sorry, the diff of this file is too big to display

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