Relocate the ~6k-file docs tree from the repo root into plugins/document-navigator/docs/ so the plugin is self-contained and portable. docs/superpowers/ (specs and plans) stays at the repo root. Moved via cp+rm rather than git mv because directory rename() fails with EPERM on this WSL /mnt DrvFs mount; git rename-detection pairs the identical-content files at commit time. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
12 KiB
@suaveplan/qrcode - QR code generation producing SVG, pixel matrix, terminal (Unicode blocks), and data URL representations. Implements QR code versions 1-10, error correction levels L/M/Q/H, automatic version and mode selection.
Summary
QR code generation producing SVG, pixel matrix, terminal (Unicode blocks), and data URL representations. Implements QR code versions 1-10, error correction levels L/M/Q/H, automatic version and mode selection.
Documentation tree
- core — (no submodules) - data-encoder — _(no submodu…
- encoder — (no submodules)
- data-encoder — (no submodules)
- mask — (no submodules)
- masking — (no submodules)
- matrix — (no submodules)
- matrix-builder — (no submodules)
- reed-solomon — (no submodules)
- reed-solomon — (no submodules)
- renderer — (no submodules)
- svg-renderer — (no submodules)
- tables — (no submodules)
- tables — (no submodules)
- qrcode — (no submodules) - data-encoder — _(no submodu…
- encoder — (no submodules)
- errors — (no submodules)
- qrcode-error — (no submodules)
errors — (no submodules)- qrcode-error — (no submodules)- data-encoder — _(no submod…
encoder — (no submodules)- data-encoder — (no submodules)- mask — (no submodules)- masking — (no submodules)- matrix — (no submodules)- matrix-builder — (no submodules)- reed-solomon — (no submodules)- reed-solomon — (no submodules)- renderer — (no submodules)- svg-renderer — (no submodules)- tables — (no submodules)- tables — (no submodules)- qrcode — (no submodules)- data-encoder — _(no submod…
errors — (no submodules)- qrcode-error — (no submodules)- encoder — (no submodules) - data-encoder — (no submodules)- mask — (no submodules) - masking — (no submodules)- matrix — (no submodules) - matrix-builder — (no submodules)- reed-solomon — (no submodules) - reed-solomon — (no submodules)- renderer — (no submodules) - svg-renderer — (no submodules)- tables — (no submodules) - tables — (no submodules)- qrcode — (no submodules)- errors — (no submodules) - qrcode-error — (no submodules)
Installation
bun add @suaveplan/qrcode
Quick Start
import { generate } from "@suaveplan/qrcode";
const result = generate("https://suaveplan.io");
console.log(result.svg); // Inline SVG string
console.log(result.dataUrl); // data:image/svg+xml;base64,...
console.log(result.terminal); // Unicode half-block for CLI display
console.log(result.version); // e.g. 2
console.log(result.size); // e.g. 25 (version 2 = 25×25)
API
generate(data, options?)
Generates a complete QR code for any UTF-8 string.
import { generate } from "@suaveplan/qrcode";
const result = generate("Hello World", {
errorCorrectionLevel: "H", // 'L' | 'M' | 'Q' | 'H', default 'M'
version: 2, // 1-10, auto-selected if omitted
margin: 4, // quiet zone in modules, default 4
color: "#000000", // dark module color, default '#000000'
background: "#ffffff", // light module color, default '#ffffff'
scale: 10, // pixels per module in SVG, default 10
});
Returns QRCodeResult:
| Field | Type | Description |
|---|---|---|
version |
number |
QR version used (1-10) |
errorCorrectionLevel |
ErrorCorrectionLevel |
EC level used |
mode |
QRMode |
Encoding mode (numeric/alphanumeric/byte) |
matrix |
boolean[][] |
Module grid — true = dark |
size |
number |
Matrix dimension (size × size) |
svg |
string |
Complete SVG markup |
dataUrl |
string |
data:image/svg+xml;base64,... |
terminal |
string |
Unicode half-block terminal representation |
Errors
import { QRCodeError, QRCODE_CODES } from "@suaveplan/qrcode/errors";
try {
generate("", { version: 1, errorCorrectionLevel: "H" });
} catch (e) {
if (e instanceof QRCodeError) {
switch (e.code) {
case QRCODE_CODES.INVALID_DATA:
// Empty input, invalid characters, or out-of-range version
break;
case QRCODE_CODES.VERSION_TOO_SMALL:
// Data too large for the specified version (or all versions 1-10)
break;
case QRCODE_CODES.ENCODE_FAILED:
// Internal encoding pipeline failure
break;
}
}
}
Module Exports
| Subpath | Contents |
|---|---|
@suaveplan/qrcode |
generate, all types, all sub-module exports |
@suaveplan/qrcode/errors |
QRCodeError, QRCODE_CODES, QRCodeCode |
@suaveplan/qrcode/core/tables |
Lookup tables and helpers |
@suaveplan/qrcode/core/encoder |
detectMode, encodeData, BitBuffer, encodeUtf8 |
@suaveplan/qrcode/core/reed-solomon |
rsEncode, interleaveBlocks, splitBlocks, GF arithmetic |
@suaveplan/qrcode/core/matrix |
buildMatrix |
@suaveplan/qrcode/core/mask |
selectMask, penaltyScore |
@suaveplan/qrcode/core/renderer |
renderSvg, renderDataUrl, renderTerminal |