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

base64-encoding

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

base64-encoding

Fast Base64 encoding and decoding powered by WebAssembly.

  • 0.15.0-alpha.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
162
increased by1.25%
Maintainers
1
Weekly downloads
 
Created
Source

Base64 Encoding

Fast Base64 encoding and decoding powered by WebAssembly.

This library is modeled after the WHATWG TextEncoder and TextDecoder API, providing a Base64Encoder and Base64Decoder class.

The C implementation was chosen based on benchmarks provided by gaspardpetit/base64.

Usage

const encoder = await new Base64Encoder().optimize();
encoder.encode(new TextEncoder().encode('foobar'))   // => Zm9vYmFy

const decoder = await new Base64Decoder().optimize();
new TextDecoder().decode(decoder.decode("Zm9vYmFy")) // => foobar

For one-shot usage, you can use the JS implementation without instantiating a WASM instance:

new Base64Encoder().encode(new TextEncoder().encode('foobar'))   // => Zm9vYmFy
new TextDecoder().decode(new Base64Decoder().decode("Zm9vYmFy")) // => foobar

URL-friendly Encoding

This implementation also supports a URL-friendly variant of Base64, where

  • all '+' are mapped to '-'
  • all '/' are mapped to '_'
  • the padding characters '=' are omitted

To use this variant, provide the url setting when creating the encoder.

const encoder = await new Base64Encoder({ url: true }).optimize();

For decoding URL-friendly Base64 no extra steps are required.

Performance

TBD

Currently only the encoder provides a significant performance improvement over the pure JS implementation.

Distribution

This module is published on npm under the base64-encoding tag. The package contains the following:

  • The root folder (Browse) exports ES modules in ES2018 syntax. All internal module paths are fully qualified, so they can be imported in Deno or the browser directly:

    import * as b64 from 'https://unpkg.com/base64-encoding?module';
    
  • The module folder (Browse) contains a rolled-up version of the above.

    import * as b64 from 'https://unpkg.com/base64-encoding/module';
    
  • The cjs folder (Browse) exports CommonJS modules in ES2015 syntax for use in node.

    require('base64-encoding')
    
  • The src folder (Browse) contains the TypeScript source code.

The root and cjs folder include type declarations and source maps, so that IntelliSense works out of the box in VSCode.

The package.json properly sets the main, module, type and exports keys, so that package.json-based tools will pick the right version.

License

TBD

Currently the C code is licensed under an ancient Apache 1.0 license that comes with some pretty old-school requirements, such as including the following in all promotional materials:

This product includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/).

It is very likely that ap_base64.c has been shipped under a Apache-2.0 license somewhere. Once I locate it, this requirement will go away.

TODO

  • Figure out why decoding is slow
  • License

Keywords

FAQs

Package last updated on 05 Apr 2022

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