diff --git a/CHANGELOG.md b/CHANGELOG.md index 39187e1..5f25885 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ --- +## 1.4.11 + +- ➕ Added shortcuts `consonoJSON`. + +- ✅️ Update ES modules definition. + +- ⬆️ Dev dependencies updated. + ## 1.4.10 - ⬇️ Fixed exception with frozen object diff --git a/dist/consono.browser.cjs b/dist/consono.browser.cjs index e87767a..eb2bfed 100644 --- a/dist/consono.browser.cjs +++ b/dist/consono.browser.cjs @@ -1,2 +1,2 @@ -"use strict";function _classPrivateFieldGet(e,t){var i=t.get(e);if(!i)throw new TypeError("attempted to get private field on non-instance");return i.get?i.get.call(e):i.value}function _classPrivateFieldSet(e,t,i){var s=t.get(e);if(!s)throw new TypeError("attempted to set private field on non-instance");if(s.set)s.set.call(e,i);else{if(!s.writable)throw new TypeError("attempted to set read only private field");s.value=i}return i}Object.defineProperty(exports,"__esModule",{value:!0});const e={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},t=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var i="[object Arguments]",s="[object Array]",a="[object ArrayBuffer]",r="[object AsyncFunction]",l="[object BigInt]",n="[object Boolean]",o="[object Date]",c="[object Error]",h="[object Function]",d="[object Generator]",P="[object GeneratorFunction]",v="[object global]",m="[object Map]",u="[object Null]",p="[object Number]",F="[object Promise]",_="[object RegExp]",b="[object Set]",G="[object SharedArrayBuffer]",$="[object String]",f="[object Symbol]",g="[object Undefined]",y="[object WeakMap]",w="[object WeakSet]",k="[object Window]";const S={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""},j={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""};class Theme{constructor(e=3,t="light"){let i;switch(!0){case"dark"===t:i=j;break;case"light"===t:default:i=S}this.argument=e=>i.argument+e.toString()+"",this.boolean=e=>i.boolean+e.toString()+"",this.comment=e=>i.comment+e.toString()+"",this.keyword=e=>i.keyword+e.toString()+"",this.name=e=>i.name+e.toString()+"",this.number=e=>i.number+e.toString()+"",this.plain=e=>i.plain+e.toString()+"",this.property=e=>i.property+e.toString()+"",this.string=e=>i.string+e.toString()+""}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint(e){console.log(e)}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(a,r){let l,n,o;if(!("object"!=typeof a||null===a||a instanceof Boolean||a instanceof Date||a instanceof Number||a instanceof RegExp||a instanceof String)){for(l=0;l_classPrivateFieldGet(this,x)?`${_classPrivateFieldGet(this,J).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,J).keyword(s)}`:""} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("elements")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}=${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,x))}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("[")}\n`:`${_classPrivateFieldGet(this,J).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,J).keyword(s)}`:""} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("elements")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain("]")}`,a=_classPrivateFieldGet(this,x);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,B)?`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("props")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,B))}${_classPrivateFieldGet(this,J).plain(")")}`:`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("props")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")}`,l=`${_classPrivateFieldGet(this,J).keyword("object")} ${_classPrivateFieldGet(this,J).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,J).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain("}")}`}else l=`${_classPrivateFieldGet(this,J).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain(")")}`;a=_classPrivateFieldGet(this,B);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,x)?`${_classPrivateFieldGet(this,J).keyword("arguments")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("arity")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}, ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,x))}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("[")}\n`:`${_classPrivateFieldGet(this,J).keyword("arguments")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("arity")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain("]")}`,a=_classPrivateFieldGet(this,x);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,q)?`${_classPrivateFieldGet(this,J).keyword("set")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("size")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,q))}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("{")}\n`:`${_classPrivateFieldGet(this,J).keyword("set")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("size")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,q);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,R)?`${_classPrivateFieldGet(this,J).keyword("map")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("size")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,R))}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("{")}\n`:`${_classPrivateFieldGet(this,J).keyword("map")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("size")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain("}")}`,a=_classPrivateFieldGet(this,R);break}default:return this.formatValue(t,e)}let c=0;switch(o){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),c+=1,c>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),c+=1,c>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,s=!0){let S="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case g:[j,S]=this.formatUndefined();break;case u:[j,S]=this.formatNull();break;case v:case k:[j,S]=this.formatGlobal(M,t,e);break;case l:[j,S]=this.formatBigInt(t);break;case p:[j,S]=this.formatNumber(t);break;case n:[j,S]=this.formatBoolean(t);break;case $:[j,S]=this.formatString(t);break;case _:[j,S]=this.formatRegexp(t);break;case h:case r:case P:[j,S]=this.formatFunction(M,t);break;case o:[j,S]=this.formatDate(t);break;case i:[j,S]=this.formatArguments(t);break;case f:[j,S]=this.formatSymbol(t);break;case F:[j,S]=this.formatPromise();break;case d:[j,S]=this.formatGenerator();break;case c:[j,S]=this.formatError(t);break;case w:case y:[j,S]=this.formatWeak(M);break;case b:[j,S]=this.formatSet(t);break;case m:[j,S]=this.formatMap(t);break;case a:case G:[j,S]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const i=M.split(" ")[1];if("Set"===i)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,s);if("Map"===i)return this.toPrintable(new Map(Array.from(t)),e,s);if("String"===i)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,s);if("Array"===i)return this.toPrintable(Array.from(t).map((e=>e[1])),e,s)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,I)===_classPrivateFieldGet(this,O)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,B)?`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("props")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(e)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,B))}${_classPrivateFieldGet(this,J).plain(")")}`:`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("props")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(e)}${_classPrivateFieldGet(this,J).plain(")")}`,S=`${_classPrivateFieldGet(this,J).keyword("object")} ${_classPrivateFieldGet(this,J).keyword(objectClass(t))} ${i}`}else{let i;_classPrivateFieldSet(this,I,_classPrivateFieldGet(this,I)+1),i="array"===j?`${_classPrivateFieldGet(this,J).comment(e)}`:`${e}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}`,S=this.toPrintable(t,i,s,x),_classPrivateFieldSet(this,I,_classPrivateFieldGet(this,I)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),S=t.toString())}return`${_classPrivateFieldGet(this,J).keyword(j)}${j.length?_classPrivateFieldGet(this,J).plain(" • "):""}${S}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,J).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,J).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("bytes")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(t.byteLength)}${_classPrivateFieldGet(this,J).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,J).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,J).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case r:i=`${i} async`;break;case P:i=`${i} generator`}const s=function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}(t);i=s.length?`${i} ${_classPrivateFieldGet(this,J).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,J).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,J).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===k?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,J).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,J).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,J).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,J).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,U)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,U)).join(""):e.slice(0,_classPrivateFieldGet(this,U))),a=s===i?`${_classPrivateFieldGet(this,J).string(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,J).string(r||e)}${_classPrivateFieldGet(this,J).string(_classPrivateFieldGet(this,V))} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("length")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(s)}`:`${_classPrivateFieldGet(this,J).string(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,J).string(r||e)}${_classPrivateFieldGet(this,J).string(_classPrivateFieldGet(this,V))} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("length")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(s)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("symbols")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}`,a=i>_classPrivateFieldGet(this,U)?`${a}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,U))}${_classPrivateFieldGet(this,J).plain(")")}`:`${a}${_classPrivateFieldGet(this,J).plain(")")}`,function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,J).string("undefined")]}formatWeak(e){return e===y?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}${s}${_classPrivateFieldGet(this,J).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}${_classPrivateFieldGet(this,J).plain(_classPrivateFieldGet(this,M))} ${s}${_classPrivateFieldGet(this,J).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,J).plain("[")}${_classPrivateFieldGet(this,J).property(i)}${_classPrivateFieldGet(this,J).plain("]")}`:`${_classPrivateFieldGet(this,J).plain(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,J).property(i)}${_classPrivateFieldGet(this,J).plain(_classPrivateFieldGet(this,V))}`,`${t}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}${a} ${_classPrivateFieldGet(this,J).plain(_classPrivateFieldGet(this,M))} ${s}${_classPrivateFieldGet(this,J).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,N)&&(_classPrivateFieldGet(this,E)&&cliExit(),_classPrivateFieldGet(this,T)?setTimeout((()=>cliPrint(this.toPrintable(e))),0):cliPrint(this.toPrintable(e)),processExit(_classPrivateFieldGet(this,W))),_classPrivateFieldGet(this,D))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(i=!0){const s={...e};return"boolean"==typeof i?s.console=i:i&&"object"==typeof i&&Object.assign(s,i),function objectPick(e,t){return t.length&&Object.keys(e).length?t.reduce(((t,i)=>(t[i]=e[i],t)),{}):{}}(s,t)}}exports.Consono=Consono,exports.THEME_DARK={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},exports.THEME_LIGHT={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]},exports.consono=function consono(e,t=!0,i="light"){const s=Consono.createOptions(t),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)},exports.consonoExit=function consonoExit(e,t=!0,i="light",s=0){const a=Consono.createOptions({...t,exit:s}),r=new Consono(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint(r.toPrintable(e))),0):cliPrint(r.toPrintable(e)),processExit(a.exit)),a.returns)return r.toPrintable(e)},exports.consonoPlain=function consonoPlain(e,t=!0){const i=Consono.createOptions({...t,colorize:!1}),s=new Consono(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)},exports.consonoReturn=function consonoReturn(e,t=!0,i="light"){const s=Consono.createOptions({...t,console:!1,returns:!0}),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)},exports.options=e; +"use strict";function _classPrivateFieldGet(e,t){return function _classApplyDescriptorGet(e,t){if(t.get)return t.get.call(e);return t.value}(e,_classExtractFieldDescriptor(e,t,"get"))}function _classPrivateFieldSet(e,t,i){return function _classApplyDescriptorSet(e,t,i){if(t.set)t.set.call(e,i);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=i}}(e,_classExtractFieldDescriptor(e,t,"set"),i),i}function _classExtractFieldDescriptor(e,t,i){if(!t.has(e))throw new TypeError("attempted to "+i+" private field on non-instance");return t.get(e)}Object.defineProperty(exports,"__esModule",{value:!0});const e={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},t=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var i="[object Arguments]",s="[object Array]",a="[object ArrayBuffer]",r="[object AsyncFunction]",l="[object BigInt]",n="[object Boolean]",o="[object Date]",c="[object Error]",h="[object Function]",d="[object Generator]",v="[object GeneratorFunction]",P="[object global]",m="[object Map]",u="[object Null]",p="[object Number]",F="[object Promise]",_="[object RegExp]",b="[object Set]",G="[object SharedArrayBuffer]",$="[object String]",f="[object Symbol]",g="[object Undefined]",y="[object WeakMap]",w="[object WeakSet]",k="[object Window]";const S={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""},j={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""};class Theme{constructor(e=3,t="light"){let i;switch(!0){case"dark"===t:i=j;break;case"light"===t:default:i=S}this.argument=e=>i.argument+e.toString()+"",this.boolean=e=>i.boolean+e.toString()+"",this.comment=e=>i.comment+e.toString()+"",this.keyword=e=>i.keyword+e.toString()+"",this.name=e=>i.name+e.toString()+"",this.number=e=>i.number+e.toString()+"",this.plain=e=>i.plain+e.toString()+"",this.property=e=>i.property+e.toString()+"",this.string=e=>i.string+e.toString()+""}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint(e){console.log(e)}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(a,r){let l,n,o;if(!("object"!=typeof a||null===a||a instanceof Boolean||a instanceof Date||a instanceof Number||a instanceof RegExp||a instanceof String)){for(l=0;l_classPrivateFieldGet(this,x)?`${_classPrivateFieldGet(this,U).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,U).keyword(s)}`:""} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("elements")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}${_classPrivateFieldGet(this,U).plain(",")} ${_classPrivateFieldGet(this,U).argument("shown")}=${_classPrivateFieldGet(this,U).number(_classPrivateFieldGet(this,x))}${_classPrivateFieldGet(this,U).plain(")")} ${_classPrivateFieldGet(this,U).plain("[")}\n`:`${_classPrivateFieldGet(this,U).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,U).keyword(s)}`:""} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("elements")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}${_classPrivateFieldGet(this,U).plain(")")} ${_classPrivateFieldGet(this,U).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,U).plain("]")}`,a=_classPrivateFieldGet(this,x);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,R)?`${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("props")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}${_classPrivateFieldGet(this,U).plain(",")} ${_classPrivateFieldGet(this,U).argument("shown")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(_classPrivateFieldGet(this,R))}${_classPrivateFieldGet(this,U).plain(")")}`:`${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("props")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}${_classPrivateFieldGet(this,U).plain(")")}`,l=`${_classPrivateFieldGet(this,U).keyword("object")} ${_classPrivateFieldGet(this,U).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,U).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,U).plain("}")}`}else l=`${_classPrivateFieldGet(this,U).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,U).plain(")")}`;a=_classPrivateFieldGet(this,R);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,x)?`${_classPrivateFieldGet(this,U).keyword("arguments")} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("arity")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}, ${_classPrivateFieldGet(this,U).argument("shown")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(_classPrivateFieldGet(this,x))}${_classPrivateFieldGet(this,U).plain(")")} ${_classPrivateFieldGet(this,U).plain("[")}\n`:`${_classPrivateFieldGet(this,U).keyword("arguments")} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("arity")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}${_classPrivateFieldGet(this,U).plain(")")} ${_classPrivateFieldGet(this,U).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,U).plain("]")}`,a=_classPrivateFieldGet(this,x);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,q)?`${_classPrivateFieldGet(this,U).keyword("set")} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("size")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}${_classPrivateFieldGet(this,U).plain(",")} ${_classPrivateFieldGet(this,U).argument("shown")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(_classPrivateFieldGet(this,q))}${_classPrivateFieldGet(this,U).plain(")")} ${_classPrivateFieldGet(this,U).plain("{")}\n`:`${_classPrivateFieldGet(this,U).keyword("set")} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("size")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}${_classPrivateFieldGet(this,U).plain(")")} ${_classPrivateFieldGet(this,U).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,q);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,D)?`${_classPrivateFieldGet(this,U).keyword("map")} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("size")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}${_classPrivateFieldGet(this,U).plain(",")} ${_classPrivateFieldGet(this,U).argument("shown")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(_classPrivateFieldGet(this,D))}${_classPrivateFieldGet(this,U).plain(")")} ${_classPrivateFieldGet(this,U).plain("{")}\n`:`${_classPrivateFieldGet(this,U).keyword("map")} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("size")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}${_classPrivateFieldGet(this,U).plain(")")} ${_classPrivateFieldGet(this,U).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,U).plain("}")}`,a=_classPrivateFieldGet(this,D);break}default:return this.formatValue(t,e)}let c=0;switch(o){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),c+=1,c>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),c+=1,c>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,s=!0){let S="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case g:[j,S]=this.formatUndefined();break;case u:[j,S]=this.formatNull();break;case P:case k:[j,S]=this.formatGlobal(M,t,e);break;case l:[j,S]=this.formatBigInt(t);break;case p:[j,S]=this.formatNumber(t);break;case n:[j,S]=this.formatBoolean(t);break;case $:[j,S]=this.formatString(t);break;case _:[j,S]=this.formatRegexp(t);break;case h:case r:case v:[j,S]=this.formatFunction(M,t);break;case o:[j,S]=this.formatDate(t);break;case i:[j,S]=this.formatArguments(t);break;case f:[j,S]=this.formatSymbol(t);break;case F:[j,S]=this.formatPromise();break;case d:[j,S]=this.formatGenerator();break;case c:[j,S]=this.formatError(t);break;case w:case y:[j,S]=this.formatWeak(M);break;case b:[j,S]=this.formatSet(t);break;case m:[j,S]=this.formatMap(t);break;case a:case G:[j,S]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const i=M.split(" ")[1];if("Set"===i)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,s);if("Map"===i)return this.toPrintable(new Map(Array.from(t)),e,s);if("String"===i)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,s);if("Array"===i)return this.toPrintable(Array.from(t).map((e=>e[1])),e,s)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,O)===_classPrivateFieldGet(this,I)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,R)?`${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("props")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(e)}${_classPrivateFieldGet(this,U).plain(",")} ${_classPrivateFieldGet(this,U).argument("shown")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(_classPrivateFieldGet(this,R))}${_classPrivateFieldGet(this,U).plain(")")}`:`${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("props")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(e)}${_classPrivateFieldGet(this,U).plain(")")}`,S=`${_classPrivateFieldGet(this,U).keyword("object")} ${_classPrivateFieldGet(this,U).keyword(objectClass(t))} ${i}`}else{let i;_classPrivateFieldSet(this,O,_classPrivateFieldGet(this,O)+1),i="array"===j?`${_classPrivateFieldGet(this,U).comment(e)}`:`${e}${_classPrivateFieldGet(this,U).comment(_classPrivateFieldGet(this,z))}`,S=this.toPrintable(t,i,s,x),_classPrivateFieldSet(this,O,_classPrivateFieldGet(this,O)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),S=t.toString())}return`${_classPrivateFieldGet(this,U).keyword(j)}${j.length?_classPrivateFieldGet(this,U).plain(" • "):""}${S}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,U).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,U).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("bytes")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(t.byteLength)}${_classPrivateFieldGet(this,U).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,U).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,U).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case r:i=`${i} async`;break;case v:i=`${i} generator`}const s=function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}(t);i=s.length?`${i} ${_classPrivateFieldGet(this,U).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,U).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,U).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===k?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,U).comment(_classPrivateFieldGet(this,z))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,U).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,U).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,U).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,U).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,H)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,H)).join(""):e.slice(0,_classPrivateFieldGet(this,H))),a=s===i?`${_classPrivateFieldGet(this,U).string(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,U).string(r||e)}${_classPrivateFieldGet(this,U).string(_classPrivateFieldGet(this,B))} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("length")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(s)}`:`${_classPrivateFieldGet(this,U).string(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,U).string(r||e)}${_classPrivateFieldGet(this,U).string(_classPrivateFieldGet(this,B))} ${_classPrivateFieldGet(this,U).plain("(")}${_classPrivateFieldGet(this,U).argument("length")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(s)}${_classPrivateFieldGet(this,U).plain(",")} ${_classPrivateFieldGet(this,U).argument("symbols")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(i)}`,a=i>_classPrivateFieldGet(this,H)?`${a}${_classPrivateFieldGet(this,U).plain(",")} ${_classPrivateFieldGet(this,U).argument("shown")}${_classPrivateFieldGet(this,U).plain("=")}${_classPrivateFieldGet(this,U).number(_classPrivateFieldGet(this,H))}${_classPrivateFieldGet(this,U).plain(")")}`:`${a}${_classPrivateFieldGet(this,U).plain(")")}`,function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,U).string("undefined")]}formatWeak(e){return e===y?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,U).comment(_classPrivateFieldGet(this,z))}${s}${_classPrivateFieldGet(this,U).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,U).comment(_classPrivateFieldGet(this,z))}${_classPrivateFieldGet(this,U).plain(_classPrivateFieldGet(this,M))} ${s}${_classPrivateFieldGet(this,U).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,U).plain("[")}${_classPrivateFieldGet(this,U).property(i)}${_classPrivateFieldGet(this,U).plain("]")}`:`${_classPrivateFieldGet(this,U).plain(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,U).property(i)}${_classPrivateFieldGet(this,U).plain(_classPrivateFieldGet(this,B))}`,`${t}${_classPrivateFieldGet(this,U).comment(_classPrivateFieldGet(this,z))}${a} ${_classPrivateFieldGet(this,U).plain(_classPrivateFieldGet(this,M))} ${s}${_classPrivateFieldGet(this,U).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,C)&&(_classPrivateFieldGet(this,E)&&cliExit(),_classPrivateFieldGet(this,A)?setTimeout((()=>cliPrint(this.toPrintable(e))),0):cliPrint(this.toPrintable(e)),processExit(_classPrivateFieldGet(this,W))),_classPrivateFieldGet(this,L))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(i=!0){const s={...e};return"boolean"==typeof i?s.console=i:i&&"object"==typeof i&&Object.assign(s,i),function objectPick(e,t){return t.length&&Object.keys(e).length?t.reduce(((t,i)=>(t[i]=e[i],t)),{}):{}}(s,t)}}exports.Consono=Consono,exports.THEME_DARK={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},exports.THEME_LIGHT={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]},exports.consono=function consono(e,t=!0,i="light"){const s=Consono.createOptions(t),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)},exports.consonoExit=function consonoExit(e,t=!0,i="light",s=0){const a=Consono.createOptions({...t,exit:s}),r=new Consono(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint(r.toPrintable(e))),0):cliPrint(r.toPrintable(e)),processExit(a.exit)),a.returns)return r.toPrintable(e)},exports.consonoJSON=function consonoJSON(e,t=!0){let i;i=void 0===e?void 0:JSON.parse(JSON.stringify(e),null,2);const s=Consono.createOptions({...t,colorize:!1});if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>{void 0===i?console.dir(void 0):console.dir(i)}),0):void 0===i?console.dir(void 0):console.dir(i),processExit(s.exit)),s.returns)return i},exports.consonoPlain=function consonoPlain(e,t=!0){const i=Consono.createOptions({...t,colorize:!1}),s=new Consono(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)},exports.consonoReturn=function consonoReturn(e,t=!0,i="light"){const s=Consono.createOptions({...t,console:!1,returns:!0}),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)},exports.options=e; //# sourceMappingURL=consono.browser.cjs.map diff --git a/dist/consono.browser.cjs.map b/dist/consono.browser.cjs.map index 9b2a38a..d23acaf 100644 --- a/dist/consono.browser.cjs.map +++ b/dist/consono.browser.cjs.map @@ -1 +1 @@ -{"version":3,"file":"consono.browser.cjs","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_default.js","../src/core/browser/theme.js","../src/utils/cliExit.js","../src/utils/browser/cliPrint.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/core/browser/consono.js","../src/utils/funcNameExtract.js","../src/utils/stringClearReference.js","../src/utils/objectPick.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/helpers/browser/consono.js","../src/helpers/browser/consonoExit.js","../src/helpers/browser/consonoPlain.js","../src/helpers/browser/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","export const THEME_DEFAULT = \"light\";\n","import { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nconst Reset = \"\\x1b[0m\";\n\nconst FgBlack = \"\\x1b[30m\";\nconst FgRed = \"\\x1b[31m\";\nconst FgGreen = \"\\x1b[32m\";\n// const FgYellow = \"\\x1b[33m\";\nconst FgBlue = \"\\x1b[34m\";\nconst FgMagenta = \"\\x1b[35m\";\n// const FgCyan = \"\\x1b[36m\";\nconst FgWhite = \"\\x1b[37m\";\n\nconst THEME_LIGHT = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgBlack,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgBlack,\n property: FgRed,\n string: FgGreen,\n};\n\nconst THEME_DARK = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgWhite,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgWhite,\n property: FgRed,\n string: FgGreen,\n};\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n // eslint-disable-next-line no-unused-vars\n constructor(level = 3, theme = THEME_DEFAULT) {\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = (value) => rgb.argument + value.toString() + Reset;\n this.boolean = (value) => rgb.boolean + value.toString() + Reset;\n this.comment = (value) => rgb.comment + value.toString() + Reset;\n this.keyword = (value) => rgb.keyword + value.toString() + Reset;\n this.name = (value) => rgb.name + value.toString() + Reset;\n this.number = (value) => rgb.number + value.toString() + Reset;\n this.plain = (value) => rgb.plain + value.toString() + Reset;\n this.property = (value) => rgb.property + value.toString() + Reset;\n this.string = (value) => rgb.string + value.toString() + Reset;\n }\n}\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message) {\n console.log(message);\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable) /*, this.#stdout*/), 0);\n } else {\n cliPrint(this.toPrintable(variable) /*, this.#stdout*/);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = \"light\", exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","THEME_LIGHT","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_DARK","Theme","constructor","level","theme","rgb","value","toString","cliExit","err","process","write","cliPrint","message","log","isInteger","Number","parseInt","objectClass","prototypeName","Object","prototype","call","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectSize","obj","keys","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","this","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","reduce","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","funcNameExtract","func","result","exec","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","text","stringAsArray","stringSize","stringLength","printString","slice","stringClearReference","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","objectPick","accumulator","consonoExit","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"consono.browser.cjs","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_default.js","../src/core/browser/theme.js","../src/utils/cliExit.js","../src/utils/browser/cliPrint.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/core/browser/consono.js","../src/utils/funcNameExtract.js","../src/utils/stringClearReference.js","../src/utils/objectPick.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/helpers/browser/consono.js","../src/helpers/browser/consonoExit.js","../src/helpers/browser/consonoJSON.js","../src/helpers/browser/consonoPlain.js","../src/helpers/browser/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","export const THEME_DEFAULT = \"light\";\n","import { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nconst Reset = \"\\x1b[0m\";\n\nconst FgBlack = \"\\x1b[30m\";\nconst FgRed = \"\\x1b[31m\";\nconst FgGreen = \"\\x1b[32m\";\n// const FgYellow = \"\\x1b[33m\";\nconst FgBlue = \"\\x1b[34m\";\nconst FgMagenta = \"\\x1b[35m\";\n// const FgCyan = \"\\x1b[36m\";\nconst FgWhite = \"\\x1b[37m\";\n\nconst THEME_LIGHT = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgBlack,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgBlack,\n property: FgRed,\n string: FgGreen,\n};\n\nconst THEME_DARK = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgWhite,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgWhite,\n property: FgRed,\n string: FgGreen,\n};\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n // eslint-disable-next-line no-unused-vars\n constructor(level = 3, theme = THEME_DEFAULT) {\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = (value) => rgb.argument + value.toString() + Reset;\n this.boolean = (value) => rgb.boolean + value.toString() + Reset;\n this.comment = (value) => rgb.comment + value.toString() + Reset;\n this.keyword = (value) => rgb.keyword + value.toString() + Reset;\n this.name = (value) => rgb.name + value.toString() + Reset;\n this.number = (value) => rgb.number + value.toString() + Reset;\n this.plain = (value) => rgb.plain + value.toString() + Reset;\n this.property = (value) => rgb.property + value.toString() + Reset;\n this.string = (value) => rgb.string + value.toString() + Reset;\n }\n}\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message) {\n console.log(message);\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable) /*, this.#stdout*/), 0);\n } else {\n cliPrint(this.toPrintable(variable) /*, this.#stdout*/);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = \"light\", exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoJSON\n * @description Print variable as JSON without highlighting\n * @param {*} variable\n * @param {boolean|Object} [options=true]\n * @returns {string|undefined}\n */\nexport default function consonoJSON(variable, options = true) {\n let out;\n if (variable === undefined) {\n out = undefined;\n } else {\n out = JSON.parse(JSON.stringify(variable), null, 2);\n }\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }, 0);\n } else {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return out;\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","THEME_LIGHT","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_DARK","Theme","constructor","level","theme","rgb","value","toString","cliExit","err","process","write","cliPrint","message","log","isInteger","Number","parseInt","objectClass","prototypeName","Object","prototype","call","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectSize","obj","keys","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","this","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","reduce","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","funcNameExtract","func","result","exec","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","text","stringAsArray","stringSize","stringLength","printString","slice","stringClearReference","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","objectPick","accumulator","consonoExit","consonoJSON","out","parse","dir","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file diff --git a/dist/consono.browser.mjs b/dist/consono.browser.mjs index 19be719..6a69b4b 100644 --- a/dist/consono.browser.mjs +++ b/dist/consono.browser.mjs @@ -1,2 +1,2 @@ -function _classPrivateFieldGet(e,t){var i=t.get(e);if(!i)throw new TypeError("attempted to get private field on non-instance");return i.get?i.get.call(e):i.value}function _classPrivateFieldSet(e,t,i){var s=t.get(e);if(!s)throw new TypeError("attempted to set private field on non-instance");if(s.set)s.set.call(e,i);else{if(!s.writable)throw new TypeError("attempted to set read only private field");s.value=i}return i}const e={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},t=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var i="[object Arguments]",s="[object Array]",a="[object ArrayBuffer]",r="[object AsyncFunction]",l="[object BigInt]",n="[object Boolean]",o="[object Date]",c="[object Error]",h="[object Function]",d="[object Generator]",P="[object GeneratorFunction]",v="[object global]",m="[object Map]",u="[object Null]",F="[object Number]",_="[object Promise]",p="[object RegExp]",b="[object Set]",G="[object SharedArrayBuffer]",$="[object String]",f="[object Symbol]",g="[object Undefined]",y="[object WeakMap]",w="[object WeakSet]",k="[object Window]";const S={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""},j={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""};class Theme{constructor(e=3,t="light"){let i;switch(!0){case"dark"===t:i=j;break;case"light"===t:default:i=S}this.argument=e=>i.argument+e.toString()+"",this.boolean=e=>i.boolean+e.toString()+"",this.comment=e=>i.comment+e.toString()+"",this.keyword=e=>i.keyword+e.toString()+"",this.name=e=>i.name+e.toString()+"",this.number=e=>i.number+e.toString()+"",this.plain=e=>i.plain+e.toString()+"",this.property=e=>i.property+e.toString()+"",this.string=e=>i.string+e.toString()+""}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint(e){console.log(e)}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(a,r){let l,n,o;if(!("object"!=typeof a||null===a||a instanceof Boolean||a instanceof Date||a instanceof Number||a instanceof RegExp||a instanceof String)){for(l=0;l_classPrivateFieldGet(this,x)?`${_classPrivateFieldGet(this,J).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,J).keyword(s)}`:""} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("elements")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}=${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,x))}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("[")}\n`:`${_classPrivateFieldGet(this,J).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,J).keyword(s)}`:""} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("elements")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain("]")}`,a=_classPrivateFieldGet(this,x);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,B)?`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("props")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,B))}${_classPrivateFieldGet(this,J).plain(")")}`:`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("props")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")}`,l=`${_classPrivateFieldGet(this,J).keyword("object")} ${_classPrivateFieldGet(this,J).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,J).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain("}")}`}else l=`${_classPrivateFieldGet(this,J).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain(")")}`;a=_classPrivateFieldGet(this,B);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,x)?`${_classPrivateFieldGet(this,J).keyword("arguments")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("arity")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}, ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,x))}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("[")}\n`:`${_classPrivateFieldGet(this,J).keyword("arguments")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("arity")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain("]")}`,a=_classPrivateFieldGet(this,x);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,q)?`${_classPrivateFieldGet(this,J).keyword("set")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("size")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,q))}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("{")}\n`:`${_classPrivateFieldGet(this,J).keyword("set")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("size")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,q);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,R)?`${_classPrivateFieldGet(this,J).keyword("map")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("size")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,R))}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("{")}\n`:`${_classPrivateFieldGet(this,J).keyword("map")} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("size")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}${_classPrivateFieldGet(this,J).plain(")")} ${_classPrivateFieldGet(this,J).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,J).plain("}")}`,a=_classPrivateFieldGet(this,R);break}default:return this.formatValue(t,e)}let c=0;switch(o){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),c+=1,c>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),c+=1,c>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,s=!0){let S="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case g:[j,S]=this.formatUndefined();break;case u:[j,S]=this.formatNull();break;case v:case k:[j,S]=this.formatGlobal(M,t,e);break;case l:[j,S]=this.formatBigInt(t);break;case F:[j,S]=this.formatNumber(t);break;case n:[j,S]=this.formatBoolean(t);break;case $:[j,S]=this.formatString(t);break;case p:[j,S]=this.formatRegexp(t);break;case h:case r:case P:[j,S]=this.formatFunction(M,t);break;case o:[j,S]=this.formatDate(t);break;case i:[j,S]=this.formatArguments(t);break;case f:[j,S]=this.formatSymbol(t);break;case _:[j,S]=this.formatPromise();break;case d:[j,S]=this.formatGenerator();break;case c:[j,S]=this.formatError(t);break;case w:case y:[j,S]=this.formatWeak(M);break;case b:[j,S]=this.formatSet(t);break;case m:[j,S]=this.formatMap(t);break;case a:case G:[j,S]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const i=M.split(" ")[1];if("Set"===i)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,s);if("Map"===i)return this.toPrintable(new Map(Array.from(t)),e,s);if("String"===i)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,s);if("Array"===i)return this.toPrintable(Array.from(t).map((e=>e[1])),e,s)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,I)===_classPrivateFieldGet(this,W)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,B)?`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("props")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(e)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,B))}${_classPrivateFieldGet(this,J).plain(")")}`:`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("props")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(e)}${_classPrivateFieldGet(this,J).plain(")")}`,S=`${_classPrivateFieldGet(this,J).keyword("object")} ${_classPrivateFieldGet(this,J).keyword(objectClass(t))} ${i}`}else{let i;_classPrivateFieldSet(this,I,_classPrivateFieldGet(this,I)+1),i="array"===j?`${_classPrivateFieldGet(this,J).comment(e)}`:`${e}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}`,S=this.toPrintable(t,i,s,x),_classPrivateFieldSet(this,I,_classPrivateFieldGet(this,I)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),S=t.toString())}return`${_classPrivateFieldGet(this,J).keyword(j)}${j.length?_classPrivateFieldGet(this,J).plain(" • "):""}${S}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,J).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,J).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("bytes")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(t.byteLength)}${_classPrivateFieldGet(this,J).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,J).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,J).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case r:i=`${i} async`;break;case P:i=`${i} generator`}const s=function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}(t);i=s.length?`${i} ${_classPrivateFieldGet(this,J).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,J).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,J).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===k?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,J).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,J).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,J).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,J).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,U)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,U)).join(""):e.slice(0,_classPrivateFieldGet(this,U))),a=s===i?`${_classPrivateFieldGet(this,J).string(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,J).string(r||e)}${_classPrivateFieldGet(this,J).string(_classPrivateFieldGet(this,V))} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("length")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(s)}`:`${_classPrivateFieldGet(this,J).string(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,J).string(r||e)}${_classPrivateFieldGet(this,J).string(_classPrivateFieldGet(this,V))} ${_classPrivateFieldGet(this,J).plain("(")}${_classPrivateFieldGet(this,J).argument("length")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(s)}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("symbols")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(i)}`,a=i>_classPrivateFieldGet(this,U)?`${a}${_classPrivateFieldGet(this,J).plain(",")} ${_classPrivateFieldGet(this,J).argument("shown")}${_classPrivateFieldGet(this,J).plain("=")}${_classPrivateFieldGet(this,J).number(_classPrivateFieldGet(this,U))}${_classPrivateFieldGet(this,J).plain(")")}`:`${a}${_classPrivateFieldGet(this,J).plain(")")}`,function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,J).string("undefined")]}formatWeak(e){return e===y?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}${s}${_classPrivateFieldGet(this,J).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}${_classPrivateFieldGet(this,J).plain(_classPrivateFieldGet(this,M))} ${s}${_classPrivateFieldGet(this,J).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,J).plain("[")}${_classPrivateFieldGet(this,J).property(i)}${_classPrivateFieldGet(this,J).plain("]")}`:`${_classPrivateFieldGet(this,J).plain(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,J).property(i)}${_classPrivateFieldGet(this,J).plain(_classPrivateFieldGet(this,V))}`,`${t}${_classPrivateFieldGet(this,J).comment(_classPrivateFieldGet(this,z))}${a} ${_classPrivateFieldGet(this,J).plain(_classPrivateFieldGet(this,M))} ${s}${_classPrivateFieldGet(this,J).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,C)&&(_classPrivateFieldGet(this,E)&&cliExit(),_classPrivateFieldGet(this,T)?setTimeout((()=>cliPrint(this.toPrintable(e))),0):cliPrint(this.toPrintable(e)),processExit(_classPrivateFieldGet(this,O))),_classPrivateFieldGet(this,D))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(i=!0){const s={...e};return"boolean"==typeof i?s.console=i:i&&"object"==typeof i&&Object.assign(s,i),function objectPick(e,t){return t.length&&Object.keys(e).length?t.reduce(((t,i)=>(t[i]=e[i],t)),{}):{}}(s,t)}}const K={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},Y={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]};function consono(e,t=!0,i="light"){const s=Consono.createOptions(t),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)}function consonoExit(e,t=!0,i="light",s=0){const a=Consono.createOptions({...t,exit:s}),r=new Consono(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint(r.toPrintable(e))),0):cliPrint(r.toPrintable(e)),processExit(a.exit)),a.returns)return r.toPrintable(e)}function consonoPlain(e,t=!0){const i=Consono.createOptions({...t,colorize:!1}),s=new Consono(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}function consonoReturn(e,t=!0,i="light"){const s=Consono.createOptions({...t,console:!1,returns:!0}),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)}export{Consono,K as THEME_DARK,Y as THEME_LIGHT,consono,consonoExit,consonoPlain,consonoReturn,e as options}; +function _classPrivateFieldGet(e,t){return function _classApplyDescriptorGet(e,t){if(t.get)return t.get.call(e);return t.value}(e,_classExtractFieldDescriptor(e,t,"get"))}function _classPrivateFieldSet(e,t,i){return function _classApplyDescriptorSet(e,t,i){if(t.set)t.set.call(e,i);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=i}}(e,_classExtractFieldDescriptor(e,t,"set"),i),i}function _classExtractFieldDescriptor(e,t,i){if(!t.has(e))throw new TypeError("attempted to "+i+" private field on non-instance");return t.get(e)}const e={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},t=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var i="[object Arguments]",s="[object Array]",a="[object ArrayBuffer]",r="[object AsyncFunction]",l="[object BigInt]",n="[object Boolean]",o="[object Date]",c="[object Error]",h="[object Function]",d="[object Generator]",v="[object GeneratorFunction]",P="[object global]",m="[object Map]",u="[object Null]",F="[object Number]",p="[object Promise]",_="[object RegExp]",b="[object Set]",G="[object SharedArrayBuffer]",$="[object String]",f="[object Symbol]",g="[object Undefined]",y="[object WeakMap]",w="[object WeakSet]",k="[object Window]";const S={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""},j={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""};class Theme{constructor(e=3,t="light"){let i;switch(!0){case"dark"===t:i=j;break;case"light"===t:default:i=S}this.argument=e=>i.argument+e.toString()+"",this.boolean=e=>i.boolean+e.toString()+"",this.comment=e=>i.comment+e.toString()+"",this.keyword=e=>i.keyword+e.toString()+"",this.name=e=>i.name+e.toString()+"",this.number=e=>i.number+e.toString()+"",this.plain=e=>i.plain+e.toString()+"",this.property=e=>i.property+e.toString()+"",this.string=e=>i.string+e.toString()+""}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint(e){console.log(e)}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(a,r){let l,n,o;if(!("object"!=typeof a||null===a||a instanceof Boolean||a instanceof Date||a instanceof Number||a instanceof RegExp||a instanceof String)){for(l=0;l_classPrivateFieldGet(this,x)?`${_classPrivateFieldGet(this,H).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,H).keyword(s)}`:""} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("elements")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}${_classPrivateFieldGet(this,H).plain(",")} ${_classPrivateFieldGet(this,H).argument("shown")}=${_classPrivateFieldGet(this,H).number(_classPrivateFieldGet(this,x))}${_classPrivateFieldGet(this,H).plain(")")} ${_classPrivateFieldGet(this,H).plain("[")}\n`:`${_classPrivateFieldGet(this,H).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,H).keyword(s)}`:""} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("elements")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}${_classPrivateFieldGet(this,H).plain(")")} ${_classPrivateFieldGet(this,H).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,H).plain("]")}`,a=_classPrivateFieldGet(this,x);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,D)?`${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("props")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}${_classPrivateFieldGet(this,H).plain(",")} ${_classPrivateFieldGet(this,H).argument("shown")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(_classPrivateFieldGet(this,D))}${_classPrivateFieldGet(this,H).plain(")")}`:`${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("props")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}${_classPrivateFieldGet(this,H).plain(")")}`,l=`${_classPrivateFieldGet(this,H).keyword("object")} ${_classPrivateFieldGet(this,H).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,H).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,H).plain("}")}`}else l=`${_classPrivateFieldGet(this,H).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,H).plain(")")}`;a=_classPrivateFieldGet(this,D);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,x)?`${_classPrivateFieldGet(this,H).keyword("arguments")} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("arity")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}, ${_classPrivateFieldGet(this,H).argument("shown")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(_classPrivateFieldGet(this,x))}${_classPrivateFieldGet(this,H).plain(")")} ${_classPrivateFieldGet(this,H).plain("[")}\n`:`${_classPrivateFieldGet(this,H).keyword("arguments")} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("arity")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}${_classPrivateFieldGet(this,H).plain(")")} ${_classPrivateFieldGet(this,H).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,H).plain("]")}`,a=_classPrivateFieldGet(this,x);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,q)?`${_classPrivateFieldGet(this,H).keyword("set")} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("size")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}${_classPrivateFieldGet(this,H).plain(",")} ${_classPrivateFieldGet(this,H).argument("shown")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(_classPrivateFieldGet(this,q))}${_classPrivateFieldGet(this,H).plain(")")} ${_classPrivateFieldGet(this,H).plain("{")}\n`:`${_classPrivateFieldGet(this,H).keyword("set")} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("size")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}${_classPrivateFieldGet(this,H).plain(")")} ${_classPrivateFieldGet(this,H).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,q);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,B)?`${_classPrivateFieldGet(this,H).keyword("map")} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("size")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}${_classPrivateFieldGet(this,H).plain(",")} ${_classPrivateFieldGet(this,H).argument("shown")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(_classPrivateFieldGet(this,B))}${_classPrivateFieldGet(this,H).plain(")")} ${_classPrivateFieldGet(this,H).plain("{")}\n`:`${_classPrivateFieldGet(this,H).keyword("map")} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("size")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}${_classPrivateFieldGet(this,H).plain(")")} ${_classPrivateFieldGet(this,H).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,H).plain("}")}`,a=_classPrivateFieldGet(this,B);break}default:return this.formatValue(t,e)}let c=0;switch(o){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),c+=1,c>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),c+=1,c>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,s=!0){let S="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case g:[j,S]=this.formatUndefined();break;case u:[j,S]=this.formatNull();break;case P:case k:[j,S]=this.formatGlobal(M,t,e);break;case l:[j,S]=this.formatBigInt(t);break;case F:[j,S]=this.formatNumber(t);break;case n:[j,S]=this.formatBoolean(t);break;case $:[j,S]=this.formatString(t);break;case _:[j,S]=this.formatRegexp(t);break;case h:case r:case v:[j,S]=this.formatFunction(M,t);break;case o:[j,S]=this.formatDate(t);break;case i:[j,S]=this.formatArguments(t);break;case f:[j,S]=this.formatSymbol(t);break;case p:[j,S]=this.formatPromise();break;case d:[j,S]=this.formatGenerator();break;case c:[j,S]=this.formatError(t);break;case w:case y:[j,S]=this.formatWeak(M);break;case b:[j,S]=this.formatSet(t);break;case m:[j,S]=this.formatMap(t);break;case a:case G:[j,S]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const i=M.split(" ")[1];if("Set"===i)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,s);if("Map"===i)return this.toPrintable(new Map(Array.from(t)),e,s);if("String"===i)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,s);if("Array"===i)return this.toPrintable(Array.from(t).map((e=>e[1])),e,s)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,O)===_classPrivateFieldGet(this,W)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,D)?`${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("props")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(e)}${_classPrivateFieldGet(this,H).plain(",")} ${_classPrivateFieldGet(this,H).argument("shown")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(_classPrivateFieldGet(this,D))}${_classPrivateFieldGet(this,H).plain(")")}`:`${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("props")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(e)}${_classPrivateFieldGet(this,H).plain(")")}`,S=`${_classPrivateFieldGet(this,H).keyword("object")} ${_classPrivateFieldGet(this,H).keyword(objectClass(t))} ${i}`}else{let i;_classPrivateFieldSet(this,O,_classPrivateFieldGet(this,O)+1),i="array"===j?`${_classPrivateFieldGet(this,H).comment(e)}`:`${e}${_classPrivateFieldGet(this,H).comment(_classPrivateFieldGet(this,z))}`,S=this.toPrintable(t,i,s,x),_classPrivateFieldSet(this,O,_classPrivateFieldGet(this,O)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),S=t.toString())}return`${_classPrivateFieldGet(this,H).keyword(j)}${j.length?_classPrivateFieldGet(this,H).plain(" • "):""}${S}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,H).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,H).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("bytes")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(t.byteLength)}${_classPrivateFieldGet(this,H).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,H).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,H).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case r:i=`${i} async`;break;case v:i=`${i} generator`}const s=function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}(t);i=s.length?`${i} ${_classPrivateFieldGet(this,H).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,H).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,H).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===k?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,H).comment(_classPrivateFieldGet(this,z))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,H).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,H).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,H).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,H).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,U)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,U)).join(""):e.slice(0,_classPrivateFieldGet(this,U))),a=s===i?`${_classPrivateFieldGet(this,H).string(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,H).string(r||e)}${_classPrivateFieldGet(this,H).string(_classPrivateFieldGet(this,R))} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("length")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(s)}`:`${_classPrivateFieldGet(this,H).string(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,H).string(r||e)}${_classPrivateFieldGet(this,H).string(_classPrivateFieldGet(this,R))} ${_classPrivateFieldGet(this,H).plain("(")}${_classPrivateFieldGet(this,H).argument("length")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(s)}${_classPrivateFieldGet(this,H).plain(",")} ${_classPrivateFieldGet(this,H).argument("symbols")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(i)}`,a=i>_classPrivateFieldGet(this,U)?`${a}${_classPrivateFieldGet(this,H).plain(",")} ${_classPrivateFieldGet(this,H).argument("shown")}${_classPrivateFieldGet(this,H).plain("=")}${_classPrivateFieldGet(this,H).number(_classPrivateFieldGet(this,U))}${_classPrivateFieldGet(this,H).plain(")")}`:`${a}${_classPrivateFieldGet(this,H).plain(")")}`,function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,H).string("undefined")]}formatWeak(e){return e===y?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,H).comment(_classPrivateFieldGet(this,z))}${s}${_classPrivateFieldGet(this,H).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,H).comment(_classPrivateFieldGet(this,z))}${_classPrivateFieldGet(this,H).plain(_classPrivateFieldGet(this,M))} ${s}${_classPrivateFieldGet(this,H).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,H).plain("[")}${_classPrivateFieldGet(this,H).property(i)}${_classPrivateFieldGet(this,H).plain("]")}`:`${_classPrivateFieldGet(this,H).plain(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,H).property(i)}${_classPrivateFieldGet(this,H).plain(_classPrivateFieldGet(this,R))}`,`${t}${_classPrivateFieldGet(this,H).comment(_classPrivateFieldGet(this,z))}${a} ${_classPrivateFieldGet(this,H).plain(_classPrivateFieldGet(this,M))} ${s}${_classPrivateFieldGet(this,H).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,C)&&(_classPrivateFieldGet(this,E)&&cliExit(),_classPrivateFieldGet(this,A)?setTimeout((()=>cliPrint(this.toPrintable(e))),0):cliPrint(this.toPrintable(e)),processExit(_classPrivateFieldGet(this,I))),_classPrivateFieldGet(this,L))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(i=!0){const s={...e};return"boolean"==typeof i?s.console=i:i&&"object"==typeof i&&Object.assign(s,i),function objectPick(e,t){return t.length&&Object.keys(e).length?t.reduce(((t,i)=>(t[i]=e[i],t)),{}):{}}(s,t)}}const Y={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},K={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]};function consono(e,t=!0,i="light"){const s=Consono.createOptions(t),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)}function consonoExit(e,t=!0,i="light",s=0){const a=Consono.createOptions({...t,exit:s}),r=new Consono(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint(r.toPrintable(e))),0):cliPrint(r.toPrintable(e)),processExit(a.exit)),a.returns)return r.toPrintable(e)}function consonoJSON(e,t=!0){let i;i=void 0===e?void 0:JSON.parse(JSON.stringify(e),null,2);const s=Consono.createOptions({...t,colorize:!1});if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>{void 0===i?console.dir(void 0):console.dir(i)}),0):void 0===i?console.dir(void 0):console.dir(i),processExit(s.exit)),s.returns)return i}function consonoPlain(e,t=!0){const i=Consono.createOptions({...t,colorize:!1}),s=new Consono(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}function consonoReturn(e,t=!0,i="light"){const s=Consono.createOptions({...t,console:!1,returns:!0}),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)}export{Consono,Y as THEME_DARK,K as THEME_LIGHT,consono,consonoExit,consonoJSON,consonoPlain,consonoReturn,e as options}; //# sourceMappingURL=consono.browser.mjs.map diff --git a/dist/consono.browser.mjs.map b/dist/consono.browser.mjs.map index 563ffa5..8d34570 100644 --- a/dist/consono.browser.mjs.map +++ b/dist/consono.browser.mjs.map @@ -1 +1 @@ -{"version":3,"file":"consono.browser.mjs","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_default.js","../src/core/browser/theme.js","../src/utils/cliExit.js","../src/utils/browser/cliPrint.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/core/browser/consono.js","../src/utils/funcNameExtract.js","../src/utils/stringClearReference.js","../src/utils/objectPick.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/helpers/browser/consono.js","../src/helpers/browser/consonoExit.js","../src/helpers/browser/consonoPlain.js","../src/helpers/browser/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","export const THEME_DEFAULT = \"light\";\n","import { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nconst Reset = \"\\x1b[0m\";\n\nconst FgBlack = \"\\x1b[30m\";\nconst FgRed = \"\\x1b[31m\";\nconst FgGreen = \"\\x1b[32m\";\n// const FgYellow = \"\\x1b[33m\";\nconst FgBlue = \"\\x1b[34m\";\nconst FgMagenta = \"\\x1b[35m\";\n// const FgCyan = \"\\x1b[36m\";\nconst FgWhite = \"\\x1b[37m\";\n\nconst THEME_LIGHT = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgBlack,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgBlack,\n property: FgRed,\n string: FgGreen,\n};\n\nconst THEME_DARK = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgWhite,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgWhite,\n property: FgRed,\n string: FgGreen,\n};\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n // eslint-disable-next-line no-unused-vars\n constructor(level = 3, theme = THEME_DEFAULT) {\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = (value) => rgb.argument + value.toString() + Reset;\n this.boolean = (value) => rgb.boolean + value.toString() + Reset;\n this.comment = (value) => rgb.comment + value.toString() + Reset;\n this.keyword = (value) => rgb.keyword + value.toString() + Reset;\n this.name = (value) => rgb.name + value.toString() + Reset;\n this.number = (value) => rgb.number + value.toString() + Reset;\n this.plain = (value) => rgb.plain + value.toString() + Reset;\n this.property = (value) => rgb.property + value.toString() + Reset;\n this.string = (value) => rgb.string + value.toString() + Reset;\n }\n}\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message) {\n console.log(message);\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable) /*, this.#stdout*/), 0);\n } else {\n cliPrint(this.toPrintable(variable) /*, this.#stdout*/);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = \"light\", exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","THEME_LIGHT","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_DARK","Theme","constructor","level","theme","rgb","value","toString","cliExit","err","process","write","cliPrint","message","log","isInteger","Number","parseInt","objectClass","prototypeName","Object","prototype","call","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectSize","obj","keys","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","this","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","reduce","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","funcNameExtract","func","result","exec","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","text","stringAsArray","stringSize","stringLength","printString","slice","stringClearReference","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","objectPick","accumulator","consonoExit","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"consono.browser.mjs","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_default.js","../src/core/browser/theme.js","../src/utils/cliExit.js","../src/utils/browser/cliPrint.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/core/browser/consono.js","../src/utils/funcNameExtract.js","../src/utils/stringClearReference.js","../src/utils/objectPick.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/helpers/browser/consono.js","../src/helpers/browser/consonoExit.js","../src/helpers/browser/consonoJSON.js","../src/helpers/browser/consonoPlain.js","../src/helpers/browser/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","export const THEME_DEFAULT = \"light\";\n","import { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nconst Reset = \"\\x1b[0m\";\n\nconst FgBlack = \"\\x1b[30m\";\nconst FgRed = \"\\x1b[31m\";\nconst FgGreen = \"\\x1b[32m\";\n// const FgYellow = \"\\x1b[33m\";\nconst FgBlue = \"\\x1b[34m\";\nconst FgMagenta = \"\\x1b[35m\";\n// const FgCyan = \"\\x1b[36m\";\nconst FgWhite = \"\\x1b[37m\";\n\nconst THEME_LIGHT = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgBlack,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgBlack,\n property: FgRed,\n string: FgGreen,\n};\n\nconst THEME_DARK = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgWhite,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgWhite,\n property: FgRed,\n string: FgGreen,\n};\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n // eslint-disable-next-line no-unused-vars\n constructor(level = 3, theme = THEME_DEFAULT) {\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = (value) => rgb.argument + value.toString() + Reset;\n this.boolean = (value) => rgb.boolean + value.toString() + Reset;\n this.comment = (value) => rgb.comment + value.toString() + Reset;\n this.keyword = (value) => rgb.keyword + value.toString() + Reset;\n this.name = (value) => rgb.name + value.toString() + Reset;\n this.number = (value) => rgb.number + value.toString() + Reset;\n this.plain = (value) => rgb.plain + value.toString() + Reset;\n this.property = (value) => rgb.property + value.toString() + Reset;\n this.string = (value) => rgb.string + value.toString() + Reset;\n }\n}\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message) {\n console.log(message);\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable) /*, this.#stdout*/), 0);\n } else {\n cliPrint(this.toPrintable(variable) /*, this.#stdout*/);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = \"light\", exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoJSON\n * @description Print variable as JSON without highlighting\n * @param {*} variable\n * @param {boolean|Object} [options=true]\n * @returns {string|undefined}\n */\nexport default function consonoJSON(variable, options = true) {\n let out;\n if (variable === undefined) {\n out = undefined;\n } else {\n out = JSON.parse(JSON.stringify(variable), null, 2);\n }\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }, 0);\n } else {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return out;\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","THEME_LIGHT","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_DARK","Theme","constructor","level","theme","rgb","value","toString","cliExit","err","process","write","cliPrint","message","log","isInteger","Number","parseInt","objectClass","prototypeName","Object","prototype","call","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectSize","obj","keys","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","this","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","reduce","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","funcNameExtract","func","result","exec","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","text","stringAsArray","stringSize","stringLength","printString","slice","stringClearReference","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","objectPick","accumulator","consonoExit","consonoJSON","out","parse","dir","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file diff --git a/dist/consono.d.ts b/dist/consono.d.ts index d592048..a62c5ac 100644 --- a/dist/consono.d.ts +++ b/dist/consono.d.ts @@ -1,20 +1,109 @@ +/** + * @typedef IConsonoOptions + * @type {object} + * @property {number} [arrayMaxElements=99] Maximum number of elements in array to show. + * @property {string} [assignSymbol='→'] Assign symbol. + * @property {boolean} [clear=false] Clear console before output. + * @property {boolean} [colorize=true] Colorize the output. + * @property {boolean} [console=true] Output to console. + * @property {number} [depth=20] Default depth of object. + * @property {boolean|number} [exit=false] Number greater than zero - exit status with passed error code. 'false' - do nothing. 'true' - exit status ok. + * @property {boolean} [immediate=false] Call console.log immediately. + * @property {string} [indent='ˑˑ'] Print indentation. + * @property {number} [mapMaxEntries=99] Maximum number of entries in map to show. + * @property {number} [objectMaxProps=99] Maximum number of properties in object to show. + * @property {string} [quotesEnd='"'] Quote end. + * @property {string} [quotesStart='"'] Quote start. + * @property {boolean} [returns=true] Return inspected variable as string. + * @property {number} [setMaxValues=99] Maximum number of values in set to show. + * @property {boolean} [stdout=false] Call `process.stdout.write` instead of `console.log`. + * @property {number} [stringMaxLength=360] Maximum length of string to show. + */ export interface IConsonoOptions { + /** + * @description Maximum number of elements in array to show. + * @default 99 + */ arrayMaxElements?: number; + /** + * @description Assign symbol. + * @default "→" + */ assignSymbol?: string; + /** + * @description Clear console before output. + * @default false + */ clear?: boolean; + /** + * @description Colorize the output. + * @default true + */ colorize?: boolean; + /** + * @description Output to console. + * @default true + */ console?: boolean; + /** + * @description Default depth of object. + * @default 20 + */ depth?: number; + /** + * @description Number greater than zero - exit status with passed error code. 'false' - do nothing. 'true' - exit status ok. + * @default false + */ exit?: boolean | number; + /** + * @description Call console.log immediately. + * @default false + */ immediate?: boolean; + /** + * @description Print indentation. + * @default "ˑˑ" + */ indent?: string; + /** + * @description Maximum number of entries in map to show. + * @default 99 + */ mapMaxEntries?: number; + /** + * @description Maximum number of properties in object to show. + * @default 99 + */ objectMaxProps?: number; + /** + * @description Quote end. + * @default `"` + */ quotesEnd?: string; + /** + * @description Quote start. + * @default `"` + */ quotesStart?: string; + /** + * @description Return inspected variable as string. + * @default true + */ returns?: boolean; + /** + * @description Maximum number of values in set to show. + * @default 99 + */ setMaxValues?: number; + /** + * @description Call `process.stdout.write` instead of `console.log`. + * @default false + */ stdout?: boolean; + /** + * @description Maximum length of string to show. + * @default 360 + */ stringMaxLength?: number; } @@ -62,6 +151,15 @@ export declare function consonoExit( exitCode?: boolean | number, ): string | void; +/** + * @name consonoJSON + * @description Print variable as JSON without highlighting + * @param {*} variable + * @param {boolean|Object} [options=true] + * @returns {string|undefined} + */ +export declare function consonoJSON(variable: any, options?: boolean | IConsonoOptions): string | void; + /** * @name consonoPlain * @description Print variable without highlighting diff --git a/dist/consono.js b/dist/consono.js index a375157..ad916c4 100644 --- a/dist/consono.js +++ b/dist/consono.js @@ -1,2 +1,2 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).consono={})}(this,(function(e){"use strict";function _classPrivateFieldGet(e,t){var i=t.get(e);if(!i)throw new TypeError("attempted to get private field on non-instance");return i.get?i.get.call(e):i.value}function _classPrivateFieldSet(e,t,i){var s=t.get(e);if(!s)throw new TypeError("attempted to set private field on non-instance");if(s.set)s.set.call(e,i);else{if(!s.writable)throw new TypeError("attempted to set read only private field");s.value=i}return i}const t={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},i=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var s="[object Arguments]",a="[object Array]",r="[object ArrayBuffer]",l="[object AsyncFunction]",n="[object BigInt]",o="[object Boolean]",c="[object Date]",h="[object Error]",d="[object Function]",P="[object Generator]",v="[object GeneratorFunction]",u="[object global]",m="[object Map]",p="[object Null]",F="[object Number]",_="[object Promise]",b="[object RegExp]",G="[object Set]",$="[object SharedArrayBuffer]",f="[object String]",g="[object Symbol]",y="[object Undefined]",w="[object WeakMap]",k="[object WeakSet]",S="[object Window]";const j="",x="",M="",E="",C="",N="",I="",O={argument:M,boolean:N,comment:x,keyword:C,name:E,number:N,plain:x,property:M,string:E},W={argument:M,boolean:N,comment:I,keyword:C,name:E,number:N,plain:I,property:M,string:E};class Theme{constructor(e=3,t="light"){let i;switch(!0){case"dark"===t:i=W;break;case"light"===t:default:i=O}this.argument=e=>i.argument+e.toString()+j,this.boolean=e=>i.boolean+e.toString()+j,this.comment=e=>i.comment+e.toString()+j,this.keyword=e=>i.keyword+e.toString()+j,this.name=e=>i.name+e.toString()+j,this.number=e=>i.number+e.toString()+j,this.plain=e=>i.plain+e.toString()+j,this.property=e=>i.property+e.toString()+j,this.string=e=>i.string+e.toString()+j}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint(e){console.log(e)}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(s,r){let l,n,o;if(!("object"!=typeof s||null===s||s instanceof Boolean||s instanceof Date||s instanceof Number||s instanceof RegExp||s instanceof String)){for(l=0;l_classPrivateFieldGet(this,T)?`${_classPrivateFieldGet(this,ie).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,ie).keyword(s)}`:""} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("elements")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}=${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,T))}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("[")}\n`:`${_classPrivateFieldGet(this,ie).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,ie).keyword(s)}`:""} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("elements")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain("]")}`,a=_classPrivateFieldGet(this,T);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,K)?`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("props")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,K))}${_classPrivateFieldGet(this,ie).plain(")")}`:`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("props")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")}`,l=`${_classPrivateFieldGet(this,ie).keyword("object")} ${_classPrivateFieldGet(this,ie).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,ie).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain("}")}`}else l=`${_classPrivateFieldGet(this,ie).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain(")")}`;a=_classPrivateFieldGet(this,K);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,T)?`${_classPrivateFieldGet(this,ie).keyword("arguments")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("arity")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}, ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,T))}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("[")}\n`:`${_classPrivateFieldGet(this,ie).keyword("arguments")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("arity")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain("]")}`,a=_classPrivateFieldGet(this,T);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,Z)?`${_classPrivateFieldGet(this,ie).keyword("set")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("size")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,Z))}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("{")}\n`:`${_classPrivateFieldGet(this,ie).keyword("set")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("size")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,Z);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,J)?`${_classPrivateFieldGet(this,ie).keyword("map")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("size")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,J))}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("{")}\n`:`${_classPrivateFieldGet(this,ie).keyword("map")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("size")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain("}")}`,a=_classPrivateFieldGet(this,J);break}default:return this.formatValue(t,e)}let c=0;switch(o){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),c+=1,c>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),c+=1,c>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,i=!0){let a="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case y:[j,a]=this.formatUndefined();break;case p:[j,a]=this.formatNull();break;case u:case S:[j,a]=this.formatGlobal(M,t,e);break;case n:[j,a]=this.formatBigInt(t);break;case F:[j,a]=this.formatNumber(t);break;case o:[j,a]=this.formatBoolean(t);break;case f:[j,a]=this.formatString(t);break;case b:[j,a]=this.formatRegexp(t);break;case d:case l:case v:[j,a]=this.formatFunction(M,t);break;case c:[j,a]=this.formatDate(t);break;case s:[j,a]=this.formatArguments(t);break;case g:[j,a]=this.formatSymbol(t);break;case _:[j,a]=this.formatPromise();break;case P:[j,a]=this.formatGenerator();break;case h:[j,a]=this.formatError(t);break;case k:case w:[j,a]=this.formatWeak(M);break;case G:[j,a]=this.formatSet(t);break;case m:[j,a]=this.formatMap(t);break;case r:case $:[j,a]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const s=M.split(" ")[1];if("Set"===s)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,i);if("Map"===s)return this.toPrintable(new Map(Array.from(t)),e,i);if("String"===s)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,i);if("Array"===s)return this.toPrintable(Array.from(t).map((e=>e[1])),e,i)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,V)===_classPrivateFieldGet(this,L)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,K)?`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("props")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(e)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,K))}${_classPrivateFieldGet(this,ie).plain(")")}`:`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("props")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(e)}${_classPrivateFieldGet(this,ie).plain(")")}`,a=`${_classPrivateFieldGet(this,ie).keyword("object")} ${_classPrivateFieldGet(this,ie).keyword(objectClass(t))} ${i}`}else{let s;_classPrivateFieldSet(this,V,_classPrivateFieldGet(this,V)+1),s="array"===j?`${_classPrivateFieldGet(this,ie).comment(e)}`:`${e}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,U))}`,a=this.toPrintable(t,s,i,x),_classPrivateFieldSet(this,V,_classPrivateFieldGet(this,V)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),a=t.toString())}return`${_classPrivateFieldGet(this,ie).keyword(j)}${j.length?_classPrivateFieldGet(this,ie).plain(" • "):""}${a}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,ie).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,ie).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("bytes")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(t.byteLength)}${_classPrivateFieldGet(this,ie).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,ie).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,ie).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case l:i=`${i} async`;break;case v:i=`${i} generator`}const s=function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}(t);i=s.length?`${i} ${_classPrivateFieldGet(this,ie).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,ie).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,ie).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===S?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,U))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,ie).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,ie).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,ie).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,ie).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,te)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,te)).join(""):e.slice(0,_classPrivateFieldGet(this,te))),a=s===i?`${_classPrivateFieldGet(this,ie).string(_classPrivateFieldGet(this,Q))}${_classPrivateFieldGet(this,ie).string(r||e)}${_classPrivateFieldGet(this,ie).string(_classPrivateFieldGet(this,Y))} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("length")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(s)}`:`${_classPrivateFieldGet(this,ie).string(_classPrivateFieldGet(this,Q))}${_classPrivateFieldGet(this,ie).string(r||e)}${_classPrivateFieldGet(this,ie).string(_classPrivateFieldGet(this,Y))} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("length")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(s)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("symbols")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}`,a=i>_classPrivateFieldGet(this,te)?`${a}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,te))}${_classPrivateFieldGet(this,ie).plain(")")}`:`${a}${_classPrivateFieldGet(this,ie).plain(")")}`,function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,ie).string("undefined")]}formatWeak(e){return e===w?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,U))}${s}${_classPrivateFieldGet(this,ie).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,U))}${_classPrivateFieldGet(this,ie).plain(_classPrivateFieldGet(this,A))} ${s}${_classPrivateFieldGet(this,ie).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,ie).plain("[")}${_classPrivateFieldGet(this,ie).property(i)}${_classPrivateFieldGet(this,ie).plain("]")}`:`${_classPrivateFieldGet(this,ie).plain(_classPrivateFieldGet(this,Q))}${_classPrivateFieldGet(this,ie).property(i)}${_classPrivateFieldGet(this,ie).plain(_classPrivateFieldGet(this,Y))}`,`${t}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,U))}${a} ${_classPrivateFieldGet(this,ie).plain(_classPrivateFieldGet(this,A))} ${s}${_classPrivateFieldGet(this,ie).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,B)&&(_classPrivateFieldGet(this,z)&&cliExit(),_classPrivateFieldGet(this,q)?setTimeout((()=>cliPrint(this.toPrintable(e))),0):cliPrint(this.toPrintable(e)),processExit(_classPrivateFieldGet(this,D))),_classPrivateFieldGet(this,X))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(e=!0){const s={...t};return"boolean"==typeof e?s.console=e:e&&"object"==typeof e&&Object.assign(s,e),function objectPick(e,t){return t.length&&Object.keys(e).length?t.reduce(((t,i)=>(t[i]=e[i],t)),{}):{}}(s,i)}}e.Consono=Consono,e.THEME_DARK={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},e.THEME_LIGHT={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]},e.consono=function consono(e,t=!0,i="light"){const s=Consono.createOptions(t),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)},e.consonoExit=function consonoExit(e,t=!0,i="light",s=0){const a=Consono.createOptions({...t,exit:s}),r=new Consono(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint(r.toPrintable(e))),0):cliPrint(r.toPrintable(e)),processExit(a.exit)),a.returns)return r.toPrintable(e)},e.consonoPlain=function consonoPlain(e,t=!0){const i=Consono.createOptions({...t,colorize:!1}),s=new Consono(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)},e.consonoReturn=function consonoReturn(e,t=!0,i="light"){const s=Consono.createOptions({...t,console:!1,returns:!0}),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)},e.options=t,Object.defineProperty(e,"__esModule",{value:!0})})); +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).consono={})}(this,(function(e){"use strict";function _classPrivateFieldGet(e,t){return function _classApplyDescriptorGet(e,t){if(t.get)return t.get.call(e);return t.value}(e,_classExtractFieldDescriptor(e,t,"get"))}function _classPrivateFieldSet(e,t,i){return function _classApplyDescriptorSet(e,t,i){if(t.set)t.set.call(e,i);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=i}}(e,_classExtractFieldDescriptor(e,t,"set"),i),i}function _classExtractFieldDescriptor(e,t,i){if(!t.has(e))throw new TypeError("attempted to "+i+" private field on non-instance");return t.get(e)}const t={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},i=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var s="[object Arguments]",a="[object Array]",r="[object ArrayBuffer]",l="[object AsyncFunction]",n="[object BigInt]",o="[object Boolean]",c="[object Date]",h="[object Error]",d="[object Function]",v="[object Generator]",P="[object GeneratorFunction]",u="[object global]",m="[object Map]",p="[object Null]",F="[object Number]",_="[object Promise]",b="[object RegExp]",G="[object Set]",$="[object SharedArrayBuffer]",f="[object String]",g="[object Symbol]",y="[object Undefined]",w="[object WeakMap]",k="[object WeakSet]",S="[object Window]";const j="",x="",M="",E="",N="",C="",O="",I={argument:M,boolean:C,comment:x,keyword:N,name:E,number:C,plain:x,property:M,string:E},W={argument:M,boolean:C,comment:O,keyword:N,name:E,number:C,plain:O,property:M,string:E};class Theme{constructor(e=3,t="light"){let i;switch(!0){case"dark"===t:i=W;break;case"light"===t:default:i=I}this.argument=e=>i.argument+e.toString()+j,this.boolean=e=>i.boolean+e.toString()+j,this.comment=e=>i.comment+e.toString()+j,this.keyword=e=>i.keyword+e.toString()+j,this.name=e=>i.name+e.toString()+j,this.number=e=>i.number+e.toString()+j,this.plain=e=>i.plain+e.toString()+j,this.property=e=>i.property+e.toString()+j,this.string=e=>i.string+e.toString()+j}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint(e){console.log(e)}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(s,r){let l,n,o;if(!("object"!=typeof s||null===s||s instanceof Boolean||s instanceof Date||s instanceof Number||s instanceof RegExp||s instanceof String)){for(l=0;l_classPrivateFieldGet(this,T)?`${_classPrivateFieldGet(this,ie).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,ie).keyword(s)}`:""} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("elements")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}=${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,T))}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("[")}\n`:`${_classPrivateFieldGet(this,ie).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,ie).keyword(s)}`:""} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("elements")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain("]")}`,a=_classPrivateFieldGet(this,T);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,K)?`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("props")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,K))}${_classPrivateFieldGet(this,ie).plain(")")}`:`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("props")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")}`,l=`${_classPrivateFieldGet(this,ie).keyword("object")} ${_classPrivateFieldGet(this,ie).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,ie).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain("}")}`}else l=`${_classPrivateFieldGet(this,ie).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain(")")}`;a=_classPrivateFieldGet(this,K);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,T)?`${_classPrivateFieldGet(this,ie).keyword("arguments")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("arity")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}, ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,T))}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("[")}\n`:`${_classPrivateFieldGet(this,ie).keyword("arguments")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("arity")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain("]")}`,a=_classPrivateFieldGet(this,T);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,Z)?`${_classPrivateFieldGet(this,ie).keyword("set")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("size")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,Z))}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("{")}\n`:`${_classPrivateFieldGet(this,ie).keyword("set")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("size")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,Z);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,U)?`${_classPrivateFieldGet(this,ie).keyword("map")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("size")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,U))}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("{")}\n`:`${_classPrivateFieldGet(this,ie).keyword("map")} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("size")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}${_classPrivateFieldGet(this,ie).plain(")")} ${_classPrivateFieldGet(this,ie).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,ie).plain("}")}`,a=_classPrivateFieldGet(this,U);break}default:return this.formatValue(t,e)}let c=0;switch(o){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),c+=1,c>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),c+=1,c>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,i=!0){let a="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case y:[j,a]=this.formatUndefined();break;case p:[j,a]=this.formatNull();break;case u:case S:[j,a]=this.formatGlobal(M,t,e);break;case n:[j,a]=this.formatBigInt(t);break;case F:[j,a]=this.formatNumber(t);break;case o:[j,a]=this.formatBoolean(t);break;case f:[j,a]=this.formatString(t);break;case b:[j,a]=this.formatRegexp(t);break;case d:case l:case P:[j,a]=this.formatFunction(M,t);break;case c:[j,a]=this.formatDate(t);break;case s:[j,a]=this.formatArguments(t);break;case g:[j,a]=this.formatSymbol(t);break;case _:[j,a]=this.formatPromise();break;case v:[j,a]=this.formatGenerator();break;case h:[j,a]=this.formatError(t);break;case k:case w:[j,a]=this.formatWeak(M);break;case G:[j,a]=this.formatSet(t);break;case m:[j,a]=this.formatMap(t);break;case r:case $:[j,a]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const s=M.split(" ")[1];if("Set"===s)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,i);if("Map"===s)return this.toPrintable(new Map(Array.from(t)),e,i);if("String"===s)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,i);if("Array"===s)return this.toPrintable(Array.from(t).map((e=>e[1])),e,i)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,B)===_classPrivateFieldGet(this,V)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,K)?`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("props")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(e)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,K))}${_classPrivateFieldGet(this,ie).plain(")")}`:`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("props")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(e)}${_classPrivateFieldGet(this,ie).plain(")")}`,a=`${_classPrivateFieldGet(this,ie).keyword("object")} ${_classPrivateFieldGet(this,ie).keyword(objectClass(t))} ${i}`}else{let s;_classPrivateFieldSet(this,B,_classPrivateFieldGet(this,B)+1),s="array"===j?`${_classPrivateFieldGet(this,ie).comment(e)}`:`${e}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,H))}`,a=this.toPrintable(t,s,i,x),_classPrivateFieldSet(this,B,_classPrivateFieldGet(this,B)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),a=t.toString())}return`${_classPrivateFieldGet(this,ie).keyword(j)}${j.length?_classPrivateFieldGet(this,ie).plain(" • "):""}${a}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,ie).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,ie).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("bytes")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(t.byteLength)}${_classPrivateFieldGet(this,ie).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,ie).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,ie).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case l:i=`${i} async`;break;case P:i=`${i} generator`}const s=function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}(t);i=s.length?`${i} ${_classPrivateFieldGet(this,ie).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,ie).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,ie).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===S?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,H))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,ie).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,ie).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,ie).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,ie).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,te)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,te)).join(""):e.slice(0,_classPrivateFieldGet(this,te))),a=s===i?`${_classPrivateFieldGet(this,ie).string(_classPrivateFieldGet(this,Q))}${_classPrivateFieldGet(this,ie).string(r||e)}${_classPrivateFieldGet(this,ie).string(_classPrivateFieldGet(this,Y))} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("length")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(s)}`:`${_classPrivateFieldGet(this,ie).string(_classPrivateFieldGet(this,Q))}${_classPrivateFieldGet(this,ie).string(r||e)}${_classPrivateFieldGet(this,ie).string(_classPrivateFieldGet(this,Y))} ${_classPrivateFieldGet(this,ie).plain("(")}${_classPrivateFieldGet(this,ie).argument("length")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(s)}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("symbols")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(i)}`,a=i>_classPrivateFieldGet(this,te)?`${a}${_classPrivateFieldGet(this,ie).plain(",")} ${_classPrivateFieldGet(this,ie).argument("shown")}${_classPrivateFieldGet(this,ie).plain("=")}${_classPrivateFieldGet(this,ie).number(_classPrivateFieldGet(this,te))}${_classPrivateFieldGet(this,ie).plain(")")}`:`${a}${_classPrivateFieldGet(this,ie).plain(")")}`,function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,ie).string("undefined")]}formatWeak(e){return e===w?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,H))}${s}${_classPrivateFieldGet(this,ie).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,H))}${_classPrivateFieldGet(this,ie).plain(_classPrivateFieldGet(this,A))} ${s}${_classPrivateFieldGet(this,ie).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,ie).plain("[")}${_classPrivateFieldGet(this,ie).property(i)}${_classPrivateFieldGet(this,ie).plain("]")}`:`${_classPrivateFieldGet(this,ie).plain(_classPrivateFieldGet(this,Q))}${_classPrivateFieldGet(this,ie).property(i)}${_classPrivateFieldGet(this,ie).plain(_classPrivateFieldGet(this,Y))}`,`${t}${_classPrivateFieldGet(this,ie).comment(_classPrivateFieldGet(this,H))}${a} ${_classPrivateFieldGet(this,ie).plain(_classPrivateFieldGet(this,A))} ${s}${_classPrivateFieldGet(this,ie).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,R)&&(_classPrivateFieldGet(this,z)&&cliExit(),_classPrivateFieldGet(this,q)?setTimeout((()=>cliPrint(this.toPrintable(e))),0):cliPrint(this.toPrintable(e)),processExit(_classPrivateFieldGet(this,L))),_classPrivateFieldGet(this,X))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(e=!0){const s={...t};return"boolean"==typeof e?s.console=e:e&&"object"==typeof e&&Object.assign(s,e),function objectPick(e,t){return t.length&&Object.keys(e).length?t.reduce(((t,i)=>(t[i]=e[i],t)),{}):{}}(s,i)}}e.Consono=Consono,e.THEME_DARK={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},e.THEME_LIGHT={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]},e.consono=function consono(e,t=!0,i="light"){const s=Consono.createOptions(t),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)},e.consonoExit=function consonoExit(e,t=!0,i="light",s=0){const a=Consono.createOptions({...t,exit:s}),r=new Consono(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint(r.toPrintable(e))),0):cliPrint(r.toPrintable(e)),processExit(a.exit)),a.returns)return r.toPrintable(e)},e.consonoJSON=function consonoJSON(e,t=!0){let i;i=void 0===e?void 0:JSON.parse(JSON.stringify(e),null,2);const s=Consono.createOptions({...t,colorize:!1});if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>{void 0===i?console.dir(void 0):console.dir(i)}),0):void 0===i?console.dir(void 0):console.dir(i),processExit(s.exit)),s.returns)return i},e.consonoPlain=function consonoPlain(e,t=!0){const i=Consono.createOptions({...t,colorize:!1}),s=new Consono(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)},e.consonoReturn=function consonoReturn(e,t=!0,i="light"){const s=Consono.createOptions({...t,console:!1,returns:!0}),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e))),0):cliPrint(a.toPrintable(e)),processExit(s.exit)),s.returns)return a.toPrintable(e)},e.options=t,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=consono.js.map diff --git a/dist/consono.js.map b/dist/consono.js.map index baa5cc9..bebce0d 100644 --- a/dist/consono.js.map +++ b/dist/consono.js.map @@ -1 +1 @@ -{"version":3,"file":"consono.js","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_default.js","../src/core/browser/theme.js","../src/utils/cliExit.js","../src/utils/browser/cliPrint.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/core/browser/consono.js","../src/utils/funcNameExtract.js","../src/utils/stringClearReference.js","../src/utils/objectPick.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/helpers/browser/consono.js","../src/helpers/browser/consonoExit.js","../src/helpers/browser/consonoPlain.js","../src/helpers/browser/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","export const THEME_DEFAULT = \"light\";\n","import { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nconst Reset = \"\\x1b[0m\";\n\nconst FgBlack = \"\\x1b[30m\";\nconst FgRed = \"\\x1b[31m\";\nconst FgGreen = \"\\x1b[32m\";\n// const FgYellow = \"\\x1b[33m\";\nconst FgBlue = \"\\x1b[34m\";\nconst FgMagenta = \"\\x1b[35m\";\n// const FgCyan = \"\\x1b[36m\";\nconst FgWhite = \"\\x1b[37m\";\n\nconst THEME_LIGHT = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgBlack,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgBlack,\n property: FgRed,\n string: FgGreen,\n};\n\nconst THEME_DARK = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgWhite,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgWhite,\n property: FgRed,\n string: FgGreen,\n};\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n // eslint-disable-next-line no-unused-vars\n constructor(level = 3, theme = THEME_DEFAULT) {\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = (value) => rgb.argument + value.toString() + Reset;\n this.boolean = (value) => rgb.boolean + value.toString() + Reset;\n this.comment = (value) => rgb.comment + value.toString() + Reset;\n this.keyword = (value) => rgb.keyword + value.toString() + Reset;\n this.name = (value) => rgb.name + value.toString() + Reset;\n this.number = (value) => rgb.number + value.toString() + Reset;\n this.plain = (value) => rgb.plain + value.toString() + Reset;\n this.property = (value) => rgb.property + value.toString() + Reset;\n this.string = (value) => rgb.string + value.toString() + Reset;\n }\n}\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message) {\n console.log(message);\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable) /*, this.#stdout*/), 0);\n } else {\n cliPrint(this.toPrintable(variable) /*, this.#stdout*/);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = \"light\", exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","Reset","FgBlack","FgRed","FgGreen","FgBlue","FgMagenta","FgWhite","THEME_LIGHT","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_DARK","Theme","constructor","level","theme","THEME_DEFAULT","rgb","value","toString","cliExit","err","process","write","cliPrint","message","log","isInteger","Number","parseInt","objectClass","prototypeName","Object","prototype","call","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectSize","obj","keys","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","this","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","reduce","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","funcNameExtract","func","result","exec","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","text","stringAsArray","stringSize","stringLength","printString","slice","stringClearReference","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","objectPick","accumulator","consonoExit","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"consono.js","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_default.js","../src/core/browser/theme.js","../src/utils/cliExit.js","../src/utils/browser/cliPrint.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/core/browser/consono.js","../src/utils/funcNameExtract.js","../src/utils/stringClearReference.js","../src/utils/objectPick.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/helpers/browser/consono.js","../src/helpers/browser/consonoExit.js","../src/helpers/browser/consonoJSON.js","../src/helpers/browser/consonoPlain.js","../src/helpers/browser/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","export const THEME_DEFAULT = \"light\";\n","import { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nconst Reset = \"\\x1b[0m\";\n\nconst FgBlack = \"\\x1b[30m\";\nconst FgRed = \"\\x1b[31m\";\nconst FgGreen = \"\\x1b[32m\";\n// const FgYellow = \"\\x1b[33m\";\nconst FgBlue = \"\\x1b[34m\";\nconst FgMagenta = \"\\x1b[35m\";\n// const FgCyan = \"\\x1b[36m\";\nconst FgWhite = \"\\x1b[37m\";\n\nconst THEME_LIGHT = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgBlack,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgBlack,\n property: FgRed,\n string: FgGreen,\n};\n\nconst THEME_DARK = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgWhite,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgWhite,\n property: FgRed,\n string: FgGreen,\n};\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n // eslint-disable-next-line no-unused-vars\n constructor(level = 3, theme = THEME_DEFAULT) {\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = (value) => rgb.argument + value.toString() + Reset;\n this.boolean = (value) => rgb.boolean + value.toString() + Reset;\n this.comment = (value) => rgb.comment + value.toString() + Reset;\n this.keyword = (value) => rgb.keyword + value.toString() + Reset;\n this.name = (value) => rgb.name + value.toString() + Reset;\n this.number = (value) => rgb.number + value.toString() + Reset;\n this.plain = (value) => rgb.plain + value.toString() + Reset;\n this.property = (value) => rgb.property + value.toString() + Reset;\n this.string = (value) => rgb.string + value.toString() + Reset;\n }\n}\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message) {\n console.log(message);\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable) /*, this.#stdout*/), 0);\n } else {\n cliPrint(this.toPrintable(variable) /*, this.#stdout*/);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = \"light\", exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoJSON\n * @description Print variable as JSON without highlighting\n * @param {*} variable\n * @param {boolean|Object} [options=true]\n * @returns {string|undefined}\n */\nexport default function consonoJSON(variable, options = true) {\n let out;\n if (variable === undefined) {\n out = undefined;\n } else {\n out = JSON.parse(JSON.stringify(variable), null, 2);\n }\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }, 0);\n } else {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return out;\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","Reset","FgBlack","FgRed","FgGreen","FgBlue","FgMagenta","FgWhite","THEME_LIGHT","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_DARK","Theme","constructor","level","theme","THEME_DEFAULT","rgb","value","toString","cliExit","err","process","write","cliPrint","message","log","isInteger","Number","parseInt","objectClass","prototypeName","Object","prototype","call","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectSize","obj","keys","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","this","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","reduce","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","funcNameExtract","func","result","exec","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","text","stringAsArray","stringSize","stringLength","printString","slice","stringClearReference","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","objectPick","accumulator","consonoExit","consonoJSON","out","parse","dir","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file diff --git a/dist/consono.node.cjs b/dist/consono.node.cjs index c832c8d..822dca6 100644 --- a/dist/consono.node.cjs +++ b/dist/consono.node.cjs @@ -1,2 +1,2 @@ -"use strict";function _interopDefaultLegacy(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}Object.defineProperty(exports,"__esModule",{value:!0});var e=_interopDefaultLegacy(require("chalk"));function _classPrivateFieldGet(e,t){var i=t.get(e);if(!i)throw new TypeError("attempted to get private field on non-instance");return i.get?i.get.call(e):i.value}function _classPrivateFieldSet(e,t,i){var s=t.get(e);if(!s)throw new TypeError("attempted to set private field on non-instance");if(s.set)s.set.call(e,i);else{if(!s.writable)throw new TypeError("attempted to set read only private field");s.value=i}return i}const t={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},i=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var s="[object Arguments]",a="[object Array]",r="[object ArrayBuffer]",l="[object AsyncFunction]",n="[object BigInt]",o="[object Boolean]",c="[object Date]",h="[object Error]",d="[object Function]",v="[object Generator]",P="[object GeneratorFunction]",u="[object global]",p="[object Map]",m="[object Null]",F="[object Number]",_="[object Promise]",b="[object RegExp]",G="[object Set]",$="[object SharedArrayBuffer]",f="[object String]",g="[object Symbol]",y="[object Undefined]",w="[object WeakMap]",k="[object WeakSet]",j="[object Window]";const S={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},x={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]};class Theme{constructor(t=3,i="light"){let s;switch(this.cli=new e.default.Instance({level:Math.min(t,e.default.supportsColor.level)}),!0){case"dark"===i:s=S;break;case"light"===i:s=x;break;case"[object Object]"===Object.prototype.toString.call(i):s={...x,...i};break;default:s=x}this.argument=this.compose(...s.argument),this.boolean=this.compose(...s.boolean),this.comment=this.compose(...s.comment),this.keyword=this.compose(...s.keyword),this.name=this.compose(...s.name),this.number=this.compose(...s.number),this.plain=this.compose(...s.plain),this.property=this.compose(...s.property),this.string=this.compose(...s.string)}static toRGB(e){return e=Number.parseInt(e.toString(),10),Number.isInteger(e)?Math.min(255,Math.max(0,e)):255}compose(e=255,t=255,i=255){return e=Theme.toRGB(e),t=Theme.toRGB(t),i=Theme.toRGB(i),s=>this.cli&&this.cli.rgb?this.cli.rgb(e,t,i)(s.toString()):s.toString()}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint(e,t=!1){t?process.stdout.write(e):console.log(e)}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(s,r){let l,n,o;if(!("object"!=typeof s||null===s||s instanceof Boolean||s instanceof Date||s instanceof Number||s instanceof RegExp||s instanceof String)){for(l=0;l_classPrivateFieldGet(this,M)?`${_classPrivateFieldGet(this,K).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,K).keyword(s)}`:""} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("elements")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}${_classPrivateFieldGet(this,K).plain(",")} ${_classPrivateFieldGet(this,K).argument("shown")}=${_classPrivateFieldGet(this,K).number(_classPrivateFieldGet(this,M))}${_classPrivateFieldGet(this,K).plain(")")} ${_classPrivateFieldGet(this,K).plain("[")}\n`:`${_classPrivateFieldGet(this,K).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,K).keyword(s)}`:""} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("elements")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}${_classPrivateFieldGet(this,K).plain(")")} ${_classPrivateFieldGet(this,K).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,K).plain("]")}`,a=_classPrivateFieldGet(this,M);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,L)?`${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("props")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}${_classPrivateFieldGet(this,K).plain(",")} ${_classPrivateFieldGet(this,K).argument("shown")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,K).plain(")")}`:`${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("props")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}${_classPrivateFieldGet(this,K).plain(")")}`,l=`${_classPrivateFieldGet(this,K).keyword("object")} ${_classPrivateFieldGet(this,K).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,K).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,K).plain("}")}`}else l=`${_classPrivateFieldGet(this,K).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,K).plain(")")}`;a=_classPrivateFieldGet(this,L);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,M)?`${_classPrivateFieldGet(this,K).keyword("arguments")} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("arity")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}, ${_classPrivateFieldGet(this,K).argument("shown")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(_classPrivateFieldGet(this,M))}${_classPrivateFieldGet(this,K).plain(")")} ${_classPrivateFieldGet(this,K).plain("[")}\n`:`${_classPrivateFieldGet(this,K).keyword("arguments")} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("arity")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}${_classPrivateFieldGet(this,K).plain(")")} ${_classPrivateFieldGet(this,K).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,K).plain("]")}`,a=_classPrivateFieldGet(this,M);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,H)?`${_classPrivateFieldGet(this,K).keyword("set")} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("size")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}${_classPrivateFieldGet(this,K).plain(",")} ${_classPrivateFieldGet(this,K).argument("shown")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(_classPrivateFieldGet(this,H))}${_classPrivateFieldGet(this,K).plain(")")} ${_classPrivateFieldGet(this,K).plain("{")}\n`:`${_classPrivateFieldGet(this,K).keyword("set")} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("size")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}${_classPrivateFieldGet(this,K).plain(")")} ${_classPrivateFieldGet(this,K).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,H);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,B)?`${_classPrivateFieldGet(this,K).keyword("map")} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("size")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}${_classPrivateFieldGet(this,K).plain(",")} ${_classPrivateFieldGet(this,K).argument("shown")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(_classPrivateFieldGet(this,B))}${_classPrivateFieldGet(this,K).plain(")")} ${_classPrivateFieldGet(this,K).plain("{")}\n`:`${_classPrivateFieldGet(this,K).keyword("map")} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("size")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}${_classPrivateFieldGet(this,K).plain(")")} ${_classPrivateFieldGet(this,K).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,K).plain("}")}`,a=_classPrivateFieldGet(this,B);break}default:return this.formatValue(t,e)}let c=0;switch(o){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),c+=1,c>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),c+=1,c>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,i=!0){let a="",S=objectType(t),x="";const M=prototypeName(t);switch(M){case y:[S,a]=this.formatUndefined();break;case m:[S,a]=this.formatNull();break;case u:case j:[S,a]=this.formatGlobal(M,t,e);break;case n:[S,a]=this.formatBigInt(t);break;case F:[S,a]=this.formatNumber(t);break;case o:[S,a]=this.formatBoolean(t);break;case f:[S,a]=this.formatString(t);break;case b:[S,a]=this.formatRegexp(t);break;case d:case l:case P:[S,a]=this.formatFunction(M,t);break;case c:[S,a]=this.formatDate(t);break;case s:[S,a]=this.formatArguments(t);break;case g:[S,a]=this.formatSymbol(t);break;case _:[S,a]=this.formatPromise();break;case v:[S,a]=this.formatGenerator();break;case h:[S,a]=this.formatError(t);break;case k:case w:[S,a]=this.formatWeak(M);break;case G:[S,a]=this.formatSet(t);break;case p:[S,a]=this.formatMap(t);break;case r:case $:[S,a]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))S="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const s=M.split(" ")[1];if("Set"===s)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,i);if("Map"===s)return this.toPrintable(new Map(Array.from(t)),e,i);if("String"===s)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,i);if("Array"===s)return this.toPrintable(Array.from(t).map((e=>e[1])),e,i)}}switch(S){case"array":case"object":if(_classPrivateFieldGet(this,O)===_classPrivateFieldGet(this,T)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,L)?`${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("props")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(e)}${_classPrivateFieldGet(this,K).plain(",")} ${_classPrivateFieldGet(this,K).argument("shown")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,K).plain(")")}`:`${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("props")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(e)}${_classPrivateFieldGet(this,K).plain(")")}`,a=`${_classPrivateFieldGet(this,K).keyword("object")} ${_classPrivateFieldGet(this,K).keyword(objectClass(t))} ${i}`}else{let s;_classPrivateFieldSet(this,O,_classPrivateFieldGet(this,O)+1),s="array"===S?`${_classPrivateFieldGet(this,K).comment(e)}`:`${e}${_classPrivateFieldGet(this,K).comment(_classPrivateFieldGet(this,R))}`,a=this.toPrintable(t,s,i,x),_classPrivateFieldSet(this,O,_classPrivateFieldGet(this,O)-1)}break;default:S.length||(S=M.split("[object ").pop().split("]").shift().toLowerCase(),a=t.toString())}return`${_classPrivateFieldGet(this,K).keyword(S)}${S.length?_classPrivateFieldGet(this,K).plain(" • "):""}${a}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,K).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,K).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("bytes")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(t.byteLength)}${_classPrivateFieldGet(this,K).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,K).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,K).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case l:i=`${i} async`;break;case P:i=`${i} generator`}const s=function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}(t);i=s.length?`${i} ${_classPrivateFieldGet(this,K).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,K).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,K).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===j?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,K).comment(_classPrivateFieldGet(this,R))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,K).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,K).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,K).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,K).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,J)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,J)).join(""):e.slice(0,_classPrivateFieldGet(this,J))),a=s===i?`${_classPrivateFieldGet(this,K).string(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,K).string(r||e)}${_classPrivateFieldGet(this,K).string(_classPrivateFieldGet(this,D))} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("length")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(s)}`:`${_classPrivateFieldGet(this,K).string(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,K).string(r||e)}${_classPrivateFieldGet(this,K).string(_classPrivateFieldGet(this,D))} ${_classPrivateFieldGet(this,K).plain("(")}${_classPrivateFieldGet(this,K).argument("length")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(s)}${_classPrivateFieldGet(this,K).plain(",")} ${_classPrivateFieldGet(this,K).argument("symbols")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(i)}`,a=i>_classPrivateFieldGet(this,J)?`${a}${_classPrivateFieldGet(this,K).plain(",")} ${_classPrivateFieldGet(this,K).argument("shown")}${_classPrivateFieldGet(this,K).plain("=")}${_classPrivateFieldGet(this,K).number(_classPrivateFieldGet(this,J))}${_classPrivateFieldGet(this,K).plain(")")}`:`${a}${_classPrivateFieldGet(this,K).plain(")")}`,function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,K).string("undefined")]}formatWeak(e){return e===w?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,K).comment(_classPrivateFieldGet(this,R))}${s}${_classPrivateFieldGet(this,K).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,K).comment(_classPrivateFieldGet(this,R))}${_classPrivateFieldGet(this,K).plain(_classPrivateFieldGet(this,E))} ${s}${_classPrivateFieldGet(this,K).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,K).plain("[")}${_classPrivateFieldGet(this,K).property(i)}${_classPrivateFieldGet(this,K).plain("]")}`:`${_classPrivateFieldGet(this,K).plain(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,K).property(i)}${_classPrivateFieldGet(this,K).plain(_classPrivateFieldGet(this,D))}`,`${t}${_classPrivateFieldGet(this,K).comment(_classPrivateFieldGet(this,R))}${a} ${_classPrivateFieldGet(this,K).plain(_classPrivateFieldGet(this,E))} ${s}${_classPrivateFieldGet(this,K).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,I)&&(_classPrivateFieldGet(this,N)&&cliExit(),_classPrivateFieldGet(this,A)?setTimeout((()=>cliPrint(this.toPrintable(e),_classPrivateFieldGet(this,U))),0):cliPrint(this.toPrintable(e),_classPrivateFieldGet(this,U)),processExit(_classPrivateFieldGet(this,W))),_classPrivateFieldGet(this,q))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e),i.stdout)),0):cliPrint(s.toPrintable(e),i.stdout),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(e=!0){const s={...t};return"boolean"==typeof e?s.console=e:e&&"object"==typeof e&&Object.assign(s,e),function objectPick(e,t){return t.length&&Object.keys(e).length?t.reduce(((t,i)=>(t[i]=e[i],t)),{}):{}}(s,i)}}exports.Consono=Consono,exports.THEME_DARK=S,exports.THEME_LIGHT=x,exports.consono=function consono(e,t=!0,i="light"){const s=Consono.createOptions(t),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e),s.stdout)),0):cliPrint(a.toPrintable(e),s.stdout),processExit(s.exit)),s.returns)return a.toPrintable(e)},exports.consonoExit=function consonoExit(e,t=!0,i="light",s=0){const a=Consono.createOptions({...t,exit:s}),r=new Consono(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint(r.toPrintable(e),a.stdout)),0):cliPrint(r.toPrintable(e),a.stdout),processExit(a.exit)),a.returns)return r.toPrintable(e)},exports.consonoPlain=function consonoPlain(e,t=!0){const i=Consono.createOptions({...t,colorize:!1}),s=new Consono(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e),i.stdout)),0):cliPrint(s.toPrintable(e),i.stdout),processExit(i.exit)),i.returns)return s.toPrintable(e)},exports.consonoReturn=function consonoReturn(e,t=!0,i="light"){const s=Consono.createOptions({...t,console:!1,returns:!0}),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e),s.stdout)),0):cliPrint(a.toPrintable(e),s.stdout),processExit(s.exit)),s.returns)return a.toPrintable(e)},exports.options=t; +"use strict";function _interopDefaultLegacy(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}Object.defineProperty(exports,"__esModule",{value:!0});var e=_interopDefaultLegacy(require("chalk"));function _classPrivateFieldGet(e,t){return function _classApplyDescriptorGet(e,t){if(t.get)return t.get.call(e);return t.value}(e,_classExtractFieldDescriptor(e,t,"get"))}function _classPrivateFieldSet(e,t,i){return function _classApplyDescriptorSet(e,t,i){if(t.set)t.set.call(e,i);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=i}}(e,_classExtractFieldDescriptor(e,t,"set"),i),i}function _classExtractFieldDescriptor(e,t,i){if(!t.has(e))throw new TypeError("attempted to "+i+" private field on non-instance");return t.get(e)}const t={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},i=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var s="[object Arguments]",a="[object Array]",r="[object ArrayBuffer]",l="[object AsyncFunction]",n="[object BigInt]",c="[object Boolean]",o="[object Date]",h="[object Error]",d="[object Function]",v="[object Generator]",P="[object GeneratorFunction]",F="[object global]",_="[object Map]",m="[object Null]",u="[object Number]",p="[object Promise]",G="[object RegExp]",$="[object Set]",b="[object SharedArrayBuffer]",f="[object String]",g="[object Symbol]",w="[object Undefined]",y="[object WeakMap]",k="[object WeakSet]",S="[object Window]";const j={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},x={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]};class Theme$1{constructor(t=3,i="light"){let s;switch(this.cli=new e.default.Instance({level:Math.min(t,e.default.supportsColor.level)}),!0){case"dark"===i:s=j;break;case"light"===i:s=x;break;case"[object Object]"===Object.prototype.toString.call(i):s={...x,...i};break;default:s=x}this.argument=this.compose(...s.argument),this.boolean=this.compose(...s.boolean),this.comment=this.compose(...s.comment),this.keyword=this.compose(...s.keyword),this.name=this.compose(...s.name),this.number=this.compose(...s.number),this.plain=this.compose(...s.plain),this.property=this.compose(...s.property),this.string=this.compose(...s.string)}static toRGB(e){return e=Number.parseInt(e.toString(),10),Number.isInteger(e)?Math.min(255,Math.max(0,e)):255}compose(e=255,t=255,i=255){return e=Theme$1.toRGB(e),t=Theme$1.toRGB(t),i=Theme$1.toRGB(i),s=>this.cli&&this.cli.rgb?this.cli.rgb(e,t,i)(s.toString()):s.toString()}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint$1(e,t=!1){t?process.stdout.write(e):console.log(e)}function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(s,r){let l,n,c;if(!("object"!=typeof s||null===s||s instanceof Boolean||s instanceof Date||s instanceof Number||s instanceof RegExp||s instanceof String)){for(l=0;l(t[i]=e[i],t)),{}):{}}function objectSize(e){return Object.keys(e).length}function objectType(e){const t=prototypeName(e).toLowerCase().split("[object ").pop().split("]").shift();return["global","window"].includes(t)?"object":t.includes("error")?"error":t}function processExit(e=0){if(!1===e)return;!0===e&&(e=0);const t=Number.parseInt(e.toString());if(Number.isInteger(t)&&!(t<0))try{process.exit(t)}catch(e){}}function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}var M=new WeakMap,N=new WeakMap,E=new WeakMap,W=new WeakMap,C=new WeakMap,I=new WeakMap,O=new WeakMap,A=new WeakMap,T=new WeakMap,z=new WeakMap,B=new WeakMap,R=new WeakMap,D=new WeakMap,V=new WeakMap,L=new WeakMap,q=new WeakMap,J=new WeakMap,U=new WeakMap,H=new WeakMap,Y=new WeakMap;class Consono$1{constructor(e={},t="light"){M.set(this,{writable:!0,value:void 0}),N.set(this,{writable:!0,value:void 0}),E.set(this,{writable:!0,value:void 0}),W.set(this,{writable:!0,value:void 0}),C.set(this,{writable:!0,value:void 0}),I.set(this,{writable:!0,value:void 0}),O.set(this,{writable:!0,value:void 0}),A.set(this,{writable:!0,value:void 0}),T.set(this,{writable:!0,value:void 0}),z.set(this,{writable:!0,value:void 0}),B.set(this,{writable:!0,value:void 0}),R.set(this,{writable:!0,value:void 0}),D.set(this,{writable:!0,value:void 0}),V.set(this,{writable:!0,value:void 0}),L.set(this,{writable:!0,value:void 0}),q.set(this,{writable:!0,value:void 0}),J.set(this,{writable:!0,value:void 0}),U.set(this,{writable:!0,value:void 0}),H.set(this,{writable:!0,value:void 0}),Y.set(this,{writable:!0,value:void 0}),this.setOptions(e),this.setTheme(t)}setTheme(e){_classPrivateFieldSet(this,Y,new Theme$1(_classPrivateFieldGet(this,W)?3:0,e))}setOptions(e={}){e=e||{};const i={...t,...e};_classPrivateFieldSet(this,M,Number.parseInt(i.arrayMaxElements)),_classPrivateFieldSet(this,N,`${i.assignSymbol}`),_classPrivateFieldSet(this,E,!!i.clear),_classPrivateFieldSet(this,W,!!i.colorize),_classPrivateFieldSet(this,C,!!i.console),_classPrivateFieldSet(this,U,!!i.stdout),_classPrivateFieldSet(this,I,0),_classPrivateFieldSet(this,O,Number.parseInt(i.depth)),!1===i.exit?_classPrivateFieldSet(this,A,!1):!0===i.exit?_classPrivateFieldSet(this,A,0):isInteger(i.exit)?_classPrivateFieldSet(this,A,i.exit):_classPrivateFieldSet(this,A,!1),_classPrivateFieldSet(this,z,`${i.indent}`),_classPrivateFieldSet(this,B,_classPrivateFieldGet(this,z).repeat(i.indentPad)),_classPrivateFieldSet(this,R,Number.parseInt(i.mapMaxEntries)),_classPrivateFieldSet(this,D,Number.parseInt(i.objectMaxProps)),_classPrivateFieldSet(this,V,`${i.quotesEnd}`),_classPrivateFieldSet(this,L,`${i.quotesStart}`),_classPrivateFieldSet(this,q,!!i.returns),_classPrivateFieldSet(this,T,!!i.immediate),_classPrivateFieldSet(this,J,Number.parseInt(i.setMaxValues)),_classPrivateFieldSet(this,H,Number.parseInt(i.stringMaxLength))}toPrintable(e,t="",i=!0,s=""){let a,r="",l="",n="";const c=objectType(e);switch(c){case"array":{const i=e.length;l=i>_classPrivateFieldGet(this,M)?`${_classPrivateFieldGet(this,Y).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,Y).keyword(s)}`:""} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("elements")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}=${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,M))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`:`${_classPrivateFieldGet(this,Y).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,Y).keyword(s)}`:""} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("elements")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("]")}`,a=_classPrivateFieldGet(this,M);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,D)?`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,D))}${_classPrivateFieldGet(this,Y).plain(")")}`:`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")}`,l=`${_classPrivateFieldGet(this,Y).keyword("object")} ${_classPrivateFieldGet(this,Y).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,Y).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("}")}`}else l=`${_classPrivateFieldGet(this,Y).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain(")")}`;a=_classPrivateFieldGet(this,D);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,M)?`${_classPrivateFieldGet(this,Y).keyword("arguments")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("arity")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}, ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,M))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`:`${_classPrivateFieldGet(this,Y).keyword("arguments")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("arity")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("]")}`,a=_classPrivateFieldGet(this,M);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,J)?`${_classPrivateFieldGet(this,Y).keyword("set")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,J))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`:`${_classPrivateFieldGet(this,Y).keyword("set")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,J);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,R)?`${_classPrivateFieldGet(this,Y).keyword("map")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,R))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`:`${_classPrivateFieldGet(this,Y).keyword("map")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("}")}`,a=_classPrivateFieldGet(this,R);break}default:return this.formatValue(t,e)}let o=0;switch(c){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),o+=1,o>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),o+=1,o>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,i=!0){let a="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case w:[j,a]=this.formatUndefined();break;case m:[j,a]=this.formatNull();break;case F:case S:[j,a]=this.formatGlobal(M,t,e);break;case n:[j,a]=this.formatBigInt(t);break;case u:[j,a]=this.formatNumber(t);break;case c:[j,a]=this.formatBoolean(t);break;case f:[j,a]=this.formatString(t);break;case G:[j,a]=this.formatRegexp(t);break;case d:case l:case P:[j,a]=this.formatFunction(M,t);break;case o:[j,a]=this.formatDate(t);break;case s:[j,a]=this.formatArguments(t);break;case g:[j,a]=this.formatSymbol(t);break;case p:[j,a]=this.formatPromise();break;case v:[j,a]=this.formatGenerator();break;case h:[j,a]=this.formatError(t);break;case k:case y:[j,a]=this.formatWeak(M);break;case $:[j,a]=this.formatSet(t);break;case _:[j,a]=this.formatMap(t);break;case r:case b:[j,a]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const s=M.split(" ")[1];if("Set"===s)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,i);if("Map"===s)return this.toPrintable(new Map(Array.from(t)),e,i);if("String"===s)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,i);if("Array"===s)return this.toPrintable(Array.from(t).map((e=>e[1])),e,i)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,I)===_classPrivateFieldGet(this,O)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,D)?`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(e)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,D))}${_classPrivateFieldGet(this,Y).plain(")")}`:`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(e)}${_classPrivateFieldGet(this,Y).plain(")")}`,a=`${_classPrivateFieldGet(this,Y).keyword("object")} ${_classPrivateFieldGet(this,Y).keyword(objectClass(t))} ${i}`}else{let s;_classPrivateFieldSet(this,I,_classPrivateFieldGet(this,I)+1),s="array"===j?`${_classPrivateFieldGet(this,Y).comment(e)}`:`${e}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}`,a=this.toPrintable(t,s,i,x),_classPrivateFieldSet(this,I,_classPrivateFieldGet(this,I)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),a=t.toString())}return`${_classPrivateFieldGet(this,Y).keyword(j)}${j.length?_classPrivateFieldGet(this,Y).plain(" • "):""}${a}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,Y).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,Y).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("bytes")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(t.byteLength)}${_classPrivateFieldGet(this,Y).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,Y).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,Y).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case l:i=`${i} async`;break;case P:i=`${i} generator`}const s=funcNameExtract(t);i=s.length?`${i} ${_classPrivateFieldGet(this,Y).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,Y).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,Y).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===S?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,Y).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,Y).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,Y).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,Y).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,H)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,H)).join(""):e.slice(0,_classPrivateFieldGet(this,H))),a=s===i?`${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,Y).string(r||e)}${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,V))} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("length")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(s)}`:`${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,Y).string(r||e)}${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,V))} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("length")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(s)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("symbols")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}`,a=i>_classPrivateFieldGet(this,H)?`${a}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,H))}${_classPrivateFieldGet(this,Y).plain(")")}`:`${a}${_classPrivateFieldGet(this,Y).plain(")")}`,stringClearReference(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,Y).string("undefined")]}formatWeak(e){return e===y?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}${s}${_classPrivateFieldGet(this,Y).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,N))} ${s}${_classPrivateFieldGet(this,Y).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,Y).plain("[")}${_classPrivateFieldGet(this,Y).property(i)}${_classPrivateFieldGet(this,Y).plain("]")}`:`${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,Y).property(i)}${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,V))}`,`${t}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}${a} ${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,N))} ${s}${_classPrivateFieldGet(this,Y).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,C)&&(_classPrivateFieldGet(this,E)&&cliExit(),_classPrivateFieldGet(this,T)?setTimeout((()=>cliPrint$1(this.toPrintable(e),_classPrivateFieldGet(this,U))),0):cliPrint$1(this.toPrintable(e),_classPrivateFieldGet(this,U)),processExit(_classPrivateFieldGet(this,A))),_classPrivateFieldGet(this,q))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono$1.createOptions(e),s=new Consono$1(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint$1(s.toPrintable(e),i.stdout)),0):cliPrint$1(s.toPrintable(e),i.stdout),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(e=!0){const s={...t};return"boolean"==typeof e?s.console=e:e&&"object"==typeof e&&Object.assign(s,e),objectPick(s,i)}}const K={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""},Q={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""};class Theme{constructor(e=3,t="light"){let i;switch(!0){case"dark"===t:i=Q;break;case"light"===t:default:i=K}this.argument=e=>i.argument+e.toString()+"",this.boolean=e=>i.boolean+e.toString()+"",this.comment=e=>i.comment+e.toString()+"",this.keyword=e=>i.keyword+e.toString()+"",this.name=e=>i.name+e.toString()+"",this.number=e=>i.number+e.toString()+"",this.plain=e=>i.plain+e.toString()+"",this.property=e=>i.property+e.toString()+"",this.string=e=>i.string+e.toString()+""}}function cliPrint(e){console.log(e)}var X=new WeakMap,Z=new WeakMap,ee=new WeakMap,te=new WeakMap,ie=new WeakMap,se=new WeakMap,ae=new WeakMap,re=new WeakMap,le=new WeakMap,ne=new WeakMap,ce=new WeakMap,oe=new WeakMap,he=new WeakMap,de=new WeakMap,ve=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,_e=new WeakMap,me=new WeakMap,ue=new WeakMap;class Consono{constructor(e={},t="light"){X.set(this,{writable:!0,value:void 0}),Z.set(this,{writable:!0,value:void 0}),ee.set(this,{writable:!0,value:void 0}),te.set(this,{writable:!0,value:void 0}),ie.set(this,{writable:!0,value:void 0}),se.set(this,{writable:!0,value:void 0}),ae.set(this,{writable:!0,value:void 0}),re.set(this,{writable:!0,value:void 0}),le.set(this,{writable:!0,value:void 0}),ne.set(this,{writable:!0,value:void 0}),ce.set(this,{writable:!0,value:void 0}),oe.set(this,{writable:!0,value:void 0}),he.set(this,{writable:!0,value:void 0}),de.set(this,{writable:!0,value:void 0}),ve.set(this,{writable:!0,value:void 0}),Pe.set(this,{writable:!0,value:void 0}),Fe.set(this,{writable:!0,value:void 0}),_e.set(this,{writable:!0,value:void 0}),me.set(this,{writable:!0,value:void 0}),ue.set(this,{writable:!0,value:void 0}),this.setOptions(e),this.setTheme(t)}setTheme(e){_classPrivateFieldSet(this,ue,new Theme(_classPrivateFieldGet(this,te)?3:0,e))}setOptions(e={}){e=e||{};const i={...t,...e};_classPrivateFieldSet(this,X,Number.parseInt(i.arrayMaxElements)),_classPrivateFieldSet(this,Z,`${i.assignSymbol}`),_classPrivateFieldSet(this,ee,!!i.clear),_classPrivateFieldSet(this,te,!!i.colorize),_classPrivateFieldSet(this,ie,!!i.console),_classPrivateFieldSet(this,_e,!!i.stdout),_classPrivateFieldSet(this,se,0),_classPrivateFieldSet(this,ae,Number.parseInt(i.depth)),!1===i.exit?_classPrivateFieldSet(this,re,!1):!0===i.exit?_classPrivateFieldSet(this,re,0):isInteger(i.exit)?_classPrivateFieldSet(this,re,i.exit):_classPrivateFieldSet(this,re,!1),_classPrivateFieldSet(this,ne,`${i.indent}`),_classPrivateFieldSet(this,ce,_classPrivateFieldGet(this,ne).repeat(i.indentPad)),_classPrivateFieldSet(this,oe,Number.parseInt(i.mapMaxEntries)),_classPrivateFieldSet(this,he,Number.parseInt(i.objectMaxProps)),_classPrivateFieldSet(this,de,`${i.quotesEnd}`),_classPrivateFieldSet(this,ve,`${i.quotesStart}`),_classPrivateFieldSet(this,Pe,!!i.returns),_classPrivateFieldSet(this,le,!!i.immediate),_classPrivateFieldSet(this,Fe,Number.parseInt(i.setMaxValues)),_classPrivateFieldSet(this,me,Number.parseInt(i.stringMaxLength))}toPrintable(e,t="",i=!0,s=""){let a,r="",l="",n="";const c=objectType(e);switch(c){case"array":{const i=e.length;l=i>_classPrivateFieldGet(this,X)?`${_classPrivateFieldGet(this,ue).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,ue).keyword(s)}`:""} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("elements")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}=${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,X))}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("[")}\n`:`${_classPrivateFieldGet(this,ue).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,ue).keyword(s)}`:""} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("elements")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain("]")}`,a=_classPrivateFieldGet(this,X);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,he)?`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("props")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,he))}${_classPrivateFieldGet(this,ue).plain(")")}`:`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("props")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")}`,l=`${_classPrivateFieldGet(this,ue).keyword("object")} ${_classPrivateFieldGet(this,ue).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,ue).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain("}")}`}else l=`${_classPrivateFieldGet(this,ue).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain(")")}`;a=_classPrivateFieldGet(this,he);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,X)?`${_classPrivateFieldGet(this,ue).keyword("arguments")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("arity")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}, ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,X))}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("[")}\n`:`${_classPrivateFieldGet(this,ue).keyword("arguments")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("arity")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain("]")}`,a=_classPrivateFieldGet(this,X);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,Fe)?`${_classPrivateFieldGet(this,ue).keyword("set")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("size")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,Fe))}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("{")}\n`:`${_classPrivateFieldGet(this,ue).keyword("set")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("size")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,Fe);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,oe)?`${_classPrivateFieldGet(this,ue).keyword("map")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("size")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,oe))}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("{")}\n`:`${_classPrivateFieldGet(this,ue).keyword("map")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("size")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain("}")}`,a=_classPrivateFieldGet(this,oe);break}default:return this.formatValue(t,e)}let o=0;switch(c){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),o+=1,o>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),o+=1,o>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,i=!0){let a="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case w:[j,a]=this.formatUndefined();break;case m:[j,a]=this.formatNull();break;case F:case S:[j,a]=this.formatGlobal(M,t,e);break;case n:[j,a]=this.formatBigInt(t);break;case u:[j,a]=this.formatNumber(t);break;case c:[j,a]=this.formatBoolean(t);break;case f:[j,a]=this.formatString(t);break;case G:[j,a]=this.formatRegexp(t);break;case d:case l:case P:[j,a]=this.formatFunction(M,t);break;case o:[j,a]=this.formatDate(t);break;case s:[j,a]=this.formatArguments(t);break;case g:[j,a]=this.formatSymbol(t);break;case p:[j,a]=this.formatPromise();break;case v:[j,a]=this.formatGenerator();break;case h:[j,a]=this.formatError(t);break;case k:case y:[j,a]=this.formatWeak(M);break;case $:[j,a]=this.formatSet(t);break;case _:[j,a]=this.formatMap(t);break;case r:case b:[j,a]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const s=M.split(" ")[1];if("Set"===s)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,i);if("Map"===s)return this.toPrintable(new Map(Array.from(t)),e,i);if("String"===s)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,i);if("Array"===s)return this.toPrintable(Array.from(t).map((e=>e[1])),e,i)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,se)===_classPrivateFieldGet(this,ae)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,he)?`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("props")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(e)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,he))}${_classPrivateFieldGet(this,ue).plain(")")}`:`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("props")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(e)}${_classPrivateFieldGet(this,ue).plain(")")}`,a=`${_classPrivateFieldGet(this,ue).keyword("object")} ${_classPrivateFieldGet(this,ue).keyword(objectClass(t))} ${i}`}else{let s;_classPrivateFieldSet(this,se,_classPrivateFieldGet(this,se)+1),s="array"===j?`${_classPrivateFieldGet(this,ue).comment(e)}`:`${e}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}`,a=this.toPrintable(t,s,i,x),_classPrivateFieldSet(this,se,_classPrivateFieldGet(this,se)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),a=t.toString())}return`${_classPrivateFieldGet(this,ue).keyword(j)}${j.length?_classPrivateFieldGet(this,ue).plain(" • "):""}${a}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,ue).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,ue).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("bytes")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(t.byteLength)}${_classPrivateFieldGet(this,ue).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,ue).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,ue).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case l:i=`${i} async`;break;case P:i=`${i} generator`}const s=funcNameExtract(t);i=s.length?`${i} ${_classPrivateFieldGet(this,ue).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,ue).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,ue).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===S?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,ue).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,ue).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,ue).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,ue).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,me)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,me)).join(""):e.slice(0,_classPrivateFieldGet(this,me))),a=s===i?`${_classPrivateFieldGet(this,ue).string(_classPrivateFieldGet(this,ve))}${_classPrivateFieldGet(this,ue).string(r||e)}${_classPrivateFieldGet(this,ue).string(_classPrivateFieldGet(this,de))} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("length")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(s)}`:`${_classPrivateFieldGet(this,ue).string(_classPrivateFieldGet(this,ve))}${_classPrivateFieldGet(this,ue).string(r||e)}${_classPrivateFieldGet(this,ue).string(_classPrivateFieldGet(this,de))} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("length")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(s)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("symbols")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}`,a=i>_classPrivateFieldGet(this,me)?`${a}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,me))}${_classPrivateFieldGet(this,ue).plain(")")}`:`${a}${_classPrivateFieldGet(this,ue).plain(")")}`,stringClearReference(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,ue).string("undefined")]}formatWeak(e){return e===y?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}${s}${_classPrivateFieldGet(this,ue).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}${_classPrivateFieldGet(this,ue).plain(_classPrivateFieldGet(this,Z))} ${s}${_classPrivateFieldGet(this,ue).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,ue).plain("[")}${_classPrivateFieldGet(this,ue).property(i)}${_classPrivateFieldGet(this,ue).plain("]")}`:`${_classPrivateFieldGet(this,ue).plain(_classPrivateFieldGet(this,ve))}${_classPrivateFieldGet(this,ue).property(i)}${_classPrivateFieldGet(this,ue).plain(_classPrivateFieldGet(this,de))}`,`${t}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}${a} ${_classPrivateFieldGet(this,ue).plain(_classPrivateFieldGet(this,Z))} ${s}${_classPrivateFieldGet(this,ue).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,ie)&&(_classPrivateFieldGet(this,ee)&&cliExit(),_classPrivateFieldGet(this,le)?setTimeout((()=>cliPrint(this.toPrintable(e))),0):cliPrint(this.toPrintable(e)),processExit(_classPrivateFieldGet(this,re))),_classPrivateFieldGet(this,Pe))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(e=!0){const s={...t};return"boolean"==typeof e?s.console=e:e&&"object"==typeof e&&Object.assign(s,e),objectPick(s,i)}}exports.Consono=Consono$1,exports.THEME_DARK=j,exports.THEME_LIGHT=x,exports.consono=function consono(e,t=!0,i="light"){const s=Consono$1.createOptions(t),a=new Consono$1(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint$1(a.toPrintable(e),s.stdout)),0):cliPrint$1(a.toPrintable(e),s.stdout),processExit(s.exit)),s.returns)return a.toPrintable(e)},exports.consonoExit=function consonoExit(e,t=!0,i="light",s=0){const a=Consono$1.createOptions({...t,exit:s}),r=new Consono$1(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint$1(r.toPrintable(e),a.stdout)),0):cliPrint$1(r.toPrintable(e),a.stdout),processExit(a.exit)),a.returns)return r.toPrintable(e)},exports.consonoJSON=function consonoJSON(e,t){let i;i=void 0===e?void 0:JSON.parse(JSON.stringify(e),null,2);const s=Consono.createOptions({...t,colorize:!1});if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>{void 0===i?console.dir(void 0):console.dir(i)}),0):void 0===i?console.dir(void 0):console.dir(i),processExit(s.exit)),s.returns)return i},exports.consonoPlain=function consonoPlain(e,t=!0){const i=Consono$1.createOptions({...t,colorize:!1}),s=new Consono$1(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint$1(s.toPrintable(e),i.stdout)),0):cliPrint$1(s.toPrintable(e),i.stdout),processExit(i.exit)),i.returns)return s.toPrintable(e)},exports.consonoReturn=function consonoReturn(e,t=!0,i="light"){const s=Consono$1.createOptions({...t,console:!1,returns:!0}),a=new Consono$1(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint$1(a.toPrintable(e),s.stdout)),0):cliPrint$1(a.toPrintable(e),s.stdout),processExit(s.exit)),s.returns)return a.toPrintable(e)},exports.options=t; //# sourceMappingURL=consono.node.cjs.map diff --git a/dist/consono.node.cjs.map b/dist/consono.node.cjs.map index 1bf5e09..94f4676 100644 --- a/dist/consono.node.cjs.map +++ b/dist/consono.node.cjs.map @@ -1 +1 @@ -{"version":3,"file":"consono.node.cjs","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/core/node/theme.js","../src/const/theme_default.js","../src/utils/cliExit.js","../src/utils/node/cliPrint.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/core/node/consono.js","../src/utils/funcNameExtract.js","../src/utils/stringClearReference.js","../src/utils/objectPick.js","../src/helpers/node/consono.js","../src/helpers/node/consonoExit.js","../src/helpers/node/consonoPlain.js","../src/helpers/node/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import chalk from \"chalk\";\n\nimport THEME_DARK from \"../../const/theme_dark.js\";\nimport THEME_LIGHT from \"../../const/theme_light.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n constructor(level = 3, theme = THEME_DEFAULT) {\n this.cli = new chalk.Instance({ level: Math.min(level, chalk.supportsColor.level) });\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n case Object.prototype.toString.call(theme) === \"[object Object]\":\n rgb = { ...THEME_LIGHT, ...theme };\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = this.compose(...rgb.argument);\n this.boolean = this.compose(...rgb.boolean);\n this.comment = this.compose(...rgb.comment);\n this.keyword = this.compose(...rgb.keyword);\n this.name = this.compose(...rgb.name);\n this.number = this.compose(...rgb.number);\n this.plain = this.compose(...rgb.plain);\n this.property = this.compose(...rgb.property);\n this.string = this.compose(...rgb.string);\n }\n static toRGB(color) {\n color = Number.parseInt(color.toString(), 10);\n if (!Number.isInteger(color)) {\n return 255;\n }\n return Math.min(255, Math.max(0, color));\n }\n compose(red = 255, green = 255, blue = 255) {\n red = Theme.toRGB(red);\n green = Theme.toRGB(green);\n blue = Theme.toRGB(blue);\n return (value) => {\n if (!this.cli || !this.cli.rgb) {\n return value.toString();\n }\n return this.cli.rgb(red, green, blue)(value.toString());\n };\n }\n}\n","export const THEME_DEFAULT = \"light\";\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message, stdout = false) {\n if (!stdout) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable), this.#stdout), 0);\n } else {\n cliPrint(this.toPrintable(variable), this.#stdout);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = THEME_DEFAULT, exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","THEME_DARK","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_LIGHT","Theme","constructor","level","theme","rgb","cli","chalk","Instance","Math","min","supportsColor","Object","prototype","toString","call","this","compose","color","Number","parseInt","isInteger","max","red","green","blue","toRGB","value","cliExit","err","process","write","cliPrint","message","log","objectClass","prototypeName","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectSize","obj","keys","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","reduce","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","funcNameExtract","func","result","exec","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","text","stringAsArray","stringSize","stringLength","printString","slice","stringClearReference","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","objectPick","accumulator","consonoExit","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"consono.node.cjs","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/core/node/theme.js","../src/const/theme_default.js","../src/utils/cliExit.js","../src/utils/node/cliPrint.js","../src/utils/funcNameExtract.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectPick.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/utils/stringClearReference.js","../src/core/node/consono.js","../src/core/browser/theme.js","../src/utils/browser/cliPrint.js","../src/core/browser/consono.js","../src/helpers/node/consono.js","../src/helpers/node/consonoExit.js","../src/helpers/node/consonoJSON.js","../src/helpers/node/consonoPlain.js","../src/helpers/node/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import chalk from \"chalk\";\n\nimport THEME_DARK from \"../../const/theme_dark.js\";\nimport THEME_LIGHT from \"../../const/theme_light.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n constructor(level = 3, theme = THEME_DEFAULT) {\n this.cli = new chalk.Instance({ level: Math.min(level, chalk.supportsColor.level) });\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n case Object.prototype.toString.call(theme) === \"[object Object]\":\n rgb = { ...THEME_LIGHT, ...theme };\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = this.compose(...rgb.argument);\n this.boolean = this.compose(...rgb.boolean);\n this.comment = this.compose(...rgb.comment);\n this.keyword = this.compose(...rgb.keyword);\n this.name = this.compose(...rgb.name);\n this.number = this.compose(...rgb.number);\n this.plain = this.compose(...rgb.plain);\n this.property = this.compose(...rgb.property);\n this.string = this.compose(...rgb.string);\n }\n static toRGB(color) {\n color = Number.parseInt(color.toString(), 10);\n if (!Number.isInteger(color)) {\n return 255;\n }\n return Math.min(255, Math.max(0, color));\n }\n compose(red = 255, green = 255, blue = 255) {\n red = Theme.toRGB(red);\n green = Theme.toRGB(green);\n blue = Theme.toRGB(blue);\n return (value) => {\n if (!this.cli || !this.cli.rgb) {\n return value.toString();\n }\n return this.cli.rgb(red, green, blue)(value.toString());\n };\n }\n}\n","export const THEME_DEFAULT = \"light\";\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message, stdout = false) {\n if (!stdout) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable), this.#stdout), 0);\n } else {\n cliPrint(this.toPrintable(variable), this.#stdout);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","import { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nconst Reset = \"\\x1b[0m\";\n\nconst FgBlack = \"\\x1b[30m\";\nconst FgRed = \"\\x1b[31m\";\nconst FgGreen = \"\\x1b[32m\";\n// const FgYellow = \"\\x1b[33m\";\nconst FgBlue = \"\\x1b[34m\";\nconst FgMagenta = \"\\x1b[35m\";\n// const FgCyan = \"\\x1b[36m\";\nconst FgWhite = \"\\x1b[37m\";\n\nconst THEME_LIGHT = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgBlack,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgBlack,\n property: FgRed,\n string: FgGreen,\n};\n\nconst THEME_DARK = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgWhite,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgWhite,\n property: FgRed,\n string: FgGreen,\n};\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n // eslint-disable-next-line no-unused-vars\n constructor(level = 3, theme = THEME_DEFAULT) {\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = (value) => rgb.argument + value.toString() + Reset;\n this.boolean = (value) => rgb.boolean + value.toString() + Reset;\n this.comment = (value) => rgb.comment + value.toString() + Reset;\n this.keyword = (value) => rgb.keyword + value.toString() + Reset;\n this.name = (value) => rgb.name + value.toString() + Reset;\n this.number = (value) => rgb.number + value.toString() + Reset;\n this.plain = (value) => rgb.plain + value.toString() + Reset;\n this.property = (value) => rgb.property + value.toString() + Reset;\n this.string = (value) => rgb.string + value.toString() + Reset;\n }\n}\n","export default function cliPrint(message) {\n console.log(message);\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable) /*, this.#stdout*/), 0);\n } else {\n cliPrint(this.toPrintable(variable) /*, this.#stdout*/);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = THEME_DEFAULT, exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoJSON\n * @description Print variable as JSON without highlighting\n * @param {*} variable\n * @param {boolean|Object} [options=true]\n * @returns {string|undefined}\n */\nexport default function consonoJSON(variable, options) {\n let out;\n if (variable === undefined) {\n out = undefined;\n } else {\n out = JSON.parse(JSON.stringify(variable), null, 2);\n }\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }, 0);\n } else {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return out;\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","THEME_DARK","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_LIGHT","Theme","constructor","level","theme","rgb","cli","chalk","Instance","Math","min","supportsColor","Object","prototype","toString","call","this","compose","color","Number","parseInt","isInteger","max","red","green","blue","toRGB","value","cliExit","err","process","write","cliPrint","message","log","funcNameExtract","func","result","exec","objectClass","prototypeName","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectPick","keys","reduce","accumulator","objectSize","obj","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","stringClearReference","text","slice","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","stringAsArray","stringSize","stringLength","printString","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","consonoExit","consonoJSON","out","parse","dir","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file diff --git a/dist/consono.node.mjs b/dist/consono.node.mjs index d892c7c..8a8ebc2 100644 --- a/dist/consono.node.mjs +++ b/dist/consono.node.mjs @@ -1,2 +1,2 @@ -import e from"chalk";function _classPrivateFieldGet(e,t){var i=t.get(e);if(!i)throw new TypeError("attempted to get private field on non-instance");return i.get?i.get.call(e):i.value}function _classPrivateFieldSet(e,t,i){var s=t.get(e);if(!s)throw new TypeError("attempted to set private field on non-instance");if(s.set)s.set.call(e,i);else{if(!s.writable)throw new TypeError("attempted to set read only private field");s.value=i}return i}const t={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},i=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var s="[object Arguments]",a="[object Array]",r="[object ArrayBuffer]",l="[object AsyncFunction]",n="[object BigInt]",o="[object Boolean]",c="[object Date]",h="[object Error]",d="[object Function]",v="[object Generator]",P="[object GeneratorFunction]",u="[object global]",m="[object Map]",p="[object Null]",F="[object Number]",_="[object Promise]",b="[object RegExp]",G="[object Set]",$="[object SharedArrayBuffer]",f="[object String]",g="[object Symbol]",w="[object Undefined]",y="[object WeakMap]",k="[object WeakSet]",j="[object Window]";const S={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},x={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]};class Theme{constructor(t=3,i="light"){let s;switch(this.cli=new e.Instance({level:Math.min(t,e.supportsColor.level)}),!0){case"dark"===i:s=S;break;case"light"===i:s=x;break;case"[object Object]"===Object.prototype.toString.call(i):s={...x,...i};break;default:s=x}this.argument=this.compose(...s.argument),this.boolean=this.compose(...s.boolean),this.comment=this.compose(...s.comment),this.keyword=this.compose(...s.keyword),this.name=this.compose(...s.name),this.number=this.compose(...s.number),this.plain=this.compose(...s.plain),this.property=this.compose(...s.property),this.string=this.compose(...s.string)}static toRGB(e){return e=Number.parseInt(e.toString(),10),Number.isInteger(e)?Math.min(255,Math.max(0,e)):255}compose(e=255,t=255,i=255){return e=Theme.toRGB(e),t=Theme.toRGB(t),i=Theme.toRGB(i),s=>this.cli&&this.cli.rgb?this.cli.rgb(e,t,i)(s.toString()):s.toString()}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint(e,t=!1){t?process.stdout.write(e):console.log(e)}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(s,r){let l,n,o;if(!("object"!=typeof s||null===s||s instanceof Boolean||s instanceof Date||s instanceof Number||s instanceof RegExp||s instanceof String)){for(l=0;l_classPrivateFieldGet(this,M)?`${_classPrivateFieldGet(this,Y).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,Y).keyword(s)}`:""} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("elements")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}=${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,M))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`:`${_classPrivateFieldGet(this,Y).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,Y).keyword(s)}`:""} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("elements")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("]")}`,a=_classPrivateFieldGet(this,M);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,V)?`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,Y).plain(")")}`:`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")}`,l=`${_classPrivateFieldGet(this,Y).keyword("object")} ${_classPrivateFieldGet(this,Y).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,Y).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("}")}`}else l=`${_classPrivateFieldGet(this,Y).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain(")")}`;a=_classPrivateFieldGet(this,V);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,M)?`${_classPrivateFieldGet(this,Y).keyword("arguments")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("arity")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}, ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,M))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`:`${_classPrivateFieldGet(this,Y).keyword("arguments")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("arity")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("]")}`,a=_classPrivateFieldGet(this,M);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,U)?`${_classPrivateFieldGet(this,Y).keyword("set")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,U))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`:`${_classPrivateFieldGet(this,Y).keyword("set")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,U);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,R)?`${_classPrivateFieldGet(this,Y).keyword("map")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,R))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`:`${_classPrivateFieldGet(this,Y).keyword("map")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("}")}`,a=_classPrivateFieldGet(this,R);break}default:return this.formatValue(t,e)}let c=0;switch(o){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),c+=1,c>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),c+=1,c>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,i=!0){let a="",S=objectType(t),x="";const M=prototypeName(t);switch(M){case w:[S,a]=this.formatUndefined();break;case p:[S,a]=this.formatNull();break;case u:case j:[S,a]=this.formatGlobal(M,t,e);break;case n:[S,a]=this.formatBigInt(t);break;case F:[S,a]=this.formatNumber(t);break;case o:[S,a]=this.formatBoolean(t);break;case f:[S,a]=this.formatString(t);break;case b:[S,a]=this.formatRegexp(t);break;case d:case l:case P:[S,a]=this.formatFunction(M,t);break;case c:[S,a]=this.formatDate(t);break;case s:[S,a]=this.formatArguments(t);break;case g:[S,a]=this.formatSymbol(t);break;case _:[S,a]=this.formatPromise();break;case v:[S,a]=this.formatGenerator();break;case h:[S,a]=this.formatError(t);break;case k:case y:[S,a]=this.formatWeak(M);break;case G:[S,a]=this.formatSet(t);break;case m:[S,a]=this.formatMap(t);break;case r:case $:[S,a]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))S="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const s=M.split(" ")[1];if("Set"===s)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,i);if("Map"===s)return this.toPrintable(new Map(Array.from(t)),e,i);if("String"===s)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,i);if("Array"===s)return this.toPrintable(Array.from(t).map((e=>e[1])),e,i)}}switch(S){case"array":case"object":if(_classPrivateFieldGet(this,O)===_classPrivateFieldGet(this,W)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,V)?`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(e)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,Y).plain(")")}`:`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(e)}${_classPrivateFieldGet(this,Y).plain(")")}`,a=`${_classPrivateFieldGet(this,Y).keyword("object")} ${_classPrivateFieldGet(this,Y).keyword(objectClass(t))} ${i}`}else{let s;_classPrivateFieldSet(this,O,_classPrivateFieldGet(this,O)+1),s="array"===S?`${_classPrivateFieldGet(this,Y).comment(e)}`:`${e}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}`,a=this.toPrintable(t,s,i,x),_classPrivateFieldSet(this,O,_classPrivateFieldGet(this,O)-1)}break;default:S.length||(S=M.split("[object ").pop().split("]").shift().toLowerCase(),a=t.toString())}return`${_classPrivateFieldGet(this,Y).keyword(S)}${S.length?_classPrivateFieldGet(this,Y).plain(" • "):""}${a}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,Y).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,Y).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("bytes")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(t.byteLength)}${_classPrivateFieldGet(this,Y).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,Y).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,Y).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case l:i=`${i} async`;break;case P:i=`${i} generator`}const s=function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}(t);i=s.length?`${i} ${_classPrivateFieldGet(this,Y).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,Y).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,Y).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===j?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,Y).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,Y).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,Y).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,Y).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,H)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,H)).join(""):e.slice(0,_classPrivateFieldGet(this,H))),a=s===i?`${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,q))}${_classPrivateFieldGet(this,Y).string(r||e)}${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,L))} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("length")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(s)}`:`${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,q))}${_classPrivateFieldGet(this,Y).string(r||e)}${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,L))} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("length")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(s)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("symbols")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}`,a=i>_classPrivateFieldGet(this,H)?`${a}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,H))}${_classPrivateFieldGet(this,Y).plain(")")}`:`${a}${_classPrivateFieldGet(this,Y).plain(")")}`,function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,Y).string("undefined")]}formatWeak(e){return e===y?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}${s}${_classPrivateFieldGet(this,Y).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,E))} ${s}${_classPrivateFieldGet(this,Y).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,Y).plain("[")}${_classPrivateFieldGet(this,Y).property(i)}${_classPrivateFieldGet(this,Y).plain("]")}`:`${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,q))}${_classPrivateFieldGet(this,Y).property(i)}${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,L))}`,`${t}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}${a} ${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,E))} ${s}${_classPrivateFieldGet(this,Y).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,I)&&(_classPrivateFieldGet(this,N)&&cliExit(),_classPrivateFieldGet(this,A)?setTimeout((()=>cliPrint(this.toPrintable(e),_classPrivateFieldGet(this,J))),0):cliPrint(this.toPrintable(e),_classPrivateFieldGet(this,J)),processExit(_classPrivateFieldGet(this,T))),_classPrivateFieldGet(this,D))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e),i.stdout)),0):cliPrint(s.toPrintable(e),i.stdout),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(e=!0){const s={...t};return"boolean"==typeof e?s.console=e:e&&"object"==typeof e&&Object.assign(s,e),function objectPick(e,t){return t.length&&Object.keys(e).length?t.reduce(((t,i)=>(t[i]=e[i],t)),{}):{}}(s,i)}}function consono(e,t=!0,i="light"){const s=Consono.createOptions(t),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e),s.stdout)),0):cliPrint(a.toPrintable(e),s.stdout),processExit(s.exit)),s.returns)return a.toPrintable(e)}function consonoExit(e,t=!0,i="light",s=0){const a=Consono.createOptions({...t,exit:s}),r=new Consono(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint(r.toPrintable(e),a.stdout)),0):cliPrint(r.toPrintable(e),a.stdout),processExit(a.exit)),a.returns)return r.toPrintable(e)}function consonoPlain(e,t=!0){const i=Consono.createOptions({...t,colorize:!1}),s=new Consono(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e),i.stdout)),0):cliPrint(s.toPrintable(e),i.stdout),processExit(i.exit)),i.returns)return s.toPrintable(e)}function consonoReturn(e,t=!0,i="light"){const s=Consono.createOptions({...t,console:!1,returns:!0}),a=new Consono(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint(a.toPrintable(e),s.stdout)),0):cliPrint(a.toPrintable(e),s.stdout),processExit(s.exit)),s.returns)return a.toPrintable(e)}export{Consono,S as THEME_DARK,x as THEME_LIGHT,consono,consonoExit,consonoPlain,consonoReturn,t as options}; +import e from"chalk";function _classPrivateFieldGet(e,t){return function _classApplyDescriptorGet(e,t){if(t.get)return t.get.call(e);return t.value}(e,_classExtractFieldDescriptor(e,t,"get"))}function _classPrivateFieldSet(e,t,i){return function _classApplyDescriptorSet(e,t,i){if(t.set)t.set.call(e,i);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=i}}(e,_classExtractFieldDescriptor(e,t,"set"),i),i}function _classExtractFieldDescriptor(e,t,i){if(!t.has(e))throw new TypeError("attempted to "+i+" private field on non-instance");return t.get(e)}const t={arrayMaxElements:99,assignSymbol:"→",clear:!1,colorize:!0,console:!0,depth:20,exit:!1,immediate:!1,indent:"ˑˑ",indentPad:1,mapMaxEntries:99,objectMaxProps:99,quotesEnd:'"',quotesStart:'"',returns:!0,setMaxValues:99,stdout:!1,stringMaxLength:360},i=["arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","indent","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength"];var s="[object Arguments]",a="[object Array]",r="[object ArrayBuffer]",l="[object AsyncFunction]",n="[object BigInt]",c="[object Boolean]",o="[object Date]",h="[object Error]",d="[object Function]",v="[object Generator]",P="[object GeneratorFunction]",F="[object global]",m="[object Map]",_="[object Null]",u="[object Number]",G="[object Promise]",p="[object RegExp]",$="[object Set]",b="[object SharedArrayBuffer]",f="[object String]",g="[object Symbol]",w="[object Undefined]",y="[object WeakMap]",k="[object WeakSet]",S="[object Window]";const j={argument:[253,151,31],boolean:[174,129,255],comment:[117,113,94],keyword:[249,38,114],name:[230,219,116],number:[174,129,255],plain:[128,128,128],property:[102,217,239],string:[166,226,46]},x={argument:[245,135,31],boolean:[66,113,174],comment:[117,113,94],keyword:[200,40,41],name:[201,159,0],number:[101,67,133],plain:[128,128,128],property:[32,123,129],string:[113,140,0]};class Theme$1{constructor(t=3,i="light"){let s;switch(this.cli=new e.Instance({level:Math.min(t,e.supportsColor.level)}),!0){case"dark"===i:s=j;break;case"light"===i:s=x;break;case"[object Object]"===Object.prototype.toString.call(i):s={...x,...i};break;default:s=x}this.argument=this.compose(...s.argument),this.boolean=this.compose(...s.boolean),this.comment=this.compose(...s.comment),this.keyword=this.compose(...s.keyword),this.name=this.compose(...s.name),this.number=this.compose(...s.number),this.plain=this.compose(...s.plain),this.property=this.compose(...s.property),this.string=this.compose(...s.string)}static toRGB(e){return e=Number.parseInt(e.toString(),10),Number.isInteger(e)?Math.min(255,Math.max(0,e)):255}compose(e=255,t=255,i=255){return e=Theme$1.toRGB(e),t=Theme$1.toRGB(t),i=Theme$1.toRGB(i),s=>this.cli&&this.cli.rgb?this.cli.rgb(e,t,i)(s.toString()):s.toString()}}function cliExit(){if("clear"in console)try{console.clear()}catch(e){}else try{process.stdout.write("")}catch(e){}}function cliPrint$1(e,t=!1){t?process.stdout.write(e):console.log(e)}function funcNameExtract(e){if(e.name)return e.name;const t=/^function\s+([\w]+)\s*\(/.exec(e.toString());return t?t[1]:""}function isInteger(e){return Number.isInteger(Number.parseInt(e))}function objectClass(e){return e&&"constructor"in e&&"name"in e.constructor?e.constructor.name:""}function prototypeName(e){return Object.prototype.toString.call(e)}function looseClone(e){if(null==e||"object"!=typeof e)return e;const t=new e.constructor;for(let i in e)t[i]=looseClone(e[i]);return t}function objectDeCycle(e){const t=[],i=[];return function deReCycle(s,r){let l,n,c;if(!("object"!=typeof s||null===s||s instanceof Boolean||s instanceof Date||s instanceof Number||s instanceof RegExp||s instanceof String)){for(l=0;l(t[i]=e[i],t)),{}):{}}function objectSize(e){return Object.keys(e).length}function objectType(e){const t=prototypeName(e).toLowerCase().split("[object ").pop().split("]").shift();return["global","window"].includes(t)?"object":t.includes("error")?"error":t}function processExit(e=0){if(!1===e)return;!0===e&&(e=0);const t=Number.parseInt(e.toString());if(Number.isInteger(t)&&!(t<0))try{process.exit(t)}catch(e){}}function stringClearReference(e){return e.length<12?e:(" "+e).slice(1)}var M=new WeakMap,N=new WeakMap,E=new WeakMap,W=new WeakMap,C=new WeakMap,I=new WeakMap,O=new WeakMap,A=new WeakMap,T=new WeakMap,z=new WeakMap,B=new WeakMap,R=new WeakMap,V=new WeakMap,D=new WeakMap,L=new WeakMap,q=new WeakMap,J=new WeakMap,U=new WeakMap,H=new WeakMap,Y=new WeakMap;class Consono$1{constructor(e={},t="light"){M.set(this,{writable:!0,value:void 0}),N.set(this,{writable:!0,value:void 0}),E.set(this,{writable:!0,value:void 0}),W.set(this,{writable:!0,value:void 0}),C.set(this,{writable:!0,value:void 0}),I.set(this,{writable:!0,value:void 0}),O.set(this,{writable:!0,value:void 0}),A.set(this,{writable:!0,value:void 0}),T.set(this,{writable:!0,value:void 0}),z.set(this,{writable:!0,value:void 0}),B.set(this,{writable:!0,value:void 0}),R.set(this,{writable:!0,value:void 0}),V.set(this,{writable:!0,value:void 0}),D.set(this,{writable:!0,value:void 0}),L.set(this,{writable:!0,value:void 0}),q.set(this,{writable:!0,value:void 0}),J.set(this,{writable:!0,value:void 0}),U.set(this,{writable:!0,value:void 0}),H.set(this,{writable:!0,value:void 0}),Y.set(this,{writable:!0,value:void 0}),this.setOptions(e),this.setTheme(t)}setTheme(e){_classPrivateFieldSet(this,Y,new Theme$1(_classPrivateFieldGet(this,W)?3:0,e))}setOptions(e={}){e=e||{};const i={...t,...e};_classPrivateFieldSet(this,M,Number.parseInt(i.arrayMaxElements)),_classPrivateFieldSet(this,N,`${i.assignSymbol}`),_classPrivateFieldSet(this,E,!!i.clear),_classPrivateFieldSet(this,W,!!i.colorize),_classPrivateFieldSet(this,C,!!i.console),_classPrivateFieldSet(this,U,!!i.stdout),_classPrivateFieldSet(this,I,0),_classPrivateFieldSet(this,O,Number.parseInt(i.depth)),!1===i.exit?_classPrivateFieldSet(this,A,!1):!0===i.exit?_classPrivateFieldSet(this,A,0):isInteger(i.exit)?_classPrivateFieldSet(this,A,i.exit):_classPrivateFieldSet(this,A,!1),_classPrivateFieldSet(this,z,`${i.indent}`),_classPrivateFieldSet(this,B,_classPrivateFieldGet(this,z).repeat(i.indentPad)),_classPrivateFieldSet(this,R,Number.parseInt(i.mapMaxEntries)),_classPrivateFieldSet(this,V,Number.parseInt(i.objectMaxProps)),_classPrivateFieldSet(this,D,`${i.quotesEnd}`),_classPrivateFieldSet(this,L,`${i.quotesStart}`),_classPrivateFieldSet(this,q,!!i.returns),_classPrivateFieldSet(this,T,!!i.immediate),_classPrivateFieldSet(this,J,Number.parseInt(i.setMaxValues)),_classPrivateFieldSet(this,H,Number.parseInt(i.stringMaxLength))}toPrintable(e,t="",i=!0,s=""){let a,r="",l="",n="";const c=objectType(e);switch(c){case"array":{const i=e.length;l=i>_classPrivateFieldGet(this,M)?`${_classPrivateFieldGet(this,Y).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,Y).keyword(s)}`:""} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("elements")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}=${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,M))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`:`${_classPrivateFieldGet(this,Y).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,Y).keyword(s)}`:""} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("elements")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("]")}`,a=_classPrivateFieldGet(this,M);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,V)?`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,Y).plain(")")}`:`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")}`,l=`${_classPrivateFieldGet(this,Y).keyword("object")} ${_classPrivateFieldGet(this,Y).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,Y).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("}")}`}else l=`${_classPrivateFieldGet(this,Y).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain(")")}`;a=_classPrivateFieldGet(this,V);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,M)?`${_classPrivateFieldGet(this,Y).keyword("arguments")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("arity")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}, ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,M))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`:`${_classPrivateFieldGet(this,Y).keyword("arguments")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("arity")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("]")}`,a=_classPrivateFieldGet(this,M);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,J)?`${_classPrivateFieldGet(this,Y).keyword("set")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,J))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`:`${_classPrivateFieldGet(this,Y).keyword("set")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,J);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,R)?`${_classPrivateFieldGet(this,Y).keyword("map")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,R))}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`:`${_classPrivateFieldGet(this,Y).keyword("map")} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("size")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}${_classPrivateFieldGet(this,Y).plain(")")} ${_classPrivateFieldGet(this,Y).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,Y).plain("}")}`,a=_classPrivateFieldGet(this,R);break}default:return this.formatValue(t,e)}let o=0;switch(c){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),o+=1,o>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),o+=1,o>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,i=!0){let a="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case w:[j,a]=this.formatUndefined();break;case _:[j,a]=this.formatNull();break;case F:case S:[j,a]=this.formatGlobal(M,t,e);break;case n:[j,a]=this.formatBigInt(t);break;case u:[j,a]=this.formatNumber(t);break;case c:[j,a]=this.formatBoolean(t);break;case f:[j,a]=this.formatString(t);break;case p:[j,a]=this.formatRegexp(t);break;case d:case l:case P:[j,a]=this.formatFunction(M,t);break;case o:[j,a]=this.formatDate(t);break;case s:[j,a]=this.formatArguments(t);break;case g:[j,a]=this.formatSymbol(t);break;case G:[j,a]=this.formatPromise();break;case v:[j,a]=this.formatGenerator();break;case h:[j,a]=this.formatError(t);break;case k:case y:[j,a]=this.formatWeak(M);break;case $:[j,a]=this.formatSet(t);break;case m:[j,a]=this.formatMap(t);break;case r:case b:[j,a]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const s=M.split(" ")[1];if("Set"===s)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,i);if("Map"===s)return this.toPrintable(new Map(Array.from(t)),e,i);if("String"===s)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,i);if("Array"===s)return this.toPrintable(Array.from(t).map((e=>e[1])),e,i)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,I)===_classPrivateFieldGet(this,O)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,V)?`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(e)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,V))}${_classPrivateFieldGet(this,Y).plain(")")}`:`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("props")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(e)}${_classPrivateFieldGet(this,Y).plain(")")}`,a=`${_classPrivateFieldGet(this,Y).keyword("object")} ${_classPrivateFieldGet(this,Y).keyword(objectClass(t))} ${i}`}else{let s;_classPrivateFieldSet(this,I,_classPrivateFieldGet(this,I)+1),s="array"===j?`${_classPrivateFieldGet(this,Y).comment(e)}`:`${e}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}`,a=this.toPrintable(t,s,i,x),_classPrivateFieldSet(this,I,_classPrivateFieldGet(this,I)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),a=t.toString())}return`${_classPrivateFieldGet(this,Y).keyword(j)}${j.length?_classPrivateFieldGet(this,Y).plain(" • "):""}${a}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,Y).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,Y).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("bytes")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(t.byteLength)}${_classPrivateFieldGet(this,Y).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,Y).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,Y).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case l:i=`${i} async`;break;case P:i=`${i} generator`}const s=funcNameExtract(t);i=s.length?`${i} ${_classPrivateFieldGet(this,Y).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,Y).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,Y).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===S?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,Y).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,Y).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,Y).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,Y).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,H)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,H)).join(""):e.slice(0,_classPrivateFieldGet(this,H))),a=s===i?`${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,Y).string(r||e)}${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,D))} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("length")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(s)}`:`${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,Y).string(r||e)}${_classPrivateFieldGet(this,Y).string(_classPrivateFieldGet(this,D))} ${_classPrivateFieldGet(this,Y).plain("(")}${_classPrivateFieldGet(this,Y).argument("length")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(s)}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("symbols")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(i)}`,a=i>_classPrivateFieldGet(this,H)?`${a}${_classPrivateFieldGet(this,Y).plain(",")} ${_classPrivateFieldGet(this,Y).argument("shown")}${_classPrivateFieldGet(this,Y).plain("=")}${_classPrivateFieldGet(this,Y).number(_classPrivateFieldGet(this,H))}${_classPrivateFieldGet(this,Y).plain(")")}`:`${a}${_classPrivateFieldGet(this,Y).plain(")")}`,stringClearReference(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,Y).string("undefined")]}formatWeak(e){return e===y?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}${s}${_classPrivateFieldGet(this,Y).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,N))} ${s}${_classPrivateFieldGet(this,Y).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,Y).plain("[")}${_classPrivateFieldGet(this,Y).property(i)}${_classPrivateFieldGet(this,Y).plain("]")}`:`${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,L))}${_classPrivateFieldGet(this,Y).property(i)}${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,D))}`,`${t}${_classPrivateFieldGet(this,Y).comment(_classPrivateFieldGet(this,B))}${a} ${_classPrivateFieldGet(this,Y).plain(_classPrivateFieldGet(this,N))} ${s}${_classPrivateFieldGet(this,Y).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,C)&&(_classPrivateFieldGet(this,E)&&cliExit(),_classPrivateFieldGet(this,T)?setTimeout((()=>cliPrint$1(this.toPrintable(e),_classPrivateFieldGet(this,U))),0):cliPrint$1(this.toPrintable(e),_classPrivateFieldGet(this,U)),processExit(_classPrivateFieldGet(this,A))),_classPrivateFieldGet(this,q))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono$1.createOptions(e),s=new Consono$1(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint$1(s.toPrintable(e),i.stdout)),0):cliPrint$1(s.toPrintable(e),i.stdout),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(e=!0){const s={...t};return"boolean"==typeof e?s.console=e:e&&"object"==typeof e&&Object.assign(s,e),objectPick(s,i)}}function consono(e,t=!0,i="light"){const s=Consono$1.createOptions(t),a=new Consono$1(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint$1(a.toPrintable(e),s.stdout)),0):cliPrint$1(a.toPrintable(e),s.stdout),processExit(s.exit)),s.returns)return a.toPrintable(e)}function consonoExit(e,t=!0,i="light",s=0){const a=Consono$1.createOptions({...t,exit:s}),r=new Consono$1(a,i);if(a.console&&(a.clear&&cliExit(),a.immediate?setTimeout((()=>cliPrint$1(r.toPrintable(e),a.stdout)),0):cliPrint$1(r.toPrintable(e),a.stdout),processExit(a.exit)),a.returns)return r.toPrintable(e)}const K={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""},Q={argument:"",boolean:"",comment:"",keyword:"",name:"",number:"",plain:"",property:"",string:""};class Theme{constructor(e=3,t="light"){let i;switch(!0){case"dark"===t:i=Q;break;case"light"===t:default:i=K}this.argument=e=>i.argument+e.toString()+"",this.boolean=e=>i.boolean+e.toString()+"",this.comment=e=>i.comment+e.toString()+"",this.keyword=e=>i.keyword+e.toString()+"",this.name=e=>i.name+e.toString()+"",this.number=e=>i.number+e.toString()+"",this.plain=e=>i.plain+e.toString()+"",this.property=e=>i.property+e.toString()+"",this.string=e=>i.string+e.toString()+""}}function cliPrint(e){console.log(e)}var X=new WeakMap,Z=new WeakMap,ee=new WeakMap,te=new WeakMap,ie=new WeakMap,se=new WeakMap,ae=new WeakMap,re=new WeakMap,le=new WeakMap,ne=new WeakMap,ce=new WeakMap,oe=new WeakMap,he=new WeakMap,de=new WeakMap,ve=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,me=new WeakMap,_e=new WeakMap,ue=new WeakMap;class Consono{constructor(e={},t="light"){X.set(this,{writable:!0,value:void 0}),Z.set(this,{writable:!0,value:void 0}),ee.set(this,{writable:!0,value:void 0}),te.set(this,{writable:!0,value:void 0}),ie.set(this,{writable:!0,value:void 0}),se.set(this,{writable:!0,value:void 0}),ae.set(this,{writable:!0,value:void 0}),re.set(this,{writable:!0,value:void 0}),le.set(this,{writable:!0,value:void 0}),ne.set(this,{writable:!0,value:void 0}),ce.set(this,{writable:!0,value:void 0}),oe.set(this,{writable:!0,value:void 0}),he.set(this,{writable:!0,value:void 0}),de.set(this,{writable:!0,value:void 0}),ve.set(this,{writable:!0,value:void 0}),Pe.set(this,{writable:!0,value:void 0}),Fe.set(this,{writable:!0,value:void 0}),me.set(this,{writable:!0,value:void 0}),_e.set(this,{writable:!0,value:void 0}),ue.set(this,{writable:!0,value:void 0}),this.setOptions(e),this.setTheme(t)}setTheme(e){_classPrivateFieldSet(this,ue,new Theme(_classPrivateFieldGet(this,te)?3:0,e))}setOptions(e={}){e=e||{};const i={...t,...e};_classPrivateFieldSet(this,X,Number.parseInt(i.arrayMaxElements)),_classPrivateFieldSet(this,Z,`${i.assignSymbol}`),_classPrivateFieldSet(this,ee,!!i.clear),_classPrivateFieldSet(this,te,!!i.colorize),_classPrivateFieldSet(this,ie,!!i.console),_classPrivateFieldSet(this,me,!!i.stdout),_classPrivateFieldSet(this,se,0),_classPrivateFieldSet(this,ae,Number.parseInt(i.depth)),!1===i.exit?_classPrivateFieldSet(this,re,!1):!0===i.exit?_classPrivateFieldSet(this,re,0):isInteger(i.exit)?_classPrivateFieldSet(this,re,i.exit):_classPrivateFieldSet(this,re,!1),_classPrivateFieldSet(this,ne,`${i.indent}`),_classPrivateFieldSet(this,ce,_classPrivateFieldGet(this,ne).repeat(i.indentPad)),_classPrivateFieldSet(this,oe,Number.parseInt(i.mapMaxEntries)),_classPrivateFieldSet(this,he,Number.parseInt(i.objectMaxProps)),_classPrivateFieldSet(this,de,`${i.quotesEnd}`),_classPrivateFieldSet(this,ve,`${i.quotesStart}`),_classPrivateFieldSet(this,Pe,!!i.returns),_classPrivateFieldSet(this,le,!!i.immediate),_classPrivateFieldSet(this,Fe,Number.parseInt(i.setMaxValues)),_classPrivateFieldSet(this,_e,Number.parseInt(i.stringMaxLength))}toPrintable(e,t="",i=!0,s=""){let a,r="",l="",n="";const c=objectType(e);switch(c){case"array":{const i=e.length;l=i>_classPrivateFieldGet(this,X)?`${_classPrivateFieldGet(this,ue).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,ue).keyword(s)}`:""} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("elements")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}=${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,X))}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("[")}\n`:`${_classPrivateFieldGet(this,ue).keyword("array")}${s.length?` ${_classPrivateFieldGet(this,ue).keyword(s)}`:""} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("elements")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain("]")}`,a=_classPrivateFieldGet(this,X);break}case"object":{const s=e;if(e=objectDeCycle(e),!0===i){const i=objectSize(e);let a="";a=i>_classPrivateFieldGet(this,he)?`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("props")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,he))}${_classPrivateFieldGet(this,ue).plain(")")}`:`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("props")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")}`,l=`${_classPrivateFieldGet(this,ue).keyword("object")} ${_classPrivateFieldGet(this,ue).keyword(objectClass(s))} ${a} ${_classPrivateFieldGet(this,ue).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain("}")}`}else l=`${_classPrivateFieldGet(this,ue).plain("(")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain(")")}`;a=_classPrivateFieldGet(this,he);break}case"arguments":{const i=e.length;l=i>_classPrivateFieldGet(this,X)?`${_classPrivateFieldGet(this,ue).keyword("arguments")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("arity")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}, ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,X))}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("[")}\n`:`${_classPrivateFieldGet(this,ue).keyword("arguments")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("arity")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("[")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain("]")}`,a=_classPrivateFieldGet(this,X);break}case"set":{const i=e.size;l=i>_classPrivateFieldGet(this,Fe)?`${_classPrivateFieldGet(this,ue).keyword("set")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("size")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,Fe))}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("{")}\n`:`${_classPrivateFieldGet(this,ue).keyword("set")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("size")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("{")}\n`,n=`${t}}`,a=_classPrivateFieldGet(this,Fe);break}case"map":{const i=e.size;l=i>_classPrivateFieldGet(this,oe)?`${_classPrivateFieldGet(this,ue).keyword("map")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("size")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,oe))}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("{")}\n`:`${_classPrivateFieldGet(this,ue).keyword("map")} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("size")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}${_classPrivateFieldGet(this,ue).plain(")")} ${_classPrivateFieldGet(this,ue).plain("{")}\n`,n=`${t}${_classPrivateFieldGet(this,ue).plain("}")}`,a=_classPrivateFieldGet(this,oe);break}default:return this.formatValue(t,e)}let o=0;switch(c){case"set":{const i=Array.from(e);for(let e=0;e=a)break}break}case"map":for(const i of e.entries()){const[e,s]=i,l=this.formatValue(t,{key:e,value:s},!1);if(r+=this.formatAssign("map",t,e,l),o+=1,o>=a)break}break;default:{const i=Object.keys(e).sort(((e,t)=>e.localeCompare(t))).reduce(((e,t)=>(e[t]=void 0,e)),{});for(const s in i){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const i=e[s],l=objectType(i),n=this.formatValue(t,i);if(r+=this.formatAssign(l,t,s,n),o+=1,o>=a)break}break}}return`${l}${r}${n}`}formatValue(e,t,i=!0){let a="",j=objectType(t),x="";const M=prototypeName(t);switch(M){case w:[j,a]=this.formatUndefined();break;case _:[j,a]=this.formatNull();break;case F:case S:[j,a]=this.formatGlobal(M,t,e);break;case n:[j,a]=this.formatBigInt(t);break;case u:[j,a]=this.formatNumber(t);break;case c:[j,a]=this.formatBoolean(t);break;case f:[j,a]=this.formatString(t);break;case p:[j,a]=this.formatRegexp(t);break;case d:case l:case P:[j,a]=this.formatFunction(M,t);break;case o:[j,a]=this.formatDate(t);break;case s:[j,a]=this.formatArguments(t);break;case g:[j,a]=this.formatSymbol(t);break;case G:[j,a]=this.formatPromise();break;case v:[j,a]=this.formatGenerator();break;case h:[j,a]=this.formatError(t);break;case k:case y:[j,a]=this.formatWeak(M);break;case $:[j,a]=this.formatSet(t);break;case m:[j,a]=this.formatMap(t);break;case r:case b:[j,a]=this.formatBuffer(M,t);break;default:if(M.includes("Array"))j="array",x=objectClass(t).toLowerCase(),t=Array.from(t);else if(M.includes("Iterator]")){const s=M.split(" ")[1];if("Set"===s)return this.toPrintable(new Set(Array.from(t).map((e=>e[1]))),e,i);if("Map"===s)return this.toPrintable(new Map(Array.from(t)),e,i);if("String"===s)return this.toPrintable(Array.from(t).map((e=>e[1])).join(""),e,i);if("Array"===s)return this.toPrintable(Array.from(t).map((e=>e[1])),e,i)}}switch(j){case"array":case"object":if(_classPrivateFieldGet(this,se)===_classPrivateFieldGet(this,ae)){const e=objectSize(t);let i="";i=e>_classPrivateFieldGet(this,he)?`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("props")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(e)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,he))}${_classPrivateFieldGet(this,ue).plain(")")}`:`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("props")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(e)}${_classPrivateFieldGet(this,ue).plain(")")}`,a=`${_classPrivateFieldGet(this,ue).keyword("object")} ${_classPrivateFieldGet(this,ue).keyword(objectClass(t))} ${i}`}else{let s;_classPrivateFieldSet(this,se,_classPrivateFieldGet(this,se)+1),s="array"===j?`${_classPrivateFieldGet(this,ue).comment(e)}`:`${e}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}`,a=this.toPrintable(t,s,i,x),_classPrivateFieldSet(this,se,_classPrivateFieldGet(this,se)-1)}break;default:j.length||(j=M.split("[object ").pop().split("]").shift().toLowerCase(),a=t.toString())}return`${_classPrivateFieldGet(this,ue).keyword(j)}${j.length?_classPrivateFieldGet(this,ue).plain(" • "):""}${a}`}formatArguments(e){return["arguments",this.toPrintable(e)]}formatBigInt(e){return["number bigint",_classPrivateFieldGet(this,ue).number(e)]}formatBoolean(e){return["boolean",_classPrivateFieldGet(this,ue).boolean(e)]}formatBuffer(e,t){return["array buffer",`${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("bytes")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(t.byteLength)}${_classPrivateFieldGet(this,ue).plain(")")}`]}formatDate(e){return["date",_classPrivateFieldGet(this,ue).name(e.toISOString()+" • "+e.toString())]}formatError(e){return[`error ${objectClass(e)}`,_classPrivateFieldGet(this,ue).string(e.message)]}formatFunction(e,t){let i="function";switch(e){case l:i=`${i} async`;break;case P:i=`${i} generator`}const s=funcNameExtract(t);i=s.length?`${i} ${_classPrivateFieldGet(this,ue).name(s)}`:`${i} anonymous`;const a=`${t}`.replace(/\n+/g,"").split(")").shift()+") {…}";return[i,_classPrivateFieldGet(this,ue).argument(a)]}formatGenerator(){return["generator",_classPrivateFieldGet(this,ue).argument("Generator {…}")]}formatGlobal(e,t,i){return["global "+(e===S?"window":"this"),this.toPrintable({...t},`${i}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}`)]}formatMap(e){return["map",this.toPrintable(e)]}formatNull(){return["empty",_classPrivateFieldGet(this,ue).string("null")]}formatNumber(e){let t;return Number.isFinite(e)?t=Number.isInteger(e)?0===e?Object.is(e,-0)?"number negative zero":"number zero":"number integer":"number float":(t="number",Number.isNaN(e)?t+=" nan":e===Number.POSITIVE_INFINITY?t+=" positive infinity":t+=" negative infinity"),[t,_classPrivateFieldGet(this,ue).number(Object.is(e,-0)?"-0":e)]}formatPromise(){return["promise",_classPrivateFieldGet(this,ue).argument("Promise {…}")]}formatRegexp(e){return[`regexp ${e.flags}`,_classPrivateFieldGet(this,ue).name(e)]}formatSet(e){return["set",this.toPrintable(e)]}formatString(e){const t=[...e],i=t.length,s=e.length;let a,r="";return _classPrivateFieldGet(this,_e)>0&&(r=s!==i?t.slice(0,_classPrivateFieldGet(this,_e)).join(""):e.slice(0,_classPrivateFieldGet(this,_e))),a=s===i?`${_classPrivateFieldGet(this,ue).string(_classPrivateFieldGet(this,ve))}${_classPrivateFieldGet(this,ue).string(r||e)}${_classPrivateFieldGet(this,ue).string(_classPrivateFieldGet(this,de))} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("length")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(s)}`:`${_classPrivateFieldGet(this,ue).string(_classPrivateFieldGet(this,ve))}${_classPrivateFieldGet(this,ue).string(r||e)}${_classPrivateFieldGet(this,ue).string(_classPrivateFieldGet(this,de))} ${_classPrivateFieldGet(this,ue).plain("(")}${_classPrivateFieldGet(this,ue).argument("length")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(s)}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("symbols")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(i)}`,a=i>_classPrivateFieldGet(this,_e)?`${a}${_classPrivateFieldGet(this,ue).plain(",")} ${_classPrivateFieldGet(this,ue).argument("shown")}${_classPrivateFieldGet(this,ue).plain("=")}${_classPrivateFieldGet(this,ue).number(_classPrivateFieldGet(this,_e))}${_classPrivateFieldGet(this,ue).plain(")")}`:`${a}${_classPrivateFieldGet(this,ue).plain(")")}`,stringClearReference(r||e),["string",a]}formatSymbol(e){return["symbol",e.toString()]}formatUndefined(){return["empty",_classPrivateFieldGet(this,ue).string("undefined")]}formatWeak(e){return e===y?["map weak",""]:["set weak",""]}formatAssign(e,t,i,s){let a;return"map"===e?`${t}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}${s}${_classPrivateFieldGet(this,ue).plain(",")}\n`:"set"===e?`${t}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}${_classPrivateFieldGet(this,ue).plain(_classPrivateFieldGet(this,Z))} ${s}${_classPrivateFieldGet(this,ue).plain(",")}\n`:(a=isInteger(i)||"array"===e&&"string"!=typeof i?`${_classPrivateFieldGet(this,ue).plain("[")}${_classPrivateFieldGet(this,ue).property(i)}${_classPrivateFieldGet(this,ue).plain("]")}`:`${_classPrivateFieldGet(this,ue).plain(_classPrivateFieldGet(this,ve))}${_classPrivateFieldGet(this,ue).property(i)}${_classPrivateFieldGet(this,ue).plain(_classPrivateFieldGet(this,de))}`,`${t}${_classPrivateFieldGet(this,ue).comment(_classPrivateFieldGet(this,ce))}${a} ${_classPrivateFieldGet(this,ue).plain(_classPrivateFieldGet(this,Z))} ${s}${_classPrivateFieldGet(this,ue).plain(",")}\n`)}log(e){if(_classPrivateFieldGet(this,ie)&&(_classPrivateFieldGet(this,ee)&&cliExit(),_classPrivateFieldGet(this,le)?setTimeout((()=>cliPrint(this.toPrintable(e))),0):cliPrint(this.toPrintable(e)),processExit(_classPrivateFieldGet(this,re))),_classPrivateFieldGet(this,Pe))return this.toPrintable(e)}static factory(e=!0,t){const i=Consono.createOptions(e),s=new Consono(i,t);return function consono(e){if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint(s.toPrintable(e))),0):cliPrint(s.toPrintable(e)),processExit(i.exit)),i.returns)return s.toPrintable(e)}}static createOptions(e=!0){const s={...t};return"boolean"==typeof e?s.console=e:e&&"object"==typeof e&&Object.assign(s,e),objectPick(s,i)}}function consonoJSON(e,t){let i;i=void 0===e?void 0:JSON.parse(JSON.stringify(e),null,2);const s=Consono.createOptions({...t,colorize:!1});if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>{void 0===i?console.dir(void 0):console.dir(i)}),0):void 0===i?console.dir(void 0):console.dir(i),processExit(s.exit)),s.returns)return i}function consonoPlain(e,t=!0){const i=Consono$1.createOptions({...t,colorize:!1}),s=new Consono$1(i);if(i.console&&(i.clear&&cliExit(),i.immediate?setTimeout((()=>cliPrint$1(s.toPrintable(e),i.stdout)),0):cliPrint$1(s.toPrintable(e),i.stdout),processExit(i.exit)),i.returns)return s.toPrintable(e)}function consonoReturn(e,t=!0,i="light"){const s=Consono$1.createOptions({...t,console:!1,returns:!0}),a=new Consono$1(s,i);if(s.console&&(s.clear&&cliExit(),s.immediate?setTimeout((()=>cliPrint$1(a.toPrintable(e),s.stdout)),0):cliPrint$1(a.toPrintable(e),s.stdout),processExit(s.exit)),s.returns)return a.toPrintable(e)}export{Consono$1 as Consono,j as THEME_DARK,x as THEME_LIGHT,consono,consonoExit,consonoJSON,consonoPlain,consonoReturn,t as options}; //# sourceMappingURL=consono.node.mjs.map diff --git a/dist/consono.node.mjs.map b/dist/consono.node.mjs.map index decddb8..86478d8 100644 --- a/dist/consono.node.mjs.map +++ b/dist/consono.node.mjs.map @@ -1 +1 @@ -{"version":3,"file":"consono.node.mjs","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/core/node/theme.js","../src/const/theme_default.js","../src/utils/cliExit.js","../src/utils/node/cliPrint.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/core/node/consono.js","../src/utils/funcNameExtract.js","../src/utils/stringClearReference.js","../src/utils/objectPick.js","../src/helpers/node/consono.js","../src/helpers/node/consonoExit.js","../src/helpers/node/consonoPlain.js","../src/helpers/node/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import chalk from \"chalk\";\n\nimport THEME_DARK from \"../../const/theme_dark.js\";\nimport THEME_LIGHT from \"../../const/theme_light.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n constructor(level = 3, theme = THEME_DEFAULT) {\n this.cli = new chalk.Instance({ level: Math.min(level, chalk.supportsColor.level) });\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n case Object.prototype.toString.call(theme) === \"[object Object]\":\n rgb = { ...THEME_LIGHT, ...theme };\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = this.compose(...rgb.argument);\n this.boolean = this.compose(...rgb.boolean);\n this.comment = this.compose(...rgb.comment);\n this.keyword = this.compose(...rgb.keyword);\n this.name = this.compose(...rgb.name);\n this.number = this.compose(...rgb.number);\n this.plain = this.compose(...rgb.plain);\n this.property = this.compose(...rgb.property);\n this.string = this.compose(...rgb.string);\n }\n static toRGB(color) {\n color = Number.parseInt(color.toString(), 10);\n if (!Number.isInteger(color)) {\n return 255;\n }\n return Math.min(255, Math.max(0, color));\n }\n compose(red = 255, green = 255, blue = 255) {\n red = Theme.toRGB(red);\n green = Theme.toRGB(green);\n blue = Theme.toRGB(blue);\n return (value) => {\n if (!this.cli || !this.cli.rgb) {\n return value.toString();\n }\n return this.cli.rgb(red, green, blue)(value.toString());\n };\n }\n}\n","export const THEME_DEFAULT = \"light\";\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message, stdout = false) {\n if (!stdout) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable), this.#stdout), 0);\n } else {\n cliPrint(this.toPrintable(variable), this.#stdout);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = THEME_DEFAULT, exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","THEME_DARK","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_LIGHT","Theme","constructor","level","theme","rgb","cli","chalk","Instance","Math","min","supportsColor","Object","prototype","toString","call","this","compose","color","Number","parseInt","isInteger","max","red","green","blue","toRGB","value","cliExit","err","process","write","cliPrint","message","log","objectClass","prototypeName","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectSize","obj","keys","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","reduce","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","funcNameExtract","func","result","exec","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","text","stringAsArray","stringSize","stringLength","printString","slice","stringClearReference","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","objectPick","accumulator","consonoExit","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"consono.node.mjs","sources":["../src/const/options_default.js","../src/const/options_keys.js","../src/const/tag.js","../src/const/theme_dark.js","../src/const/theme_light.js","../src/core/node/theme.js","../src/const/theme_default.js","../src/utils/cliExit.js","../src/utils/node/cliPrint.js","../src/utils/funcNameExtract.js","../src/utils/isInteger.js","../src/utils/objectClass.js","../src/utils/prototypeName.js","../src/utils/objectDeCycle.js","../src/utils/objectPick.js","../src/utils/objectSize.js","../src/utils/objectType.js","../src/utils/processExit.js","../src/utils/stringClearReference.js","../src/core/node/consono.js","../src/helpers/node/consono.js","../src/helpers/node/consonoExit.js","../src/core/browser/theme.js","../src/utils/browser/cliPrint.js","../src/core/browser/consono.js","../src/helpers/node/consonoJSON.js","../src/helpers/node/consonoPlain.js","../src/helpers/node/consonoReturn.js"],"sourcesContent":["const OPTIONS_DEFAULT = {\n arrayMaxElements: 99,\n assignSymbol: \"→\",\n clear: false,\n colorize: true,\n console: true,\n depth: 20,\n exit: false,\n immediate: false,\n indent: \"ˑˑ\",\n indentPad: 1,\n mapMaxEntries: 99,\n objectMaxProps: 99,\n quotesEnd: `\"`,\n quotesStart: `\"`,\n returns: true,\n setMaxValues: 99,\n stdout: false,\n stringMaxLength: 360,\n};\n\nexport default OPTIONS_DEFAULT;\n","const OPTIONS_KEYS = [\n \"arrayMaxElements\",\n \"assignSymbol\",\n \"clear\",\n \"colorize\",\n \"console\",\n \"depth\",\n \"exit\",\n \"indent\",\n \"mapMaxEntries\",\n \"objectMaxProps\",\n \"quotesEnd\",\n \"quotesStart\",\n \"returns\",\n \"setMaxValues\",\n \"stdout\",\n \"stringMaxLength\",\n];\n\nexport default OPTIONS_KEYS;\n","const TAG_ARGUMENTS = \"[object Arguments]\";\nconst TAG_ARRAY = \"[object Array]\";\nconst TAG_ARRAY_BUFFER = \"[object ArrayBuffer]\";\nconst TAG_ASYNC_FUNCTION = \"[object AsyncFunction]\";\nconst TAG_BIGINT = \"[object BigInt]\";\nconst TAG_BOOL = \"[object Boolean]\";\nconst TAG_DATE = \"[object Date]\";\nconst TAG_ERROR = \"[object Error]\";\nconst TAG_FUNCTION = \"[object Function]\";\nconst TAG_GENERATOR = \"[object Generator]\";\nconst TAG_GENERATOR_FUNCTION = \"[object GeneratorFunction]\";\nconst TAG_GLOBAL = \"[object global]\";\nconst TAG_MAP = \"[object Map]\";\nconst TAG_NULL = \"[object Null]\";\nconst TAG_NUMBER = \"[object Number]\";\nconst TAG_OBJECT = \"[object Object]\";\nconst TAG_PROMISE = \"[object Promise]\";\nconst TAG_REGEXP = \"[object RegExp]\";\nconst TAG_SET = \"[object Set]\";\nconst TAG_SHARED_ARRAY_BUFFER = \"[object SharedArrayBuffer]\";\nconst TAG_STRING = \"[object String]\";\nconst TAG_SYMBOL = \"[object Symbol]\";\nconst TAG_VOID = \"[object Undefined]\";\nconst TAG_WEAK_MAP = \"[object WeakMap]\";\nconst TAG_WEAK_SET = \"[object WeakSet]\";\nconst TAG_WINDOW = \"[object Window]\";\n\nexport default {\n ARGUMENTS: TAG_ARGUMENTS,\n ARRAY: TAG_ARRAY,\n ARRAY_BUFFER: TAG_ARRAY_BUFFER,\n ASYNC_FUNCTION: TAG_ASYNC_FUNCTION,\n BIGINT: TAG_BIGINT,\n BOOL: TAG_BOOL,\n DATE: TAG_DATE,\n ERROR: TAG_ERROR,\n FUNCTION: TAG_FUNCTION,\n GENERATOR: TAG_GENERATOR,\n GENERATOR_FUNCTION: TAG_GENERATOR_FUNCTION,\n GLOBAL: TAG_GLOBAL,\n MAP: TAG_MAP,\n NULL: TAG_NULL,\n NUMBER: TAG_NUMBER,\n OBJECT: TAG_OBJECT,\n PROMISE: TAG_PROMISE,\n REGEXP: TAG_REGEXP,\n SET: TAG_SET,\n SHARED_ARRAY_BUFFER: TAG_SHARED_ARRAY_BUFFER,\n STRING: TAG_STRING,\n SYMBOL: TAG_SYMBOL,\n VOID: TAG_VOID,\n WEAK_MAP: TAG_WEAK_MAP,\n WEAK_SET: TAG_WEAK_SET,\n WINDOW: TAG_WINDOW,\n};\n","const THEME_DARK = {\n argument: [253, 151, 31],\n boolean: [174, 129, 255],\n comment: [117, 113, 94],\n keyword: [249, 38, 114],\n name: [230, 219, 116],\n number: [174, 129, 255],\n plain: [128, 128, 128],\n property: [102, 217, 239],\n string: [166, 226, 46],\n};\n\nexport default THEME_DARK;\n","const THEME_LIGHT = {\n argument: [245, 135, 31],\n boolean: [66, 113, 174],\n comment: [117, 113, 94],\n keyword: [200, 40, 41],\n name: [201, 159, 0],\n number: [101, 67, 133],\n plain: [128, 128, 128],\n property: [32, 123, 129],\n string: [113, 140, 0],\n};\n\nexport default THEME_LIGHT;\n","import chalk from \"chalk\";\n\nimport THEME_DARK from \"../../const/theme_dark.js\";\nimport THEME_LIGHT from \"../../const/theme_light.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n constructor(level = 3, theme = THEME_DEFAULT) {\n this.cli = new chalk.Instance({ level: Math.min(level, chalk.supportsColor.level) });\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n case Object.prototype.toString.call(theme) === \"[object Object]\":\n rgb = { ...THEME_LIGHT, ...theme };\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = this.compose(...rgb.argument);\n this.boolean = this.compose(...rgb.boolean);\n this.comment = this.compose(...rgb.comment);\n this.keyword = this.compose(...rgb.keyword);\n this.name = this.compose(...rgb.name);\n this.number = this.compose(...rgb.number);\n this.plain = this.compose(...rgb.plain);\n this.property = this.compose(...rgb.property);\n this.string = this.compose(...rgb.string);\n }\n static toRGB(color) {\n color = Number.parseInt(color.toString(), 10);\n if (!Number.isInteger(color)) {\n return 255;\n }\n return Math.min(255, Math.max(0, color));\n }\n compose(red = 255, green = 255, blue = 255) {\n red = Theme.toRGB(red);\n green = Theme.toRGB(green);\n blue = Theme.toRGB(blue);\n return (value) => {\n if (!this.cli || !this.cli.rgb) {\n return value.toString();\n }\n return this.cli.rgb(red, green, blue)(value.toString());\n };\n }\n}\n","export const THEME_DEFAULT = \"light\";\n","export default function cliExit() {\n if (\"clear\" in console) {\n try {\n console.clear();\n } catch (err) {\n //\n }\n } else {\n try {\n process.stdout.write(\"\\u001b[2J\\u001b[0;0H\");\n } catch (err) {\n //\n }\n }\n}\n","export default function cliPrint(message, stdout = false) {\n if (!stdout) {\n console.log(message);\n } else {\n process.stdout.write(message);\n }\n}\n","export default function funcNameExtract(func) {\n if (func.name) {\n return func.name;\n }\n const result = /^function\\s+([\\w]+)\\s*\\(/.exec(func.toString());\n return result ? result[1] : \"\";\n}\n","export default function isInteger(value) {\n return Number.isInteger(Number.parseInt(value));\n}\n","export default function objectClass(value) {\n if (value && \"constructor\" in value && \"name\" in value.constructor) {\n return value.constructor.name;\n }\n return \"\";\n}\n","/**\n * @param {*} value\n * @returns {string}\n */\nexport default function prototypeName(value) {\n return Object.prototype.toString.call(value);\n}\n","import TAG from \"../const/tag.js\";\nimport prototypeName from \"./prototypeName.js\";\n\nfunction looseClone(object) {\n if (object == null || typeof object !== \"object\") {\n return object;\n }\n const inExactInstance = new object.constructor();\n for (let key in object) {\n inExactInstance[key] = looseClone(object[key]);\n }\n return inExactInstance;\n}\n\nexport default function objectDeCycle(object) {\n const objects = [];\n const paths = [];\n return (function deReCycle(value, path) {\n let index;\n let name;\n let newIterable;\n if (\n typeof value === \"object\" &&\n value !== null &&\n !(value instanceof Boolean) &&\n !(value instanceof Date) &&\n !(value instanceof Number) &&\n !(value instanceof RegExp) &&\n !(value instanceof String)\n ) {\n for (index = 0; index < objects.length; index += 1) {\n if (objects[index] === value) {\n return { \"&circularReference\": paths[index] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (prototypeName(value) === TAG.ARRAY) {\n newIterable = [];\n for (index = 0; index < value.length; index += 1) {\n newIterable[index] = deReCycle(value[index], `${path}[\"${index}\"]`);\n }\n } else {\n if (Object.isFrozen(object)) {\n newIterable = looseClone(object);\n } else {\n newIterable = Object.create(object);\n }\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n newIterable[name] = deReCycle(value[name], `${path}[${JSON.stringify(name)}]`);\n }\n }\n }\n return newIterable;\n }\n return value;\n })(object, \"&\");\n}\n","export default function objectPick(object, keys) {\n if (!keys.length || !Object.keys(object).length) {\n return {};\n }\n return keys.reduce((accumulator, key) => {\n accumulator[key] = object[key];\n return accumulator;\n }, {});\n}\n","export default function objectSize(obj) {\n return Object.keys(obj).length;\n}\n","import prototypeName from \"./prototypeName.js\";\n\nexport default function objectType(value) {\n const type = prototypeName(value).toLowerCase().split(\"[object \").pop().split(\"]\").shift();\n if ([\"global\", \"window\"].includes(type)) {\n return \"object\";\n }\n if (type.includes(\"error\")) {\n return \"error\";\n }\n return type;\n}\n","export default function processExit(code = 0) {\n if (code === false) {\n return;\n }\n if (code === true) {\n code = 0;\n }\n const exitCode = Number.parseInt(code.toString());\n if (!Number.isInteger(exitCode)) {\n return;\n }\n if (exitCode < 0) {\n return;\n }\n try {\n process.exit(exitCode);\n } catch (error) {\n //\n }\n}\n","export default function stringClearReference(text) {\n return text.length < 12 ? text : (\" \" + text).slice(1);\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable), this.#stdout), 0);\n } else {\n cliPrint(this.toPrintable(variable), this.#stdout);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consono\n * @description Print variable\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consono(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoExit\n * @description Print variable and exit process\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @param {boolean|number=} exitCode\n * @returns {string|undefined}\n */\nexport default function consonoExit(variable, options = true, theme = THEME_DEFAULT, exitCode = 0) {\n const createdOptions = Consono.createOptions({ ...options, exit: exitCode });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nconst Reset = \"\\x1b[0m\";\n\nconst FgBlack = \"\\x1b[30m\";\nconst FgRed = \"\\x1b[31m\";\nconst FgGreen = \"\\x1b[32m\";\n// const FgYellow = \"\\x1b[33m\";\nconst FgBlue = \"\\x1b[34m\";\nconst FgMagenta = \"\\x1b[35m\";\n// const FgCyan = \"\\x1b[36m\";\nconst FgWhite = \"\\x1b[37m\";\n\nconst THEME_LIGHT = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgBlack,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgBlack,\n property: FgRed,\n string: FgGreen,\n};\n\nconst THEME_DARK = {\n argument: FgRed,\n boolean: FgMagenta,\n comment: FgWhite,\n keyword: FgBlue,\n name: FgGreen,\n number: FgMagenta,\n plain: FgWhite,\n property: FgRed,\n string: FgGreen,\n};\n\nexport default class Theme {\n /**\n * @constructor\n * @param {number=3} level\n * @param {Object|string=} theme\n */\n // eslint-disable-next-line no-unused-vars\n constructor(level = 3, theme = THEME_DEFAULT) {\n let rgb;\n switch (true) {\n case theme === \"dark\":\n rgb = THEME_DARK;\n break;\n case theme === \"light\":\n rgb = THEME_LIGHT;\n break;\n default:\n rgb = THEME_LIGHT;\n break;\n }\n this.argument = (value) => rgb.argument + value.toString() + Reset;\n this.boolean = (value) => rgb.boolean + value.toString() + Reset;\n this.comment = (value) => rgb.comment + value.toString() + Reset;\n this.keyword = (value) => rgb.keyword + value.toString() + Reset;\n this.name = (value) => rgb.name + value.toString() + Reset;\n this.number = (value) => rgb.number + value.toString() + Reset;\n this.plain = (value) => rgb.plain + value.toString() + Reset;\n this.property = (value) => rgb.property + value.toString() + Reset;\n this.string = (value) => rgb.string + value.toString() + Reset;\n }\n}\n","export default function cliPrint(message) {\n console.log(message);\n}\n","import OPTIONS_DEFAULT from \"../../const/options_default.js\";\nimport OPTIONS_KEYS from \"../../const/options_keys.js\";\nimport TAG from \"../../const/tag.js\";\nimport Theme from \"./theme.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/browser/cliPrint.js\";\nimport funcNameExtract from \"../../utils/funcNameExtract.js\";\nimport isInteger from \"../../utils/isInteger.js\";\nimport objectClass from \"../../utils/objectClass.js\";\nimport objectDeCycle from \"../../utils/objectDeCycle.js\";\nimport objectPick from \"../../utils/objectPick.js\";\nimport objectSize from \"../../utils/objectSize.js\";\nimport objectType from \"../../utils/objectType.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport prototypeName from \"../../utils/prototypeName.js\";\nimport stringClearReference from \"../../utils/stringClearReference.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\nexport default class Consono {\n #arrayMaxElements;\n #arrow;\n #clear;\n #colorize;\n #console;\n #currentDepth;\n #depth;\n #exit;\n #immediate;\n #indentType;\n #indent;\n #mapMaxEntries;\n #objectMaxProps;\n #quotesEnd;\n #quotesStart;\n #returns;\n #setMaxValues;\n #stdout;\n #stringMaxLength;\n #theme;\n /**\n * @public\n * @constructor\n * @param {Object=} options\n * @param {Object|string=} theme\n */\n constructor(options = {}, theme = THEME_DEFAULT) {\n this.setOptions(options);\n this.setTheme(theme);\n }\n /**\n * @public\n * @param {Object|string=} theme\n */\n setTheme(theme) {\n /** @protected */\n this.#theme = new Theme(this.#colorize ? 3 : 0, theme);\n }\n /**\n * @public\n * @param {Object=} options\n */\n setOptions(options = {}) {\n options = options || {};\n const opts = {\n ...OPTIONS_DEFAULT,\n ...options,\n };\n this.#arrayMaxElements = Number.parseInt(opts.arrayMaxElements);\n this.#arrow = `${opts.assignSymbol}`;\n this.#clear = !!opts.clear;\n this.#colorize = !!opts.colorize;\n this.#console = !!opts.console;\n this.#stdout = !!opts.stdout;\n this.#currentDepth = 0;\n this.#depth = Number.parseInt(opts.depth);\n if (opts.exit === false) {\n this.#exit = false;\n } else if (opts.exit === true) {\n this.#exit = 0;\n } else if (isInteger(opts.exit)) {\n this.#exit = opts.exit;\n } else {\n this.#exit = false;\n }\n this.#indentType = `${opts.indent}`;\n this.#indent = this.#indentType.repeat(opts.indentPad);\n this.#mapMaxEntries = Number.parseInt(opts.mapMaxEntries);\n this.#objectMaxProps = Number.parseInt(opts.objectMaxProps);\n this.#quotesEnd = `${opts.quotesEnd}`;\n this.#quotesStart = `${opts.quotesStart}`;\n this.#returns = !!opts.returns;\n this.#immediate = !!opts.immediate;\n this.#setMaxValues = Number.parseInt(opts.setMaxValues);\n this.#stringMaxLength = Number.parseInt(opts.stringMaxLength);\n }\n /**\n * @public\n * @param {*} value\n * @param {string=} indent\n * @param {boolean|string=true} describe\n * @param {string=\"\"} subType\n * @returns {string}\n */\n toPrintable(value, indent = \"\", describe = true, subType = \"\") {\n let print = \"\";\n let startsWith = \"\";\n let endsWith = \"\";\n let iterationLimit;\n const type = objectType(value);\n switch (type) {\n case \"array\": {\n const arrLength = value.length;\n if (arrLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}=${this.#theme.number(this.#arrayMaxElements)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"array\")}${subType.length ? ` ${this.#theme.keyword(subType)}` : \"\"} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"elements\")}${this.#theme.plain(\"=\")}\\\n${this.#theme.number(arrLength)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"object\": {\n const origObject = value;\n value = objectDeCycle(value);\n if (describe === true) {\n const size = objectSize(value);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}${this.#theme.plain(\n \")\",\n )}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n startsWith = `${this.#theme.keyword(\"object\")} \\\n${this.#theme.keyword(objectClass(origObject))} ${printSize} ${this.#theme.plain(\"{\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n } else {\n startsWith = `${this.#theme.plain(\"(\")}\\n`;\n endsWith = `${indent}${this.#theme.plain(\")\")}`;\n }\n iterationLimit = this.#objectMaxProps;\n break;\n }\n case \"arguments\": {\n const argLength = value.length;\n if (argLength > this.#arrayMaxElements) {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}, \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#arrayMaxElements)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"arguments\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"arity\")}${this.#theme.plain(\"=\")}${this.#theme.number(argLength)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"[\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"]\")}`;\n iterationLimit = this.#arrayMaxElements;\n break;\n }\n case \"set\": {\n const setSize = value.size;\n if (setSize > this.#setMaxValues) {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#setMaxValues)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"set\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(setSize)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}}`;\n iterationLimit = this.#setMaxValues;\n break;\n }\n case \"map\": {\n const mapSize = value.size;\n if (mapSize > this.#mapMaxEntries) {\n startsWith = `${this.#theme.keyword(\"map\")} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#mapMaxEntries)}\\\n${this.#theme.plain(\")\")} ${this.#theme.plain(\"{\")}\\n`;\n } else {\n startsWith = `${this.#theme.keyword(\"map\")} ${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"size\")}${this.#theme.plain(\"=\")}${this.#theme.number(mapSize)}${this.#theme.plain(\")\")} \\\n${this.#theme.plain(\"{\")}\\n`;\n }\n endsWith = `${indent}${this.#theme.plain(\"}\")}`;\n iterationLimit = this.#mapMaxEntries;\n break;\n }\n default:\n return this.formatValue(indent, value);\n }\n let iteration = 0;\n switch (type) {\n case \"set\": {\n const iterateSet = Array.from(value);\n for (let itemKey = 0; itemKey < iterateSet.length; itemKey++) {\n const originalValue = iterateSet[itemKey];\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(\"set\", indent, itemKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n case \"map\":\n for (const entry of value.entries()) {\n const [entryKey, entryValue] = entry;\n const formattedValue = this.formatValue(indent, { key: entryKey, value: entryValue }, false);\n print += this.formatAssign(\"map\", indent, entryKey, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n default: {\n const keys = Object.keys(value)\n .sort((alpha, beta) => alpha.localeCompare(beta))\n .reduce((previous, current) => {\n previous[current] = undefined;\n return previous;\n }, {});\n for (const key in keys) {\n if (!Object.prototype.hasOwnProperty.call(value, key)) {\n continue;\n }\n const originalValue = value[key];\n const originalParamType = objectType(originalValue);\n const formattedValue = this.formatValue(indent, originalValue);\n print += this.formatAssign(originalParamType, indent, key, formattedValue);\n iteration += 1;\n if (iteration >= iterationLimit) {\n break;\n }\n }\n break;\n }\n }\n return `${startsWith}${print}${endsWith}`;\n }\n /**\n * @protected\n * @param {string} indent\n * @param {*} originalValue\n * @param {boolean|string=true} describe\n * @returns {string}\n */\n formatValue(indent, originalValue, describe = true) {\n let value = \"\";\n let type = objectType(originalValue);\n let subType = \"\";\n const tag = prototypeName(originalValue);\n switch (tag) {\n case TAG.VOID:\n [type, value] = this.formatUndefined();\n break;\n case TAG.NULL:\n [type, value] = this.formatNull();\n break;\n case TAG.GLOBAL:\n case TAG.WINDOW:\n [type, value] = this.formatGlobal(tag, originalValue, indent);\n break;\n case TAG.BIGINT:\n [type, value] = this.formatBigInt(originalValue);\n break;\n case TAG.NUMBER:\n [type, value] = this.formatNumber(originalValue);\n break;\n case TAG.BOOL:\n [type, value] = this.formatBoolean(originalValue);\n break;\n case TAG.STRING:\n [type, value] = this.formatString(originalValue);\n break;\n case TAG.REGEXP:\n [type, value] = this.formatRegexp(originalValue);\n break;\n case TAG.FUNCTION:\n case TAG.ASYNC_FUNCTION:\n case TAG.GENERATOR_FUNCTION:\n [type, value] = this.formatFunction(tag, originalValue);\n break;\n case TAG.DATE:\n [type, value] = this.formatDate(originalValue);\n break;\n case TAG.ARGUMENTS:\n [type, value] = this.formatArguments(originalValue);\n break;\n case TAG.SYMBOL:\n [type, value] = this.formatSymbol(originalValue);\n break;\n case TAG.PROMISE:\n [type, value] = this.formatPromise();\n break;\n case TAG.GENERATOR:\n [type, value] = this.formatGenerator();\n break;\n case TAG.ERROR:\n [type, value] = this.formatError(originalValue);\n break;\n case TAG.WEAK_SET:\n case TAG.WEAK_MAP:\n [type, value] = this.formatWeak(tag);\n break;\n case TAG.SET:\n [type, value] = this.formatSet(originalValue);\n break;\n case TAG.MAP:\n [type, value] = this.formatMap(originalValue);\n break;\n case TAG.ARRAY_BUFFER:\n case TAG.SHARED_ARRAY_BUFFER:\n [type, value] = this.formatBuffer(tag, originalValue);\n break;\n default:\n if (tag.includes(\"Array\")) {\n type = \"array\";\n subType = objectClass(originalValue).toLowerCase();\n originalValue = Array.from(originalValue);\n } else if (tag.includes(\"Iterator]\")) {\n const iterator = tag.split(\" \")[1];\n if (iterator === \"Set\") {\n return this.toPrintable(new Set(Array.from(originalValue).map((e) => e[1])), indent, describe);\n } else if (iterator === \"Map\") {\n return this.toPrintable(new Map(Array.from(originalValue)), indent, describe);\n } else if (iterator === \"String\") {\n return this.toPrintable(\n Array.from(originalValue)\n .map((e) => e[1])\n .join(\"\"),\n indent,\n describe,\n );\n } else if (iterator === \"Array\") {\n return this.toPrintable(\n Array.from(originalValue).map((e) => e[1]),\n indent,\n describe,\n );\n }\n }\n break;\n }\n switch (type) {\n case \"array\":\n case \"object\":\n if (this.#currentDepth === this.#depth) {\n const size = objectSize(originalValue);\n let printSize = \"\";\n if (size > this.#objectMaxProps) {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(this.#objectMaxProps)}\\\n${this.#theme.plain(\")\")}`;\n } else {\n printSize = `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"props\")}${this.#theme.plain(\"=\")}${this.#theme.number(size)}\\\n${this.#theme.plain(\")\")}`;\n }\n value = `${this.#theme.keyword(\"object\")} ${this.#theme.keyword(objectClass(originalValue))} ${printSize}`;\n } else {\n this.#currentDepth += 1;\n let indentToPrint;\n if (type === \"array\") {\n indentToPrint = `${this.#theme.comment(indent)}`;\n } else {\n indentToPrint = `${indent}${this.#theme.comment(this.#indent)}`;\n }\n value = this.toPrintable(originalValue, indentToPrint, describe, subType);\n this.#currentDepth -= 1;\n }\n break;\n default:\n if (!type.length) {\n type = tag.split(\"[object \").pop().split(\"]\").shift().toLowerCase();\n value = originalValue.toString();\n }\n break;\n }\n return `${this.#theme.keyword(type)}${type.length ? this.#theme.plain(\" • \") : \"\"}${value}`;\n }\n /**\n * @protected\n * @param {arguments} value\n * @returns {[string, string]}\n */\n formatArguments(value) {\n return [\"arguments\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {BigInteger} value\n * @returns {[string, string]}\n */\n formatBigInt(value) {\n return [\"number bigint\", this.#theme.number(value)];\n }\n /**\n * @protected\n * @param {boolean} value\n * @returns {[string, string]}\n */\n formatBoolean(value) {\n return [\"boolean\", this.#theme.boolean(value)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Buffer} value\n * @returns {[string, string]}\n */\n formatBuffer(tag, value) {\n return [\n TAG.ARRAY_BUFFER ? \"array buffer\" : \"array buffer shared\",\n `${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"bytes\")}${this.#theme.plain(\"=\")}${this.#theme.number(value.byteLength)}\\\n${this.#theme.plain(\")\")}`,\n ];\n }\n /**\n * @protected\n * @param {Date} value\n * @returns {[string, string]}\n */\n formatDate(value) {\n return [\"date\", this.#theme.name(value.toISOString() + \" • \" + value.toString())];\n }\n /**\n * @protected\n * @param {Error} value\n * @returns {[string, *]}\n */\n formatError(value) {\n return [`error ${objectClass(value)}`, this.#theme.string(value.message)];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {Function} value\n * @returns {[string, string]}\n */\n formatFunction(tag, value) {\n let type = \"function\";\n switch (tag) {\n case TAG.ASYNC_FUNCTION:\n type = `${type} async`;\n break;\n case TAG.GENERATOR_FUNCTION:\n type = `${type} generator`;\n break;\n }\n const name = funcNameExtract(value);\n if (name.length) {\n type = `${type} ${this.#theme.name(name)}`;\n } else {\n type = `${type} anonymous`;\n }\n const source = `${value}`.replace(/\\n+/g, \"\").split(\")\").shift() + \") {…}\";\n return [type, this.#theme.argument(source)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatGenerator() {\n return [\"generator\", this.#theme.argument(\"Generator {…}\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @param {global|window} value\n * @param {string} indent\n * @returns {[string, string]}\n */\n formatGlobal(tag, value, indent) {\n return [\n `global ${tag === TAG.WINDOW ? \"window\" : \"this\"}`,\n this.toPrintable({ ...value }, `${indent}${this.#theme.comment(this.#indent)}`),\n ];\n }\n /**\n * @protected\n * @param {Map} value\n * @returns {[string, string]}\n */\n formatMap(value) {\n return [\"map\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatNull() {\n return [\"empty\", this.#theme.string(\"null\")];\n }\n /**\n * @protected\n * @param {number} value\n * @returns {[string, string]}\n */\n formatNumber(value) {\n let type;\n if (Number.isFinite(value)) {\n if (Number.isInteger(value)) {\n if (value === 0) {\n if (Object.is(value, -0)) {\n type = \"number negative zero\";\n } else {\n type = \"number zero\";\n }\n } else {\n type = \"number integer\";\n }\n } else {\n type = \"number float\";\n }\n } else {\n type = \"number\";\n if (Number.isNaN(value)) {\n type += \" nan\";\n } else if (value === Number.POSITIVE_INFINITY) {\n type += \" positive infinity\";\n } else {\n type += \" negative infinity\";\n }\n }\n return [type, this.#theme.number(Object.is(value, -0) ? \"-0\" : value)];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatPromise() {\n return [\"promise\", this.#theme.argument(\"Promise {…}\")];\n }\n /**\n * @protected\n * @param {RegExp} value\n * @returns {[string, string]}\n */\n formatRegexp(value) {\n return [`regexp ${value.flags}`, this.#theme.name(value)];\n }\n /**\n * @protected\n * @param {Set} value\n * @returns {[string,string]}\n */\n formatSet(value) {\n return [\"set\", this.toPrintable(value)];\n }\n /**\n * @protected\n * @param {string} text\n * @returns {[string, string]}\n */\n formatString(text) {\n const stringAsArray = [...text];\n const stringSize = stringAsArray.length;\n const stringLength = text.length;\n let printString = \"\";\n if (this.#stringMaxLength > 0) {\n if (stringLength !== stringSize) {\n printString = stringAsArray.slice(0, this.#stringMaxLength).join(\"\");\n } else {\n printString = text.slice(0, this.#stringMaxLength);\n }\n }\n let value;\n if (stringLength === stringSize) {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}`;\n } else {\n value = `${this.#theme.string(this.#quotesStart)}\\\n${this.#theme.string(printString || text)}${this.#theme.string(this.#quotesEnd)} \\\n${this.#theme.plain(\"(\")}\\\n${this.#theme.argument(\"length\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringLength)}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"symbols\")}${this.#theme.plain(\"=\")}${this.#theme.number(stringSize)}`;\n }\n if (stringSize > this.#stringMaxLength) {\n value = `${value}${this.#theme.plain(\",\")} \\\n${this.#theme.argument(\"shown\")}${this.#theme.plain(\"=\")}${this.#theme.number(\n this.#stringMaxLength,\n )}${this.#theme.plain(\")\")}`;\n } else {\n value = `${value}${this.#theme.plain(\")\")}`;\n }\n stringClearReference(printString || text);\n return [\"string\", value];\n }\n /**\n * @protected\n * @param {Symbol} value\n * @returns {[string, string]}\n */\n formatSymbol(value) {\n return [\"symbol\", value.toString()];\n }\n /**\n * @protected\n * @returns {[string, string]}\n */\n formatUndefined() {\n return [\"empty\", this.#theme.string(\"undefined\")];\n }\n /**\n * @protected\n * @param {string} tag\n * @returns {[string,string]}\n */\n formatWeak(tag) {\n if (tag === TAG.WEAK_MAP) {\n return [\"map weak\", \"\"];\n } else {\n return [\"set weak\", \"\"];\n }\n }\n /**\n * @protected\n * @param paramType\n * @param {string} indent\n * @param {number|string} key\n * @param {*} value\n * @returns {string}\n */\n formatAssign(paramType, indent, key, value) {\n let keyPart;\n if (paramType === \"map\") {\n return `${indent}${this.#theme.comment(this.#indent)}${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (paramType === \"set\") {\n return `${indent}${this.#theme.comment(this.#indent)}${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n } else if (isInteger(key) || (paramType === \"array\" && typeof key !== \"string\")) {\n keyPart = `${this.#theme.plain(\"[\")}${this.#theme.property(key)}${this.#theme.plain(\"]\")}`;\n } else {\n keyPart = `${this.#theme.plain(this.#quotesStart)}${this.#theme.property(key)}${this.#theme.plain(\n this.#quotesEnd,\n )}`;\n }\n return `${indent}${this.#theme.comment(this.#indent)}${keyPart} ${this.#theme.plain(this.#arrow)} ${value}\\\n${this.#theme.plain(\",\")}\\n`;\n }\n /**\n * @public\n * @param {*} variable\n * @returns {string|undefined}\n */\n log(variable) {\n if (this.#console) {\n if (this.#clear) {\n cliExit();\n }\n if (this.#immediate) {\n setTimeout(() => cliPrint(this.toPrintable(variable) /*, this.#stdout*/), 0);\n } else {\n cliPrint(this.toPrintable(variable) /*, this.#stdout*/);\n }\n processExit(this.#exit);\n }\n if (this.#returns) {\n return this.toPrintable(variable);\n }\n }\n /**\n * @name factory\n * @public\n * @static\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\n static factory(options = true, theme) {\n const createdOptions = Consono.createOptions(options);\n const instance = new Consono(createdOptions, theme);\n return function consono(variable) {\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/), 0);\n } else {\n cliPrint(instance.toPrintable(variable) /*, createdOptions.stdout*/);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n };\n }\n /**\n * @name createOptions\n * @public\n * @static\n * @param {boolean|Object} options\n * @returns {Object}\n */\n static createOptions(options = true) {\n const basicOptions = { ...OPTIONS_DEFAULT };\n if (typeof options === \"boolean\") {\n basicOptions.console = options;\n } else if (options && typeof options === \"object\") {\n Object.assign(basicOptions, options);\n }\n return objectPick(basicOptions, OPTIONS_KEYS);\n }\n}\n","import Consono from \"../../core/browser/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoJSON\n * @description Print variable as JSON without highlighting\n * @param {*} variable\n * @param {boolean|Object} [options=true]\n * @returns {string|undefined}\n */\nexport default function consonoJSON(variable, options) {\n let out;\n if (variable === undefined) {\n out = undefined;\n } else {\n out = JSON.parse(JSON.stringify(variable), null, 2);\n }\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }, 0);\n } else {\n if (out === undefined) {\n console.dir(undefined);\n } else {\n console.dir(out);\n }\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return out;\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\n\n/**\n * @name consonoPlain\n * @description Print variable without highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @returns {string|undefined}\n */\nexport default function consonoPlain(variable, options = true) {\n const createdOptions = Consono.createOptions({ ...options, colorize: false });\n const instance = new Consono(createdOptions);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n","import Consono from \"../../core/node/consono.js\";\nimport cliExit from \"../../utils/cliExit.js\";\nimport cliPrint from \"../../utils/node/cliPrint.js\";\nimport processExit from \"../../utils/processExit.js\";\nimport { THEME_DEFAULT } from \"../../const/theme_default.js\";\n\n/**\n * @name consonoReturn\n * @description Return variable with highlighting\n * @param {*} variable\n * @param {boolean|Object} options\n * @param {Object|string=} theme\n * @returns {string|undefined}\n */\nexport default function consonoReturn(variable, options = true, theme = THEME_DEFAULT) {\n const createdOptions = Consono.createOptions({ ...options, console: false, returns: true });\n const instance = new Consono(createdOptions, theme);\n if (createdOptions.console) {\n if (createdOptions.clear) {\n cliExit();\n }\n if (createdOptions.immediate) {\n setTimeout(() => cliPrint(instance.toPrintable(variable), createdOptions.stdout), 0);\n } else {\n cliPrint(instance.toPrintable(variable), createdOptions.stdout);\n }\n processExit(createdOptions.exit);\n }\n if (createdOptions.returns) {\n return instance.toPrintable(variable);\n }\n}\n"],"names":["OPTIONS_DEFAULT","arrayMaxElements","assignSymbol","clear","colorize","console","depth","exit","immediate","indent","indentPad","mapMaxEntries","objectMaxProps","quotesEnd","quotesStart","returns","setMaxValues","stdout","stringMaxLength","OPTIONS_KEYS","THEME_DARK","argument","boolean","comment","keyword","name","number","plain","property","string","THEME_LIGHT","Theme","constructor","level","theme","rgb","cli","chalk","Instance","Math","min","supportsColor","Object","prototype","toString","call","this","compose","color","Number","parseInt","isInteger","max","red","green","blue","toRGB","value","cliExit","err","process","write","cliPrint","message","log","funcNameExtract","func","result","exec","objectClass","prototypeName","looseClone","object","inExactInstance","key","objectDeCycle","objects","paths","deReCycle","path","index","newIterable","Boolean","Date","RegExp","String","length","push","TAG","isFrozen","create","hasOwnProperty","JSON","stringify","objectPick","keys","reduce","accumulator","objectSize","obj","objectType","type","toLowerCase","split","pop","shift","includes","processExit","code","exitCode","error","stringClearReference","text","slice","Consono","options","setOptions","setTheme","_classPrivateFieldGet","opts","repeat","toPrintable","describe","subType","iterationLimit","print","startsWith","endsWith","arrLength","origObject","size","printSize","argLength","setSize","mapSize","formatValue","iteration","iterateSet","Array","from","itemKey","originalValue","formattedValue","formatAssign","entry","entries","entryKey","entryValue","sort","alpha","beta","localeCompare","previous","current","undefined","originalParamType","tag","formatUndefined","formatNull","formatGlobal","formatBigInt","formatNumber","formatBoolean","formatString","formatRegexp","formatFunction","formatDate","formatArguments","formatSymbol","formatPromise","formatGenerator","formatError","formatWeak","formatSet","formatMap","formatBuffer","iterator","Set","map","e","Map","join","indentToPrint","byteLength","toISOString","source","replace","isFinite","is","isNaN","POSITIVE_INFINITY","flags","stringAsArray","stringSize","stringLength","printString","paramType","keyPart","variable","setTimeout","createdOptions","createOptions","instance","consono","basicOptions","assign","consonoExit","consonoJSON","out","parse","dir","consonoPlain","consonoReturn"],"mappings":"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"} \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 87d426d..e0567a4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -303,19 +303,19 @@ yarn add consono The default is a function for printing variable. ```javascript -const { consono } = require("consono"); +import { consono } from "consono"; ``` Require multiple items: function, constructor, options object, theme objects. ```javascript -const { +import { Consono, consono, options, THEME_DARK, THEME_LIGHT, -} = require("consono"); +} from "consono"; ``` Import as ECMAScript module. @@ -335,7 +335,7 @@ UNPKG CDN. ## ⚙️ Options ```javascript -const { Consono } = require("consono"); +import { Consono } from "consono"; const options = { clear: true, quotesEnd: `”`, @@ -350,7 +350,7 @@ consono.log("Cleared before output. Different quotes. And cut to 54!"); ``` ```javascript -const { Consono } = require("consono"); +import { Consono } from "consono"; const theme = { argument: [253, 151, 31], boolean: [174, 129, 255], @@ -367,14 +367,14 @@ consono.log("Themed"); ``` ```javascript -const { Consono, options } = require("consono"); +import { Consono, options } from "consono"; options.colorize = false; const consono = new Consono(options); consono.log("Text without colorization"); ``` ```javascript -const { consono } = require("consono"); +import { consono } from "consono"; console.debug( consono("Outputs a message only at the debug log level.", false) ); @@ -390,7 +390,7 @@ consono("This is log function with your own options"); ## 🔖 Log function ```javascript -const { consono } = require("consono"); +import { consono } from "consono"; const map = new Map(); map.add("key", true); consono(map); @@ -453,6 +453,7 @@ consono("Some variable", defaultOptions); ```javascript consonoExit("Some value", null, null, 15); // Exit code - 15 +consonoJSON("Some value"); // No colorization, no description, only printing consonoPlain("Some value"); // No colorization consonoReturn("Some value"); // Return only, no `console.log` ``` diff --git a/docs/manifest.json b/docs/manifest.json index a096340..59778ba 100644 --- a/docs/manifest.json +++ b/docs/manifest.json @@ -48,5 +48,5 @@ "keyword": "npm" }, "short_name": "Consono", - "version": "1.0.201217" + "version": "1.0.210325" } \ No newline at end of file diff --git a/package.json b/package.json index 4ab4f6e..70bc5c0 100644 --- a/package.json +++ b/package.json @@ -14,17 +14,17 @@ }, "description": "The most correct, informative, appealing and configurable variable inspector for JavaScript", "devDependencies": { - "@babel/core": "7.12.10", - "@babel/plugin-proposal-class-properties": "7.12.1", - "@babel/plugin-proposal-private-methods": "7.12.1", - "@babel/preset-env": "7.12.11", - "@rollup/plugin-commonjs": "17.0.0", - "@rollup/plugin-node-resolve": "11.0.1", + "@babel/core": "7.13.10", + "@babel/plugin-proposal-class-properties": "7.13.0", + "@babel/plugin-proposal-private-methods": "7.13.0", + "@babel/preset-env": "7.13.12", + "@rollup/plugin-commonjs": "17.1.0", + "@rollup/plugin-node-resolve": "11.2.0", "babel-core": "7.0.0-bridge.0", "babel-eslint": "10.1.0", - "eslint": "7.17.0", - "eslint-config-prettier": "7.1.0", - "eslint-plugin-prettier": "3.3.0", + "eslint": "7.22.0", + "eslint-config-prettier": "8.1.0", + "eslint-plugin-prettier": "3.3.1", "jest": "26.6.3", "npm-check": "5.9.2", "prettier": "2.2.1", @@ -33,7 +33,7 @@ "remark-preset-lint-consistent": "4.0.0", "remark-preset-lint-markdown-style-guide": "4.0.0", "remark-preset-lint-recommended": "5.0.0", - "rollup": "2.35.1", + "rollup": "2.42.4", "rollup-plugin-auto-external": "2.0.0", "rollup-plugin-babel": "4.4.0", "rollup-plugin-terser": "7.0.2" @@ -105,5 +105,5 @@ }, "type": "module", "types": "./dist/consono.d.ts", - "version": "1.4.10" + "version": "1.4.11" } diff --git a/src/helpers/browser/consonoJSON.js b/src/helpers/browser/consonoJSON.js new file mode 100644 index 0000000..b1bfecd --- /dev/null +++ b/src/helpers/browser/consonoJSON.js @@ -0,0 +1,44 @@ +import Consono from "../../core/browser/consono.js"; +import cliExit from "../../utils/cliExit.js"; +import processExit from "../../utils/processExit.js"; + +/** + * @name consonoJSON + * @description Print variable as JSON without highlighting + * @param {*} variable + * @param {boolean|Object} [options=true] + * @returns {string|undefined} + */ +export default function consonoJSON(variable, options = true) { + let out; + if (variable === undefined) { + out = undefined; + } else { + out = JSON.parse(JSON.stringify(variable), null, 2); + } + const createdOptions = Consono.createOptions({ ...options, colorize: false }); + if (createdOptions.console) { + if (createdOptions.clear) { + cliExit(); + } + if (createdOptions.immediate) { + setTimeout(() => { + if (out === undefined) { + console.dir(undefined); + } else { + console.dir(out); + } + }, 0); + } else { + if (out === undefined) { + console.dir(undefined); + } else { + console.dir(out); + } + } + processExit(createdOptions.exit); + } + if (createdOptions.returns) { + return out; + } +} diff --git a/src/helpers/node/consonoJSON.js b/src/helpers/node/consonoJSON.js new file mode 100644 index 0000000..166175a --- /dev/null +++ b/src/helpers/node/consonoJSON.js @@ -0,0 +1,44 @@ +import Consono from "../../core/browser/consono.js"; +import cliExit from "../../utils/cliExit.js"; +import processExit from "../../utils/processExit.js"; + +/** + * @name consonoJSON + * @description Print variable as JSON without highlighting + * @param {*} variable + * @param {boolean|Object} [options=true] + * @returns {string|undefined} + */ +export default function consonoJSON(variable, options) { + let out; + if (variable === undefined) { + out = undefined; + } else { + out = JSON.parse(JSON.stringify(variable), null, 2); + } + const createdOptions = Consono.createOptions({ ...options, colorize: false }); + if (createdOptions.console) { + if (createdOptions.clear) { + cliExit(); + } + if (createdOptions.immediate) { + setTimeout(() => { + if (out === undefined) { + console.dir(undefined); + } else { + console.dir(out); + } + }, 0); + } else { + if (out === undefined) { + console.dir(undefined); + } else { + console.dir(out); + } + } + processExit(createdOptions.exit); + } + if (createdOptions.returns) { + return out; + } +} diff --git a/src/index.browser.js b/src/index.browser.js index e61c1eb..c3d800a 100644 --- a/src/index.browser.js +++ b/src/index.browser.js @@ -3,8 +3,9 @@ import THEME_DARK from "./const/theme_dark.js"; import THEME_LIGHT from "./const/theme_light.js"; import consono from "./helpers/browser/consono.js"; import consonoExit from "./helpers/browser/consonoExit.js"; +import consonoJSON from "./helpers/browser/consonoJSON.js"; import consonoPlain from "./helpers/browser/consonoPlain.js"; import consonoReturn from "./helpers/browser/consonoReturn.js"; import options from "./const/options_default.js"; -export { Consono, THEME_DARK, THEME_LIGHT, consono, consonoExit, consonoPlain, consonoReturn, options }; +export { Consono, THEME_DARK, THEME_LIGHT, consono, consonoExit, consonoJSON, consonoPlain, consonoReturn, options }; diff --git a/src/index.node.js b/src/index.node.js index f04bde5..54b2bbe 100644 --- a/src/index.node.js +++ b/src/index.node.js @@ -3,8 +3,9 @@ import THEME_DARK from "./const/theme_dark.js"; import THEME_LIGHT from "./const/theme_light.js"; import consono from "./helpers/node/consono.js"; import consonoExit from "./helpers/node/consonoExit.js"; +import consonoJSON from "./helpers/node/consonoJSON.js"; import consonoPlain from "./helpers/node/consonoPlain.js"; import consonoReturn from "./helpers/node/consonoReturn.js"; import options from "./const/options_default.js"; -export { Consono, THEME_DARK, THEME_LIGHT, consono, consonoExit, consonoPlain, consonoReturn, options }; +export { Consono, THEME_DARK, THEME_LIGHT, consono, consonoExit, consonoJSON, consonoPlain, consonoReturn, options };