@robinpath/barcode
Advanced tools
| /** | ||
| * 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"} |
+1406
| /** | ||
| * 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" | ||
| ] | ||
| } | ||
| } |
+1
-1
@@ -22,3 +22,3 @@ # @robinpath/barcode | ||
| ```bash | ||
| npm install @robinpath/barcode | ||
| robinpath add @robinpath/barcode | ||
| ``` | ||
@@ -25,0 +25,0 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
112131
3070.23%10
400%1447
Infinity%1
-50%2
100%