base64-u8array-arraybuffer
Version:
A simple, lightweight, and efficient JavaScript library to manage encoding/decoding between base64 data, Uint8Arrays, and ArrayBuffers
91 lines (66 loc) ⢠3.36 kB
Markdown
//travis-ci.org/MrPropre/base64-u8array-arraybuffer.svg)](https://travis-ci.org/MrPropre/base64-u8array-arraybuffer)
[](https://www.npmjs.com/package/base64-u8array-arraybuffer)
[](https://coveralls.io/github/MrPropre/base64-u8array-arraybuffer?branch=master)
š¦ A simple, lightweight, and efficient JavaScript library to manage encoding and decoding between base64 data, Uint8Arrays, and ArrayBuffers. This library perfectly works with Node.js and the browser.
- **< 900 bytes** gzipped!
- No dependency
- Accepts base64url and replace non-url compatible chars with base64 standard chars
- Adds missing padding to base64 string
- Works even on large data
- Uses modern functions and shorter solutions
- Supports ES modules, AMD, CommonJS and IIFE
The easiest way to use base64-u8array-arraybuffer is to include the library from a CDN:
```html
<script src="https://cdn.jsdelivr.net/npm/base64-u8array-arraybuffer@1.0.3/dist/base64-u8array-arraybuffer.min.js"></script>
```
Then, in your JavaScript code:
```js
// Unpacking needed functions from the global object
const { base64ToArrayBuffer } = base64u8ArrayBuffer
const buffer = base64ToArrayBuffer('base64 string here')
```
You can also install base64-u8array-arraybuffer in your project.
```bash
npm i base64-u8array-arraybuffer
```
And then, you can import the library as ES Module:
```js
import { base64ToArrayBuffer } from 'base64-u8array-arraybuffer'
const buffer = base64ToArrayBuffer('base64 string here')
```
You can also use commonJS syntax with `require()`
Note ES Module syntax also works in modern browsers. You just need to add `type="module"` to your `<script>` tag.
```html
<script type="module" src="..."></script>
```
| Function name | Description |
| --- | --- |
| `base64ToUint8Array(base64String)` | base64 to Uint8Array |
| `uint8ArrayToBase64(uint8Array)` | Uint8Array to Base64 (Works with any TypedArray. You can use `typedArrayToBase64()` alias.) |
| `uint8ArrayToArrayBuffer(uint8Array)` | Uint8Array to ArrayBuffer (Works with any TypedArray. You can use `typedArrayToArrayBuffer()` alias.) |
| `arrayBufferToUint8Array(arrayBuffer)` | ArrayBuffer to Uint8Array |
| `base64ToArrayBuffer(base64String)` | base64 to ArrayBuffer |
| `arrayBufferToBase64(arrayBuffer)` | ArrayBuffer to base64 |
## Useful case
An example for this library would be to convert a base64url VAPID application server key into an Uint8Array to subscribe to Web Push Notifications. You can achieve this by using `base64ToUint8Array(base64String)` function.
```js
const { base64ToUint8Array } = base64u8ArrayBuffer
const applicationServerPublicKey = 'base64url public key'
async function subscribeUserToPush(registration) {
// ...
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: base64ToUint8Array(applicationServerPublicKey)
})
// ...
}
```
There are no tests for the moment.
MIT License.
[![Build Status](https: