{"_id":"@ashaffah/qrcodegen","name":"@ashaffah/qrcodegen","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@ashaffah/qrcodegen","version":"1.0.0","description":"QR Code generator library","type":"module","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","test":"tsc -p tsconfig.test.json --noEmit","prepublishOnly":"npm run build"},"keywords":["qrcode","qr","svg"],"license":"MIT","devDependencies":{"@types/node":"^25.6.0","typescript":"^6.0.3"},"gitHead":"427a58b2c8dd67b2f2d9d1b195dfbf926415c387","_id":"@ashaffah/qrcodegen@1.0.0","_nodeVersion":"25.8.2","_npmVersion":"11.11.1","dist":{"integrity":"sha512-W70bU/2Xk2+AfSLaEqVDblLRKmAbr/uGF4YvWDQwN9sSFHLPdxQZb1NLvg+chOqJi9V4VwM8ur2GBRiRTY/omQ==","shasum":"006793b289f400f630cb1a02e815e99527dfc120","tarball":"https://registry.npmjs.org/@ashaffah/qrcodegen/-/qrcodegen-1.0.0.tgz","fileCount":15,"unpackedSize":88149,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGEOR2NNAM8tAdMIr0umx5qt3znX8Mn2il8hTJIha7uyAiEA3JPelDD9lLw9gKnJYkPPJcEuE4/xOuBks/EdIjyu65g="}]},"_npmUser":{"name":"ashaffah","email":"wagamama.morph@gmail.com"},"directories":{},"maintainers":[{"name":"ashaffah","email":"wagamama.morph@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/qrcodegen_1.0.0_1776474104142_0.7594300605516713"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-18T01:01:44.003Z","1.0.0":"2026-04-18T01:01:44.290Z","modified":"2026-04-18T01:01:44.538Z"},"maintainers":[{"name":"ashaffah","email":"wagamama.morph@gmail.com"}],"description":"QR Code generator library","keywords":["qrcode","qr","svg"],"license":"MIT","readme":"# @ashaffah/qrcodegen\n\nA TypeScript QR Code generator library with zero runtime dependencies. Supports SVG output and raw pixel buffer for custom rendering pipelines.\n\nBased on the [QR Code generator library](https://www.nayuki.io/page/qr-code-generator-library) by Project Nayuki (MIT License).\n\n## Installation\n\n```bash\nnpm install @ashaffah/qrcodegen\n```\n\n## Usage\n\n### Generate an SVG\n\n```typescript\nimport { QrCode, toSvgString } from \"@ashaffah/qrcodegen\";\n\nconst qr = QrCode.encodeText(\"Hello, World!\", QrCode.Ecc.MEDIUM);\nconst svg = toSvgString(qr);\n\n// Write to file\nimport fs from \"node:fs\";\nfs.writeFileSync(\"qrcode.svg\", svg);\n```\n\n### Encode Binary Data\n\n```typescript\nimport { QrCode } from \"@ashaffah/qrcodegen\";\n\nconst data = [0x48, 0x65, 0x6c, 0x6c, 0x6f]; // \"Hello\" in bytes\nconst qr = QrCode.encodeBinary(data, QrCode.Ecc.HIGH);\n```\n\n### Advanced: Custom Segments\n\n```typescript\nimport { QrCode, QrSegment } from \"@ashaffah/qrcodegen\";\n\nconst segments = QrSegment.makeSegments(\"HELLO WORLD\");\nconst qr = QrCode.encodeSegments(segments, QrCode.Ecc.LOW, 1, 40, -1, true);\n```\n\n## API\n\n### `QrCode`\n\nThe main class for generating QR Codes.\n\n#### Static Methods\n\n| Method                                                                         | Description                                                             |\n| ------------------------------------------------------------------------------ | ----------------------------------------------------------------------- |\n| `QrCode.encodeText(text, ecl)`                                                 | Encode a Unicode string. Automatically selects the smallest QR version. |\n| `QrCode.encodeBinary(data, ecl)`                                               | Encode raw bytes (max 2953 bytes).                                      |\n| `QrCode.encodeSegments(segs, ecl, minVersion?, maxVersion?, mask?, boostEcl?)` | Mid-level API for fine-grained control over encoding.                   |\n\n#### Properties\n\n| Property               | Type     | Description                                                    |\n| ---------------------- | -------- | -------------------------------------------------------------- |\n| `size`                 | `number` | Width/height in modules (21–177). Equal to `version * 4 + 17`. |\n| `version`              | `number` | QR Code version (1–40).                                        |\n| `mask`                 | `number` | Mask pattern used (0–7).                                       |\n| `errorCorrectionLevel` | `Ecc`    | The error correction level of this QR Code.                    |\n\n#### Methods\n\n| Method            | Description                                                       |\n| ----------------- | ----------------------------------------------------------------- |\n| `getModule(x, y)` | Returns `true` if the module at (x, y) is dark, `false` if light. |\n\n### `QrCode.Ecc` — Error Correction Levels\n\n| Level    | Tolerance | Constant              |\n| -------- | --------- | --------------------- |\n| Low      | ~7%       | `QrCode.Ecc.LOW`      |\n| Medium   | ~15%      | `QrCode.Ecc.MEDIUM`   |\n| Quartile | ~25%      | `QrCode.Ecc.QUARTILE` |\n| High     | ~30%      | `QrCode.Ecc.HIGH`     |\n\nHigher error correction increases QR Code size but improves scan reliability in damaged or obscured conditions.\n\n### `toSvgString(qr, border?, lightColor?, darkColor?)`\n\nConverts a `QrCode` object to an SVG string.\n\n| Parameter    | Type     | Default     | Description                          |\n| ------------ | -------- | ----------- | ------------------------------------ |\n| `qr`         | `QrCode` | —           | The QR Code to render.               |\n| `border`     | `number` | `4`         | Quiet zone size in modules.          |\n| `lightColor` | `string` | `\"#FFFFFF\"` | Background color (CSS color string). |\n| `darkColor`  | `string` | `\"#000000\"` | Foreground color (CSS color string). |\n\n```typescript\nconst svg = toSvgString(qr, 4, \"#FFFFFF\", \"#000000\");\n```\n\n### `QrSegment`\n\nMid-level API for manually constructing encoding segments.\n\n| Method                             | Description                                                   |\n| ---------------------------------- | ------------------------------------------------------------- |\n| `QrSegment.makeBytes(data)`        | Encode raw bytes in byte mode.                                |\n| `QrSegment.makeNumeric(digits)`    | Encode a numeric string (digits 0–9 only).                    |\n| `QrSegment.makeAlphanumeric(text)` | Encode uppercase alphanumeric text.                           |\n| `QrSegment.makeSegments(text)`     | Automatically choose the optimal segment mode for a string.   |\n| `QrSegment.makeEci(assignVal)`     | Create an Extended Channel Interpretation designator segment. |\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Build the library\nnpm run build\n\n# Type-check tests\nnpm test\n```\n\nOutput is emitted to `dist/` with TypeScript declarations and source maps included.\n\n## License\n\nMIT — Copyright (c) Ashraf Ashaffah.\n\nThis project is based on the QR Code generator library by [Project Nayuki](https://www.nayuki.io/page/qr-code-generator-library), also under the MIT License.\n","readmeFilename":"README.md","_rev":"1-b4526a28d0d947f85fd6a33862c3928e"}