Socket
Socket
Sign inDemoInstall

lambdafs

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

lambdafs

Efficient (de)compression package for AWS Lambda


Version published
Weekly downloads
50K
increased by7.91%
Maintainers
1
Weekly downloads
 
Created
Source

LambdaFS

lambdafs Donate

Efficient (de)compression package for AWS Lambda, supporting Brolti, Gzip and Tarballs

Install

npm install lambdafs --save-prod

CLI

This package provides a brotli CLI command to conveniently compress files and/or folders.

npx lambdafs /path/to/compress

The resulting file will be a (potentially tarballed) Brotli compressed file, with the same base name as the source.

Due to the highest compression level, it might take a while to compress large files (100MB ~ 5 minutes).

Usage

The nodejs8.10, nodejs10.x or nodejs12.x AWS Lambda runtime is required for this package to work properly.

const lambdafs = require('lambdafs');

exports.handler = async (event, context) => {
  try {
    let file = __filename; // /var/task/index.js
    let folder = __dirname; // /var/task

    // Compressing
    let compressed = {
      file: await lambdafs.deflate(file), // /tmp/index.js.gz
      folder: await lambdafs.deflate(folder), // /tmp/task.tar.gz
    };

    // Decompressing
    let decompressed = {
      file: await lambdafs.inflate(compressed.file), // /tmp/index.js
      folder: await lambdafs.inflate(compressed.folder), // /tmp/task
    };

    return context.succeed({ file, folder, compressed, decompressed });
  } catch (error) {
    return context.fail(error);
  }
};

API

deflate(path: string): Promise<string>

Compresses a file/folder with Gzip and returns the path to the compressed (tarballed) file.

The resulting file will be saved under the default temporary directory (/tmp on AWS Lambda).

Due to costly execution time on AWS Lambda, Gzip is always used to compress files.

inflate(path: string): Promise<string>

Decompresses a (tarballed) Brotli or Gzip compressed file and returns the path to the decompressed file/folder.

The resulting file(s) will be saved under the default temporary directory (/tmp on AWS Lambda).

Supported extensions are: .br, .gz, .tar, .tar.br (and .tbr), .tar.gz (and .tgz).

For tarballs, original file modes are perserved. For any other files 0700 is assumed.

Rationale

Getting large resources onto AWS Lambda can be a challenging task due to the deployment package size limit:

LimitContext
50 MBZipped, for direct uploads.
250 MBUnzipped, S3 and layers.

For this reason, it's important to achieve a very high compression ratio as well as fast decompression times.

This is where the Brotli algorithm comes in:

Brotli Benchmarks

It allows us to get the best compression ratio and fast decompression times (at the expense of a slow compression).

License

MIT

Keywords

FAQs

Package last updated on 05 Feb 2021

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