Skip to content

dex4er/js-nrv2e-decompress

Repository files navigation

nrv2e-decompress

GitHub CI Trunk Check Coverage Status npm

Decompress with NRV2E algorithm.

Requirements

This is ESM module which requires ES2020 and Node >= 14.

Installation

npm install nrv2e-decompress

Additionally for Typescript:

npm install -D @types/node

Usage

import nrv2eDecompress from "nrv2e-decompress"

nrv2eDecompress

nrv2eDecompress(input, output, bufferBits)

Arguments:

  • input is a Buffer with compressed data
  • output is a Buffer from decompressed data and it have to be pre-allocated, ie. with Buffer.alloc method
  • bufferBits is a number of control buffer bits: 8, 16 or 32 (optional: default: 8)

Example:

// Polish vehicle registration certificate scanned from Aztec 2D barcode
const b64Input = "BgQAANtYAA..."
const binInput = Buffer.from(b64Input, "base64")

// 4 first bytes in Aztec code are output length
const outputLength = binInput.readUInt32LE(0)
const utf16Output = Buffer.alloc(outputLength)
const compressedInput = binInput.slice(4)

nrv2eDecompress(compressedInput, utf16Output)

const textOutput = utf16Output.toString("utf16le")

License

Copyright (c) 2018-2024 Piotr Roszatycki piotr.roszatycki@gmail.com

This code is based on UCL data compression library:

Copyright (C) 1996-2002 Markus Franz Xaver Johannes Oberhumer All Rights Reserved.

GPL-2.0