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

@etomon/encode-tools

Package Overview
Dependencies
Maintainers
2
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@etomon/encode-tools

This package aggregates different libraries for encoding, serializing, generating ids and hashing things, exposing a common interface.

  • 2.0.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
decreased by-66.67%
Maintainers
2
Weekly downloads
 
Created
Source

Etomon Encode Tools

NPM

Build Status

This package aggregates different libraries for encoding, serializing, compressing, generating ids and hashing things, exposing a common interface.

Many other packages serve the same purpose, but our objective is to ensure a consistent experience in both node.js and the browser and standardize the api so functions work the same way across different underlying libraries.

Examples

Encoding a Buffer as base64url

  let enc = new EncodeTools();
  let buf = Buffer.from('hello world', 'utf8');
  let newBuf = enc.encodeBuffer(buf, BinaryEncoding.base64url);
  console.log(newBuf.toString('utf8'));

Hashing an object wth xxhash

let enc = new EncodeTools();
let obj = { foo: 'bar' };
let newBuf = await enc.hashObject(obj, HashAlgorithm.xxhash64);
console.log(newBuf.toString('utf8'));

Serializing an object wth msgpack

let enc = new EncodeTools();
let obj = { foo: 'bar' };
let newBuf = await enc.serializeObject(obj, SerializationFormat.msgpack);
console.log(newBuf.toString('base64'));

Generating a base64-encoded UUID v4

let enc = new EncodeTools();
let newBuf = await enc.uniqueId(IDFormat.uuidv4);
console.log(newBuf.toString('base64'));

Compressing a buffer with lzma

let enc = new EncodeTools();
let newBuf = await enc.compress(Buffer.from('hi', 'utf8'), CompressionFormat.lzma);
console.log(newBuf.toString('base64'));

Resizing a png image

let enc = new EncodeTools();
let imageBuf = await (await new Promise((resolve, reject) => {
  new (Jimp)(500, 500, '#FFFFFF', (err: unknown, image: any) => {
    if (err) reject(err);
    else resolve(image);
  });
})).getBufferAsync('image/png');

let myResizedPng = await enc.resizeImage(imageBuf, { width: 250 }, ImageFormat.png);

Algorithms

Below are a list of supported algorithms, their backing library, and their support in the browser.

Binary Encoding

NameBrowser?Underlying Package
nodeBufferbuffer
base64(built-in)
base64url(built-in)
hex(built-in)
base32base32.js
hashidshashids
arrayBuffer(built-in)

Hashing

NameBrowser?Underlying Package
crc32hash-wasm
xxhash3xxhash-addon
xxhash64xxhash-addon/hash-wasm
xxhash32xxhash-addon/hash-wasm
md5hash-wasm
sha1hash-wasm
sha2hash-wasm
sha3hash-wasm
bcrypthash-wasm

ID Generation

NameBrowser?Underlying Package
uuidv4uuid
uuidv2uuid
uuidv4stringuuid
uuidv2stringuuid
objectIdbson-ext/bson
nanoidnanoid
timestamp(built in)

Serialization

NameBrowser?Underlying Package
json(built in)
msgpack@msgpack/msgpack
bsonbson-ext/bson

Compression

NameBrowser?Underlying Package
lzmalzma/lzma-native

Image Manipulation

NameBrowser?Underlying Package
pngjimp/sharp
jpegjimp/sharp
webpsharp
avifsharp
tiffsharp
gif*sharp
svgsharp

Requirements

Etomon Encode Tools runs in the browser and in node.js, with two exceptions. The bson-ext, lzma-native and xxhash-addon packages have native bindings, and so cannot run in the browser. For browser compatibility, the EncodeTools class uses the pure javascript bson, lzma and hash-wsam packages to provide equivalent support albeit at the cost of performance. Additionally, hash-wsam lacks support for xxhash3.

The EncodeToolsNative class will use the native packages bson-ext, lzma-native and xxhash-addon (and any future native packages). bson-ext, lzma-native and xxhash-addon are listed as peer dependencies, so they must be installed manually with npm install --no-save bson-ext xxhash-addon lzma-native.

The gif image format in EncodeToolsNative requires libvips compiled with ImageMagick support (as described here). I haven't had time to re-build libvips on my machine, so there are no mocha tests for the gif format.

Usage

Please see the documentation located at https://etomonusa.github.io/encode-tools/

Tests

Tests are written in Mocha, to run use npm test.

License

Etomon Encode Tools is licensed under the GNU LGPL-3.0, a copy of which can be found at https://www.gnu.org/licenses/.

FAQs

Package last updated on 27 May 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