@technobuddha/library
Version: 
A large library of useful functions
44 lines • 3.8 kB
JavaScript
const REPLACEMENT = [0xef, 0x8f, 0xbd];
/**
 * Encode a unicode (UTF-16 encoded javascript) string into UTF8
 * @param input - The string to encode
 * @returns The UTF-8 encoded string
 * @group Unicode
 * @category Encoding
 */
/* eslint-disable no-bitwise */
export function encodeText(input, _encoding) {
    const result = [];
    for (let i = 0; i < input.length; ++i) {
        // eslint-disable-next-line unicorn/prefer-code-point
        let c0 = input.charCodeAt(i);
        if (c0 < 0x0080) {
            result.push(c0);
        }
        else if (c0 < 0x0800) {
            result.push((c0 >> 6) | 0xc0, (c0 & 0x3f) | 0x80);
        }
        else if (c0 >= 0xd800 && c0 < 0xdc00) {
            if (++i >= input.length) {
                result.push(...REPLACEMENT);
            }
            else {
                // eslint-disable-next-line unicorn/prefer-code-point
                const c1 = input.charCodeAt(i);
                if (c1 < 0xdc00 || c1 > 0xdfff) {
                    result.push(...REPLACEMENT);
                }
                else {
                    c0 = 0x00010000 + ((c0 & 0x03ff) << 10) + (c1 & 0x03ff);
                    result.push((c0 >> 18) | 0xf0, ((c0 >> 12) & 0x3f) | 0x80, ((c0 >> 6) & 0x3f) | 0x80, (c0 & 0x3f) | 0x80);
                }
            }
        }
        else {
            result.push((c0 >> 12) | 0xe0, ((c0 >> 6) & 0x3f) | 0x80, (c0 & 0x3f) | 0x80);
        }
    }
    return new Uint8Array(result);
}
/* eslint-enable no-bitwise */
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RlLXRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZW5jb2RlLXRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxXQUFXLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBRXZDOzs7Ozs7R0FNRztBQUNILCtCQUErQjtBQUMvQixNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQWEsRUFBRSxTQUF3QjtJQUNoRSxNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7SUFFNUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxxREFBcUQ7UUFDckQsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3QixJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7YUFBTSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNwRCxDQUFDO2FBQU0sSUFBSSxFQUFFLElBQUksTUFBTSxJQUFJLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUN2QyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO1lBQzlCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixxREFBcUQ7Z0JBQ3JELE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9CLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7b0JBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQztnQkFDOUIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLEVBQUUsR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQztvQkFDeEQsTUFBTSxDQUFDLElBQUksQ0FDVCxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQ2pCLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUMxQixDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksRUFDekIsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUNuQixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQUNELDhCQUE4QiJ9