UNPKG

@tdengine/websocket

Version:

The websocket Node.js connector for TDengine. TDengine versions 3.3.2.0 and above are recommended to use this connector.

43 lines (42 loc) 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.appendRune = appendRune; // Numbers fundamental to the encoding. // the "error" Rune or "Unicode replacement character" const RuneError = '\uFFFD'; // Maximum valid Unicode code point. const MaxRune = '\U0010FFFF'; // Code points in the surrogate range are not valid for UTF-8. const surrogateMin = 0xD800; const surrogateMax = 0xDFFF; const tx = 128; const t2 = 192; const t3 = 224; const t4 = 240; const maskx = 63; const rune1Max = (1 << 7) - 1; const rune2Max = (1 << 11) - 1; const rune3Max = (1 << 16) - 1; // AppendRune appends the UTF-8 encoding of r to the end of p and // returns the extended buffer. If the rune is out of range, // it appends the encoding of RuneError. function appendRune(r) { let p = []; if (r <= rune1Max) { p.push(r & 0xff); return Buffer.from(p).toString(); } if (r <= rune2Max) { p.push(t2 | ((r >> 6) & 0xff), tx | (r & 0xff) & maskx); } else if ((r > MaxRune) || (surrogateMax <= r && r <= surrogateMax)) { p.push(RuneError); } else if (r <= rune3Max) { p.push(t3 | ((r >> 12) & 0xff), tx | ((r >> 6) & 0xff) & maskx, tx | (r & 0xff) & maskx); } else { p.push(t4 | ((r >> 18) & 0xff), tx | ((r >> 12) & 0xff) & maskx, tx | ((r >> 6) & 0xff) & maskx, tx | (r & 0xff) & maskx); } return Buffer.from(p).toString(); }