qr 0.5.4 → 0.6.0

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/dom.js CHANGED
@@ -23,6 +23,20 @@ limitations under the License.
23
23
  * @module
24
24
  */
25
25
  import decodeQR, {} from "./decode.js";
26
+ /**
27
+ * Read rendered element dimensions from computed CSS.
28
+ * @param elm - Element whose computed width and height should be parsed.
29
+ * @returns Pixel width and height parsed from computed styles.
30
+ * @example
31
+ * Read rendered element dimensions from computed CSS.
32
+ * ```ts
33
+ * import { getSize } from 'qr/dom.js';
34
+ * if (typeof document !== 'undefined') {
35
+ * const video = document.querySelector('video')!;
36
+ * void getSize(video);
37
+ * }
38
+ * ```
39
+ */
26
40
  export const getSize = (elm) => {
27
41
  const css = getComputedStyle(elm);
28
42
  const width = Math.floor(+css.width.split('px')[0]);
@@ -46,7 +60,19 @@ const clearCanvas = ({ canvas, context }) => {
46
60
  context.clearRect(0, 0, canvas.width, canvas.height);
47
61
  };
48
62
  /**
49
- * Handles canvases for QR code decoding
63
+ * Handles canvases for QR code decoding.
64
+ * @param elements - Optional output canvases. See {@link QRCanvasElements}.
65
+ * @param opts - Drawing and decode options for the helper canvases. See {@link QRCanvasOpts}.
66
+ * @example
67
+ * Create a `QRCanvas` that paints overlay highlights onto a DOM canvas.
68
+ * ```ts
69
+ * import { QRCanvas } from 'qr/dom.js';
70
+ * if (typeof document !== 'undefined') {
71
+ * const overlay = document.createElement('canvas');
72
+ * const canvas = new QRCanvas({ overlay });
73
+ * void canvas;
74
+ * }
75
+ * ```
50
76
  */
51
77
  export class QRCanvas {
52
78
  opts;
@@ -55,7 +81,8 @@ export class QRCanvas {
55
81
  overlay;
56
82
  bitmap;
57
83
  resultQR;
58
- constructor({ overlay, bitmap, resultQR } = {}, opts = {}) {
84
+ constructor(elements = {}, opts = {}) {
85
+ const { overlay, bitmap, resultQR } = elements;
59
86
  this.opts = {
60
87
  resultBlockSize: 8,
61
88
  overlayMainColor: 'green',
@@ -77,6 +104,8 @@ export class QRCanvas {
77
104
  }
78
105
  }
79
106
  setSize(height, width) {
107
+ // `resultQR` is resized in `drawResultQr()` because it tracks the decoded
108
+ // QR image size, not the current source frame dimensions.
80
109
  setCanvasSize(this.main.canvas, height, width);
81
110
  if (this.overlay)
82
111
  setCanvasSize(this.overlay.canvas, height, width);
@@ -89,9 +118,11 @@ export class QRCanvas {
89
118
  const imgData = new ImageData(Uint8ClampedArray.from(data), width, height);
90
119
  let offset = { x: 0, y: 0 };
91
120
  if (this.opts.cropToSquare) {
121
+ // Match `decodeQR()`'s center-crop offset so the bitmap debug view
122
+ // stays aligned with detected points remapped into the source frame.
92
123
  offset = {
93
- x: Math.ceil((this.bitmap.canvas.width - width) / 2),
94
- y: Math.ceil((this.bitmap.canvas.height - height) / 2),
124
+ x: Math.floor((this.bitmap.canvas.width - width) / 2),
125
+ y: Math.floor((this.bitmap.canvas.height - height) / 2),
95
126
  };
96
127
  }
97
128
  this.bitmap.context.putImageData(imgData, offset.x, offset.y);
@@ -103,6 +134,9 @@ export class QRCanvas {
103
134
  setCanvasSize(this.resultQR.canvas, height, width);
104
135
  const imgData = new ImageData(Uint8ClampedArray.from(data), width, height);
105
136
  this.resultQR.context.putImageData(imgData, 0, 0);
137
+ // The result canvas owns these inline rendering/layout styles: CSS Images
138
+ // defines `image-rendering: pixelated`, and scaled QR modules become hard
139
+ // to read with default smoothing. Use class/id CSS for unrelated styling.
106
140
  this.resultQR.canvas.style = `image-rendering: pixelated; width: ${blockSize * width}px; height: ${blockSize * height}px`;
107
141
  }
108
142
  drawOverlay(points) {
@@ -121,13 +155,17 @@ export class QRCanvas {
121
155
  // Clear only central part (flickering)
122
156
  ctx.clearRect(offset.x, offset.y, squareSize, squareSize);
123
157
  ctx.fillStyle = this.opts.overlaySideColor;
158
+ // Trailing sidebars start where the floor-centered crop ends; odd
159
+ // remainders put the extra pixel on the trailing side.
124
160
  if (width > height) {
161
+ const right = offset.x + squareSize;
125
162
  ctx.fillRect(0, 0, offset.x, height); // left
126
- ctx.fillRect(width - offset.x, 0, offset.x, height); // right
163
+ ctx.fillRect(right, 0, width - right, height); // right
127
164
  }
128
165
  else if (height > width) {
166
+ const bottom = offset.y + squareSize;
129
167
  ctx.fillRect(0, 0, width, offset.y); // top
130
- ctx.fillRect(0, height - offset.y, width, offset.y); // bottom
168
+ ctx.fillRect(0, bottom, width, height - bottom); // bottom
131
169
  }
132
170
  }
133
171
  else {
@@ -177,6 +215,9 @@ export class QRCanvas {
177
215
  return res;
178
216
  }
179
217
  catch (e) {
218
+ // Camera-frame decoding is fail-soft UI policy: README says "even if
219
+ // one frame fails, the next frame can succeed", so decode hook errors
220
+ // are treated as frame misses here instead of breaking the loop.
180
221
  if (this.overlay && Date.now() - this.lastDetect > this.opts.overlayTimeout)
181
222
  this.drawOverlay();
182
223
  }
@@ -203,6 +244,7 @@ class QRCamera {
203
244
  setStream(stream) {
204
245
  this.stream = stream;
205
246
  const { player } = this;
247
+ // Keep camera preview autoplaying inline on mobile before attaching the stream.
206
248
  player.setAttribute('autoplay', '');
207
249
  player.setAttribute('muted', '');
208
250
  player.setAttribute('playsinline', '');
@@ -228,6 +270,10 @@ class QRCamera {
228
270
  * @param deviceId - devideId from '.listDevices'
229
271
  */
230
272
  async setDevice(deviceId) {
273
+ // Stop-first is intentional for camera switching: WPT's Media Capture
274
+ // `GUM-deny` and `GUM-impossible-constraint` tests show getUserMedia()
275
+ // can reject, but this DOM helper prioritizes releasing constrained
276
+ // camera hardware before requesting the replacement stream.
231
277
  this.stop();
232
278
  const stream = await navigator.mediaDevices.getUserMedia({
233
279
  video: { deviceId: { exact: deviceId } },
@@ -236,6 +282,8 @@ class QRCamera {
236
282
  }
237
283
  readFrame(canvas, fullSize = false) {
238
284
  const { player } = this;
285
+ // Default to the rendered player box so overlay coordinates stay aligned
286
+ // with the on-screen preview; `fullSize` opts into intrinsic frame pixels.
239
287
  if (fullSize)
240
288
  return canvas.drawImage(player, player.videoHeight, player.videoWidth);
241
289
  const size = getSize(player);
@@ -249,12 +297,19 @@ class QRCamera {
249
297
  /**
250
298
  * Creates new QRCamera from frontal camera
251
299
  * @param player - HTML Video element
300
+ * @returns Camera wrapper backed by the selected media stream.
252
301
  * @example
253
- * const canvas = new QRCanvas();
254
- * const camera = frontalCamera();
255
- * const devices = await camera.listDevices();
256
- * await camera.setDevice(devices[0].deviceId); // Change camera
257
- * const res = camera.readFrame(canvas);
302
+ * Create a camera helper and read frames into a `QRCanvas`.
303
+ * ```ts
304
+ * import { QRCanvas, frontalCamera } from 'qr/dom.js';
305
+ * if (typeof document !== 'undefined') {
306
+ * const player = document.querySelector('video')!;
307
+ * const canvas = new QRCanvas();
308
+ * const camera = await frontalCamera(player);
309
+ * camera.readFrame(canvas);
310
+ * camera.stop();
311
+ * }
312
+ * ```
258
313
  */
259
314
  export async function frontalCamera(player) {
260
315
  const stream = await navigator.mediaDevices.getUserMedia({
@@ -262,23 +317,35 @@ export async function frontalCamera(player) {
262
317
  // Ask for screen resolution
263
318
  height: { ideal: window.screen.height },
264
319
  width: { ideal: window.screen.width },
265
- // prefer front-facing camera, but can use any other
266
- // NOTE: 'exact' will cause OverConstrained error if no frontal camera available
320
+ // Media Capture names the screen/user-facing camera "user" and the
321
+ // world-facing camera "environment". This helper intentionally treats the
322
+ // phone's camera side as "frontal", since it is the main QR scanning side.
267
323
  facingMode: 'environment',
268
324
  },
269
325
  });
270
326
  return new QRCamera(stream, player);
271
327
  }
272
328
  /**
273
- * Run callback in a loop with requestAnimationFrame
274
- * @param cb - callback
329
+ * Run callback in a loop with requestAnimationFrame.
330
+ * @param cb - Callback invoked for each requested animation frame.
331
+ * @returns Canceller that stops the scheduled loop.
275
332
  * @example
276
- * const cancel = frameLoop((ns) => console.log(ns));
277
- * cancel();
333
+ * Run a callback on every animation frame until cancelled.
334
+ * ```ts
335
+ * import { frameLoop } from 'qr/dom.js';
336
+ * if (typeof requestAnimationFrame !== 'undefined') {
337
+ * const cancel = frameLoop(() => {});
338
+ * cancel();
339
+ * }
340
+ * ```
278
341
  */
279
342
  export function frameLoop(cb) {
280
343
  let handle = undefined;
281
344
  function loop(ts) {
345
+ // HTML `AnimationFrameProvider` IDL defines `FrameRequestCallback` as
346
+ // `undefined (DOMHighResTimeStamp time)`. The returned canceller is for the
347
+ // scheduled handle between frames, not self-cancel from inside `cb`, because
348
+ // this loop requests the next frame only after `cb` returns.
282
349
  cb(ts);
283
350
  handle = requestAnimationFrame(loop);
284
351
  }
@@ -290,6 +357,23 @@ export function frameLoop(cb) {
290
357
  handle = undefined;
291
358
  };
292
359
  }
360
+ /**
361
+ * Convert an SVG string into a PNG data URL in browser environments.
362
+ * @param svgData - SVG markup to rasterize.
363
+ * @param width - Output PNG width in pixels.
364
+ * @param height - Output PNG height in pixels.
365
+ * @returns Promise that resolves to a PNG `data:` URL.
366
+ * @example
367
+ * Convert an SVG string into a PNG data URL in browser environments.
368
+ * ```ts
369
+ * import { svgToPng } from 'qr/dom.js';
370
+ * const svg = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1"><rect width="1" height="1"/></svg>';
371
+ * if (typeof DOMParser !== 'undefined' && typeof document !== 'undefined') {
372
+ * const pngUrl = await svgToPng(svg, 256, 256);
373
+ * void pngUrl;
374
+ * }
375
+ * ```
376
+ */
293
377
  export function svgToPng(svgData, width, height) {
294
378
  return new Promise((resolve, reject) => {
295
379
  if (!(Number.isSafeInteger(width) &&
@@ -312,7 +396,10 @@ export function svgToPng(svgData, width, height) {
312
396
  const serializer = new XMLSerializer();
313
397
  const source = serializer.serializeToString(doc);
314
398
  const img = new Image();
315
- img.src = 'data:image/svg+xml,' + encodeURIComponent(source);
399
+ // HTMLImageElement IDL exposes `src` as the URL attribute and `onload` /
400
+ // `onerror` as EventHandler attributes. Register handlers before mutating
401
+ // `src` so a fast image implementation cannot complete before listeners
402
+ // exist.
316
403
  img.onload = function () {
317
404
  const canvas = document.createElement('canvas');
318
405
  canvas.width = width;
@@ -325,6 +412,39 @@ export function svgToPng(svgData, width, height) {
325
412
  resolve(dataUrl);
326
413
  };
327
414
  img.onerror = reject;
415
+ img.src = 'data:image/svg+xml,' + encodeURIComponent(source);
328
416
  });
329
417
  }
418
+ /**
419
+ * Convert GIF bytes into a PNG blob in browser environments.
420
+ * @param gifBytes - GIF file contents.
421
+ * @returns Promise that resolves to a PNG blob.
422
+ * @throws If the browser cannot create an image bitmap or rendering context for the GIF. {@link Error}
423
+ * @example
424
+ * Convert GIF bytes into a PNG blob in browser environments.
425
+ * ```ts
426
+ * import { gifToPng } from 'qr/dom.js';
427
+ * if (typeof window !== 'undefined') {
428
+ * const gif = new Uint8Array(await (await fetch('/qr.gif')).arrayBuffer());
429
+ * const png = await gifToPng(gif);
430
+ * void png;
431
+ * }
432
+ * ```
433
+ */
434
+ export async function gifToPng(gifBytes) {
435
+ const blob = new Blob([gifBytes], { type: 'image/gif' });
436
+ const bitmap = await createImageBitmap(blob);
437
+ try {
438
+ const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);
439
+ const ctx = canvas.getContext('bitmaprenderer', { alpha: false });
440
+ if (!ctx)
441
+ throw new Error('was not able to create bitmaprenderer context');
442
+ ctx.transferFromImageBitmap(bitmap);
443
+ return await canvas.convertToBlob({ type: 'image/png' });
444
+ }
445
+ finally {
446
+ // Release the decoded bitmap even when context creation or PNG encoding fails.
447
+ bitmap.close();
448
+ }
449
+ }
330
450
  //# sourceMappingURL=dom.js.map
package/dom.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["src/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["src/dom.ts"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -14,8 +14,75 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
14
  See the License for the specific language governing permissions and
15
15
  limitations under the License.
16
16
  */
17
+ /**
18
+ * Methods for encoding (generating) QR code patterns.
19
+ * Check out decode.ts for decoding (reading).
20
+ * @module
21
+ * @example
22
+ ```js
23
+ import encodeQR from 'qr';
24
+ const txt = 'Hello world';
25
+ const ascii = encodeQR(txt, 'ascii'); // Not all fonts are supported
26
+ const terminalFriendly = encodeQR(txt, 'term'); // 2x larger, all fonts are OK
27
+ const gifBytes = encodeQR(txt, 'gif'); // Uncompressed GIF
28
+ const svgElement = encodeQR(txt, 'svg'); // SVG vector image element
29
+ const array = encodeQR(txt, 'raw'); // 2d array for canvas or other libs
30
+ // import decodeQR from 'qr/decode.js';
31
+ ```
32
+ */
33
+ /**
34
+ * Bytes API type helpers for old + new TypeScript.
35
+ *
36
+ * TS 5.6 has `Uint8Array`, while TS 5.9+ made it generic `Uint8Array<ArrayBuffer>`.
37
+ * We can't use specific return type, because TS 5.6 will error.
38
+ * We can't use generic return type, because most TS 5.9 software will expect specific type.
39
+ *
40
+ * Maps typed-array input leaves to broad forms.
41
+ * These are compatibility adapters, not ownership guarantees.
42
+ *
43
+ * - `TArg` keeps byte inputs broad.
44
+ * - `TRet` marks byte outputs for TS 5.6 and TS 5.9+ compatibility.
45
+ */
46
+ export type TypedArg<T> = T extends BigInt64Array ? BigInt64Array : T extends BigUint64Array ? BigUint64Array : T extends Float32Array ? Float32Array : T extends Float64Array ? Float64Array : T extends Int16Array ? Int16Array : T extends Int32Array ? Int32Array : T extends Int8Array ? Int8Array : T extends Uint16Array ? Uint16Array : T extends Uint32Array ? Uint32Array : T extends Uint8ClampedArray ? Uint8ClampedArray : T extends Uint8Array ? Uint8Array : never;
47
+ /** Maps typed-array output leaves to narrow TS-compatible forms. */
48
+ export type TypedRet<T> = T extends BigInt64Array ? ReturnType<typeof BigInt64Array.of> : T extends BigUint64Array ? ReturnType<typeof BigUint64Array.of> : T extends Float32Array ? ReturnType<typeof Float32Array.of> : T extends Float64Array ? ReturnType<typeof Float64Array.of> : T extends Int16Array ? ReturnType<typeof Int16Array.of> : T extends Int32Array ? ReturnType<typeof Int32Array.of> : T extends Int8Array ? ReturnType<typeof Int8Array.of> : T extends Uint16Array ? ReturnType<typeof Uint16Array.of> : T extends Uint32Array ? ReturnType<typeof Uint32Array.of> : T extends Uint8ClampedArray ? ReturnType<typeof Uint8ClampedArray.of> : T extends Uint8Array ? ReturnType<typeof Uint8Array.of> : never;
49
+ /** Recursively adapts byte-carrying API input types. See {@link TypedArg}. */
50
+ export type TArg<T> = T | ([TypedArg<T>] extends [never] ? T extends (...args: infer A) => infer R ? ((...args: {
51
+ [K in keyof A]: TRet<A[K]>;
52
+ }) => TArg<R>) & {
53
+ [K in keyof T]: T[K] extends (...args: any) => any ? T[K] : TArg<T[K]>;
54
+ } : T extends [infer A, ...infer R] ? [TArg<A>, ...{
55
+ [K in keyof R]: TArg<R[K]>;
56
+ }] : T extends readonly [infer A, ...infer R] ? readonly [TArg<A>, ...{
57
+ [K in keyof R]: TArg<R[K]>;
58
+ }] : T extends (infer A)[] ? TArg<A>[] : T extends readonly (infer A)[] ? readonly TArg<A>[] : T extends Promise<infer A> ? Promise<TArg<A>> : T extends object ? {
59
+ [K in keyof T]: TArg<T[K]>;
60
+ } : T : TypedArg<T>);
61
+ /** Recursively adapts byte-carrying API output types. See {@link TypedArg}. */
62
+ export type TRet<T> = T extends unknown ? T & ([TypedRet<T>] extends [never] ? T extends (...args: infer A) => infer R ? ((...args: {
63
+ [K in keyof A]: TArg<A[K]>;
64
+ }) => TRet<R>) & {
65
+ [K in keyof T]: T[K] extends (...args: any) => any ? T[K] : TRet<T[K]>;
66
+ } : T extends [infer A, ...infer R] ? [TRet<A>, ...{
67
+ [K in keyof R]: TRet<R[K]>;
68
+ }] : T extends readonly [infer A, ...infer R] ? readonly [TRet<A>, ...{
69
+ [K in keyof R]: TRet<R[K]>;
70
+ }] : T extends (infer A)[] ? TRet<A>[] : T extends readonly (infer A)[] ? readonly TRet<A>[] : T extends Promise<infer A> ? Promise<TRet<A>> : T extends object ? {
71
+ [K in keyof T]: TRet<T[K]>;
72
+ } : T : TypedRet<T>) : never;
73
+ /** Bidirectional codec interface. */
17
74
  export interface Coder<F, T> {
75
+ /**
76
+ * Encodes a source value into the target representation.
77
+ * @param from - Source value to encode.
78
+ * @returns Encoded representation.
79
+ */
18
80
  encode(from: F): T;
81
+ /**
82
+ * Decodes a target value back into the source representation.
83
+ * @param to - Encoded representation to decode.
84
+ * @returns Decoded source value.
85
+ */
19
86
  decode(to: T): F;
20
87
  }
21
88
  declare function validateVersion(ver: Version): void;
@@ -27,20 +94,40 @@ declare function best<T>(): {
27
94
  get: () => T | undefined;
28
95
  score: () => number;
29
96
  };
97
+ /** Two-dimensional point. */
30
98
  export type Point = {
99
+ /** Horizontal coordinate. */
31
100
  x: number;
101
+ /** Vertical coordinate. */
32
102
  y: number;
33
103
  };
104
+ /** Width and height pair. */
34
105
  export type Size = {
106
+ /** Pixel height. */
35
107
  height: number;
108
+ /** Pixel width. */
36
109
  width: number;
37
110
  };
111
+ /** Raster image used by the encoder and decoder. */
38
112
  export type Image = Size & {
113
+ /** Row-major RGB or RGBA pixel data. */
39
114
  data: Uint8Array | Uint8ClampedArray | number[];
40
115
  };
41
116
  type DrawValue = boolean | undefined;
42
117
  type DrawFn = DrawValue | ((c: Point, curr: DrawValue) => DrawValue);
43
118
  type ReadFn = (c: Point, curr: DrawValue) => void;
119
+ /**
120
+ * Mutable monochrome bitmap used as the internal QR representation.
121
+ * @param size - Square edge length or explicit bitmap dimensions.
122
+ * @param data - Optional row-major pixel matrix using `true`, `false`, or `undefined`.
123
+ * @example
124
+ * Create a bitmap, then scale it for display.
125
+ * ```ts
126
+ * import { Bitmap } from 'qr';
127
+ * const bitmap = Bitmap.fromString('X \n X');
128
+ * bitmap.scale(2);
129
+ * ```
130
+ */
44
131
  export declare class Bitmap {
45
132
  private static size;
46
133
  static fromString(s: string): Bitmap;
@@ -94,81 +181,134 @@ export declare class Bitmap {
94
181
  toGIF(): Uint8Array;
95
182
  toImage(isRGB?: boolean): Image;
96
183
  }
97
- /** Error correction mode. low: 7%, medium: 15%, quartile: 25%, high: 30% */
98
- export declare const ECMode: readonly ["low", "medium", "quartile", "high"];
99
- /** Error correction mode. */
184
+ /** Error correction mode. low: 7%, medium: 15%, quartile: 25%, high: 30%. */
185
+ export declare const ECMode: readonly ['low', 'medium', 'quartile', 'high'];
186
+ /** Error correction mode name. */
100
187
  export type ErrorCorrection = (typeof ECMode)[number];
101
- /** QR Code version. */
188
+ /** QR Code version in the `[1..40]` range. */
102
189
  export type Version = number;
103
- /** QR Code mask type */
190
+ /** QR Code mask index. */
104
191
  export type Mask = (0 | 1 | 2 | 3 | 4 | 5 | 6 | 7) & keyof typeof PATTERNS;
105
- /** QR Code encoding */
106
- export declare const Encoding: readonly ["numeric", "alphanumeric", "byte", "kanji", "eci"];
107
- /** QR Code encoding type */
192
+ /**
193
+ * QR payload compaction mode names recognized by the type/validator.
194
+ * `kanji` and `eci` are spec modes, but `encodeQR` currently rejects them until implemented.
195
+ */
196
+ export declare const Encoding: readonly ['numeric', 'alphanumeric', 'byte', 'kanji', 'eci'];
197
+ /** QR payload encoding name. */
108
198
  export type EncodingType = (typeof Encoding)[number];
109
199
  declare const PATTERNS: readonly ((x: number, y: number) => boolean)[];
110
- declare function interleave(ver: Version, ecc: ErrorCorrection): Coder<Uint8Array, Uint8Array>;
111
- declare function drawTemplate(ver: Version, ecc: ErrorCorrection, maskIdx: Mask, test?: boolean): Bitmap;
112
- declare function zigzag(tpl: Bitmap, maskIdx: Mask, fn: (x: number, y: number, mask: boolean) => void): void;
200
+ declare function interleave(ver: Version, ecc: ErrorCorrection): TRet<Coder<Uint8Array, Uint8Array>>;
201
+ declare function drawTemplate(ver: Version, ecc: ErrorCorrection, maskIdx: Mask, test?: boolean): TRet<Bitmap>;
202
+ declare function zigzag(tpl: TArg<Bitmap>, maskIdx: Mask, fn: (x: number, y: number, mask: boolean) => void): void;
113
203
  declare function detectType(str: string): EncodingType;
114
204
  /**
115
- * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])
205
+ * Encode a string as UTF-8 bytes.
206
+ * @param str - Text to encode into UTF-8.
207
+ * @returns UTF-8 bytes for the provided string.
208
+ * @throws If the input is not a string. {@link Error}
209
+ * @example
210
+ * Encode a string as UTF-8 bytes.
211
+ * ```ts
212
+ * const bytes = utf8ToBytes('abc'); // new Uint8Array([97, 98, 99])
213
+ * ```
116
214
  */
117
- export declare function utf8ToBytes(str: string): Uint8Array;
118
- declare function encode(ver: Version, ecc: ErrorCorrection, data: string, type: EncodingType, encoder?: (value: string) => Uint8Array): Uint8Array;
119
- declare function drawQR(ver: Version, ecc: ErrorCorrection, data: Uint8Array, maskIdx: Mask, test?: boolean): Bitmap;
120
- declare function penalty(bm: Bitmap): number;
215
+ export declare function utf8ToBytes(str: string): TRet<Uint8Array>;
216
+ declare function encode(ver: Version, ecc: ErrorCorrection, data: string, type: EncodingType, encoder?: TArg<(value: string) => Uint8Array>): TRet<Uint8Array>;
217
+ declare function drawQR(ver: Version, ecc: ErrorCorrection, data: TArg<Uint8Array>, maskIdx: Mask, test?: boolean): TRet<Bitmap>;
218
+ declare function penalty(bm: TArg<Bitmap>): number;
121
219
  /** QR Code generation options. */
122
220
  export type QrOpts = {
221
+ /** Error-correction level to encode into the symbol. */
123
222
  ecc?: ErrorCorrection | undefined;
223
+ /** Explicit payload encoding, otherwise detected from the input text. */
124
224
  encoding?: EncodingType | undefined;
125
- textEncoder?: (text: string) => Uint8Array;
225
+ /**
226
+ * Custom text encoder used for `byte` payloads.
227
+ *
228
+ * Receives the text payload and returns the encoded byte sequence.
229
+ * @param text - Text payload to encode.
230
+ * @returns Encoded byte sequence for the payload.
231
+ */
232
+ textEncoder?: TArg<(text: string) => Uint8Array>;
233
+ /** Explicit QR version to use instead of auto-fitting. */
126
234
  version?: Version | undefined;
235
+ /** Explicit mask pattern to apply instead of choosing the best one. */
127
236
  mask?: number | undefined;
237
+ /** Quiet-zone border width in modules. */
128
238
  border?: number | undefined;
239
+ /** Output scale multiplier for raster formats. */
129
240
  scale?: number | undefined;
130
241
  };
242
+ /** SVG-specific QR output options. */
131
243
  export type SvgQrOpts = {
132
244
  /**
133
245
  * Controls how cells are generated within the SVG.
134
246
  *
135
247
  * If `true`:
136
248
  * - Cells are drawn using a single `path` element.
137
- * - Pro: significantly reduces the size of the QR code (>70% smaller than
249
+ * - Pro: significantly reduces the size of the QR code (`70%` smaller than
138
250
  * unoptimized).
139
251
  * - Con: less flexible with visually customizing cell shapes.
140
252
  *
141
253
  * If `false`:
142
254
  * - Each cell is drawn with its own `rect` element.
143
255
  * - Pro: allows more flexibility with visually customizing cells shapes.
144
- * - Con: significantly increases the QR code size (>230% larger than
256
+ * - Con: significantly increases the QR code size (`230%` larger than
145
257
  * optimized).
146
258
  *
147
- * @default true
259
+ * Default is `true`.
148
260
  */
149
261
  optimize?: boolean | undefined;
150
262
  };
263
+ /** Supported encoder outputs. */
151
264
  export type Output = 'raw' | 'ascii' | 'term' | 'gif' | 'svg';
152
265
  /**
153
266
  * Encodes (creates / generates) QR code.
154
- * @param text text that would be encoded
155
- * @param output output type: raw, ascii, svg, gif, or term
156
- * @param opts
267
+ * @param text - Text payload that should be encoded into the QR symbol.
268
+ * @param output - Output format to generate: raw matrix, ASCII, terminal ANSI, GIF, or SVG.
269
+ * @param opts - Encoding and rendering options. See {@link QrOpts} and {@link SvgQrOpts}.
270
+ * @returns Encoded QR data in the format selected by `output`.
271
+ * @throws If the payload, options, QR capacity, or output format are invalid. {@link Error}
157
272
  * @example
158
- ```js
159
- const txt = 'Hello world';
160
- const ascii = encodeQR(txt, 'ascii'); // Not all fonts are supported
161
- const terminalFriendly = encodeQR(txt, 'term'); // 2x larger, all fonts are OK
162
- const gifBytes = encodeQR(txt, 'gif'); // Uncompressed GIF
163
- const svgElement = encodeQR(txt, 'svg'); // SVG vector image element
164
- const array = encodeQR(txt, 'raw'); // 2d array for canvas or other libs
165
- ```
273
+ * Encode one text payload into several QR output formats.
274
+ * ```ts
275
+ * const txt = 'Hello world';
276
+ * const ascii = encodeQR(txt, 'ascii'); // Not all fonts are supported
277
+ * const terminalFriendly = encodeQR(txt, 'term'); // 2x larger, all fonts are OK
278
+ * const gifBytes = encodeQR(txt, 'gif'); // Uncompressed GIF
279
+ * const svgElement = encodeQR(txt, 'svg'); // SVG vector image element
280
+ * const array = encodeQR(txt, 'raw'); // 2d array for canvas or other libs
281
+ * ```
282
+ */
283
+ export declare function encodeQR(text: string, output: 'raw', opts?: TArg<QrOpts>): boolean[][];
284
+ export declare function encodeQR(text: string, output: 'ascii' | 'term', opts?: TArg<QrOpts>): string;
285
+ export declare function encodeQR(text: string, output: 'svg', opts?: TArg<QrOpts & SvgQrOpts>): string;
286
+ export declare function encodeQR(text: string, output: 'gif', opts?: TArg<QrOpts>): TRet<Uint8Array>;
287
+ /**
288
+ * Default export alias for {@link encodeQR}.
289
+ * @param text - Text payload that should be encoded into the QR symbol.
290
+ * @param output - Output format to generate: raw matrix, ASCII, terminal ANSI, GIF, or SVG.
291
+ * @param opts - Encoding and rendering options. See {@link QrOpts} and {@link SvgQrOpts}.
292
+ * @returns Encoded QR data in the format selected by `output`.
293
+ * @throws If the payload, options, QR capacity, or output format are invalid. {@link Error}
294
+ * @example
295
+ * Encode text into the default export from the package root.
296
+ * ```ts
297
+ * import encodeQR from 'qr';
298
+ * encodeQR('Hello world', 'ascii');
299
+ * ```
166
300
  */
167
- export declare function encodeQR(text: string, output: 'raw', opts?: QrOpts): boolean[][];
168
- export declare function encodeQR(text: string, output: 'ascii' | 'term', opts?: QrOpts): string;
169
- export declare function encodeQR(text: string, output: 'svg', opts?: QrOpts & SvgQrOpts): string;
170
- export declare function encodeQR(text: string, output: 'gif', opts?: QrOpts): Uint8Array;
171
301
  export default encodeQR;
302
+ /**
303
+ * Low-level helpers used by the encoder and test suite.
304
+ * Exports the shared helper tables/functions through a frozen container.
305
+ * @example
306
+ * Read low-level QR metadata tables.
307
+ * ```ts
308
+ * import { utils } from 'qr';
309
+ * const size = utils.info.size.encode(1); // 21
310
+ * ```
311
+ */
172
312
  export declare const utils: {
173
313
  best: typeof best;
174
314
  bin: typeof bin;