ostrio:base64

v1.2.3Published 7 years ago

This package has not had recent updates. Please investigate it's current state before committing to using it in your project.

Isomorphic Base64 implementation

Highly efficient isomorphic implementation of Base64 string encoding and decoding. With the support of Unicode, and non-blocking execution via WebWorker. This library has 100% tests coverage, including speed tests.

Installation

meteor add ostrio:base64

ES6 Import

1import { Base64 } from 'meteor/ostrio:base64';

Native code support

Native code is disabled by default for both NodeJS and browser. Native code represented as atob, btoa (with extension to support Unicode) in a browser, and Buffer at NodeJS. Both versions of new Buffer via Constructor and Buffer.from is supported for node >= 7.*.

Native code support is disabled - as tests indicate up to 3x slower execution than JS-implementation. To run tests - clone this repository and run meteor test-packages ./. To enable native code - use constructor in next form:

1// Note - first "b" (lowercase)
2import { base64 } from 'meteor/ostrio:base64';
3const nativeB64 = new base64(true, true);

Non-blocking via WebWorker

WebWorker is enabled by default, for all encode/decode calls with the callback. WebWorker is used only if supported by a browser, otherwise, it will fall-back to the main thread. In the real-world application WebWorker, usage will gain you extra FPS, and UI will act more smoothly.

API

Base64.encode(plainString [, callback])

1Base64.encode('My Plain String'); // Returns 'TXkgUGxhaW4gU3RyaW5n'
2
3// Async, non-blocking via WebWorker (if supported) at browser:
4Base64.encode('My Plain String', (error, b64) => {
5  // b64 === 'TXkgUGxhaW4gU3RyaW5n'
6});

Base64.decode(base64EncodedString [, callback])

1Base64.decode('TXkgUGxhaW4gU3RyaW5n'); // Returns 'My Plain String'
2
3// Async, non-blocking via WebWorker (if supported) at browser:
4Base64.decode('TXkgUGxhaW4gU3RyaW5n', (error, str) => {
5  // str === 'My Plain String'
6});

Constructor new base64([allowWebWorker, useNative])

1// Note - first "b" (lowercase)
2import { base64 } from 'meteor/ostrio:base64';
3// Native with WebWorker
4const nativeB64 = new base64(true, true);
5
6// Native without WebWorker
7const mtNativeB64 = new base64(false, true);
8
9// Use main thread, no WebWorker
10const mtB64 = new base64(false);

100% Tests coverage

To run built-in tests clone this repository and run:

meteor test-packages ./

Tests include synchronous, asynchronous and speed tests for Browser and NodeJS, for cases with/out the Native code and/or WebWoker usage.