UNPKG

@technobuddha/library

Version:
46 lines 3.01 kB
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==