@technobuddha/library
Version:
A large library of useful functions
46 lines • 3.01 kB
JavaScript
import { encodeBase64 } from "./encode-base64.js";
import { encodeBase64Url } from "./encode-base64-url.js";
import { empty } from "./unicode.js";
/**
* Encode an {@link BinaryObject} into a string
*
* The string can be in `base64`, `base64url`, `hex`, or `binary` format.
*
* - `base64`: The binary object is encoded using {@link encodeBase64}
* - `base64url`: The binary object is encoded using {@link encodeBase64Url}
* - `hex`: each byte in the binary object is converted to a 2-digit hexadecimal number.
* - `binary`: each byte in the binary object is converted to a 8-bit character.
* @param input - binary object
* @param encoding - The encoding to use
* @returns Encoded string
* @example
* ```typescript
* encodeBinary(Uint8Array([72, 101, 108, 108, 111]), 'base64'); // 'SGVsbG8='
* encodeBinary(Uint8Array([72, 101, 108, 108, 111]), 'base64url'); // 'SGVsbG8'
* encodeBinary(Uint8Array([72, 101, 108, 108, 111]), 'hex'); // '48656c6c6f'
* encodeBinary(Uint8Array([72, 101, 108, 108, 111]), 'binary'); // 'Hello'
* ```
* @remarks A string encoded in `binary` format may not be "well-formed"
* @see [isWellFormed](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/isWellFormed)
* @group Binary
* @category Encoding
*/
export function encodeBinary(input, encoding) {
switch (encoding) {
case 'base64': {
return encodeBase64(input);
}
case 'base64url': {
return encodeBase64Url(input);
}
case 'hex': {
return [...input].map((byte) => byte.toString(16).padStart(2, '0')).join(empty);
}
case 'binary': {
// eslint-disable-next-line unicorn/prefer-code-point
return String.fromCharCode(...input);
}
// no default
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RlLWJpbmFyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbmNvZGUtYmluYXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEtBQWlCLEVBQUUsUUFBd0I7SUFDdEUsUUFBUSxRQUFRLEVBQUUsQ0FBQztRQUNqQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDZCxPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDWCxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBRUQsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2QscURBQXFEO1lBQ3JELE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxhQUFhO0lBQ2YsQ0FBQztBQUNILENBQUMifQ==