@samitouri / QOS-React / commits / 65d493cae9

Just use codepoints as it'll be copied into an Uint32Array anyway

Jessica committed Feb 19, 2019 at 16:03 UTC 65d493cae9b3697c96650ae0c973afb71c873f68
1 file changed +9 -14
src/utils.js
+9 -14
@@ -51,20 +51,15 @@ export function getUID(): number {
51 return ++uidCounter;
52 }
53
54 -export function utfDecodeString(array: Uint16Array): string {
55 - let string = '';
56 - const { length } = array;
57 - for (let i = 0; i < length; i++) {
58 - string += String.fromCharCode(array[i]);
59 - }
60 - return string;
54 +export function utfDecodeString(array: Uint32Array): string {
55 + return String.fromCodePoint(...array);
56 }
57
63 -export function utfEncodeString(string: string): Uint16Array {
64 - const array = new Uint16Array(string.length);
65 - const { length } = string;
66 - for (let i = 0; i < length; i++) {
67 - array[i] = string.charCodeAt(i);
68 - }
69 - return array;
58 +export function utfEncodeString(string: string): Uint32Array {
59 + // $FlowFixMe Flow's Uint32Array.from's type definition is wrong; first argument of mapFn will be string
60 + return Uint32Array.from(string, toCodePoint);
61 +}
62 +
63 +function toCodePoint(string: string) {
64 + return string.codePointAt(0);
65 }