🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@robinpath/barcode

Package Overview
Dependencies
Maintainers
4
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@robinpath/barcode - npm Package Compare versions

Comparing version
0.1.5
to
0.3.0
+20
dist/barcode.d.ts
/**
* RobinPath Barcode Module (Node port)
*
* Pure-JS QR code generator plus validators and converters for common linear
* barcode formats: EAN-13, UPC-A, ISBN-10/13, and the Luhn checksum used by
* credit card numbers and many ID schemes.
*
* No credentials, no network. The `configureBarcode(host)` hook is exposed for
* parity with other modules but does nothing at runtime.
*/
import type { BuiltinHandler } from "@robinpath/core";
type FunctionMetadata = Record<string, unknown>;
type ModuleMetadata = Record<string, unknown>;
type ModuleHost = unknown;
export declare function configureBarcode(h: ModuleHost): void;
export declare const BarcodeFunctions: Record<string, BuiltinHandler>;
export declare const BarcodeFunctionMetadata: Record<string, FunctionMetadata>;
export declare const BarcodeModuleMetadata: ModuleMetadata;
export {};
//# sourceMappingURL=barcode.d.ts.map
{"version":3,"file":"barcode.d.ts","sourceRoot":"","sources":["../src/barcode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAOtD,KAAK,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAChD,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC9C,KAAK,UAAU,GAAG,OAAO,CAAC;AAK1B,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAEpD;AA2+BD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAe3D,CAAC;AAsDF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAsapE,CAAC;AAMF,eAAO,MAAM,qBAAqB,EAAE,cAsCnC,CAAC"}
/**
* RobinPath Barcode Module (Node port)
*
* Pure-JS QR code generator plus validators and converters for common linear
* barcode formats: EAN-13, UPC-A, ISBN-10/13, and the Luhn checksum used by
* credit card numbers and many ID schemes.
*
* No credentials, no network. The `configureBarcode(host)` hook is exposed for
* parity with other modules but does nothing at runtime.
*/
import { writeFileSync } from "node:fs";
// ── Module-local state (configure hook kept for parity) ────────────────
const state = {};
export function configureBarcode(h) {
state.host = h;
}
// ============================================================================
// Pure JavaScript QR Code Encoder
// Supports versions 1-10, error correction levels L/M/Q/H,
// numeric, alphanumeric, and byte encoding modes.
// ============================================================================
const EC_LEVELS = { L: 0, M: 1, Q: 2, H: 3 };
const MODE_NUMERIC = 0b0001;
const MODE_ALPHANUMERIC = 0b0010;
const MODE_BYTE = 0b0100;
const ALPHANUM_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";
const CHAR_COUNT_BITS = {
[MODE_NUMERIC]: [10, 12, 14],
[MODE_ALPHANUMERIC]: [9, 11, 13],
[MODE_BYTE]: [8, 16, 16],
};
const TOTAL_CODEWORDS = [26, 44, 70, 100, 134, 172, 196, 242, 292, 346];
// Per ISO/IEC 18004 Table 9
const VERSION_EC_TABLE = [
[[19, 7, 1, 19, 0, 0], [16, 10, 1, 16, 0, 0], [13, 13, 1, 13, 0, 0], [9, 17, 1, 9, 0, 0]],
[[34, 10, 1, 34, 0, 0], [28, 16, 1, 28, 0, 0], [22, 22, 1, 22, 0, 0], [16, 28, 1, 16, 0, 0]],
[[55, 15, 1, 55, 0, 0], [44, 26, 1, 44, 0, 0], [34, 18, 2, 17, 0, 0], [24, 22, 2, 12, 0, 0]],
[[80, 20, 1, 80, 0, 0], [64, 18, 2, 32, 0, 0], [48, 26, 2, 24, 0, 0], [36, 16, 4, 9, 0, 0]],
[[108, 26, 1, 108, 0, 0], [86, 24, 2, 43, 0, 0], [62, 18, 2, 15, 2, 16], [46, 22, 2, 11, 2, 12]],
[[136, 18, 2, 68, 0, 0], [108, 16, 4, 27, 0, 0], [76, 24, 4, 19, 0, 0], [60, 28, 4, 15, 0, 0]],
[[156, 20, 2, 78, 0, 0], [124, 18, 4, 31, 0, 0], [88, 18, 2, 14, 4, 15], [66, 26, 4, 13, 1, 14]],
[[194, 24, 2, 97, 0, 0], [154, 22, 2, 38, 2, 39], [110, 22, 4, 18, 2, 19], [86, 26, 4, 14, 2, 15]],
[[232, 30, 2, 116, 0, 0], [182, 22, 3, 36, 2, 37], [132, 20, 4, 16, 4, 17], [100, 24, 4, 12, 4, 13]],
[[271, 18, 2, 68, 2, 69], [216, 26, 4, 43, 1, 44], [154, 24, 6, 19, 2, 20], [122, 28, 6, 15, 2, 16]],
];
const ALIGNMENT_POSITIONS = [
[],
[6, 18],
[6, 22],
[6, 26],
[6, 30],
[6, 34],
[6, 22, 38],
[6, 24, 42],
[6, 26, 46],
[6, 28, 50],
];
const FORMAT_INFO_STRINGS = [
[0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976],
[0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0],
[0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed],
[0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b],
];
// --- Reed-Solomon Error Correction (GF(256), poly 0x11d) ---
const GF_EXP = new Uint8Array(512);
const GF_LOG = new Uint8Array(256);
(function initGaloisField() {
let x = 1;
for (let i = 0; i < 255; i++) {
GF_EXP[i] = x;
GF_LOG[x] = i;
x <<= 1;
if (x >= 256)
x ^= 0x11d;
}
for (let i = 255; i < 512; i++) {
GF_EXP[i] = GF_EXP[i - 255];
}
})();
function gfMul(a, b) {
if (a === 0 || b === 0)
return 0;
return GF_EXP[GF_LOG[a] + GF_LOG[b]];
}
function rsGeneratorPoly(numECCodewords) {
let gen = new Uint8Array([1]);
for (let i = 0; i < numECCodewords; i++) {
const newGen = new Uint8Array(gen.length + 1);
for (let j = 0; j < gen.length; j++) {
newGen[j] ^= gen[j];
newGen[j + 1] ^= gfMul(gen[j], GF_EXP[i]);
}
gen = newGen;
}
return gen;
}
function rsEncode(data, numECCodewords) {
const gen = rsGeneratorPoly(numECCodewords);
const result = new Uint8Array(data.length + numECCodewords);
result.set(data);
for (let i = 0; i < data.length; i++) {
const coef = result[i];
if (coef !== 0) {
for (let j = 0; j < gen.length; j++) {
result[i + j] ^= gfMul(gen[j], coef);
}
}
}
return result.slice(data.length);
}
// --- Data Encoding ---
function detectMode(text) {
if (/^\d+$/.test(text))
return MODE_NUMERIC;
if (text.split("").every((c) => ALPHANUM_CHARS.includes(c)))
return MODE_ALPHANUMERIC;
return MODE_BYTE;
}
function getCharCountBits(mode, version) {
const group = version <= 9 ? 0 : version <= 26 ? 1 : 2;
return CHAR_COUNT_BITS[mode][group];
}
function getVersionECInfo(version, ecLevel) {
const row = VERSION_EC_TABLE[version - 1][ecLevel];
return {
totalDataCodewords: row[0],
ecCodewordsPerBlock: row[1],
group1Blocks: row[2],
group1DataCW: row[3],
group2Blocks: row[4],
group2DataCW: row[5],
};
}
function selectVersion(text, mode, ecLevel) {
const dataLen = mode === MODE_BYTE ? new TextEncoder().encode(text).length : text.length;
for (let v = 1; v <= 10; v++) {
const info = getVersionECInfo(v, ecLevel);
const totalBits = info.totalDataCodewords * 8;
const ccBits = getCharCountBits(mode, v);
let dataBits;
if (mode === MODE_NUMERIC) {
dataBits =
Math.floor(dataLen / 3) * 10 + (dataLen % 3 === 2 ? 7 : dataLen % 3 === 1 ? 4 : 0);
}
else if (mode === MODE_ALPHANUMERIC) {
dataBits = Math.floor(dataLen / 2) * 11 + (dataLen % 2) * 6;
}
else {
dataBits = dataLen * 8;
}
const needed = 4 + ccBits + dataBits;
if (needed <= totalBits)
return v;
}
throw new Error("Data too long for QR versions 1-10");
}
class BitBuffer {
bits = [];
get length() {
return this.bits.length;
}
put(value, numBits) {
for (let i = numBits - 1; i >= 0; i--) {
this.bits.push((value >> i) & 1);
}
}
getByte(index) {
let byte = 0;
for (let i = 0; i < 8; i++) {
const bitIndex = index * 8 + i;
if (bitIndex < this.bits.length) {
byte = (byte << 1) | this.bits[bitIndex];
}
else {
byte <<= 1;
}
}
return byte;
}
}
function encodeData(text, version, ecLevel) {
const mode = detectMode(text);
const info = getVersionECInfo(version, ecLevel);
const totalDataCodewords = info.totalDataCodewords;
const buffer = new BitBuffer();
buffer.put(mode, 4);
const ccBits = getCharCountBits(mode, version);
if (mode === MODE_NUMERIC) {
buffer.put(text.length, ccBits);
for (let i = 0; i < text.length; i += 3) {
const group = text.substring(i, i + 3);
const bits = group.length === 3 ? 10 : group.length === 2 ? 7 : 4;
buffer.put(parseInt(group, 10), bits);
}
}
else if (mode === MODE_ALPHANUMERIC) {
buffer.put(text.length, ccBits);
for (let i = 0; i < text.length; i += 2) {
if (i + 1 < text.length) {
const val = ALPHANUM_CHARS.indexOf(text[i]) * 45 + ALPHANUM_CHARS.indexOf(text[i + 1]);
buffer.put(val, 11);
}
else {
buffer.put(ALPHANUM_CHARS.indexOf(text[i]), 6);
}
}
}
else {
const bytes = new TextEncoder().encode(text);
buffer.put(bytes.length, ccBits);
for (const b of bytes) {
buffer.put(b, 8);
}
}
const totalBits = totalDataCodewords * 8;
const terminatorLen = Math.min(4, totalBits - buffer.length);
buffer.put(0, terminatorLen);
while (buffer.length % 8 !== 0) {
buffer.put(0, 1);
}
const padPatterns = [0xec, 0x11];
let padIdx = 0;
while (buffer.length < totalBits) {
buffer.put(padPatterns[padIdx], 8);
padIdx = 1 - padIdx;
}
const data = new Uint8Array(totalDataCodewords);
for (let i = 0; i < totalDataCodewords; i++) {
data[i] = buffer.getByte(i);
}
return data;
}
// --- Error Correction & Interleaving ---
function generateECCodewords(data, version, ecLevel) {
const info = getVersionECInfo(version, ecLevel);
const { ecCodewordsPerBlock, group1Blocks, group1DataCW, group2Blocks, group2DataCW } = info;
const totalCodewords = TOTAL_CODEWORDS[version - 1];
const dataBlocks = [];
const ecBlocks = [];
let offset = 0;
for (let i = 0; i < group1Blocks; i++) {
const block = data.slice(offset, offset + group1DataCW);
dataBlocks.push(block);
ecBlocks.push(rsEncode(block, ecCodewordsPerBlock));
offset += group1DataCW;
}
for (let i = 0; i < group2Blocks; i++) {
const block = data.slice(offset, offset + group2DataCW);
dataBlocks.push(block);
ecBlocks.push(rsEncode(block, ecCodewordsPerBlock));
offset += group2DataCW;
}
const result = [];
const maxDataCW = Math.max(group1DataCW, group2DataCW || 0);
for (let i = 0; i < maxDataCW; i++) {
for (const block of dataBlocks) {
if (i < block.length)
result.push(block[i]);
}
}
for (let i = 0; i < ecCodewordsPerBlock; i++) {
for (const block of ecBlocks) {
if (i < block.length)
result.push(block[i]);
}
}
const output = new Uint8Array(totalCodewords);
for (let i = 0; i < Math.min(result.length, totalCodewords); i++) {
output[i] = result[i];
}
return output;
}
// --- QR Matrix Construction ---
function getModuleCount(version) {
return version * 4 + 17;
}
function createMatrix(size) {
return Array.from({ length: size }, () => Array(size).fill(null));
}
function placeFinderPattern(matrix, row, col) {
for (let r = -1; r <= 7; r++) {
for (let c = -1; c <= 7; c++) {
const mr = row + r;
const mc = col + c;
if (mr < 0 || mr >= matrix.length || mc < 0 || mc >= matrix.length)
continue;
if ((r >= 0 && r <= 6 && (c === 0 || c === 6)) ||
(c >= 0 && c <= 6 && (r === 0 || r === 6)) ||
(r >= 2 && r <= 4 && c >= 2 && c <= 4)) {
matrix[mr][mc] = 1;
}
else {
matrix[mr][mc] = 0;
}
}
}
}
function placeAlignmentPattern(matrix, row, col) {
for (let r = -2; r <= 2; r++) {
for (let c = -2; c <= 2; c++) {
if (Math.abs(r) === 2 || Math.abs(c) === 2 || (r === 0 && c === 0)) {
matrix[row + r][col + c] = 1;
}
else {
matrix[row + r][col + c] = 0;
}
}
}
}
function placeTimingPatterns(matrix) {
const size = matrix.length;
for (let i = 8; i < size - 8; i++) {
if (matrix[6][i] === null)
matrix[6][i] = i % 2 === 0 ? 1 : 0;
if (matrix[i][6] === null)
matrix[i][6] = i % 2 === 0 ? 1 : 0;
}
}
function reserveFormatInfo(matrix) {
const size = matrix.length;
for (let i = 0; i <= 8; i++) {
if (matrix[8][i] === null)
matrix[8][i] = 0;
if (matrix[i][8] === null)
matrix[i][8] = 0;
}
for (let i = 0; i <= 7; i++) {
if (matrix[8][size - 1 - i] === null)
matrix[8][size - 1 - i] = 0;
}
for (let i = 0; i <= 7; i++) {
if (matrix[size - 1 - i][8] === null)
matrix[size - 1 - i][8] = 0;
}
matrix[size - 8][8] = 1;
}
function placeAllPatterns(matrix, version) {
const size = matrix.length;
placeFinderPattern(matrix, 0, 0);
placeFinderPattern(matrix, 0, size - 7);
placeFinderPattern(matrix, size - 7, 0);
if (version >= 2) {
const positions = ALIGNMENT_POSITIONS[version - 1];
for (const r of positions) {
for (const c of positions) {
if (r <= 8 && c <= 8)
continue;
if (r <= 8 && c >= size - 8)
continue;
if (r >= size - 8 && c <= 8)
continue;
placeAlignmentPattern(matrix, r, c);
}
}
}
placeTimingPatterns(matrix);
reserveFormatInfo(matrix);
}
function placeData(matrix, data) {
const size = matrix.length;
let bitIndex = 0;
const totalBits = data.length * 8;
let col = size - 1;
let goingUp = true;
while (col >= 0) {
if (col === 6)
col--;
for (let row = 0; row < size; row++) {
const actualRow = goingUp ? size - 1 - row : row;
for (let c = 0; c < 2; c++) {
const actualCol = col - c;
if (actualCol < 0)
continue;
if (matrix[actualRow][actualCol] !== null)
continue;
if (bitIndex < totalBits) {
const byteIndex = Math.floor(bitIndex / 8);
const bitOffset = 7 - (bitIndex % 8);
matrix[actualRow][actualCol] = (data[byteIndex] >> bitOffset) & 1;
bitIndex++;
}
else {
matrix[actualRow][actualCol] = 0;
}
}
}
goingUp = !goingUp;
col -= 2;
}
}
// --- Masking ---
function getMaskFunction(pattern) {
switch (pattern) {
case 0:
return (r, c) => (r + c) % 2 === 0;
case 1:
return (r) => r % 2 === 0;
case 2:
return (_, c) => c % 3 === 0;
case 3:
return (r, c) => (r + c) % 3 === 0;
case 4:
return (r, c) => (Math.floor(r / 2) + Math.floor(c / 3)) % 2 === 0;
case 5:
return (r, c) => ((r * c) % 2) + ((r * c) % 3) === 0;
case 6:
return (r, c) => (((r * c) % 2) + ((r * c) % 3)) % 2 === 0;
case 7:
return (r, c) => (((r + c) % 2) + ((r * c) % 3)) % 2 === 0;
default:
return (r, c) => (r + c) % 2 === 0;
}
}
function isDataModule(patternMatrix, row, col) {
return patternMatrix[row][col] === null;
}
function applyMask(matrix, patternMatrix, maskPattern) {
const size = matrix.length;
const masked = matrix.map((row) => [...row]);
const maskFn = getMaskFunction(maskPattern);
for (let r = 0; r < size; r++) {
for (let c = 0; c < size; c++) {
if (isDataModule(patternMatrix, r, c)) {
if (maskFn(r, c)) {
masked[r][c] = masked[r][c] === 1 ? 0 : 1;
}
}
}
}
return masked;
}
function writeFormatInfo(matrix, ecLevel, maskPattern) {
const size = matrix.length;
const formatBits = FORMAT_INFO_STRINGS[ecLevel][maskPattern];
const positions1 = [
[8, 0], [8, 1], [8, 2], [8, 3], [8, 4], [8, 5], [8, 7], [8, 8],
[7, 8], [5, 8], [4, 8], [3, 8], [2, 8], [1, 8], [0, 8],
];
const positions2 = [];
for (let i = 0; i < 7; i++)
positions2.push([size - 1 - i, 8]);
for (let i = 0; i < 8; i++)
positions2.push([8, size - 8 + i]);
for (let i = 0; i < 15; i++) {
const bit = (formatBits >> (14 - i)) & 1;
const [r1, c1] = positions1[i];
matrix[r1][c1] = bit;
const [r2, c2] = positions2[i];
matrix[r2][c2] = bit;
}
}
function calculatePenalty(matrix) {
const size = matrix.length;
let penalty = 0;
for (let r = 0; r < size; r++) {
let count = 1;
for (let c = 1; c < size; c++) {
if (matrix[r][c] === matrix[r][c - 1]) {
count++;
if (c === size - 1 && count >= 5)
penalty += count - 2;
}
else {
if (count >= 5)
penalty += count - 2;
count = 1;
}
}
}
for (let c = 0; c < size; c++) {
let count = 1;
for (let r = 1; r < size; r++) {
if (matrix[r][c] === matrix[r - 1][c]) {
count++;
if (r === size - 1 && count >= 5)
penalty += count - 2;
}
else {
if (count >= 5)
penalty += count - 2;
count = 1;
}
}
}
for (let r = 0; r < size - 1; r++) {
for (let c = 0; c < size - 1; c++) {
const val = matrix[r][c];
if (val === matrix[r][c + 1] && val === matrix[r + 1][c] && val === matrix[r + 1][c + 1]) {
penalty += 3;
}
}
}
for (let r = 0; r < size; r++) {
for (let c = 0; c < size - 10; c++) {
if (matrix[r][c] === 1 && matrix[r][c + 1] === 0 && matrix[r][c + 2] === 1 &&
matrix[r][c + 3] === 1 && matrix[r][c + 4] === 1 && matrix[r][c + 5] === 0 &&
matrix[r][c + 6] === 1 && matrix[r][c + 7] === 0 && matrix[r][c + 8] === 0 &&
matrix[r][c + 9] === 0 && matrix[r][c + 10] === 0)
penalty += 40;
if (matrix[r][c] === 0 && matrix[r][c + 1] === 0 && matrix[r][c + 2] === 0 &&
matrix[r][c + 3] === 0 && matrix[r][c + 4] === 1 && matrix[r][c + 5] === 0 &&
matrix[r][c + 6] === 1 && matrix[r][c + 7] === 1 && matrix[r][c + 8] === 1 &&
matrix[r][c + 9] === 0 && matrix[r][c + 10] === 1)
penalty += 40;
}
}
for (let c = 0; c < size; c++) {
for (let r = 0; r < size - 10; r++) {
if (matrix[r][c] === 1 && matrix[r + 1][c] === 0 && matrix[r + 2][c] === 1 &&
matrix[r + 3][c] === 1 && matrix[r + 4][c] === 1 && matrix[r + 5][c] === 0 &&
matrix[r + 6][c] === 1 && matrix[r + 7][c] === 0 && matrix[r + 8][c] === 0 &&
matrix[r + 9][c] === 0 && matrix[r + 10][c] === 0)
penalty += 40;
if (matrix[r][c] === 0 && matrix[r + 1][c] === 0 && matrix[r + 2][c] === 0 &&
matrix[r + 3][c] === 0 && matrix[r + 4][c] === 1 && matrix[r + 5][c] === 0 &&
matrix[r + 6][c] === 1 && matrix[r + 7][c] === 1 && matrix[r + 8][c] === 1 &&
matrix[r + 9][c] === 0 && matrix[r + 10][c] === 1)
penalty += 40;
}
}
let darkCount = 0;
for (let r = 0; r < size; r++) {
for (let c = 0; c < size; c++) {
if (matrix[r][c] === 1)
darkCount++;
}
}
const percent = (darkCount / (size * size)) * 100;
const prevFive = Math.floor(percent / 5) * 5;
const nextFive = prevFive + 5;
penalty += Math.min(Math.abs(prevFive - 50) / 5, Math.abs(nextFive - 50) / 5) * 10;
return penalty;
}
function generateQRMatrix(text, ecLevelStr = "M") {
const ecLevel = EC_LEVELS[ecLevelStr.toUpperCase()] ?? 1;
const mode = detectMode(text);
const version = selectVersion(text, mode, ecLevel);
const size = getModuleCount(version);
const data = encodeData(text, version, ecLevel);
const codewords = generateECCodewords(data, version, ecLevel);
const patternMatrix = createMatrix(size);
placeAllPatterns(patternMatrix, version);
const baseMatrix = createMatrix(size);
placeAllPatterns(baseMatrix, version);
placeData(baseMatrix, codewords);
let bestMask = 0;
let bestPenalty = Infinity;
for (let mask = 0; mask < 8; mask++) {
const masked = applyMask(baseMatrix, patternMatrix, mask);
writeFormatInfo(masked, ecLevel, mask);
const penalty = calculatePenalty(masked);
if (penalty < bestPenalty) {
bestPenalty = penalty;
bestMask = mask;
}
}
const finalMatrix = applyMask(baseMatrix, patternMatrix, bestMask);
writeFormatInfo(finalMatrix, ecLevel, bestMask);
return finalMatrix;
}
// --- Output Formats ---
function matrixToSvg(matrix, opts = {}) {
const moduleCount = matrix.length;
const margin = opts.margin ?? 4;
const width = opts.width ?? moduleCount + margin * 2;
const darkColor = opts.darkColor ?? "#000000";
const lightColor = opts.lightColor ?? "#ffffff";
let svg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${moduleCount + margin * 2} ${moduleCount + margin * 2}" width="${width}" height="${width}" shape-rendering="crispEdges">`;
svg += `<rect width="100%" height="100%" fill="${lightColor}"/>`;
for (let r = 0; r < moduleCount; r++) {
for (let c = 0; c < moduleCount; c++) {
if (matrix[r][c] === 1) {
svg += `<rect x="${c + margin}" y="${r + margin}" width="1" height="1" fill="${darkColor}"/>`;
}
}
}
svg += "</svg>";
return svg;
}
function matrixToTerminal(matrix) {
const moduleCount = matrix.length;
const margin = 2;
const lines = [];
const totalRows = moduleCount + margin * 2;
const totalCols = moduleCount + margin * 2;
const getModule = (r, c) => {
const mr = r - margin;
const mc = c - margin;
if (mr < 0 || mr >= moduleCount || mc < 0 || mc >= moduleCount)
return false;
return matrix[mr][mc] === 1;
};
for (let r = 0; r < totalRows; r += 2) {
let line = "";
for (let c = 0; c < totalCols; c++) {
const top = getModule(r, c);
const bottom = r + 1 < totalRows ? getModule(r + 1, c) : false;
if (top && bottom)
line += "\u2588";
else if (top && !bottom)
line += "\u2580";
else if (!top && bottom)
line += "\u2584";
else
line += " ";
}
lines.push(line);
}
return lines.join("\n");
}
// --- Minimal PNG encoder (uncompressed, no dependencies) ---
function pngCrc32(data) {
let crc = 0xffffffff;
for (let i = 0; i < data.length; i++) {
crc ^= data[i];
for (let j = 0; j < 8; j++) {
crc = (crc >>> 1) ^ (crc & 1 ? 0xedb88320 : 0);
}
}
return (crc ^ 0xffffffff) >>> 0;
}
function adler32(data) {
let a = 1;
let b = 0;
for (let i = 0; i < data.length; i++) {
a = (a + data[i]) % 65521;
b = (b + a) % 65521;
}
return ((b << 16) | a) >>> 0;
}
function deflateStored(data) {
const maxBlockSize = 65535;
const numBlocks = Math.ceil(data.length / maxBlockSize) || 1;
const output = [];
for (let i = 0; i < numBlocks; i++) {
const start = i * maxBlockSize;
const end = Math.min(start + maxBlockSize, data.length);
const block = data.slice(start, end);
const isLast = i === numBlocks - 1;
output.push(isLast ? 0x01 : 0x00);
const len = block.length;
output.push(len & 0xff, (len >> 8) & 0xff);
output.push(~len & 0xff, (~len >> 8) & 0xff);
for (let j = 0; j < block.length; j++) {
output.push(block[j]);
}
}
return new Uint8Array(output);
}
function createZlibData(rawData) {
const deflated = deflateStored(rawData);
const adler = adler32(rawData);
const result = new Uint8Array(2 + deflated.length + 4);
result[0] = 0x78;
result[1] = 0x01;
result.set(deflated, 2);
const off = 2 + deflated.length;
result[off] = (adler >> 24) & 0xff;
result[off + 1] = (adler >> 16) & 0xff;
result[off + 2] = (adler >> 8) & 0xff;
result[off + 3] = adler & 0xff;
return result;
}
function pngChunk(type, data) {
const typeBytes = new TextEncoder().encode(type);
const chunk = new Uint8Array(4 + 4 + data.length + 4);
const len = data.length;
chunk[0] = (len >> 24) & 0xff;
chunk[1] = (len >> 16) & 0xff;
chunk[2] = (len >> 8) & 0xff;
chunk[3] = len & 0xff;
chunk.set(typeBytes, 4);
chunk.set(data, 8);
const crcData = new Uint8Array(4 + data.length);
crcData.set(typeBytes, 0);
crcData.set(data, 4);
const crc = pngCrc32(crcData);
chunk[8 + data.length] = (crc >> 24) & 0xff;
chunk[9 + data.length] = (crc >> 16) & 0xff;
chunk[10 + data.length] = (crc >> 8) & 0xff;
chunk[11 + data.length] = crc & 0xff;
return chunk;
}
function matrixToPng(matrix, opts = {}) {
const moduleCount = matrix.length;
const scale = opts.scale ?? 10;
const margin = opts.margin ?? 4;
const totalModules = moduleCount + margin * 2;
const imgSize = totalModules * scale;
const rawData = new Uint8Array((1 + imgSize) * imgSize);
for (let py = 0; py < imgSize; py++) {
const rowOffset = py * (1 + imgSize);
rawData[rowOffset] = 0;
const moduleRow = Math.floor(py / scale) - margin;
for (let px = 0; px < imgSize; px++) {
const moduleCol = Math.floor(px / scale) - margin;
let isDark = false;
if (moduleRow >= 0 && moduleRow < moduleCount && moduleCol >= 0 && moduleCol < moduleCount) {
isDark = matrix[moduleRow][moduleCol] === 1;
}
rawData[rowOffset + 1 + px] = isDark ? 0 : 255;
}
}
const PNG_SIGNATURE = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10]);
const ihdr = new Uint8Array(13);
ihdr[0] = (imgSize >> 24) & 0xff;
ihdr[1] = (imgSize >> 16) & 0xff;
ihdr[2] = (imgSize >> 8) & 0xff;
ihdr[3] = imgSize & 0xff;
ihdr[4] = (imgSize >> 24) & 0xff;
ihdr[5] = (imgSize >> 16) & 0xff;
ihdr[6] = (imgSize >> 8) & 0xff;
ihdr[7] = imgSize & 0xff;
ihdr[8] = 8;
ihdr[9] = 0;
ihdr[10] = 0;
ihdr[11] = 0;
ihdr[12] = 0;
const compressedData = createZlibData(rawData);
const iendData = new Uint8Array(0);
const chunks = [
PNG_SIGNATURE,
pngChunk("IHDR", ihdr),
pngChunk("IDAT", compressedData),
pngChunk("IEND", iendData),
];
const totalLen = chunks.reduce((sum, c) => sum + c.length, 0);
const png = new Uint8Array(totalLen);
let offset = 0;
for (const chunk of chunks) {
png.set(chunk, offset);
offset += chunk.length;
}
return png;
}
function uint8ArrayToBase64(bytes) {
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
let result = "";
const len = bytes.length;
for (let i = 0; i < len; i += 3) {
const b0 = bytes[i];
const b1 = i + 1 < len ? bytes[i + 1] : 0;
const b2 = i + 2 < len ? bytes[i + 2] : 0;
result += chars[(b0 >> 2) & 0x3f];
result += chars[((b0 << 4) | (b1 >> 4)) & 0x3f];
result += i + 1 < len ? chars[((b1 << 2) | (b2 >> 6)) & 0x3f] : "=";
result += i + 2 < len ? chars[b2 & 0x3f] : "=";
}
return result;
}
function matrixToDataUrl(matrix, opts = {}) {
const png = matrixToPng(matrix, opts);
const base64 = uint8ArrayToBase64(png);
return `data:image/png;base64,${base64}`;
}
function parseQROptions(opts) {
if (typeof opts !== "object" || opts === null)
return {};
return opts;
}
// ============================================================================
// Handlers: QR generation
// ============================================================================
const qrGenerate = async (args) => {
const text = String(args[0] ?? "");
const opts = parseQROptions(args[1]);
const ecLevel = opts.errorCorrectionLevel ?? "M";
const matrix = generateQRMatrix(text, ecLevel);
return matrixToDataUrl(matrix, { scale: opts.scale ?? 10, margin: opts.margin ?? 4 });
};
const qrToFile = async (args) => {
const text = String(args[0] ?? "");
const filePath = String(args[1] ?? "qr.svg");
const opts = parseQROptions(args[2]);
const ecLevel = opts.errorCorrectionLevel ?? "M";
const matrix = generateQRMatrix(text, ecLevel);
const svgWidth = opts.width ?? (matrix.length + (opts.margin ?? 4) * 2) * (opts.scale ?? 10);
const svg = matrixToSvg(matrix, {
width: svgWidth,
margin: opts.margin ?? 4,
darkColor: opts.color?.dark ?? "#000000",
lightColor: opts.color?.light ?? "#ffffff",
});
writeFileSync(filePath, svg, "utf-8");
return filePath;
};
const qrToSvg = async (args) => {
const text = String(args[0] ?? "");
const opts = parseQROptions(args[1]);
const ecLevel = opts.errorCorrectionLevel ?? "M";
const matrix = generateQRMatrix(text, ecLevel);
return matrixToSvg(matrix, {
margin: opts.margin ?? 4,
darkColor: opts.color?.dark ?? "#000000",
lightColor: opts.color?.light ?? "#ffffff",
});
};
const qrToTerminal = async (args) => {
const text = String(args[0] ?? "");
const matrix = generateQRMatrix(text, "M");
return matrixToTerminal(matrix);
};
// ============================================================================
// Barcode validation / conversion helpers
// ============================================================================
function ean13Check(digits) {
let sum = 0;
for (let i = 0; i < 12; i++)
sum += Number(digits[i]) * (i % 2 === 0 ? 1 : 3);
return (10 - (sum % 10)) % 10;
}
const ean13Validate = async (args) => {
const code = String(args[0] ?? "").replace(/\D/g, "");
if (code.length !== 13)
return false;
return ean13Check(code) === Number(code[12]);
};
const ean13Checksum = async (args) => {
const code = String(args[0] ?? "").replace(/\D/g, "");
if (code.length < 12)
return null;
return String(ean13Check(code));
};
const upcValidate = async (args) => {
const code = String(args[0] ?? "").replace(/\D/g, "");
if (code.length !== 12)
return false;
return ean13Check("0" + code) === Number(code[11]);
};
const upcChecksum = async (args) => {
const code = String(args[0] ?? "").replace(/\D/g, "");
if (code.length < 11)
return null;
return String(ean13Check("0" + code));
};
const isbn10Validate = async (args) => {
const isbn = String(args[0] ?? "").replace(/[-\s]/g, "");
if (isbn.length !== 10)
return false;
let sum = 0;
for (let i = 0; i < 10; i++) {
const c = isbn[i];
const val = c === "X" || c === "x" ? 10 : Number(c);
if (isNaN(val))
return false;
sum += val * (10 - i);
}
return sum % 11 === 0;
};
const isbn13Validate = async (args) => {
const code = String(args[0] ?? "").replace(/\D/g, "");
if (code.length !== 13)
return false;
return ean13Check(code) === Number(code[12]);
};
const isbn10to13 = async (args) => {
const isbn = String(args[0] ?? "").replace(/[-\s]/g, "");
if (isbn.length !== 10)
return null;
const base = "978" + isbn.substring(0, 9);
return base + String(ean13Check(base));
};
const isbn13to10 = async (args) => {
const isbn = String(args[0] ?? "").replace(/[-\s]/g, "");
if (isbn.length !== 13 || !isbn.startsWith("978"))
return null;
const base = isbn.substring(3, 12);
let sum = 0;
for (let i = 0; i < 9; i++)
sum += Number(base[i]) * (10 - i);
const check = (11 - (sum % 11)) % 11;
return base + (check === 10 ? "X" : String(check));
};
function luhnCheck(num) {
let sum = 0;
let alt = false;
for (let i = num.length - 1; i >= 0; i--) {
let n = Number(num[i]);
if (alt) {
n *= 2;
if (n > 9)
n -= 9;
}
sum += n;
alt = !alt;
}
return sum % 10 === 0;
}
const luhn = async (args) => {
const num = String(args[0] ?? "").replace(/\D/g, "");
return luhnCheck(num);
};
const luhnGenerate = async (args) => {
const num = String(args[0] ?? "").replace(/\D/g, "");
for (let d = 0; d <= 9; d++) {
if (luhnCheck(num + String(d)))
return num + String(d);
}
return num + "0";
};
// ============================================================================
// Exports: functions map
// ============================================================================
export const BarcodeFunctions = {
qrGenerate,
qrToFile,
qrToSvg,
qrToTerminal,
ean13Validate,
ean13Checksum,
upcValidate,
upcChecksum,
isbn10Validate,
isbn13Validate,
isbn10to13,
isbn13to10,
luhn,
luhnGenerate,
};
// ── Shared parameter descriptors ────────────────────────────────────────
const qrTextParam = {
name: "text",
title: "Text",
description: "The string to encode into the QR code. URLs, vCards, and arbitrary text are supported.",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "https://example.com",
};
const qrOptionsParam = {
name: "options",
title: "Options",
description: "Optional QR render settings: `scale` (pixels per module), `margin` (quiet zone modules), `errorCorrectionLevel` ('L' | 'M' | 'Q' | 'H'), and `color: {dark, light}`.",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
placeholder: '{"scale": 10, "errorCorrectionLevel": "M"}',
};
const codeStringParam = {
name: "code",
title: "Code",
description: "The barcode digits (any non-digit characters are stripped before validation).",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "4006381333931",
};
const isbnParam = {
name: "isbn",
title: "ISBN",
description: "ISBN string (dashes and spaces are removed automatically).",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "978-0-306-40615-7",
};
// ============================================================================
// Exports: function metadata
// ============================================================================
export const BarcodeFunctionMetadata = {
qrGenerate: {
title: "Generate QR code (PNG data URL)",
summary: "Encode text as a QR code and return a PNG data URL",
description: "Encodes the input text as a QR code matrix and renders it as a base64 `data:image/png;base64,...` string. Pure JavaScript implementation — supports QR versions 1–10 with error correction levels L/M/Q/H.",
group: "qr",
action: "read",
icon: "qr-code",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "qr", "encode", "image"],
parameters: [qrTextParam, qrOptionsParam],
returnType: "string",
returnDescription: "`data:image/png;base64,...` URL encoding the QR code.",
errors: {
data_too_long: "Input exceeds QR version 10 capacity.",
},
examples: [
{
title: "Encode a URL",
code: 'barcode.qrGenerate "https://example.com"',
},
],
example: 'barcode.qrGenerate "https://example.com"',
},
qrToFile: {
title: "Generate QR code to SVG file",
summary: "Write a QR code as an SVG file",
description: "Encodes the input text and writes the resulting QR code to disk as a scalable SVG.",
group: "qr",
action: "write",
icon: "file-image",
capability: "write",
sideEffects: ["file_write"],
idempotent: false,
since: "1.0.0",
tags: ["barcode", "qr", "svg", "file"],
parameters: [
qrTextParam,
{
name: "filePath",
title: "Output path",
description: "Filesystem path for the resulting SVG file.",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "./qr.svg",
},
qrOptionsParam,
],
returnType: "string",
returnDescription: "Path to the written SVG file.",
errors: {
data_too_long: "Input exceeds QR version 10 capacity.",
write_failed: "Output file could not be written.",
},
examples: [
{
title: "Save a QR for a URL",
code: 'barcode.qrToFile "https://example.com" "./qr.svg"',
},
],
example: 'barcode.qrToFile "https://example.com" "./qr.svg"',
},
qrToSvg: {
title: "Generate QR code as SVG",
summary: "Return a QR code as an SVG string",
description: "Encodes the input text as a QR code and returns it as an inline SVG string.",
group: "qr",
action: "read",
icon: "code",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "qr", "svg"],
parameters: [qrTextParam, qrOptionsParam],
returnType: "string",
returnDescription: "SVG markup containing the QR code.",
errors: {
data_too_long: "Input exceeds QR version 10 capacity.",
},
examples: [
{
title: "Get inline SVG",
code: 'barcode.qrToSvg "hello"',
},
],
example: 'barcode.qrToSvg "hello"',
},
qrToTerminal: {
title: "Generate QR code for terminal",
summary: "Render a QR code using Unicode block characters",
description: "Encodes the input text and renders the QR using half-block Unicode characters so it is directly scannable from a terminal.",
group: "qr",
action: "read",
icon: "terminal",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "qr", "terminal", "text"],
parameters: [qrTextParam],
returnType: "string",
returnDescription: "Multi-line string suitable for printing to a monospace terminal.",
errors: {
data_too_long: "Input exceeds QR version 10 capacity.",
},
examples: [
{
title: "Print a QR in the console",
code: 'barcode.qrToTerminal "hello"',
},
],
example: 'barcode.qrToTerminal "hello"',
},
ean13Validate: {
title: "Validate EAN-13",
summary: "Verify an EAN-13 barcode check digit",
description: "Returns `true` if the 13-digit EAN code has a valid check digit.",
group: "linear",
action: "read",
icon: "scan-barcode",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "ean", "validate"],
parameters: [codeStringParam],
returnType: "boolean",
returnDescription: "`true` when the check digit is correct.",
errors: {},
examples: [
{
title: "Check an EAN-13",
code: 'barcode.ean13Validate "4006381333931"',
},
],
example: 'barcode.ean13Validate "4006381333931"',
},
ean13Checksum: {
title: "EAN-13 check digit",
summary: "Compute the EAN-13 check digit for a 12-digit base",
description: "Returns the check digit for a 12-digit EAN-13 base code, or `null` if fewer than 12 digits are supplied.",
group: "linear",
action: "read",
icon: "hash",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "ean", "checksum"],
parameters: [
{
...codeStringParam,
description: "The 12 leading digits of an EAN-13 code (without the check digit).",
placeholder: "400638133393",
},
],
returnType: "string",
returnDescription: "Single-digit string, or `null` if input is too short.",
errors: {},
examples: [
{
title: "Compute check digit",
code: 'barcode.ean13Checksum "400638133393"',
},
],
example: 'barcode.ean13Checksum "400638133393"',
},
upcValidate: {
title: "Validate UPC-A",
summary: "Verify a UPC-A barcode check digit",
description: "Returns `true` if the 12-digit UPC-A code has a valid check digit.",
group: "linear",
action: "read",
icon: "scan-barcode",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "upc", "validate"],
parameters: [
{
...codeStringParam,
description: "The 12-digit UPC-A code.",
placeholder: "012345678905",
},
],
returnType: "boolean",
returnDescription: "`true` when the check digit is correct.",
errors: {},
examples: [
{
title: "Check a UPC-A",
code: 'barcode.upcValidate "012345678905"',
},
],
example: 'barcode.upcValidate "012345678905"',
},
upcChecksum: {
title: "UPC-A check digit",
summary: "Compute the UPC-A check digit for an 11-digit base",
description: "Returns the check digit for an 11-digit UPC-A base code, or `null` if fewer than 11 digits are supplied.",
group: "linear",
action: "read",
icon: "hash",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "upc", "checksum"],
parameters: [
{
...codeStringParam,
description: "The 11 leading digits of a UPC-A code.",
placeholder: "01234567890",
},
],
returnType: "string",
returnDescription: "Single-digit string, or `null` if input is too short.",
errors: {},
examples: [
{
title: "Compute check digit",
code: 'barcode.upcChecksum "01234567890"',
},
],
example: 'barcode.upcChecksum "01234567890"',
},
isbn10Validate: {
title: "Validate ISBN-10",
summary: "Verify an ISBN-10 check digit",
description: "Returns `true` if the 10-character ISBN has a valid check digit. Terminal 'X' is treated as 10.",
group: "isbn",
action: "read",
icon: "book",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "isbn", "validate"],
parameters: [{ ...isbnParam, placeholder: "0-306-40615-2" }],
returnType: "boolean",
returnDescription: "`true` when the check digit is correct.",
errors: {},
examples: [
{
title: "Check an ISBN-10",
code: 'barcode.isbn10Validate "0-306-40615-2"',
},
],
example: 'barcode.isbn10Validate "0-306-40615-2"',
},
isbn13Validate: {
title: "Validate ISBN-13",
summary: "Verify an ISBN-13 check digit",
description: "Returns `true` if the 13-digit ISBN has a valid check digit (same rules as EAN-13).",
group: "isbn",
action: "read",
icon: "book",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "isbn", "validate"],
parameters: [isbnParam],
returnType: "boolean",
returnDescription: "`true` when the check digit is correct.",
errors: {},
examples: [
{
title: "Check an ISBN-13",
code: 'barcode.isbn13Validate "978-0-306-40615-7"',
},
],
example: 'barcode.isbn13Validate "978-0-306-40615-7"',
},
isbn10to13: {
title: "Convert ISBN-10 to ISBN-13",
summary: "Upgrade an ISBN-10 to ISBN-13",
description: "Prepends the `978` prefix and computes a new check digit to produce an ISBN-13. Returns `null` if the input is not 10 digits.",
group: "isbn",
action: "read",
icon: "arrow-right",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "isbn", "convert"],
parameters: [{ ...isbnParam, placeholder: "0306406152" }],
returnType: "string",
returnDescription: "The equivalent ISBN-13, or `null` if the input is invalid.",
errors: {},
examples: [
{
title: "Upgrade ISBN-10",
code: 'barcode.isbn10to13 "0306406152"',
},
],
example: 'barcode.isbn10to13 "0306406152"',
},
isbn13to10: {
title: "Convert ISBN-13 to ISBN-10",
summary: "Downgrade a `978`-prefixed ISBN-13 to ISBN-10",
description: "Drops the `978` prefix and recomputes the ISBN-10 check digit. Returns `null` if the input is not a `978`-prefixed ISBN-13.",
group: "isbn",
action: "read",
icon: "arrow-left",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "isbn", "convert"],
parameters: [isbnParam],
returnType: "string",
returnDescription: "The equivalent ISBN-10, or `null` if the ISBN-13 is not convertible.",
errors: {},
examples: [
{
title: "Downgrade ISBN-13",
code: 'barcode.isbn13to10 "9780306406157"',
},
],
example: 'barcode.isbn13to10 "9780306406157"',
},
luhn: {
title: "Validate Luhn checksum",
summary: "Check a number against the Luhn mod-10 algorithm",
description: "Validates a numeric string using the Luhn algorithm — the standard check used by credit card numbers, IMEI, and other identifiers.",
group: "luhn",
action: "read",
icon: "credit-card",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "luhn", "validate", "credit-card"],
parameters: [
{
name: "number",
title: "Number",
description: "Digit string to validate (non-digits are stripped).",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "4539578763621486",
},
],
returnType: "boolean",
returnDescription: "`true` when the Luhn check passes.",
errors: {},
examples: [
{
title: "Validate a credit card number",
code: 'barcode.luhn "4539578763621486"',
},
],
example: 'barcode.luhn "4539578763621486"',
},
luhnGenerate: {
title: "Generate Luhn check digit",
summary: "Compute the Luhn check digit for a numeric base",
description: "Finds the check digit that makes the resulting number valid under the Luhn mod-10 algorithm and returns the full number (base + check digit).",
group: "luhn",
action: "read",
icon: "hash",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["barcode", "luhn", "generate"],
parameters: [
{
name: "number",
title: "Base number",
description: "Digit string without its final check digit.",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "453957876362148",
},
],
returnType: "string",
returnDescription: "Input with a valid Luhn check digit appended.",
errors: {},
examples: [
{
title: "Compute the check digit",
code: 'barcode.luhnGenerate "453957876362148"',
},
],
example: 'barcode.luhnGenerate "453957876362148"',
},
};
// ============================================================================
// Exports: module metadata
// ============================================================================
export const BarcodeModuleMetadata = {
slug: "barcode",
title: "Barcode",
summary: "QR code generation and EAN/UPC/ISBN/Luhn validators",
description: "Pure-JS QR code generator (versions 1–10, EC levels L/M/Q/H, PNG data URL or SVG output) plus validators and converters for common linear barcode formats: EAN-13, UPC-A, ISBN-10/13, and the Luhn checksum used by credit card numbers.\n\nNo network dependencies — everything runs locally.",
category: "utility",
icon: "icon.svg",
color: "#0ea5e9",
version: "0.2.0",
docsUrl: "https://docs.robinpath.com/modules/barcode",
status: "stable",
requires: [],
minNodeVersion: "18.0.0",
credentialsType: null,
operationGroups: {
qr: {
title: "QR codes",
description: "Encode text as QR codes (PNG, SVG, or terminal output).",
order: 1,
},
linear: {
title: "EAN / UPC",
description: "Linear barcode validation and check-digit computation.",
order: 2,
},
isbn: {
title: "ISBN",
description: "Validate and convert ISBN-10 / ISBN-13 identifiers.",
order: 3,
},
luhn: {
title: "Luhn",
description: "Luhn mod-10 checksum validation and generation.",
order: 4,
},
},
methods: Object.keys(BarcodeFunctions),
};
//# sourceMappingURL=barcode.js.map
{"version":3,"file":"barcode.js","sourceRoot":"","sources":["../src/barcode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAUxC,0EAA0E;AAC1E,MAAM,KAAK,GAA0B,EAAE,CAAC;AAExC,MAAM,UAAU,gBAAgB,CAAC,CAAa;IAC5C,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,kCAAkC;AAClC,2DAA2D;AAC3D,kDAAkD;AAClD,+EAA+E;AAE/E,MAAM,SAAS,GAA2B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAErE,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,MAAM,cAAc,GAAG,+CAA+C,CAAC;AAEvE,MAAM,eAAe,GAA6B;IAChD,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAC5B,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;IAChC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;CACzB,CAAC;AAWF,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAExE,4BAA4B;AAC5B,MAAM,gBAAgB,GAAiB;IACrC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAChG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAChG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACpG,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAA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"}
import type { ModuleAdapter } from "@robinpath/core";
declare const BarcodeModule: ModuleAdapter;
export default BarcodeModule;
export { BarcodeModule };
export { BarcodeFunctions, BarcodeFunctionMetadata, BarcodeModuleMetadata, configureBarcode, } from "./barcode.js";
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAWrD,QAAA,MAAM,aAAa,EAAE,aASQ,CAAC;AAE9B,eAAe,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
import { BarcodeFunctions, BarcodeFunctionMetadata, BarcodeModuleMetadata, configureBarcode, } from "./barcode.js";
// `credentialTypes` and `configure` are fields on newer `@robinpath/core`
// `ModuleAdapter` releases; cast through `unknown` so this file compiles
// against older installed cores too.
const BarcodeModule = {
name: "barcode",
functions: BarcodeFunctions,
functionMetadata: BarcodeFunctionMetadata,
moduleMetadata: BarcodeModuleMetadata,
// No credentials — pure local QR/barcode utility.
credentialTypes: [],
configure: configureBarcode,
global: false,
};
export default BarcodeModule;
export { BarcodeModule };
export { BarcodeFunctions, BarcodeFunctionMetadata, BarcodeModuleMetadata, configureBarcode, } from "./barcode.js";
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,0EAA0E;AAC1E,yEAAyE;AACzE,qCAAqC;AACrC,MAAM,aAAa,GAAkB;IACnC,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,gBAAgB;IAC3B,gBAAgB,EAAE,uBAAuE;IACzF,cAAc,EAAE,qBAAmE;IACnF,kDAAkD;IAClD,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE,gBAAgB;IAC3B,MAAM,EAAE,KAAK;CACc,CAAC;AAE9B,eAAe,aAAa,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
+9
-4
{
"name": "@robinpath/barcode",
"version": "0.1.5",
"version": "0.3.0",
"publishConfig": {

@@ -24,6 +24,6 @@ "access": "public"

"peerDependencies": {
"@robinpath/core": ">=0.20.0"
"@robinpath/core": ">=0.40.0"
},
"devDependencies": {
"@robinpath/core": "^0.30.1",
"@robinpath/core": "^0.40.0",
"tsx": "^4.19.0",

@@ -42,4 +42,9 @@ "typescript": "^5.6.0"

"auth": "none",
"functionCount": 14
"functionCount": 14,
"language": "nodejs",
"platforms": [
"cloud",
"cli"
]
}
}

@@ -22,3 +22,3 @@ # @robinpath/barcode

```bash
npm install @robinpath/barcode
robinpath add @robinpath/barcode
```

@@ -25,0 +25,0 @@