Clean comments (#6420)

* Add script to trigger test on utils

* Add new function to remove the comments from the settings file.
It reduces the size of the payload when we save on the admin page `.../admin/settings`

* Add     font-family: monospace; to the settings
This commit is contained in:
Helder Sepulveda 2024-06-04 13:32:21 -04:00 committed by GitHub
parent 2e2fb13268
commit 13e160cbe4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 53 additions and 6 deletions

View file

@ -263,6 +263,7 @@ td, th {
outline: none;
width: 100%;
resize: none;
font-family: monospace;
}
#response {

View file

@ -1,12 +1,12 @@
import {useStore} from "../store/store.ts";
import {isJSONClean} from "../utils/utils.ts";
import {isJSONClean, cleanComments} from "../utils/utils.ts";
import {Trans} from "react-i18next";
import {IconButton} from "../components/IconButton.tsx";
import {RotateCw, Save} from "lucide-react";
export const SettingsPage = ()=>{
const settingsSocket = useStore(state=>state.settingsSocket)
const settings = useStore(state=>state.settings)
const settings = cleanComments(useStore(state=>state.settings))
return <div className="settings-page">
<h1><Trans i18nKey="admin_settings.current"/></h1>

View file

@ -1,5 +1,14 @@
const minify = (json: string)=>{
export const cleanComments = (json: string|undefined)=>{
if (json !== undefined){
json = json.replace(/\/\*.*?\*\//g, ""); // remove single line comments
json = json.replace(/ *\/\*.*(.|\n)*?\*\//g, ""); // remove multi line comments
json = json.replace(/[ \t]+$/gm, ""); // trim trailing spaces
json = json.replace(/^(\n)/gm, ""); // remove empty lines
}
return json;
}
export const minify = (json: string)=>{
let tokenizer = /"|(\/\*)|(\*\/)|(\/\/)|\n|\r/g,
in_string = false,
in_multiline_comment = false,
@ -49,9 +58,6 @@ const minify = (json: string)=>{
return new_str.join("");
}
export const isJSONClean = (data: string) => {
let cleanSettings = minify(data);
// this is a bit naive. In theory some key/value might contain the sequences ',]' or ',}'