/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Intelligent display kb m */ const bytesToSize = (bytes) => { if (bytes === 0) return '0 B' const k = 1024 // or 1024 const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'] const i = Math.floor(Math.log(bytes) / Math.log(k)) return parseInt((bytes / Math.pow(k, i)).toPrecision(3)) + ' ' + sizes[i] } /** * Verify if it is in json format */ const isJson = (str) => { if (typeof str === 'string') { try { const obj = JSON.parse(str) if (typeof obj === 'object' && obj) { return true } else { return false } } catch (e) { return false } } } /** * Return json format */ const syntaxHighlight = (json) => { if (typeof json !== 'string') { json = JSON.stringify(json, undefined, 2) } json = json.replace(/&/g, '&').replace(//g, '>') return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) { // eslint-disable-line let cls = 'number' if (/^"/.test(match)) { if (/:$/.test(match)) { cls = 'key' } else { cls = 'string' } } else if (/true|false/.test(match)) { cls = 'boolean' } else if (/null/.test(match)) { cls = 'null' } return '' + match + '' }) } export { bytesToSize, isJson, syntaxHighlight }