Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@eirslett/shoeset

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@eirslett/shoeset

A 7z decompression library

  • 0.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

WARNING: This library is highly experimental, and may introduce breaking changes.

shoeset

This is a 7z archive decompressor, written in Rust. The code is designed to be portable:

  • Run natively as a binary
  • Run as WebAssembly in a web browser or Node.js

Supported decompression algorithms:

  • LZMA
  • LZMA2

Features of 7z that are not supported:

  • Archive compression
  • CRC validation
  • Other decompression algorithms

The library is called "shoeset" because that's approximately how you pronounce "7z" in Norwegian.

Usage with JavaScript/WebAssembly

Installation:

npm install @eirslett/shoeset

From Node.js:

import * as shoeset from '@eirslett/shoeset';
import fs from 'fs';

const archive = fs.readFileSync('foobar.7z');
const decompressed = shoeset.default.decompress(archive);
for (const file of decompressed.files) {
    console.log('name', file.name);
    console.log('data', file.data);
    
    // If the file is UTF-8 encoded, we can log it as a string:
    console.log(new TextDecoder().decode(file.data));
}

From the browser:

const js = import(`./node_modules/@eirslett/shoeset/shoeset.js`);

fetch('/foobar.7z').then(async response => {
    const data = await response.arrayBuffer();
    const mod = await js;

    const result = mod.decompress(new Uint8Array(data));

    for (const file of result.files) {
        console.log('name', file.name);
        console.log('data', file.data);

        // If the file is UTF-8 encoded, we can log it as a string:
        console.log(new TextDecoder().decode(file.data));
    }
});

Building

  1. Setup rust on your development machine, for example with rustup.
  2. git clone this repository
  3. Run cargo build to build the native binary, or ./build-npm.sh to build the npm package
  4. Run cargo test to run the unit tests, or ./test.sh to test the npm package

Contributing

Just send me a pull request. I cannot guarantee that I have time to review it, if there are many PRs.

FAQs

Package last updated on 12 Jul 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc