qr 0.2.4 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +203 -21
- package/LICENSE-MIT +21 -0
- package/README.md +249 -65
- package/decode.d.ts +62 -0
- package/decode.d.ts.map +1 -0
- package/decode.js +930 -0
- package/dom.d.ts +102 -0
- package/dom.d.ts.map +1 -0
- package/dom.js +328 -0
- package/esm/decode.d.ts +62 -0
- package/esm/decode.d.ts.map +1 -0
- package/esm/decode.js +926 -0
- package/esm/decode.js.map +1 -0
- package/esm/dom.d.ts +102 -0
- package/esm/dom.d.ts.map +1 -0
- package/esm/dom.js +320 -0
- package/esm/dom.js.map +1 -0
- package/esm/index.d.ts +232 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +1123 -0
- package/esm/index.js.map +1 -0
- package/esm/package.json +1 -0
- package/index.d.ts +232 -0
- package/index.d.ts.map +1 -0
- package/index.js +1129 -0
- package/package.json +72 -25
- package/.npmignore +0 -1
- package/.travis.yml +0 -9
- package/benchmark.js +0 -15
- package/lib/encoder.js +0 -140
- package/qr.js +0 -1
- package/test/encoder.js +0 -176
- package/test/qr.js +0 -16
package/esm/index.d.ts
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
Copyright (c) 2023 Paul Miller (paulmillr.com)
|
|
3
|
+
The library paulmillr-qr is dual-licensed under the Apache 2.0 OR MIT license.
|
|
4
|
+
You can select a license of your choice.
|
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
you may not use this file except in compliance with the License.
|
|
7
|
+
You may obtain a copy of the License at
|
|
8
|
+
|
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
|
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
See the License for the specific language governing permissions and
|
|
15
|
+
limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
export interface Coder<F, T> {
|
|
18
|
+
encode(from: F): T;
|
|
19
|
+
decode(to: T): F;
|
|
20
|
+
}
|
|
21
|
+
declare function validateVersion(ver: Version): void;
|
|
22
|
+
declare function bin(dec: number, pad: number): string;
|
|
23
|
+
declare function fillArr<T>(length: number, val: T): T[];
|
|
24
|
+
declare function best<T>(): {
|
|
25
|
+
add(score: number, value: T): void;
|
|
26
|
+
get: () => T | undefined;
|
|
27
|
+
score: () => number;
|
|
28
|
+
};
|
|
29
|
+
export type Point = {
|
|
30
|
+
x: number;
|
|
31
|
+
y: number;
|
|
32
|
+
};
|
|
33
|
+
export type Size = {
|
|
34
|
+
height: number;
|
|
35
|
+
width: number;
|
|
36
|
+
};
|
|
37
|
+
export type Image = Size & {
|
|
38
|
+
data: Uint8Array | Uint8ClampedArray | number[];
|
|
39
|
+
};
|
|
40
|
+
type DrawValue = boolean | undefined;
|
|
41
|
+
type DrawFn = DrawValue | ((c: Point, curr: DrawValue) => DrawValue);
|
|
42
|
+
type ReadFn = (c: Point, curr: DrawValue) => void;
|
|
43
|
+
export declare class Bitmap {
|
|
44
|
+
private static size;
|
|
45
|
+
static fromString(s: string): Bitmap;
|
|
46
|
+
data: DrawValue[][];
|
|
47
|
+
height: number;
|
|
48
|
+
width: number;
|
|
49
|
+
constructor(size: Size | number, data?: DrawValue[][]);
|
|
50
|
+
point(p: Point): DrawValue;
|
|
51
|
+
isInside(p: Point): boolean;
|
|
52
|
+
size(offset?: Point | number): {
|
|
53
|
+
height: number;
|
|
54
|
+
width: number;
|
|
55
|
+
};
|
|
56
|
+
private xy;
|
|
57
|
+
rect(c: Point | number, size: Size | number, value: DrawFn): this;
|
|
58
|
+
rectRead(c: Point | number, size: Size | number, fn: ReadFn): this;
|
|
59
|
+
hLine(c: Point | number, len: number, value: DrawFn): this;
|
|
60
|
+
vLine(c: Point | number, len: number, value: DrawFn): this;
|
|
61
|
+
border(border: number | undefined, value: DrawValue): Bitmap;
|
|
62
|
+
embed(c: Point | number, bm: Bitmap): this;
|
|
63
|
+
rectSlice(c: Point | number, size?: Size | number): Bitmap;
|
|
64
|
+
inverse(): Bitmap;
|
|
65
|
+
scale(factor: number): Bitmap;
|
|
66
|
+
clone(): Bitmap;
|
|
67
|
+
assertDrawn(): void;
|
|
68
|
+
toString(): string;
|
|
69
|
+
toASCII(): string;
|
|
70
|
+
toTerm(): string;
|
|
71
|
+
toSVG(optimize?: boolean): string;
|
|
72
|
+
toGIF(): Uint8Array;
|
|
73
|
+
toImage(isRGB?: boolean): Image;
|
|
74
|
+
}
|
|
75
|
+
/** Error correction mode. low: 7%, medium: 15%, quartile: 25%, high: 30% */
|
|
76
|
+
export declare const ECMode: readonly ["low", "medium", "quartile", "high"];
|
|
77
|
+
/** Error correction mode. */
|
|
78
|
+
export type ErrorCorrection = (typeof ECMode)[number];
|
|
79
|
+
/** QR Code version. */
|
|
80
|
+
export type Version = number;
|
|
81
|
+
/** QR Code mask type */
|
|
82
|
+
export type Mask = (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7) & keyof typeof PATTERNS;
|
|
83
|
+
/** QR Code encoding */
|
|
84
|
+
export declare const Encoding: readonly ["numeric", "alphanumeric", "byte", "kanji", "eci"];
|
|
85
|
+
/** QR Code encoding type */
|
|
86
|
+
export type EncodingType = (typeof Encoding)[number];
|
|
87
|
+
declare const PATTERNS: readonly ((x: number, y: number) => boolean)[];
|
|
88
|
+
declare function interleave(ver: Version, ecc: ErrorCorrection): Coder<Uint8Array, Uint8Array>;
|
|
89
|
+
declare function drawTemplate(ver: Version, ecc: ErrorCorrection, maskIdx: Mask, test?: boolean): Bitmap;
|
|
90
|
+
declare function zigzag(tpl: Bitmap, maskIdx: Mask, fn: (x: number, y: number, mask: boolean) => void): void;
|
|
91
|
+
declare function detectType(str: string): EncodingType;
|
|
92
|
+
/**
|
|
93
|
+
* @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])
|
|
94
|
+
*/
|
|
95
|
+
export declare function utf8ToBytes(str: string): Uint8Array;
|
|
96
|
+
declare function encode(ver: Version, ecc: ErrorCorrection, data: string, type: EncodingType): Uint8Array;
|
|
97
|
+
declare function drawQR(ver: Version, ecc: ErrorCorrection, data: Uint8Array, maskIdx: Mask, test?: boolean): Bitmap;
|
|
98
|
+
declare function penalty(bm: Bitmap): number;
|
|
99
|
+
/** QR Code generation options. */
|
|
100
|
+
export type QrOpts = {
|
|
101
|
+
ecc?: ErrorCorrection | undefined;
|
|
102
|
+
encoding?: EncodingType | undefined;
|
|
103
|
+
version?: Version | undefined;
|
|
104
|
+
mask?: number | undefined;
|
|
105
|
+
border?: number | undefined;
|
|
106
|
+
scale?: number | undefined;
|
|
107
|
+
};
|
|
108
|
+
export type SvgQrOpts = {
|
|
109
|
+
/**
|
|
110
|
+
* Controls how cells are generated within the SVG.
|
|
111
|
+
*
|
|
112
|
+
* If `true`:
|
|
113
|
+
* - Cells are drawn using a single `path` element.
|
|
114
|
+
* - Pro: significantly reduces the size of the QR code (>70% smaller than
|
|
115
|
+
* unoptimized).
|
|
116
|
+
* - Con: less flexible with visually customizing cell shapes.
|
|
117
|
+
*
|
|
118
|
+
* If `false`:
|
|
119
|
+
* - Each cell is drawn with its own `rect` element.
|
|
120
|
+
* - Pro: allows more flexibility with visually customizing cells shapes.
|
|
121
|
+
* - Con: significantly increases the QR code size (>230% larger than
|
|
122
|
+
* optimized).
|
|
123
|
+
*
|
|
124
|
+
* @default true
|
|
125
|
+
*/
|
|
126
|
+
optimize?: boolean | undefined;
|
|
127
|
+
};
|
|
128
|
+
export type Output = 'raw' | 'ascii' | 'term' | 'gif' | 'svg';
|
|
129
|
+
/**
|
|
130
|
+
* Encodes (creates / generates) QR code.
|
|
131
|
+
* @param text text that would be encoded
|
|
132
|
+
* @param output output type: raw, ascii, svg, gif, or term
|
|
133
|
+
* @param opts
|
|
134
|
+
* @example
|
|
135
|
+
```js
|
|
136
|
+
const txt = 'Hello world';
|
|
137
|
+
const ascii = encodeQR(txt, 'ascii'); // Not all fonts are supported
|
|
138
|
+
const terminalFriendly = encodeQR(txt, 'term'); // 2x larger, all fonts are OK
|
|
139
|
+
const gifBytes = encodeQR(txt, 'gif'); // Uncompressed GIF
|
|
140
|
+
const svgElement = encodeQR(txt, 'svg'); // SVG vector image element
|
|
141
|
+
const array = encodeQR(txt, 'raw'); // 2d array for canvas or other libs
|
|
142
|
+
```
|
|
143
|
+
*/
|
|
144
|
+
export declare function encodeQR(text: string, output: 'raw', opts?: QrOpts): boolean[][];
|
|
145
|
+
export declare function encodeQR(text: string, output: 'ascii' | 'term', opts?: QrOpts): string;
|
|
146
|
+
export declare function encodeQR(text: string, output: 'svg', opts?: QrOpts & SvgQrOpts): string;
|
|
147
|
+
export declare function encodeQR(text: string, output: 'gif', opts?: QrOpts): Uint8Array;
|
|
148
|
+
export default encodeQR;
|
|
149
|
+
export declare const utils: {
|
|
150
|
+
best: typeof best;
|
|
151
|
+
bin: typeof bin;
|
|
152
|
+
drawTemplate: typeof drawTemplate;
|
|
153
|
+
fillArr: typeof fillArr;
|
|
154
|
+
info: {
|
|
155
|
+
size: Coder<Version, number>;
|
|
156
|
+
sizeType: (ver: Version) => number;
|
|
157
|
+
alignmentPatterns(ver: Version): number[];
|
|
158
|
+
ECCode: Record<ErrorCorrection, number>;
|
|
159
|
+
formatMask: number;
|
|
160
|
+
formatBits(ecc: ErrorCorrection, maskIdx: Mask): number;
|
|
161
|
+
versionBits(ver: Version): number;
|
|
162
|
+
alphabet: {
|
|
163
|
+
numeric: Coder<number[], string[]> & {
|
|
164
|
+
has: (char: string) => boolean;
|
|
165
|
+
};
|
|
166
|
+
alphanumerc: Coder<number[], string[]> & {
|
|
167
|
+
has: (char: string) => boolean;
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
lengthBits(ver: Version, type: EncodingType): number;
|
|
171
|
+
modeBits: {
|
|
172
|
+
numeric: string;
|
|
173
|
+
alphanumeric: string;
|
|
174
|
+
byte: string;
|
|
175
|
+
kanji: string;
|
|
176
|
+
eci: string;
|
|
177
|
+
};
|
|
178
|
+
capacity(ver: Version, ecc: ErrorCorrection): {
|
|
179
|
+
words: number;
|
|
180
|
+
numBlocks: number;
|
|
181
|
+
shortBlocks: number;
|
|
182
|
+
blockLen: number;
|
|
183
|
+
capacity: number;
|
|
184
|
+
total: number;
|
|
185
|
+
};
|
|
186
|
+
};
|
|
187
|
+
interleave: typeof interleave;
|
|
188
|
+
validateVersion: typeof validateVersion;
|
|
189
|
+
zigzag: typeof zigzag;
|
|
190
|
+
};
|
|
191
|
+
export declare const _tests: {
|
|
192
|
+
Bitmap: typeof Bitmap;
|
|
193
|
+
info: {
|
|
194
|
+
size: Coder<Version, number>;
|
|
195
|
+
sizeType: (ver: Version) => number;
|
|
196
|
+
alignmentPatterns(ver: Version): number[];
|
|
197
|
+
ECCode: Record<ErrorCorrection, number>;
|
|
198
|
+
formatMask: number;
|
|
199
|
+
formatBits(ecc: ErrorCorrection, maskIdx: Mask): number;
|
|
200
|
+
versionBits(ver: Version): number;
|
|
201
|
+
alphabet: {
|
|
202
|
+
numeric: Coder<number[], string[]> & {
|
|
203
|
+
has: (char: string) => boolean;
|
|
204
|
+
};
|
|
205
|
+
alphanumerc: Coder<number[], string[]> & {
|
|
206
|
+
has: (char: string) => boolean;
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
lengthBits(ver: Version, type: EncodingType): number;
|
|
210
|
+
modeBits: {
|
|
211
|
+
numeric: string;
|
|
212
|
+
alphanumeric: string;
|
|
213
|
+
byte: string;
|
|
214
|
+
kanji: string;
|
|
215
|
+
eci: string;
|
|
216
|
+
};
|
|
217
|
+
capacity(ver: Version, ecc: ErrorCorrection): {
|
|
218
|
+
words: number;
|
|
219
|
+
numBlocks: number;
|
|
220
|
+
shortBlocks: number;
|
|
221
|
+
blockLen: number;
|
|
222
|
+
capacity: number;
|
|
223
|
+
total: number;
|
|
224
|
+
};
|
|
225
|
+
};
|
|
226
|
+
detectType: typeof detectType;
|
|
227
|
+
encode: typeof encode;
|
|
228
|
+
drawQR: typeof drawQR;
|
|
229
|
+
penalty: typeof penalty;
|
|
230
|
+
PATTERNS: readonly ((x: number, y: number) => boolean)[];
|
|
231
|
+
};
|
|
232
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|