1.1.0 โ€ข Published 9 months ago

monozip v1.1.0

Weekly downloads
-
License
MIT
Repository
-
Last release
9 months ago

Monozip ๐Ÿ“ฆ

Monozip is a utility library that provides functionality to compress, encrypt, and decompress files using AES encryption ๐Ÿ”.

With a simple API, you can easily zip and encrypt a directory and later unzip and decrypt it.

Features ๐Ÿš€

  • Generate encryption keys ๐Ÿ”‘
  • Encrypt and zip folders ๐Ÿ“โžก๏ธ๐Ÿ”’๐Ÿ“ฆ
  • Unzip and decrypt zipped files ๐Ÿ“ฆ๐Ÿ”“โžก๏ธ๐Ÿ“‚

CLI Usage ๐Ÿ’ป

Monozip can be used directly from the command line. The general structure of a command is:

monozip [command] [options]

Installation ๐Ÿ’พ

To use the cli, install globally with npm:

npm install -g monozip

Usage ๐Ÿ“–

To encrypt and zip a folder:

You can specify an encryption key and an output path using the -k and --output options respectively. If not specified, a key will be generated automatically, and the output file will be saved in the current directory.

monozip encrypt ./path/to/folder

After running this command, it will print out the encryption key used (keep it safe, you will need it to decrypt ๐Ÿ”), and the path to the zipped file.

To unzip and decrypt a file:

You need to provide the encryption key and the path to the zipped file. You can also specify an output path using the -o option. If not specified, the file will be unzipped in the current directory.

monozip decrypt your-key ./path/to/file.zip

After running this command, it will print out the path to the unzipped and decrypted files.

Programmatic Usage ๐Ÿ’ก

Installation ๐Ÿ’พ

Install the library using npm:

npm install monozip

Encryption and Compression ๐Ÿ”๐Ÿ“ฆ

To encrypt and zip a folder, you can use the generateKey and encryptAndZipFolder functions. Here is an example:

import { generateKey, encryptAndZipFolder } from "monozip";

const folderPath = "downloads/myphotos";

// Generate a new encryption key
const secretKey = generateKey();

// Encrypt and zip the folder
await encryptAndZipFolder(secretKey, fixtureFolderPath);

console.info(`Encrypted with key ${secretKey} and zipped folder ${folderPath}`);
// Encrypted with key e96c9074fa... and zipped folder downloads/myphotos.zip. Keep the key safe!

Decompression and Decryption ๐Ÿ“‚๐Ÿ”“

To unzip and decrypt a previously encrypted and zipped file, you can use the unzipAndDecryptZip function. Here is an example:

import { generateKey, unzipAndDecryptZip } from "monozip";

// Assume the encryption key is known
const secretKey = "my-secret-key";

// Unzip and decrypt the zipped file
const zipPath = "downloads/myphotos.zip";
const outputPath = await unzipAndDecryptZip(secretKey, zipPath, {
  outputPath: "downloads/myphotos-decrypted",
});

console.info(`Unzipped and decrypted ${outputPath}`);
// Unzipped and decrypted downloads/myphotos-decrypted

Testing ๐Ÿงช

The project uses Vitest for testing.

You can run the tests with:

npm test

Contributing ๐Ÿค

We welcome contributions! Please see here for details on how to contribute.

License ๐Ÿ“„

This project is open source, licensed under the MIT License. See LICENSE for details.