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/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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"}