LZMA Decoder (AssemblyScript)
This is an experimental lzma decoder written in AssemblyScript
Example
example code
var memory = new WebAssembly.Memory({ initial: 160 })
...
var lzma = module.instance.exports
var inputData = new Uint8Array(await (await fetch('PATH/TO/COMPRESSED_FILE.lzma')).arrayBuffer())
const inputDataPtr = lzma.newU8Array(inputData.length)
const AS_ARRAY_OFFSET = 24
const u8Array = new Uint8Array(
memory.buffer,
inputDataPtr + AS_ARRAY_OFFSET,
inputData.length
)
u8Array.set(inputData)
class DecodeResult {
constructor(ptr, memory) {
const result = new Uint32Array(memory.buffer, ptr, 4)
const [success, error, unpackSize, dataPtr] = result;
this.success = success
this.error = error
if (this.success) {
this.unpackSize = unpackSize
this.data = new Uint8Array(
memory.buffer,
dataPtr + AS_ARRAY_OFFSET,
unpackSize
)
}
}
}
const resultPtr = lzma.decode(inputDataPtr)
const result = new DecodeResult(resultPtr, memory)
console.log(result.data)
How to make lzma file
Download lzma sdk and use following command
lzma e input_filename.extension output_filename.lzma
Developed by Nidin Vinayakan
License
MIT