Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | 1x 1x 1x 1x 3849x 1105x 2327x 918x 918x 918x 918x 918x 1409x 1351x 1351x 1351x 1351x 1351x 2990x 2990x 2990x 2990x 2990x 1351x 417x | import {escape as esc} from '@jsonjoy.com/util/lib/strings/escape'; import {sort} from '@jsonjoy.com/util/lib/sort/insertion'; import type {json_string} from '@jsonjoy.com/util/lib/json-brand'; const getKeys = Object.keys; export const stringify = <T>(val: T): json_string<T> => { let i: number, max: number, str: string, keys: string[], key: string, propVal: unknown; switch (typeof val) { case 'string': return ('"' + esc(val) + '"') as json_string<T>; case 'object': if (val instanceof Array) { str = '['; max = val.length - 1; for (i = 0; i < max; i++) str += stringify(val[i]) + ','; if (max >= 0) str += stringify(val[i]); return (str + ']') as json_string<T>; } if (val === null) return 'null' as json_string<T>; keys = sort(getKeys(val)); max = keys.length; str = '{'; i = 0; while (i < max) { key = keys[i]; propVal = stringify((val as Record<string, unknown>)[key]); if (i && str !== '') str += ','; str += '"' + esc(key) + '":' + propVal; i++; } return (str + '}') as json_string<T>; default: return String(val) as json_string<T>; } }; |