1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | import * as stream from 'stream';
|
12 |
|
13 | export type QRCodeErrorCorrectionLevel = 'low' | 'medium' | 'quartile' | 'high' | 'L' | 'M' | 'Q' | 'H';
|
14 | export type QRCodeMaskPattern = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;
|
15 | export type QRCodeToSJISFunc = (codePoint: string) => number;
|
16 |
|
17 | export interface QRCodeOptions {
|
18 | |
19 |
|
20 |
|
21 | version?: number | undefined;
|
22 | |
23 |
|
24 |
|
25 |
|
26 | errorCorrectionLevel?: QRCodeErrorCorrectionLevel | undefined;
|
27 | |
28 |
|
29 |
|
30 |
|
31 |
|
32 | maskPattern?: QRCodeMaskPattern | undefined;
|
33 | |
34 |
|
35 |
|
36 |
|
37 | toSJISFunc?: QRCodeToSJISFunc | undefined;
|
38 | }
|
39 |
|
40 | export type QRCodeDataURLType = 'image/png' | 'image/jpeg' | 'image/webp';
|
41 | export type QRCodeToDataURLOptions = QRCodeToDataURLOptionsJpegWebp | QRCodeToDataURLOptionsOther;
|
42 | export interface QRCodeToDataURLOptionsJpegWebp extends QRCodeRenderersOptions {
|
43 | |
44 |
|
45 |
|
46 |
|
47 | type: 'image/jpeg' | 'image/webp';
|
48 | rendererOpts?:
|
49 | | {
|
50 | |
51 |
|
52 |
|
53 |
|
54 | quality?: number | undefined;
|
55 | }
|
56 | | undefined;
|
57 | }
|
58 | export interface QRCodeToDataURLOptionsOther extends QRCodeRenderersOptions {
|
59 | |
60 |
|
61 |
|
62 |
|
63 | type?: Exclude<QRCodeDataURLType, 'image/jpeg' | 'image/webp'> | undefined;
|
64 | }
|
65 |
|
66 | export type QRCodeStringType = 'utf8' | 'svg' | 'terminal';
|
67 | export type QRCodeToStringOptions = QRCodeToStringOptionsTerminal | QRCodeToStringOptionsOther;
|
68 | export interface QRCodeToStringOptionsTerminal extends QRCodeRenderersOptions {
|
69 | |
70 |
|
71 |
|
72 |
|
73 | type: 'terminal';
|
74 | |
75 |
|
76 |
|
77 |
|
78 | small?: boolean | undefined;
|
79 | }
|
80 | export interface QRCodeToStringOptionsOther extends QRCodeRenderersOptions {
|
81 | |
82 |
|
83 |
|
84 |
|
85 | type?: Exclude<QRCodeStringType, 'terminal'> | undefined;
|
86 | }
|
87 |
|
88 | export type QRCodeFileType = 'png' | 'svg' | 'utf8';
|
89 | export type QRCodeToFileOptions = QRCodeToFileOptionsPng | QRCodeToFileOptionsOther;
|
90 | export interface QRCodeToFileOptionsPng extends QRCodeRenderersOptions {
|
91 | |
92 |
|
93 |
|
94 |
|
95 | type?: 'png' | undefined;
|
96 | rendererOpts?:
|
97 | | {
|
98 | |
99 |
|
100 |
|
101 |
|
102 | deflateLevel?: number | undefined;
|
103 | |
104 |
|
105 |
|
106 |
|
107 | deflateStrategy?: number | undefined;
|
108 | }
|
109 | | undefined;
|
110 | }
|
111 | export interface QRCodeToFileOptionsOther extends QRCodeRenderersOptions {
|
112 | |
113 |
|
114 |
|
115 |
|
116 | type: Exclude<QRCodeFileType, 'png'> | undefined;
|
117 | }
|
118 |
|
119 | export type QRCodeFileStreamType = 'png';
|
120 | export interface QRCodeToFileStreamOptions extends QRCodeRenderersOptions {
|
121 | |
122 |
|
123 |
|
124 | type?: QRCodeFileStreamType | undefined;
|
125 | rendererOpts?:
|
126 | | {
|
127 | |
128 |
|
129 |
|
130 |
|
131 | deflateLevel?: number | undefined;
|
132 | |
133 |
|
134 |
|
135 |
|
136 | deflateStrategy?: number | undefined;
|
137 | }
|
138 | | undefined;
|
139 | }
|
140 |
|
141 | export type QRCodeBufferType = 'png';
|
142 | export interface QRCodeToBufferOptions extends QRCodeRenderersOptions {
|
143 | |
144 |
|
145 |
|
146 | type?: QRCodeBufferType | undefined;
|
147 | rendererOpts?:
|
148 | | {
|
149 | |
150 |
|
151 |
|
152 |
|
153 | deflateLevel?: number | undefined;
|
154 | |
155 |
|
156 |
|
157 |
|
158 | deflateStrategy?: number | undefined;
|
159 | }
|
160 | | undefined;
|
161 | }
|
162 |
|
163 | export interface QRCodeRenderersOptions extends QRCodeOptions {
|
164 | |
165 |
|
166 |
|
167 |
|
168 | margin?: number | undefined;
|
169 | |
170 |
|
171 |
|
172 |
|
173 | scale?: number | undefined;
|
174 | |
175 |
|
176 |
|
177 |
|
178 |
|
179 | width?: number | undefined;
|
180 | color?:
|
181 | | {
|
182 | |
183 |
|
184 |
|
185 |
|
186 |
|
187 | dark?: string | undefined;
|
188 | |
189 |
|
190 |
|
191 |
|
192 | light?: string | undefined;
|
193 | }
|
194 | | undefined;
|
195 | }
|
196 |
|
197 | export type QRCodeSegmentMode = 'alphanumeric' | 'numeric' | 'byte' | 'kanji';
|
198 | export type QRCodeSegment =
|
199 | | QRCodeNumericSegment
|
200 | | QRCodeAlphanumericSegment
|
201 | | QRCodeByteSegment
|
202 | | QRCodeKanjiSegment
|
203 | | {
|
204 | data: string | Buffer | Uint8ClampedArray | Uint8Array;
|
205 | };
|
206 |
|
207 | export interface QRCodeNumericSegment {
|
208 | mode: 'numeric';
|
209 | data: string | number;
|
210 | }
|
211 |
|
212 | export interface QRCodeAlphanumericSegment {
|
213 | mode: 'alphanumeric';
|
214 | data: string;
|
215 | }
|
216 |
|
217 | export interface QRCodeByteSegment {
|
218 | mode: 'byte';
|
219 | data: Buffer | Uint8ClampedArray | Uint8Array;
|
220 | }
|
221 |
|
222 | export interface QRCodeKanjiSegment {
|
223 | mode: 'kanji';
|
224 | data: string;
|
225 | }
|
226 |
|
227 | export interface QRCode {
|
228 | |
229 |
|
230 |
|
231 | modules: BitMatrix;
|
232 | |
233 |
|
234 |
|
235 | version: number;
|
236 | |
237 |
|
238 |
|
239 | errorCorrectionLevel: ErrorCorrectionLevel;
|
240 | |
241 |
|
242 |
|
243 | maskPattern: QRCodeMaskPattern | undefined;
|
244 | |
245 |
|
246 |
|
247 | segments: GeneratedQRCodeSegment[];
|
248 | }
|
249 |
|
250 |
|
251 |
|
252 |
|
253 | export interface BitMatrix {
|
254 | |
255 |
|
256 |
|
257 | size: number;
|
258 | data: Uint8Array;
|
259 | reservedBit: Uint8Array;
|
260 | |
261 |
|
262 |
|
263 |
|
264 | set(row: number, col: number, value: number, reserved: boolean): void;
|
265 | |
266 |
|
267 |
|
268 | get(row: number, col: number): number;
|
269 | |
270 |
|
271 |
|
272 | xor(row: number, col: number, value: number): void;
|
273 | |
274 |
|
275 |
|
276 | isReserved(row: number, col: number): number;
|
277 | }
|
278 |
|
279 | export interface ErrorCorrectionLevel {
|
280 | bit: 0 | 1 | 2 | 3;
|
281 | }
|
282 |
|
283 | export type ModeId = 'Numeric' | 'Alphanumeric' | 'Byte' | 'Kanji';
|
284 | export interface Mode<TModeId extends ModeId = ModeId> {
|
285 | id: TModeId;
|
286 | bit: number;
|
287 | ccBits: readonly number[];
|
288 | }
|
289 |
|
290 | export type GeneratedQRCodeSegment = NumericData | AlphanumericData | ByteData | KanjiData;
|
291 |
|
292 | export interface DataSegment {
|
293 | getLength(): number;
|
294 | getBitsLength(): number;
|
295 | }
|
296 |
|
297 | export interface NumericData extends DataSegment {
|
298 | mode: Mode<'Numeric'>;
|
299 | data: string;
|
300 | }
|
301 |
|
302 | export interface AlphanumericData extends DataSegment {
|
303 | mode: Mode<'Alphanumeric'>;
|
304 | data: string;
|
305 | }
|
306 |
|
307 | export interface ByteData extends DataSegment {
|
308 | mode: Mode<'Byte'>;
|
309 | data: Uint8Array;
|
310 | }
|
311 |
|
312 | export interface KanjiData extends DataSegment {
|
313 | mode: Mode<'Kanji'>;
|
314 | data: string;
|
315 | }
|
316 |
|
317 |
|
318 |
|
319 |
|
320 |
|
321 | export function create(text: string | QRCodeSegment[], options?: QRCodeOptions): QRCode;
|
322 |
|
323 |
|
324 |
|
325 |
|
326 | export function toCanvas(
|
327 | canvasElement: HTMLCanvasElement,
|
328 | text: string | QRCodeSegment[],
|
329 | callback: (error: Error | null | undefined) => void,
|
330 | ): void;
|
331 |
|
332 |
|
333 |
|
334 | export function toCanvas(
|
335 | canvasElement: HTMLCanvasElement,
|
336 | text: string | QRCodeSegment[],
|
337 | options?: QRCodeRenderersOptions,
|
338 | ): Promise<void>;
|
339 |
|
340 |
|
341 |
|
342 | export function toCanvas(
|
343 | canvasElement: HTMLCanvasElement,
|
344 | text: string | QRCodeSegment[],
|
345 | options: QRCodeRenderersOptions,
|
346 | callback: (error: Error | null | undefined) => void,
|
347 | ): void;
|
348 |
|
349 |
|
350 |
|
351 | export function toCanvas(
|
352 | text: string | QRCodeSegment[],
|
353 | callback: (error: Error | null | undefined, canvas: HTMLCanvasElement) => void,
|
354 | ): void;
|
355 |
|
356 |
|
357 |
|
358 | export function toCanvas(text: string | QRCodeSegment[], options?: QRCodeRenderersOptions): Promise<HTMLCanvasElement>;
|
359 |
|
360 |
|
361 |
|
362 | export function toCanvas(
|
363 | text: string | QRCodeSegment[],
|
364 | options: QRCodeRenderersOptions,
|
365 | callback: (error: Error | null | undefined, canvas: HTMLCanvasElement) => void,
|
366 | ): void;
|
367 |
|
368 |
|
369 |
|
370 | export function toCanvas(
|
371 | canvas: any,
|
372 | text: string | QRCodeSegment[],
|
373 | callback: (error: Error | null | undefined) => void,
|
374 | ): void;
|
375 |
|
376 |
|
377 |
|
378 | export function toCanvas(canvas: any, text: string | QRCodeSegment[], options?: QRCodeRenderersOptions): Promise<void>;
|
379 |
|
380 |
|
381 |
|
382 | export function toCanvas(
|
383 | canvas: any,
|
384 | text: string | QRCodeSegment[],
|
385 | options: QRCodeRenderersOptions,
|
386 | callback: (error: Error | null | undefined) => void,
|
387 | ): void;
|
388 |
|
389 |
|
390 |
|
391 |
|
392 | export function toDataURL(
|
393 | canvasElement: HTMLCanvasElement,
|
394 | text: string | QRCodeSegment[],
|
395 | callback: (error: Error | null | undefined, url: string) => void,
|
396 | ): void;
|
397 |
|
398 |
|
399 |
|
400 | export function toDataURL(
|
401 | canvasElement: HTMLCanvasElement,
|
402 | text: string | QRCodeSegment[],
|
403 | options?: QRCodeToDataURLOptions,
|
404 | ): Promise<string>;
|
405 |
|
406 |
|
407 |
|
408 | export function toDataURL(
|
409 | canvasElement: HTMLCanvasElement,
|
410 | text: string | QRCodeSegment[],
|
411 | options: QRCodeToDataURLOptions,
|
412 | callback: (error: Error | null | undefined, url: string) => void,
|
413 | ): void;
|
414 |
|
415 |
|
416 |
|
417 |
|
418 | export function toDataURL(
|
419 | text: string | QRCodeSegment[],
|
420 | callback: (error: Error | null | undefined, url: string) => void,
|
421 | ): void;
|
422 |
|
423 |
|
424 |
|
425 | export function toDataURL(text: string | QRCodeSegment[], options?: QRCodeToDataURLOptions): Promise<string>;
|
426 |
|
427 |
|
428 |
|
429 | export function toDataURL(
|
430 | text: string | QRCodeSegment[],
|
431 | options: QRCodeToDataURLOptions,
|
432 | callback: (error: Error | null | undefined, url: string) => void,
|
433 | ): void;
|
434 |
|
435 |
|
436 |
|
437 |
|
438 | export function toString(
|
439 | text: string | QRCodeSegment[],
|
440 | callback: (error: Error | null | undefined, string: string) => void,
|
441 | ): void;
|
442 |
|
443 |
|
444 |
|
445 | export function toString(text: string | QRCodeSegment[], options?: QRCodeToStringOptions): Promise<string>;
|
446 |
|
447 |
|
448 |
|
449 | export function toString(
|
450 | text: string | QRCodeSegment[],
|
451 | options: QRCodeToStringOptions,
|
452 | callback: (error: Error | null | undefined, string: string) => void,
|
453 | ): void;
|
454 |
|
455 |
|
456 |
|
457 |
|
458 |
|
459 | export function toFile(
|
460 | path: string,
|
461 | text: string | QRCodeSegment[],
|
462 | callback: (error: Error | null | undefined) => void,
|
463 | ): void;
|
464 |
|
465 |
|
466 |
|
467 |
|
468 | export function toFile(path: string, text: string | QRCodeSegment[], options?: QRCodeToFileOptions): Promise<void>;
|
469 |
|
470 |
|
471 |
|
472 |
|
473 | export function toFile(
|
474 | path: string,
|
475 | text: string | QRCodeSegment[],
|
476 | options: QRCodeToFileOptions,
|
477 | callback: (error: Error | null | undefined) => void,
|
478 | ): void;
|
479 |
|
480 |
|
481 |
|
482 |
|
483 | export function toFileStream(
|
484 | stream: stream.Writable,
|
485 | text: string | QRCodeSegment[],
|
486 | callback: (error: Error | null | undefined) => void,
|
487 | ): void;
|
488 |
|
489 |
|
490 |
|
491 | export function toFileStream(
|
492 | stream: stream.Writable,
|
493 | text: string | QRCodeSegment[],
|
494 | options?: QRCodeToFileStreamOptions,
|
495 | ): Promise<void>;
|
496 |
|
497 |
|
498 |
|
499 | export function toFileStream(
|
500 | stream: stream.Writable,
|
501 | text: string | QRCodeSegment[],
|
502 | options: QRCodeToFileStreamOptions,
|
503 | callback: (error: Error | null | undefined) => void,
|
504 | ): void;
|
505 |
|
506 |
|
507 |
|
508 |
|
509 | export function toBuffer(
|
510 | text: string | QRCodeSegment[],
|
511 | callback: (error: Error | null | undefined, buffer: Buffer) => void,
|
512 | ): void;
|
513 |
|
514 |
|
515 |
|
516 | export function toBuffer(text: string | QRCodeSegment[], options?: QRCodeToBufferOptions): Promise<Buffer>;
|
517 |
|
518 |
|
519 |
|
520 | export function toBuffer(
|
521 | text: string | QRCodeSegment[],
|
522 | options: QRCodeToBufferOptions,
|
523 | callback: (error: Error | null | undefined, buffer: Buffer) => void,
|
524 | ): void;
|