An error-correction implementation for deno.
Reed-Solomon error correction is used in 2D barcodes, CDs and so on. See ZXing’s implementation
import { GaloisField, ReedSolomonEncoder, ReedSolomonDecoder } from "https://deno.land/x/reed_solomon@v2.0.0/mod.ts";
// QR CODE
// new GaloisField(0x11d, 0x100, 1);
// MAXICODE
// new GaloisField( 0x43, 0x40, 2);
// AZTEC
// new GaloisField( 0x13, 0x10, 2);
// new GaloisField( 0x43, 0x40, 2);
// new GaloisField( 0x12d, 0x100, 2);
// new GaloisField( 0x409, 0x400, 2);
// new GaloisField(0x1069, 0x1000, 2);
// DATA MATRIX
// new GaloisField(0x12d, 0x100, 2);
// EXAMPLE
const field = new GaloisField(0x10, 0x13, 2);
const array = [8, 6, 7, 5, 3, 0, 9];
const BLOCKS_LENGTH = 15;
const BLOCKS_DATA = array.length;
const BLOCKS_ECC = BLOCKS_LENGTH - BLOCKS_DATA;
const rse = new ReedSolomonEncoder(field, BLOCKS_ECC);
const encoded = rse.encode(array);
encoded[0] = 1;
encoded[1] = 1;
encoded[2] = 3
console.log('\nBefore Restoration:');;
console.log(encoded);
ReedSolomonDecoder(field, encoded, BLOCKS_ECC);
console.log('\nAfter Restoration:');
console.log(encoded);