tiny-essentials
Version:
Collection of small, essential scripts designed to be used across various projects. These simple utilities are crafted for speed, ease of use, and versatility.
1 lines • 2.33 kB
JavaScript
(()=>{"use strict";var e={d:(r,t)=>{for(var s in t)e.o(t,s)&&!e.o(r,s)&&Object.defineProperty(r,s,{enumerable:!0,get:t[s]})},o:(e,r)=>Object.prototype.hasOwnProperty.call(e,r)},r={};e.d(r,{ColorSafeStringify:()=>s});class t{#e;static#r={default:{reset:"[0m",key:"[36m",string:"[32m",string_url:"[34m",string_bool:"[35m",string_number:"[33m",number:"[33m",boolean:"[35m",null:"[1;30m",special:"[31m",func:"[90m"},solarized:{reset:"[0m",key:"[38;5;37m",string:"[38;5;136m",string_url:"[38;5;33m",string_bool:"[38;5;166m",string_number:"[38;5;136m",number:"[38;5;136m",boolean:"[38;5;166m",null:"[38;5;241m",special:"[38;5;160m",func:"[38;5;244m"},monokai:{reset:"[0m",key:"[38;5;81m",string:"[38;5;114m",string_url:"[38;5;75m",string_bool:"[38;5;204m",string_number:"[38;5;221m",number:"[38;5;221m",boolean:"[38;5;204m",null:"[38;5;241m",special:"[38;5;160m",func:"[38;5;102m"}};constructor(e={}){this.#e={...t.#r.default,...e}}#t(e,r){const t=[];e=(e=(e=e.replace(/(?<!")\b(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)\b(?!")/g,`${r.number}$1${r.reset}`)).replace(/"([^"]+)":/g,(e,r)=>{const s=`___KEY${t.length}___`;return t.push({marker:s,key:r}),`${s}:`})).replace(/"(?:\\.|[^"\\])*?"/g,e=>{const t=e.slice(1,-1);return/^(https?|ftp):\/\/[^\s]+$/i.test(t)?`${r.string_url}${e}${r.reset}`:/^(true|false|null)$/.test(t)?`${r.string_bool}${e}${r.reset}`:/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/.test(t)?`${r.string_number}${e}${r.reset}`:`${r.string}${e}${r.reset}`});for(const{marker:s,key:o}of t){const t=new RegExp(s,"g");e=e.replace(t,`${r.key}"${o}"${r.reset}`)}return(e=(e=(e=(e=e.replace(/(?<!")\b(true|false)\b(?!")/g,`${r.boolean}$1${r.reset}`)).replace(/(?<!")\bnull\b(?!")/g,`${r.null}null${r.reset}`)).replace(/\[Circular\]/g,`${r.special}[Circular]${r.reset}`)).replace(/\[undefined\]/g,`${r.special}[undefined]${r.reset}`)).replace(/"function.*?[^\\]"/gs,`${r.func}$&${r.reset}`)}colorize(e,r={}){const t={...this.#e,...r};return this.#t(e,t)}getColors(){return{...this.#e}}updateColors(e){Object.assign(this.#e,e)}resetColors(){this.#e={...t.#r.default}}loadColorPreset(e){const r=t.#r[e];if(!r)throw new Error(`Preset "${e}" not found.`);this.#e={...r}}saveColorPreset(e,r){t.#r[e]={...r}}getAvailablePresets(){return Object.keys(t.#r)}}const s=t;window.ColorSafeStringify=r.ColorSafeStringify})();