analogger 1.23.2 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +11 -0
- package/browser/ana-logger.mjs +91 -17
- package/dist/analogger-browser.min.mjs +5 -3
- package/dist/html-to-image-plugin.min.mjs +5 -3
- package/esm/ana-logger.mjs +91 -17
- package/package.json +1 -1
- package/src/ana-logger.cjs +91 -17
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
# [1.24.0](https://github.com/thimpat/analogger/compare/v1.23.3...v1.24.0) (2023-02-27)
|
|
2
|
+
|
|
3
|
+
## [1.23.3](https://github.com/thimpat/analogger/compare/v1.23.2...v1.23.3) (2023-02-19)
|
|
4
|
+
|
|
1
5
|
## [1.23.2](https://github.com/thimpat/analogger/compare/v1.23.1...v1.23.2) (2023-02-18)
|
|
2
6
|
|
|
3
7
|
## [1.23.1](https://github.com/thimpat/analogger/compare/v1.23.0...v1.23.1) (2023-02-18)
|
package/README.md
CHANGED
|
@@ -274,6 +274,7 @@ Display the browser native message box if run from it; otherwise, it displays th
|
|
|
274
274
|
| logToFile | false | string (File path) | _write log to a file if running from Node_ |
|
|
275
275
|
| logToRemote | undefined | string (URL) | _Send log to a remote (more info in the next version)_ |
|
|
276
276
|
| requiredLogLevel | "LOG" | "LOG" / "INFO" / "WARN" / "ERROR" | _Define the log level from which the system can show a log entry_ |
|
|
277
|
+
| enableDate | false | boolean | _Show date + time (instead of time only)_ |
|
|
277
278
|
|
|
278
279
|
<br/>
|
|
279
280
|
|
|
@@ -1126,6 +1127,16 @@ anaLogger.addPlugin("doSomething", doSomething);
|
|
|
1126
1127
|
## Changelog
|
|
1127
1128
|
|
|
1128
1129
|
##### current:
|
|
1130
|
+
* Add an option to show the date and time in logs
|
|
1131
|
+
* Make the alert method display the lid when detected
|
|
1132
|
+
* Keep format when displaying multiple lines for one entry
|
|
1133
|
+
|
|
1134
|
+
|
|
1135
|
+
##### 1.23.2:
|
|
1136
|
+
* Remove the message 'No AnaLogger instance found'
|
|
1137
|
+
|
|
1138
|
+
|
|
1139
|
+
##### 1.23.0:
|
|
1129
1140
|
* Add startLogger method to automatically override the console
|
|
1130
1141
|
|
|
1131
1142
|
|
package/browser/ana-logger.mjs
CHANGED
|
@@ -203,6 +203,8 @@ function isNode()
|
|
|
203
203
|
}
|
|
204
204
|
|
|
205
205
|
const COMMON_METHODS = [
|
|
206
|
+
"alert",
|
|
207
|
+
"assert",
|
|
206
208
|
"keepLogHistory",
|
|
207
209
|
"getLogHistory",
|
|
208
210
|
"truncateMessage",
|
|
@@ -217,6 +219,12 @@ const COMMON_METHODS = [
|
|
|
217
219
|
"rawWarn",
|
|
218
220
|
"rawError",
|
|
219
221
|
"hasSeenLid",
|
|
222
|
+
"addToLogHistory",
|
|
223
|
+
"releaseLogHistory",
|
|
224
|
+
"resetLogHistory",
|
|
225
|
+
"setLogFormat",
|
|
226
|
+
"resetLogFormatter",
|
|
227
|
+
"getRawLogHistory",
|
|
220
228
|
];
|
|
221
229
|
|
|
222
230
|
|
|
@@ -429,7 +437,7 @@ class ____AnaLogger
|
|
|
429
437
|
resetLogger()
|
|
430
438
|
{
|
|
431
439
|
this.options = {};
|
|
432
|
-
this.options.timeLenMax =
|
|
440
|
+
this.options.timeLenMax = 12;
|
|
433
441
|
this.options.contextLenMax = 10;
|
|
434
442
|
this.options.idLenMax = 5;
|
|
435
443
|
this.options.lidLenMax = 6;
|
|
@@ -451,6 +459,7 @@ class ____AnaLogger
|
|
|
451
459
|
this.options.port = undefined;
|
|
452
460
|
this.options.pathname = undefined;
|
|
453
461
|
this.options.binarypathname = undefined;
|
|
462
|
+
this.options.enableDate = undefined;
|
|
454
463
|
}
|
|
455
464
|
|
|
456
465
|
resetOptions()
|
|
@@ -477,6 +486,7 @@ class ____AnaLogger
|
|
|
477
486
|
requiredLogLevel = DEFAULT_LOG_LEVELS.LOG,
|
|
478
487
|
oneConsolePerContext = undefined,
|
|
479
488
|
silent = undefined,
|
|
489
|
+
enableDate = undefined,
|
|
480
490
|
/** Remote - all optional **/
|
|
481
491
|
protocol = undefined,
|
|
482
492
|
host = undefined,
|
|
@@ -509,6 +519,7 @@ class ____AnaLogger
|
|
|
509
519
|
{hideLog: solveSilent},
|
|
510
520
|
{oneConsolePerContext},
|
|
511
521
|
{hideError},
|
|
522
|
+
{enableDate},
|
|
512
523
|
{hideHookMessage},
|
|
513
524
|
{hidePassingTests},
|
|
514
525
|
{logToRemote},
|
|
@@ -620,26 +631,78 @@ class ____AnaLogger
|
|
|
620
631
|
*/
|
|
621
632
|
onBuildLog({contextName, message = "", lid = "", symbol = ""} = {})
|
|
622
633
|
{
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
634
|
+
try
|
|
635
|
+
{
|
|
636
|
+
let strResult = "";
|
|
626
637
|
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
638
|
+
const strs = message.split(/\n/g);
|
|
639
|
+
|
|
640
|
+
for (let i = 0; i < strs.length; ++i)
|
|
641
|
+
{
|
|
642
|
+
let message0 = strs[i];
|
|
643
|
+
|
|
644
|
+
// Time
|
|
645
|
+
const now = new Date();
|
|
646
|
+
let time = ("0" + now.getHours()).slice(-2) + ":" + ("0" + now.getMinutes()).slice(-2) + ":" + ("0" + now.getSeconds()).slice(-2);
|
|
647
|
+
|
|
648
|
+
if (this.options.enableDate)
|
|
649
|
+
{
|
|
650
|
+
let date = now.getFullYear().toString().slice(-2) + "-" + (now.getMonth() + 1).toString().padStart(2, "0") + "-" + now.getDate().toString().padStart(2, "0");
|
|
651
|
+
time = date + " " + time;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
// Display content in columns
|
|
655
|
+
time = this.truncateMessage(time, {fit: this.options.timeLenMax});
|
|
656
|
+
|
|
657
|
+
if (i > 0)
|
|
658
|
+
{
|
|
659
|
+
contextName = "";
|
|
660
|
+
lid = "";
|
|
661
|
+
}
|
|
662
|
+
contextName = this.truncateMessage(contextName, {
|
|
663
|
+
fit : this.options.contextLenMax,
|
|
664
|
+
align: ____AnaLogger.ALIGN.RIGHT
|
|
665
|
+
});
|
|
666
|
+
lid = this.truncateMessage(lid, {fit: this.options.lidLenMax});
|
|
667
|
+
|
|
668
|
+
if (this.options.messageLenMax !== undefined)
|
|
669
|
+
{
|
|
670
|
+
message0 = this.truncateMessage(message0, {fit: this.options.messageLenMax});
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
symbol = this.truncateMessage(symbol, {fit: this.options.symbolLenMax});
|
|
674
|
+
|
|
675
|
+
if (i <= 0)
|
|
676
|
+
{
|
|
677
|
+
strResult += `[${time}] ${contextName}: (${lid}) ${symbol} ${message0}`;
|
|
678
|
+
}
|
|
679
|
+
else
|
|
680
|
+
{
|
|
681
|
+
// If last line empty, don't display it
|
|
682
|
+
if (i < strs.length - 1)
|
|
683
|
+
{
|
|
684
|
+
strResult += "\n";
|
|
685
|
+
strResult += `[${time}] ${contextName} ${lid} ${message0}`;
|
|
686
|
+
}
|
|
687
|
+
else
|
|
688
|
+
{
|
|
689
|
+
if (message0)
|
|
690
|
+
{
|
|
691
|
+
strResult += "\n";
|
|
692
|
+
strResult += `[${time}] ${contextName} ${lid} ${message0}`;
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
}
|
|
634
697
|
|
|
635
|
-
|
|
698
|
+
return strResult;
|
|
699
|
+
}
|
|
700
|
+
catch (e)
|
|
636
701
|
{
|
|
637
|
-
|
|
702
|
+
console.rawError(e.message);
|
|
638
703
|
}
|
|
639
704
|
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
return `[${time}] ${contextName}: (${lid}) ${symbol} ${message}`;
|
|
705
|
+
return "";
|
|
643
706
|
}
|
|
644
707
|
|
|
645
708
|
onErrorForUserTarget(context, ...args)
|
|
@@ -1981,7 +2044,18 @@ class ____AnaLogger
|
|
|
1981
2044
|
return this.log(...args);
|
|
1982
2045
|
}
|
|
1983
2046
|
|
|
1984
|
-
|
|
2047
|
+
let message;
|
|
2048
|
+
if (args && ((args[0] && args[0].hasOwnProperty("lid")) || this.isContextValid(args[0])))
|
|
2049
|
+
{
|
|
2050
|
+
const someContext = this.generateDefaultContext();
|
|
2051
|
+
let context = this.convertToContext(args[0], someContext);
|
|
2052
|
+
|
|
2053
|
+
message = context.lid + ": " + args.slice(1).join(" | ");
|
|
2054
|
+
}
|
|
2055
|
+
else
|
|
2056
|
+
{
|
|
2057
|
+
message = args.join(" | ");
|
|
2058
|
+
}
|
|
1985
2059
|
|
|
1986
2060
|
alert(message);
|
|
1987
2061
|
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
var
|
|
2
|
-
`,J={airplane:"\u2708",anchor:"\u2693",arrow_backward:"\u25C0",arrow_double_up:"\u23EB",arrow_double_down:"\u23EC",arrow_forward:"\u25B6",arrow_lower_right:"\u2198",arrow_lower_left:"\u2199",arrow_right_hook:"\u21AA",arrow_up_down:"\u2195",arrow_upper_left:"\u2196",arrow_upper_right:"\u2197",ballot_box_with_check:"\u2611",biohazard:"\u2623",black_circle:"\u23FA",black_medium_small_square:"\u25FE",black_medium_square:"\u25FC",black_nib:"\u2712",black_small_square:"\u25AA",black_square:"\u23F9",chains:"\u26D3",check:"\u2714",chess_pawn:"\u265F",cloud_and_rain:"\u26C8",clubs:"\u2663",coffee:"\u2615",copyright:"\xA9",cross:"\u274C",diamonds:"\u2666",divisions_ign:"\u2797",double_triangle_right:"\u23ED",double_triangle_left:"\u23EE",email:"\u2709",eject:"\u23CF",exclamation_mark:"\u2757",fast_forward:"\u23E9",female_sign:"\u2640",fist:"\u270A",fuel_pump:"\u26FD",gear:"\u2699",hammer_and_pick:"\u2692",hand:"\u270B",hearts:"\u2665",infinity:"\u267E",information:"\u2139",left_right_arrow:"\u2194",leftwards_arrow_with_hook:"\u21A9",male_sign:"\u2642",minus_sign:"\u2796",no_entry:"\u26D4",partly_sunny:"\u26C5",pencil:"\u270F",phone:"\u260E",plus_sign:"\u2795",question:"\u2754",radioactive:"\u2622",raised_hand:"\u270B",recycle:"\u267B",registered:"\xAE",relaxed:"\u263A",rewind:"\u23EA",scissors:"\u2702",snowman:"\u2603",spades:"\u2660",sparkles:"\u2728",star:"\u2B50",sunny:"\u2600",tent:"\u26FA",trademark:"\u2122",triangle_with_vertical_bar:"\u23EF",umbrella:"\u2614",vertical_bars:"\u23F8",watch:"\u231A",white_frowning_face:"\u2639",white_medium_square:"\u25FB",white_medium_small_square:"\u25FD",white_small_square:"\u25AB",wheelchair:"\u267F",white_circle:"\u26AA",writing_hand:"\u270D"};function
|
|
3
|
-
`),o=[];for(let r=0;r<t.length;++r){let s=t[r];o.push(s)}return o}catch(t){console.rawError(t.message)}return e.message}onDisplayError(...e){try{let t=-1,o=null;for(let r=0;r<e.length;++r){let s=e[r];if(s instanceof Error&&s.stack){t=r,o=this.assistStask(s)||[];break}}if(!o){this.error(...e);return}for(let r=0;r<o.length;++r)e[t]=o[r],this.error(...e)}catch(t){console.rawError(t)}}setLogFormat(e){if(typeof e!="function")return console.error("Invalid parameter for setFormat. It is expecting a function or method."),!1;this.format=e.bind(this)}resetLogFormatter(){this.format=this.originalFormatFunction}setErrorHandler(e){this.errorTargetHandler=e.bind(this)}setErrorHandlerForUserTarget(e){this.errorUserTargetHandler=e.bind(this)}isContextValid(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null?e.hasOwnProperty("contextName")&&e.hasOwnProperty("target"):!1}setDefaultContext(e){this.setContext(H.DEFAULT.contextName,e)}generateDefaultContext(){let e=l(this,A)[H.DEFAULT.contextName]||{};return e=Object.assign({},{lid:"",contextName:H.DEFAULT.contextName,target:_.ALL,symbol:"\u26A1",color:C[1],logLevel:u.LOG},e),e.name=e.contextName,e.id=this.logIndex++,e}generateNewContext(){let e=this.generateDefaultContext();return e.color=C[this.indexColor++%(C.length-3)+2],e.symbol="",e}generateErrorContext(){let e=this.generateDefaultContext();return e.contextName=H.ERROR.contextName,e.name=e.contextName,e.color=C[0],e.symbol="\u274C",e.error=!0,e.logLevel=u.ERROR,e}setContext(e,t={}){t.contextName=e,t.name=e,t=ie(this,K,Se).call(this,t),l(this,A)[e]=t}getContext(e){return l(this,A)[e]}setContexts(e){Object.keys(e).forEach(o=>{let r=e[o]||{};this.setContext(o,r),e[o]=l(this,A)[o]})}getContexts(){return Object.freeze(l(this,A))}setTargets(e={}){let t={};if(Array.isArray(e))try{for(let o=0;o<e.length;++o){let r=e[o];if(typeof r=="string"||r instanceof String)t[r]=r;else if(typeof r=="object"){let s=null;for(let i in r){let a=r[i];if(i=i.trim(),!i){console.error("Invalid target");break}if(typeof a=="string"||a instanceof String){a=a.trim(),s=[i,a];break}if(typeof a=="number")break}s&&(t[s[0]]=s[1])}}}catch(o){console.error({lid:4321},o.message)}else t=e;se(this,x,Object.assign({},t,{..._}))}addTargets(e){let t=l(this,x),o=Object.assign({},t,e);this.setTargets(o)}getTargets(){return Object.freeze(l(this,x))}setActiveTargets(e=null){if(e===null){this.activeTargets=[_.ALL];return}else if(typeof e=="string"||e instanceof String)e=e.split(",");else if(typeof e=="object"||typeof e=="function")return;for(let t=0;t<e.length;++t)e[t]=e[t].trim();this.activeTargets=e}getActiveTarget(){return this.activeTargets}setActiveTarget(e){this.activeTargets=[],this.setActiveTargets(e),this.activeTargets=[this.activeTargets[0]]}setLogLevel(e,t){l(this,R)[e]=t}getLogLevel(e){return l(this,R)[e]}setLogLevels(e){se(this,R,e)}getLogLevels(){return Object.freeze(l(this,R))}isTargetAllowed(e){return!e||!this.activeTargets||!this.activeTargets.length||e===_.ALL||this.activeTargets.includes(_.ALL)?!0:this.activeTargets.includes(e)}setColumns(e,t,o){let r=0;for(let i in t){if(!["contextName","symbol","lid","text"].includes(i))continue;let a=t[i],f=document.createElement("span");f.classList.add("analogger-col",`analogger-col-${i}`,`analogger-col-${r}`),++r,f.textContent=a,e.append(f)}let s=document.createElement("span");s.classList.add("analogger-col","analogger-col-text",`analogger-col-${r}`),s.textContent=o,e.append(s);for(let i=1;i<=3;++i)s=document.createElement("span"),s.classList.add("analogger-col","analogger-col-extra",`analogger-extra-${i}`),e.append(s)}checkOnLoggingToDom(e,t){try{let o=e.onLoggingToDom;return typeof o!="function"?void 0:o.call(this,e,t)}catch{}}addLineToDom(e,t,{context:o,addType:r,message:s,text:i,args:a}){if(this.checkOnLoggingToDom(o,{message:s,text:i,args:a,logCounter:this.logCounter,$view:e,$line:t,addType:r})===!1)return;if(r===V.BOTTOM?e.append(t):e.insertBefore(t,e.firstChild),this.removeDomOldEntries(e)){if(e.getElementsByClassName(fe).length)return;this.showRemovedNotification(o);return}this.scrollDivToBottom(e)}showRemovedNotification(e){e.contextName=xe,e.symbol="\u{1F5D1}",e.color="orange",e.className=fe,clearTimeout(this.timerAddLineToDomID),this.timerAddLineToDomID=setTimeout(()=>{this.timerAddLineToDomID=null,this.writeLogToDom(e,"",{addType:V.TOP,message:"Oldest entries removed"})},500)}writeLogToDom(e,t,{addType:o=V.BOTTOM,message:r="",args:s=null}={}){this.$containers=this.$containers||document.querySelectorAll(this.options.logToDom),t=r||t;for(let i=0;i<this.$containers.length;++i){let a=this.$containers[i],f=a.querySelector("."+de);f||(f=document.createElement("div"),f.classList.add(de),f.append(document.createElement("span")),f.append(document.createElement("span")),f.append(document.createElement("span")),a.append(f));let p=a.querySelector("."+he);p||(p=document.createElement("div"),p.classList.add(he),a.append(p));let d=a.querySelector("."+ue);d||(d=document.createElement("div"),d.classList.add(ue),d.append(document.createElement("span")),d.append(document.createElement("span")),d.append(document.createElement("span")),a.append(d));let g=document.createElement("div");g.classList.add(Ae),e.className&&g.classList.add(e.className),g.style.color=e.color,this.setColumns(g,e,t,s),setTimeout(function(L,G,{addType:Z,context:ee,message:te,text:oe,args:P}){this.addLineToDom(L,G,{addType:Z,context:ee,message:te,text:oe,args:P})}.bind(this,p,g,{addType:o,context:e,message:r,text:t,args:s}),0)}}writeLogToFile(e){try{fs.appendFileSync(this.options.logToFilePath,e+this.EOL)}catch(t){console.rawError("LOG_TO_FILE_FAILURE: ",t.message)}}writeLogToRemote(...e){try{let t=this.generateLogToRemoteUrl(this.options.logToRemoteUrl);if(!t)return null;let o=[...e],r=JSON.stringify(o);fetch(t,{method:"post",body:r,headers:{"Content-Type":"application/json"}}).then(s=>s.json()).catch(()=>null)}catch(t){console.rawError("LOG_TO_REMOTE_FAILURE: ",t.message)}}uploadDataToRemote(e,t=null,o=null){try{if(!this.options.logToRemote)return;let r=this.generateLogToRemoteUrl(this.options.logToRemoteBinaryUrl,{pathname:E.binarypathname});if(!r)return null;let s=e;t&&(s=JSON.stringify({raw:e,context:t})),fetch(r,{method:"post",body:s}).then(i=>i.json()).then(i=>o&&o(i)).catch(i=>i)}catch(r){console.rawError("BINARY_TO_REMOTE_FAILURE: ",r.message)}}stringifyEntry(e){let t;try{t=JSON.stringify(e)}catch{}if(!t)try{t=Ne(e)}catch{}return t}convertEntry(e){try{if(e==null||e==="")return e;if(typeof e=="boolean")return e;if(typeof e=="symbol"||typeof e=="number")return e;if(typeof e=="string"||myVar instanceof e)return e;if(e instanceof Date)return e}catch{}return this.stringifyEntry(e)}convertArgumentsToText(e){let t=[],o,r=e.length;for(let s=0;s<r;++s){let i,a=e[s];i=this.convertEntry(a),t.push(i)}return o=t.join("\u2022"),o}writeToConsole(e,t){let o=[e];this.isBrowser()&&o.push(`color: ${t.color}`);let r=t.contextLevel||u.LOG;r>=u.ERROR?l(this,v).call(this,...o):r>=u.WARN?l(this,N).call(this,...o):r>=u.INFO?l(this,w).call(this,...o):r>=u.LOG?l(this,b).call(this,...o):r>=u.DEBUG&&l(this,X).call(this,...o)}checkPlugins(e,{message:t,text:o,args:r,logCounter:s}){try{if(!Object.keys(c.pluginTable).length)return;let i=!0;for(let a in e){let f=e[a];if(!f)continue;let p=c.pluginTable[a];if(!p||typeof p!="object")continue;let{callback:d,methodName:g,type:L}=p;if(typeof d!="function")continue;d.call(this,e,{message:t,text:o,args:r,logCounter:s,methodName:g,type:L,pluginOptions:f})===!1&&(i=!1)}return i}catch{}}checkOnLogging(e,t){try{let o=e.onLogging;return typeof o!="function"?void 0:o.call(this,e,t)}catch{}}processOutput(e={}){try{let t="";if(this.applySymbolByName(e),!this.isTargetAllowed(e.target)||e.logLevel===u.OFF||this.options.requiredLogLevel>e.logLevel)return;let o=Array.prototype.slice.call(arguments,1);t=this.convertArgumentsToText(o);let r="",s=this.format({...e,message:t});this.keepLog&&this.addToLogHistory({context:e,message:t,text:s}),++this.logCounter;let i;if(i=this.checkOnLogging(e,{message:t,text:s,args:o,logCounter:this.logCounter}),i===!1||(i=this.checkPlugins(e,{message:t,text:s,args:o,logCounter:this.logCounter}),i===!1)||(this.options.logToRemote&&this.writeLogToRemote(e,...o),this.isBrowser()?(e.environnment=c.ENVIRONMENT_TYPE.BROWSER,this.options.logToDom&&this.writeLogToDom(e,s,{message:t,args:o}),r=`%c${s}`):(e.environnment=c.ENVIRONMENT_TYPE.NODE,r=$.getTextFromColor(s,{fg:e.color,bg:e.bgColor,isBold:e.bold,isUnderline:e.underline,isReversed:e.reversed}),this.options.logToFile&&this.writeLogToFile(s)),this.options.hideLog))return;this.writeToConsole(r,e),this.errorTargetHandler(e,o)}catch(t){console.rawError("AnaLogger:",t.message)}}isExtendedOptionsPassed(e){return typeof e!="object"?!1:e.hasOwnProperty("context")||e.hasOwnProperty("target")||e.hasOwnProperty("color")||e.hasOwnProperty("contextName")||e.hasOwnProperty("lid")}extractContextFromInput(e){return(typeof e=="string"||e instanceof String)&&e.toLowerCase().indexOf("lid:")!==0,e}listSymbols(){for(let e in J)console.rawLog(J[e]+` ${e} `)}applySymbolByName(e){try{e.symbol&&J[e.symbol]&&(e.symbol=J[e.symbol])}catch{}}convertToContext(e,t){e=e||t;let o=e;if(e.context&&typeof e.context=="object"){let r=Object.assign({},e);delete r.context,o=Object.assign({},e.context,r)}return o=Object.assign({},t,o),delete o.context,o}log(e,...t){if(e=this.extractContextFromInput(e),!this.isExtendedOptionsPassed(e)){let s=this.generateDefaultContext();this.processOutput.apply(this,[s,e,...t]);return}let o=this.generateDefaultContext(),r=this.convertToContext(e,o);this.processOutput.apply(this,[r,...t])}error(e,...t){if(this.options.hideError)return;if(e=this.extractContextFromInput(e),!this.isExtendedOptionsPassed(e)){let i=this.generateErrorContext();this.processOutput.apply(this,[i,e,...t]);return}let o=this.generateErrorContext(),r=this.convertToContext(e,o),s=Array.prototype.slice.call(arguments,1);this.log(r,...s)}overrideError(){this.options.hideHookMessage||l(this,b).call(this,"AnaLogger: Hook placed on console.error"),l(this,y).error=!0,console.error=this.onDisplayError.bind(this)}attachConsole(){try{return console.rawLog=l(this,b),console.raw=l(this,b),console.rawInfo=l(this,w),console.rawWarn=l(this,N),console.rawError=l(this,v),console.logHistory=this.logHistory,console.logHistory=this.logHistory,Ze.forEach(e=>{console[e]=function(...t){this[e](...t)}.bind(this)}),!0}catch(e){console.error({lid:4321},e.message)}return!1}overrideConsole({log:e=!0,info:t=!0,warn:o=!0,error:r=!1}={}){this.options.hideHookMessage||l(this,b).call(this,"AnaLogger: Hook placed on console.log"),[{log:e},{info:t},{warn:o}].forEach(function(s){let i=Object.keys(s)[0];s[i]&&(l(this,y)[i]=!0,console[i]=this.onDisplayLog.bind(this))}.bind(this)),r&&this.overrideError(),this.attachConsole()}removeOverrideError(){console.error=l(this,v),l(this,y).error=!1}removeOverride({log:e=!0,info:t=!0,warn:o=!0,error:r=!1}={}){e&&(console.log=l(this,b),l(this,y).log=!1),t&&(console.info=l(this,w),l(this,y).info=!1),o&&(console.warn=l(this,N),l(this,y).warn=!1),r&&this.removeOverrideError()}info(...e){return this.log(...e)}warn(...e){return this.log(...e)}table(...e){if(!l(this,y).log){l(this,U).call(this,...e);return}let t=console.log;console.log=l(this,b),l(this,U).call(this,...e),console.log=t}alert(...e){if(!this.isBrowser())return this.log(...e);let t=e.join(" | ");alert(t)}assert(e,t=!0,...o){let r;try{return typeof e=="function"?(r=e(...o),r!==t?(this.error("Asset failed"),!1):(this.options.hidePassingTests||this.log("SUCCESS: Assert passed"),!0)):e!==t?(this.error("Assert failed"),!1):(this.options.hidePassingTests||this.log("SUCCESS: Assert passed"),!0)}catch{this.error("Unexpected error in assert")}return!1}applyAnalogFormatting({activeTarget:e="",override:t=!1}={}){try{let r={STANDARD:null,TEST:{color:"#B18904",symbol:"diamonds"}};return this.setDefaultContext(r.DEFAULT),e&&this.setActiveTarget(e),this.setOptions({silent:!1,hideError:!1,hideHookMessage:!0,lidLenMax:6}),t&&(this.overrideConsole(),this.overrideError()),!0}catch(o){console.error({lid:3249},o.message)}return!1}applyPredefinedFormat(e=z.DEFAULT_FORMAT,{activeTarget:t="",override:o=!1}={}){if(e===z.DEFAULT_FORMAT)return this.applyAnalogFormatting({activeTarget:t,override:o})}static generateInstance(){return new c}static getInstance(e=0){return c.instanceCount?l(c,B)[e]:null}static generateMainInstance(){let e=c.getInstance();return e||new c}static startLogger(){c.generateMainInstance().applyPredefinedFormat(z.DEFAULT_FORMAT,{override:!0})}static stopLogger(){let e=c.generateMainInstance();e.removeOverride(),e.removeOverrideError()}convertToUrl({protocol:e=E.protocol,host:t=E.host,port:o=E.port,pathname:r=E.pathname}={}){let s=new URL("http://localhost");return s.protocol=e,s.host=t,s.port=o,r&&(s.pathname=r),s.toString()}generateLogToRemoteUrl(e=null,{pathname:t=E.pathname}={}){if(typeof e=="string"||e instanceof String)return e;if(!this.isBrowser())return null;let o=this.options.protocol||window.location.protocol+"//",r=this.options.host||window.location.host||E.host,s=this.options.port||E.port;return t=this.options.pathname||t,this.convertToUrl({protocol:o,host:r,port:s,pathname:t})}addPlugin(e,t,o=""){o=o||e,this[e]=t,c.pluginTable[o]={type:ve.LOCAL,methodName:e,callback:t}}addGlobalPlugin(e,t,o){c[e]=t,c.pluginTable[o]={type:ve.GLOBAL,methodName:e,callback:t}}getPluginList(){return Object.keys(c.pluginTable)}validatePlugin(e){return c.pluginTable[e]?!0:(console.warn(`The plugin ${e} is not registered`),!1)}},T=c;B=new WeakMap,A=new WeakMap,x=new WeakMap,R=new WeakMap,b=new WeakMap,w=new WeakMap,N=new WeakMap,v=new WeakMap,X=new WeakMap,U=new WeakMap,y=new WeakMap,K=new WeakSet,Se=function(e){let t=this.generateNewContext(),o=Object.assign({},t,e);return o.color.toLowerCase().indexOf("rgb")>-1?o.color=$.rgbStringToHex(o.color):o.color.indexOf("#")===-1&&(o.color=$.colorNameToHex(o.color)),o},Q=new WeakSet,Ce=function(){try{this.setTargets(_),this.setLogLevels(u),this.setContexts(H)}catch(e){console.error({lid:4321},e.message)}return!1},m(T,B,[]),h(T,"ALIGN",{LEFT:"LEFT",RIGHT:"RIGHT"}),h(T,"ENVIRONMENT_TYPE",{BROWSER:"BROWSER",NODE:"NODE",OTHER:"OTHER"}),h(T,"instanceCount",0),h(T,"pluginTable",{});var et=T,dt=et,ht=T.generateMainInstance();var ut=T;export{ut as AnaLogger,H as DEFAULT_LOG_CONTEXTS,u as DEFAULT_LOG_LEVELS,_ as DEFAULT_LOG_TARGETS,ht as anaLogger,dt as default};
|
|
1
|
+
var Be=Object.defineProperty;var Ue=(n,e,t)=>e in n?Be(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var u=(n,e,t)=>(Ue(n,typeof e!="symbol"?e+"":e,t),t),ne=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)};var l=(n,e,t)=>(ne(n,e,"read from private field"),t?t.call(n):e.get(n)),m=(n,e,t)=>{if(e.has(n))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(n):e.set(n,t)},se=(n,e,t,o)=>(ne(n,e,"write to private field"),o?o.call(n,t):e.set(n,t),t);var ie=(n,e,t)=>(ne(n,e,"access private method"),t);var ge={Foreground:38,Background:48},O="\x1B[1D",pe="\x1B[0m"+O,j={Bold:"\x1B[1m"+O,Underline:"\x1B[4m"+O,Reversed:"\x1B[7m"+O},Ge={Bold:"\x1B[1m"+O,Underline:"\x1B[4m"+O,Reversed:"\x1B[7m"+O},ae={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function Pe(n){return!!ae[n]}var me=(n,e,t)=>n===e&&e===t?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(e/255*5)+Math.round(t/255*5),Le=n=>{let e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;n=n.replace(e,function(o,r,s,i){return r+r+s+s+i+i});let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return t?{red:parseInt(t[1],16),blue:parseInt(t[2],16),green:parseInt(t[3],16)}:{}},Ee=function({red:n,green:e,blue:t}){let o=n<<16|e<<8|t<<0;return"#"+(16777216+o).toString(16).slice(1)},be=function(n){let e=n.matchAll(/\d+/g),t=[];for(let o of e){let r=parseInt(o[0]);if(r>255)return null;t.push(r)}return t.length!==3?null:{red:t[0],green:t[1],blue:t[2]}},je=function(n){let e=be(n);return e&&Ee(e)},q=function(e,t,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?e+(t-e)*6*o:o<1/2?t:o<2/3?e+(t-e)*(2/3-o)*6:e},Te=({hue:n,saturation:e,lightness:t})=>{let o,r,s;if(e===0)o=r=s=t;else{let i=t<.5?t*(1+e):t+e-t*e,a=2*t-i;o=q(a,i,n+1/3),r=q(a,i,n),s=q(a,i,n-1/3)}return{red:Math.round(o*255),blue:Math.round(s*255),green:Math.round(r*255)}},ye=n=>{let e=n.toLowerCase();return typeof ae[e]<"u"?ae[e]:""};function F({red:n,blue:e,green:t},o=!0){if(n===void 0||e===void 0||t===void 0)return"";let r=me(n,e,t);return`\x1B[${o?ge.Foreground:ge.Background};5;`+r+"m "+O}function S(n,e=!0){let{red:t,green:o,blue:r}=Le(n);return F({red:t,green:o,blue:r},e)}function $({hue:n,saturation:e,lightness:t},o){let{red:r,green:s,blue:i}=Te({hue:n,saturation:e,lightness:t});return F({red:r,green:s,blue:i},o)}function le(n,e=!0){try{let t;return n=n||"",n?((typeof n=="string"||n instanceof String)&&(n=n.trim()),Pe(n)?(t=ye(n),S(t,e)):typeof n=="object"&&!!n.red&&!!n.blue&&!!n.green?F(n,e):typeof n=="object"&&!!n.hue&&!!n.saturation&&!!n.lightness?$(n,e):n.startsWith("#")?S(n,e):(n=n.toString(),/^[\da-fA-F]+$/.test(n)?S("#"+n,e):"")):""}catch(t){console.error("TO_ANSI_INVALID_ARGUMENT_ERROR",t.message)}}function Y(n,{fg:e,bg:t,isUnderline:o=!1,isBold:r=!1,isReversed:s=!1}){let i=!1,a="";return e&&(i=!0,a=a+e),t&&(i=!0,a=a+t),o&&(i=!0,a=a+j.Underline),r&&(i=!0,a=a+j.Bold),s&&(i=!0,a=a+j.Reversed),i?a+n+pe:n}function qe(n,{fg:e={},bg:t={},isUnderline:o=!1,isBold:r=!1,isReversed:s=!1}){return e&&(e=F({...e})),t&&(t=F({...t},!1)),Y(n,{fg:e,bg:t,isUnderline:o,isBold:r,isReversed:s})}function $e(n,{fg:e="",bg:t="",isUnderline:o=!1,isBold:r=!1,isReversed:s=!1}){return e&&(e=$({...e})),t&&(t=$({...t},!1)),Y(n,{fg:e,bg:t,isUnderline:o,isBold:r,isReversed:s})}function Ye(n,{fg:e="",bg:t="",isUnderline:o=!1,isBold:r=!1,isReversed:s=!1}){return e&&(e=S(e)),t&&(t=S(t,!1)),Y(n,{fg:e,bg:t,isUnderline:o,isBold:r,isReversed:s})}function We(n,e=null){if(!e)return n;let{fg:t="",bg:o="",isUnderline:r=!1,isBold:s=!1,isReversed:i=!1}=e;return t&&(t=le(t)),o&&(o=le(o,!1)),Y(n,{fg:t,bg:o,isUnderline:r,isBold:s,isReversed:i})}var W={fromRgb:F,fromHexa:S,fromHsl:$,fromColor:le,getTextFromRgb:qe,getTextFromHsl:$e,getTextFromHex:Ye,getTextFromColor:We,colorNameToHex:ye,hslToRgb:Te,hexToRgb:Le,rgbToHex:Ee,rgbToAnsi256:me,rgbStringToRgb:be,rgbStringToHex:je,hue2rgb:q,RESET:pe,FONT_STYLE:j,STYLE:Ge};var Oe={COLOR_TABLE:["#d2466e","#FFA07A","#FF7F50","#FF6347","#FFE4B5","#ADFF2F","#808000","#40E0D0","#1E90FF","#EE82EE","#708090","#DEB887","#FE642E","#210B61","#088A4B","#5E610B","#FA8258","#088A68","#B40431"],SYSTEM:{BROWSER:"BROWSER",NODE:"NODE"}},C=Oe.COLOR_TABLE,k=Oe.SYSTEM,ce=2e3,fe="analogger-removed-notif",de="analogger-header",he="analogger-view",ue="analogger-footer",Ae="to-esm-line",V={TOP:"TOP",BOTTOM:"BOTTOM"},xe="ANALOGGER",z={DEFAULT_FORMAT:"FORMAT1"};var{parse:st,stringify:Ve}=JSON,{keys:it}=Object,ze=String,Je="string";var Re="object",Xe=(n,e)=>e;var we=(n,e,t)=>{let o=ze(e.push(t)-1);return n.set(t,o),o};var ve=(n,e,t)=>{let o=e&&typeof e===Re?(f,p)=>f===""||-1<e.indexOf(f)?p:void 0:e||Xe,r=new Map,s=[],i=[],a=+we(r,s,o.call({"":n},"",n)),c=!a;for(;a<s.length;)c=!0,i[a]=Ve(s[a++],h,t);return"["+i.join(",")+"]";function h(f,p){if(c)return c=!c,p;let L=o.call(this,f,p);switch(typeof L){case Re:if(L===null)return L;case Je:return r.get(L)||we(r,s,L)}return L}};var E={moduleName:"analogger",protocol:"http://",host:"localhost",port:12e3,pathname:"analogger",binarypathname:"uploaded",loopback:"localhost",consoleDomId:"#analogger",logFilename:"./analogger.log"},D={ALL:"ALL",USER:"USER"},g={FATAL:5e3,ERROR:4e3,WARN:3e3,INFO:2e3,LOG:1e3,DEBUG:500,ALL:200,OFF:0,INHERIT:-1},Ne={LOCAL:"local",GLOBAL:"global"},H={DEFAULT:{contextName:"DEFAULT",logLevel:g.LOG,symbol:"check"},LOG:{contextName:"LOG",logLevel:g.LOG,symbol:"check"},DEBUG:{contextName:"DEBUG",logLevel:g.DEBUG},INFO:{contextName:"INFO",logLevel:g.INFO,color:"#B18904",symbol:"diamonds"},WARN:{contextName:"WARN",logLevel:g.WARN,color:C[0],symbol:"cross"},ERROR:{contextName:"ERROR",logLevel:g.ERROR},CRITICAL:{contextName:"CRITICAL",logLevel:g.CRITICAL}},Ke=`
|
|
2
|
+
`,J={airplane:"\u2708",anchor:"\u2693",arrow_backward:"\u25C0",arrow_double_up:"\u23EB",arrow_double_down:"\u23EC",arrow_forward:"\u25B6",arrow_lower_right:"\u2198",arrow_lower_left:"\u2199",arrow_right_hook:"\u21AA",arrow_up_down:"\u2195",arrow_upper_left:"\u2196",arrow_upper_right:"\u2197",ballot_box_with_check:"\u2611",biohazard:"\u2623",black_circle:"\u23FA",black_medium_small_square:"\u25FE",black_medium_square:"\u25FC",black_nib:"\u2712",black_small_square:"\u25AA",black_square:"\u23F9",chains:"\u26D3",check:"\u2714",chess_pawn:"\u265F",cloud_and_rain:"\u26C8",clubs:"\u2663",coffee:"\u2615",copyright:"\xA9",cross:"\u274C",diamonds:"\u2666",divisions_ign:"\u2797",double_triangle_right:"\u23ED",double_triangle_left:"\u23EE",email:"\u2709",eject:"\u23CF",exclamation_mark:"\u2757",fast_forward:"\u23E9",female_sign:"\u2640",fist:"\u270A",fuel_pump:"\u26FD",gear:"\u2699",hammer_and_pick:"\u2692",hand:"\u270B",hearts:"\u2665",infinity:"\u267E",information:"\u2139",left_right_arrow:"\u2194",leftwards_arrow_with_hook:"\u21A9",male_sign:"\u2642",minus_sign:"\u2796",no_entry:"\u26D4",partly_sunny:"\u26C5",pencil:"\u270F",phone:"\u260E",plus_sign:"\u2795",question:"\u2754",radioactive:"\u2622",raised_hand:"\u270B",recycle:"\u267B",registered:"\xAE",relaxed:"\u263A",rewind:"\u23EA",scissors:"\u2702",snowman:"\u2603",spades:"\u2660",sparkles:"\u2728",star:"\u2B50",sunny:"\u2600",tent:"\u26FA",trademark:"\u2122",triangle_with_vertical_bar:"\u23EF",umbrella:"\u2614",vertical_bars:"\u23F8",watch:"\u231A",white_frowning_face:"\u2639",white_medium_square:"\u25FB",white_medium_small_square:"\u25FD",white_small_square:"\u25AB",wheelchair:"\u267F",white_circle:"\u26AA",writing_hand:"\u270D"};function Se(){return typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node<"u"?k.NODE:k.BROWSER}var Qe=Se();function Ze(){return Qe===k.NODE}var et=["alert","assert","keepLogHistory","getLogHistory","truncateMessage","truncateMessage","rawLog","removeOverride","removeOverrideError","overrideConsole","overrideError","table","rawInfo","rawWarn","rawError","hasSeenLid","addToLogHistory","releaseLogHistory","resetLogHistory","setLogFormat","resetLogFormatter","getRawLogHistory"],B,A,x,R,b,w,v,N,X,U,y,K,Fe,Q,Ce,d=class{constructor({name:e="default"}={}){m(this,K);m(this,Q);u(this,"system","");u(this,"instanceId","");u(this,"instanceName","");u(this,"logIndex",0);u(this,"logCounter",0);m(this,A,[]);m(this,x,{});m(this,R,{});u(this,"activeTargets",[]);u(this,"indexColor",0);u(this,"format","");u(this,"keepLog",!1);u(this,"logHistory",[]);u(this,"$containers",null);u(this,"options",{hideHookMessage:!1});m(this,b,console.log);m(this,w,console.info);m(this,v,console.warn);m(this,N,console.error);m(this,X,console.debug);m(this,U,console.table);m(this,y,{log:!1,info:!1,warn:!1,error:!1,debug:!1,table:!1});u(this,"originalFormatFunction");u(this,"removeDomOldEntries",e=>{if(e.childElementCount>ce){let o=Math.ceil(ce/10);for(let r=0;r<o;++r)e.removeChild(e.firstChild);return o}return 0});u(this,"scrollDivToBottom",e=>{let t=e.scrollHeight-(e.clientHeight+e.scrollTop),o=e.clientHeight||e.offsetHeight;t>o/2||(e.scrollTop=e.scrollHeight)});this.system=Se(),this.format=this.onBuildLog.bind(this),this.originalFormatFunction=this.format,this.instanceName=e,this.instanceId=d.instanceCount+"-"+Date.now(),l(d,B)[d.instanceCount]=this,++d.instanceCount,this.errorTargetHandler=this.onError.bind(this),this.errorUserTargetHandler=this.onErrorForUserTarget.bind(this),this.setOptions(this.options),this.rawLog=l(this,b),this.rawInfo=l(this,w),this.rawWarn=l(this,v),this.rawError=l(this,N),this.ALIGN=d.ALIGN,this.ENVIRONMENT_TYPE=d.ENVIRONMENT_TYPE,ie(this,Q,Ce).call(this),this.resetLogHistory()}getName(){return this.instanceName}getId(){return this.instanceId}keepLogHistory(){this.keepLog=!0}releaseLogHistory(){this.keepLog=!1}resetLogHistory(){this.logHistory=[]}addToLogHistory(e){e=e||{},this.logHistory.push(Object.assign({},e))}getLogHistory(e=!0,t=Ke){let o=this.logHistory||[],r=[];return o.forEach(s=>{let{text:i}=s;r.push(i)}),e?r.join(t):r}getRawLogHistory(){return this.logHistory||[]}hasSeenLid(e){this.logHistory=this.logHistory||[];for(let t=0;t<this.logHistory.length;++t){let r=(this.logHistory[t]||{}).context||{};if(e===r.lid)return!0}return!1}forceEnvironment(e){this.forcedSystem=e}isNode(){return this&&this.forcedSystem?this.forcedSystem===k.NODE:Ze()}isBrowser(){return!this.isNode()}resetLogger(){this.options={},this.options.timeLenMax=12,this.options.contextLenMax=10,this.options.idLenMax=5,this.options.lidLenMax=6,this.options.messageLenMax=void 0,this.options.symbolLenMax=60,this.options.hideHookMessage=void 0,this.options.hidePassingTests=void 0,this.options.hideLog=void 0,this.options.hideError=void 0,this.options.oneConsolePerContext=!0,this.options.logToDom=void 0,this.options.logToFile=void 0,this.options.logToRemote=void 0,this.options.logToRemoteUrl=void 0,this.options.logToRemoteBinaryUrl=void 0,this.options.logToDomlogToFile=void 0,this.options.protocol=void 0,this.options.host=void 0,this.options.port=void 0,this.options.pathname=void 0,this.options.binarypathname=void 0,this.options.enableDate=void 0}resetOptions(){this.resetLogger()}setOptions({contextLenMax:e=10,idLenMax:t=5,lidLenMax:o=6,symbolLenMax:r=2,messageLenMax:s=void 0,hideLog:i=void 0,hideError:a=void 0,hideHookMessage:c=void 0,hidePassingTests:h=void 0,logToDom:f=void 0,logToFile:p=void 0,logToRemote:L=void 0,logToRemoteUrl:G=void 0,logToRemoteBinaryUrl:Z=void 0,loopback:ee=E.loopback,requiredLogLevel:te=g.LOG,oneConsolePerContext:oe=void 0,silent:P=void 0,enableDate:De=void 0,protocol:_e=void 0,host:Me=void 0,port:Ie=void 0,pathname:ke=void 0,binarypathname:He=void 0}=null){this.options.contextLenMax=e,this.options.idLenMax=t,this.options.lidLenMax=o,this.options.messageLenMax=s,this.options.symbolLenMax=r,this.options.requiredLogLevel=te;let re;P!==void 0?re=!!P:i!==void 0&&(re=!!i),[{hideLog:re},{oneConsolePerContext:oe},{hideError:a},{enableDate:De},{hideHookMessage:c},{hidePassingTests:h},{logToRemote:L}].forEach(_=>{let M=Object.keys(_)[0],I=_[M];I!==void 0&&(this.options[M]=!!I)}),[{logToRemoteBinaryUrl:Z},{logToRemoteUrl:G},{loopback:ee},{protocol:_e},{host:Me},{port:Ie},{pathname:ke},{binarypathname:He}].forEach(_=>{let M=Object.keys(_)[0],I=_[M];I!==void 0&&(this.options[M]=I)}),this.options.logToRemote&&!this.options.logToRemoteUrl&&(this.options.logToRemoteUrl=this.convertToUrl({protocol:this.options.protocol,host:this.options.host,port:this.options.port,pathname:this.options.pathname})),this.options.logToRemote&&!this.options.logToRemoteBinaryUrl&&(this.options.logToRemoteBinaryUrl=this.convertToUrl({protocol:this.options.protocol,host:this.options.host,port:this.options.port,pathname:this.options.binarypathname||E.binarypathname})),f===!1?this.options.logToDom=!1:f!==void 0&&(this.options.logToDom=f===!0?E.consoleDomId:f),p===!1?this.options.logToFile=!1:p!==void 0&&(this.isBrowser()||(this.options.logToFile=p||E.logFilename),l(this,b).call(this,"LogToFile is not supported in this environment. "))}getOptions(){return this.options}truncateMessage(e="",{fit:t=0,align:o=d.ALIGN.LEFT,ellipsis:r="..."}={}){return e=""+e,t&&e.length>t&&(e=e.substring(0,t-r.length)+r),e=o===d.ALIGN.LEFT?e.padEnd(t," "):e.padStart(t," "),e}onBuildLog({contextName:e,message:t="",lid:o="",symbol:r=""}={}){try{let s="",i=t.split(/\n/g);for(let a=0;a<i.length;++a){let c=i[a],h=new Date,f=("0"+h.getHours()).slice(-2)+":"+("0"+h.getMinutes()).slice(-2)+":"+("0"+h.getSeconds()).slice(-2);this.options.enableDate&&(f=h.getFullYear().toString().slice(-2)+"-"+(h.getMonth()+1).toString().padStart(2,"0")+"-"+h.getDate().toString().padStart(2,"0")+" "+f),f=this.truncateMessage(f,{fit:this.options.timeLenMax}),a>0&&(e="",o=""),e=this.truncateMessage(e,{fit:this.options.contextLenMax,align:d.ALIGN.RIGHT}),o=this.truncateMessage(o,{fit:this.options.lidLenMax}),this.options.messageLenMax!==void 0&&(c=this.truncateMessage(c,{fit:this.options.messageLenMax})),r=this.truncateMessage(r,{fit:this.options.symbolLenMax}),a<=0?s+=`[${f}] ${e}: (${o}) ${r} ${c}`:a<i.length-1?(s+=`
|
|
3
|
+
`,s+=`[${f}] ${e} ${o} ${c}`):c&&(s+=`
|
|
4
|
+
`,s+=`[${f}] ${e} ${o} ${c}`)}return s}catch(s){console.rawError(s.message)}return""}onErrorForUserTarget(e,...t){this.errorUserTargetHandler(e,...t)}onError(e,...t){e.target===l(this,x).USER&&this.onErrorForUserTarget(e,...t)}onDisplayLog(...e){this.log(...e)}assistStask(e){try{let t=e.stack.split(`
|
|
5
|
+
`),o=[];for(let r=0;r<t.length;++r){let s=t[r];o.push(s)}return o}catch(t){console.rawError(t.message)}return e.message}onDisplayError(...e){try{let t=-1,o=null;for(let r=0;r<e.length;++r){let s=e[r];if(s instanceof Error&&s.stack){t=r,o=this.assistStask(s)||[];break}}if(!o){this.error(...e);return}for(let r=0;r<o.length;++r)e[t]=o[r],this.error(...e)}catch(t){console.rawError(t)}}setLogFormat(e){if(typeof e!="function")return console.error("Invalid parameter for setFormat. It is expecting a function or method."),!1;this.format=e.bind(this)}resetLogFormatter(){this.format=this.originalFormatFunction}setErrorHandler(e){this.errorTargetHandler=e.bind(this)}setErrorHandlerForUserTarget(e){this.errorUserTargetHandler=e.bind(this)}isContextValid(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null?e.hasOwnProperty("contextName")&&e.hasOwnProperty("target"):!1}setDefaultContext(e){this.setContext(H.DEFAULT.contextName,e)}generateDefaultContext(){let e=l(this,A)[H.DEFAULT.contextName]||{};return e=Object.assign({},{lid:"",contextName:H.DEFAULT.contextName,target:D.ALL,symbol:"\u26A1",color:C[1],logLevel:g.LOG},e),e.name=e.contextName,e.id=this.logIndex++,e}generateNewContext(){let e=this.generateDefaultContext();return e.color=C[this.indexColor++%(C.length-3)+2],e.symbol="",e}generateErrorContext(){let e=this.generateDefaultContext();return e.contextName=H.ERROR.contextName,e.name=e.contextName,e.color=C[0],e.symbol="\u274C",e.error=!0,e.logLevel=g.ERROR,e}setContext(e,t={}){t.contextName=e,t.name=e,t=ie(this,K,Fe).call(this,t),l(this,A)[e]=t}getContext(e){return l(this,A)[e]}setContexts(e){Object.keys(e).forEach(o=>{let r=e[o]||{};this.setContext(o,r),e[o]=l(this,A)[o]})}getContexts(){return Object.freeze(l(this,A))}setTargets(e={}){let t={};if(Array.isArray(e))try{for(let o=0;o<e.length;++o){let r=e[o];if(typeof r=="string"||r instanceof String)t[r]=r;else if(typeof r=="object"){let s=null;for(let i in r){let a=r[i];if(i=i.trim(),!i){console.error("Invalid target");break}if(typeof a=="string"||a instanceof String){a=a.trim(),s=[i,a];break}if(typeof a=="number")break}s&&(t[s[0]]=s[1])}}}catch(o){console.error({lid:4321},o.message)}else t=e;se(this,x,Object.assign({},t,{...D}))}addTargets(e){let t=l(this,x),o=Object.assign({},t,e);this.setTargets(o)}getTargets(){return Object.freeze(l(this,x))}setActiveTargets(e=null){if(e===null){this.activeTargets=[D.ALL];return}else if(typeof e=="string"||e instanceof String)e=e.split(",");else if(typeof e=="object"||typeof e=="function")return;for(let t=0;t<e.length;++t)e[t]=e[t].trim();this.activeTargets=e}getActiveTarget(){return this.activeTargets}setActiveTarget(e){this.activeTargets=[],this.setActiveTargets(e),this.activeTargets=[this.activeTargets[0]]}setLogLevel(e,t){l(this,R)[e]=t}getLogLevel(e){return l(this,R)[e]}setLogLevels(e){se(this,R,e)}getLogLevels(){return Object.freeze(l(this,R))}isTargetAllowed(e){return!e||!this.activeTargets||!this.activeTargets.length||e===D.ALL||this.activeTargets.includes(D.ALL)?!0:this.activeTargets.includes(e)}setColumns(e,t,o){let r=0;for(let i in t){if(!["contextName","symbol","lid","text"].includes(i))continue;let a=t[i],c=document.createElement("span");c.classList.add("analogger-col",`analogger-col-${i}`,`analogger-col-${r}`),++r,c.textContent=a,e.append(c)}let s=document.createElement("span");s.classList.add("analogger-col","analogger-col-text",`analogger-col-${r}`),s.textContent=o,e.append(s);for(let i=1;i<=3;++i)s=document.createElement("span"),s.classList.add("analogger-col","analogger-col-extra",`analogger-extra-${i}`),e.append(s)}checkOnLoggingToDom(e,t){try{let o=e.onLoggingToDom;return typeof o!="function"?void 0:o.call(this,e,t)}catch{}}addLineToDom(e,t,{context:o,addType:r,message:s,text:i,args:a}){if(this.checkOnLoggingToDom(o,{message:s,text:i,args:a,logCounter:this.logCounter,$view:e,$line:t,addType:r})===!1)return;if(r===V.BOTTOM?e.append(t):e.insertBefore(t,e.firstChild),this.removeDomOldEntries(e)){if(e.getElementsByClassName(fe).length)return;this.showRemovedNotification(o);return}this.scrollDivToBottom(e)}showRemovedNotification(e){e.contextName=xe,e.symbol="\u{1F5D1}",e.color="orange",e.className=fe,clearTimeout(this.timerAddLineToDomID),this.timerAddLineToDomID=setTimeout(()=>{this.timerAddLineToDomID=null,this.writeLogToDom(e,"",{addType:V.TOP,message:"Oldest entries removed"})},500)}writeLogToDom(e,t,{addType:o=V.BOTTOM,message:r="",args:s=null}={}){this.$containers=this.$containers||document.querySelectorAll(this.options.logToDom),t=r||t;for(let i=0;i<this.$containers.length;++i){let a=this.$containers[i],c=a.querySelector("."+de);c||(c=document.createElement("div"),c.classList.add(de),c.append(document.createElement("span")),c.append(document.createElement("span")),c.append(document.createElement("span")),a.append(c));let h=a.querySelector("."+he);h||(h=document.createElement("div"),h.classList.add(he),a.append(h));let f=a.querySelector("."+ue);f||(f=document.createElement("div"),f.classList.add(ue),f.append(document.createElement("span")),f.append(document.createElement("span")),f.append(document.createElement("span")),a.append(f));let p=document.createElement("div");p.classList.add(Ae),e.className&&p.classList.add(e.className),p.style.color=e.color,this.setColumns(p,e,t,s),setTimeout(function(L,G,{addType:Z,context:ee,message:te,text:oe,args:P}){this.addLineToDom(L,G,{addType:Z,context:ee,message:te,text:oe,args:P})}.bind(this,h,p,{addType:o,context:e,message:r,text:t,args:s}),0)}}writeLogToFile(e){try{fs.appendFileSync(this.options.logToFilePath,e+this.EOL)}catch(t){console.rawError("LOG_TO_FILE_FAILURE: ",t.message)}}writeLogToRemote(...e){try{let t=this.generateLogToRemoteUrl(this.options.logToRemoteUrl);if(!t)return null;let o=[...e],r=JSON.stringify(o);fetch(t,{method:"post",body:r,headers:{"Content-Type":"application/json"}}).then(s=>s.json()).catch(()=>null)}catch(t){console.rawError("LOG_TO_REMOTE_FAILURE: ",t.message)}}uploadDataToRemote(e,t=null,o=null){try{if(!this.options.logToRemote)return;let r=this.generateLogToRemoteUrl(this.options.logToRemoteBinaryUrl,{pathname:E.binarypathname});if(!r)return null;let s=e;t&&(s=JSON.stringify({raw:e,context:t})),fetch(r,{method:"post",body:s}).then(i=>i.json()).then(i=>o&&o(i)).catch(i=>i)}catch(r){console.rawError("BINARY_TO_REMOTE_FAILURE: ",r.message)}}stringifyEntry(e){let t;try{t=JSON.stringify(e)}catch{}if(!t)try{t=ve(e)}catch{}return t}convertEntry(e){try{if(e==null||e==="")return e;if(typeof e=="boolean")return e;if(typeof e=="symbol"||typeof e=="number")return e;if(typeof e=="string"||myVar instanceof e)return e;if(e instanceof Date)return e}catch{}return this.stringifyEntry(e)}convertArgumentsToText(e){let t=[],o,r=e.length;for(let s=0;s<r;++s){let i,a=e[s];i=this.convertEntry(a),t.push(i)}return o=t.join("\u2022"),o}writeToConsole(e,t){let o=[e];this.isBrowser()&&o.push(`color: ${t.color}`);let r=t.contextLevel||g.LOG;r>=g.ERROR?l(this,N).call(this,...o):r>=g.WARN?l(this,v).call(this,...o):r>=g.INFO?l(this,w).call(this,...o):r>=g.LOG?l(this,b).call(this,...o):r>=g.DEBUG&&l(this,X).call(this,...o)}checkPlugins(e,{message:t,text:o,args:r,logCounter:s}){try{if(!Object.keys(d.pluginTable).length)return;let i=!0;for(let a in e){let c=e[a];if(!c)continue;let h=d.pluginTable[a];if(!h||typeof h!="object")continue;let{callback:f,methodName:p,type:L}=h;if(typeof f!="function")continue;f.call(this,e,{message:t,text:o,args:r,logCounter:s,methodName:p,type:L,pluginOptions:c})===!1&&(i=!1)}return i}catch{}}checkOnLogging(e,t){try{let o=e.onLogging;return typeof o!="function"?void 0:o.call(this,e,t)}catch{}}processOutput(e={}){try{let t="";if(this.applySymbolByName(e),!this.isTargetAllowed(e.target)||e.logLevel===g.OFF||this.options.requiredLogLevel>e.logLevel)return;let o=Array.prototype.slice.call(arguments,1);t=this.convertArgumentsToText(o);let r="",s=this.format({...e,message:t});this.keepLog&&this.addToLogHistory({context:e,message:t,text:s}),++this.logCounter;let i;if(i=this.checkOnLogging(e,{message:t,text:s,args:o,logCounter:this.logCounter}),i===!1||(i=this.checkPlugins(e,{message:t,text:s,args:o,logCounter:this.logCounter}),i===!1)||(this.options.logToRemote&&this.writeLogToRemote(e,...o),this.isBrowser()?(e.environnment=d.ENVIRONMENT_TYPE.BROWSER,this.options.logToDom&&this.writeLogToDom(e,s,{message:t,args:o}),r=`%c${s}`):(e.environnment=d.ENVIRONMENT_TYPE.NODE,r=W.getTextFromColor(s,{fg:e.color,bg:e.bgColor,isBold:e.bold,isUnderline:e.underline,isReversed:e.reversed}),this.options.logToFile&&this.writeLogToFile(s)),this.options.hideLog))return;this.writeToConsole(r,e),this.errorTargetHandler(e,o)}catch(t){console.rawError("AnaLogger:",t.message)}}isExtendedOptionsPassed(e){return typeof e!="object"?!1:e.hasOwnProperty("context")||e.hasOwnProperty("target")||e.hasOwnProperty("color")||e.hasOwnProperty("contextName")||e.hasOwnProperty("lid")}extractContextFromInput(e){return(typeof e=="string"||e instanceof String)&&e.toLowerCase().indexOf("lid:")!==0,e}listSymbols(){for(let e in J)console.rawLog(J[e]+` ${e} `)}applySymbolByName(e){try{e.symbol&&J[e.symbol]&&(e.symbol=J[e.symbol])}catch{}}convertToContext(e,t){e=e||t;let o=e;if(e.context&&typeof e.context=="object"){let r=Object.assign({},e);delete r.context,o=Object.assign({},e.context,r)}return o=Object.assign({},t,o),delete o.context,o}log(e,...t){if(e=this.extractContextFromInput(e),!this.isExtendedOptionsPassed(e)){let s=this.generateDefaultContext();this.processOutput.apply(this,[s,e,...t]);return}let o=this.generateDefaultContext(),r=this.convertToContext(e,o);this.processOutput.apply(this,[r,...t])}error(e,...t){if(this.options.hideError)return;if(e=this.extractContextFromInput(e),!this.isExtendedOptionsPassed(e)){let i=this.generateErrorContext();this.processOutput.apply(this,[i,e,...t]);return}let o=this.generateErrorContext(),r=this.convertToContext(e,o),s=Array.prototype.slice.call(arguments,1);this.log(r,...s)}overrideError(){this.options.hideHookMessage||l(this,b).call(this,"AnaLogger: Hook placed on console.error"),l(this,y).error=!0,console.error=this.onDisplayError.bind(this)}attachConsole(){try{return console.rawLog=l(this,b),console.raw=l(this,b),console.rawInfo=l(this,w),console.rawWarn=l(this,v),console.rawError=l(this,N),console.logHistory=this.logHistory,console.logHistory=this.logHistory,et.forEach(e=>{console[e]=function(...t){this[e](...t)}.bind(this)}),!0}catch(e){console.error({lid:4321},e.message)}return!1}overrideConsole({log:e=!0,info:t=!0,warn:o=!0,error:r=!1}={}){this.options.hideHookMessage||l(this,b).call(this,"AnaLogger: Hook placed on console.log"),[{log:e},{info:t},{warn:o}].forEach(function(s){let i=Object.keys(s)[0];s[i]&&(l(this,y)[i]=!0,console[i]=this.onDisplayLog.bind(this))}.bind(this)),r&&this.overrideError(),this.attachConsole()}removeOverrideError(){console.error=l(this,N),l(this,y).error=!1}removeOverride({log:e=!0,info:t=!0,warn:o=!0,error:r=!1}={}){e&&(console.log=l(this,b),l(this,y).log=!1),t&&(console.info=l(this,w),l(this,y).info=!1),o&&(console.warn=l(this,v),l(this,y).warn=!1),r&&this.removeOverrideError()}info(...e){return this.log(...e)}warn(...e){return this.log(...e)}table(...e){if(!l(this,y).log){l(this,U).call(this,...e);return}let t=console.log;console.log=l(this,b),l(this,U).call(this,...e),console.log=t}alert(...e){if(!this.isBrowser())return this.log(...e);let t;if(e&&(e[0]&&e[0].hasOwnProperty("lid")||this.isContextValid(e[0]))){let o=this.generateDefaultContext();t=this.convertToContext(e[0],o).lid+": "+e.slice(1).join(" | ")}else t=e.join(" | ");alert(t)}assert(e,t=!0,...o){let r;try{return typeof e=="function"?(r=e(...o),r!==t?(this.error("Asset failed"),!1):(this.options.hidePassingTests||this.log("SUCCESS: Assert passed"),!0)):e!==t?(this.error("Assert failed"),!1):(this.options.hidePassingTests||this.log("SUCCESS: Assert passed"),!0)}catch{this.error("Unexpected error in assert")}return!1}applyAnalogFormatting({activeTarget:e="",override:t=!1}={}){try{let r={STANDARD:null,TEST:{color:"#B18904",symbol:"diamonds"}};return this.setDefaultContext(r.DEFAULT),e&&this.setActiveTarget(e),this.setOptions({silent:!1,hideError:!1,hideHookMessage:!0,lidLenMax:6}),t&&(this.overrideConsole(),this.overrideError()),!0}catch(o){console.error({lid:3249},o.message)}return!1}applyPredefinedFormat(e=z.DEFAULT_FORMAT,{activeTarget:t="",override:o=!1}={}){if(e===z.DEFAULT_FORMAT)return this.applyAnalogFormatting({activeTarget:t,override:o})}static generateInstance(){return new d}static getInstance(e=0){return d.instanceCount?l(d,B)[e]:null}static generateMainInstance(){let e=d.getInstance();return e||new d}static startLogger(){d.generateMainInstance().applyPredefinedFormat(z.DEFAULT_FORMAT,{override:!0})}static stopLogger(){let e=d.generateMainInstance();e.removeOverride(),e.removeOverrideError()}convertToUrl({protocol:e=E.protocol,host:t=E.host,port:o=E.port,pathname:r=E.pathname}={}){let s=new URL("http://localhost");return s.protocol=e,s.host=t,s.port=o,r&&(s.pathname=r),s.toString()}generateLogToRemoteUrl(e=null,{pathname:t=E.pathname}={}){if(typeof e=="string"||e instanceof String)return e;if(!this.isBrowser())return null;let o=this.options.protocol||window.location.protocol+"//",r=this.options.host||window.location.host||E.host,s=this.options.port||E.port;return t=this.options.pathname||t,this.convertToUrl({protocol:o,host:r,port:s,pathname:t})}addPlugin(e,t,o=""){o=o||e,this[e]=t,d.pluginTable[o]={type:Ne.LOCAL,methodName:e,callback:t}}addGlobalPlugin(e,t,o){d[e]=t,d.pluginTable[o]={type:Ne.GLOBAL,methodName:e,callback:t}}getPluginList(){return Object.keys(d.pluginTable)}validatePlugin(e){return d.pluginTable[e]?!0:(console.warn(`The plugin ${e} is not registered`),!1)}},T=d;B=new WeakMap,A=new WeakMap,x=new WeakMap,R=new WeakMap,b=new WeakMap,w=new WeakMap,v=new WeakMap,N=new WeakMap,X=new WeakMap,U=new WeakMap,y=new WeakMap,K=new WeakSet,Fe=function(e){let t=this.generateNewContext(),o=Object.assign({},t,e);return o.color.toLowerCase().indexOf("rgb")>-1?o.color=W.rgbStringToHex(o.color):o.color.indexOf("#")===-1&&(o.color=W.colorNameToHex(o.color)),o},Q=new WeakSet,Ce=function(){try{this.setTargets(D),this.setLogLevels(g),this.setContexts(H)}catch(e){console.error({lid:4321},e.message)}return!1},m(T,B,[]),u(T,"ALIGN",{LEFT:"LEFT",RIGHT:"RIGHT"}),u(T,"ENVIRONMENT_TYPE",{BROWSER:"BROWSER",NODE:"NODE",OTHER:"OTHER"}),u(T,"instanceCount",0),u(T,"pluginTable",{});var tt=T,ht=tt,ut=T.generateMainInstance();var gt=T;export{gt as AnaLogger,H as DEFAULT_LOG_CONTEXTS,g as DEFAULT_LOG_LEVELS,D as DEFAULT_LOG_TARGETS,ut as anaLogger,ht as default};
|
|
4
6
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
var
|
|
2
|
-
`,J={airplane:"\u2708",anchor:"\u2693",arrow_backward:"\u25C0",arrow_double_up:"\u23EB",arrow_double_down:"\u23EC",arrow_forward:"\u25B6",arrow_lower_right:"\u2198",arrow_lower_left:"\u2199",arrow_right_hook:"\u21AA",arrow_up_down:"\u2195",arrow_upper_left:"\u2196",arrow_upper_right:"\u2197",ballot_box_with_check:"\u2611",biohazard:"\u2623",black_circle:"\u23FA",black_medium_small_square:"\u25FE",black_medium_square:"\u25FC",black_nib:"\u2712",black_small_square:"\u25AA",black_square:"\u23F9",chains:"\u26D3",check:"\u2714",chess_pawn:"\u265F",cloud_and_rain:"\u26C8",clubs:"\u2663",coffee:"\u2615",copyright:"\xA9",cross:"\u274C",diamonds:"\u2666",divisions_ign:"\u2797",double_triangle_right:"\u23ED",double_triangle_left:"\u23EE",email:"\u2709",eject:"\u23CF",exclamation_mark:"\u2757",fast_forward:"\u23E9",female_sign:"\u2640",fist:"\u270A",fuel_pump:"\u26FD",gear:"\u2699",hammer_and_pick:"\u2692",hand:"\u270B",hearts:"\u2665",infinity:"\u267E",information:"\u2139",left_right_arrow:"\u2194",leftwards_arrow_with_hook:"\u21A9",male_sign:"\u2642",minus_sign:"\u2796",no_entry:"\u26D4",partly_sunny:"\u26C5",pencil:"\u270F",phone:"\u260E",plus_sign:"\u2795",question:"\u2754",radioactive:"\u2622",raised_hand:"\u270B",recycle:"\u267B",registered:"\xAE",relaxed:"\u263A",rewind:"\u23EA",scissors:"\u2702",snowman:"\u2603",spades:"\u2660",sparkles:"\u2728",star:"\u2B50",sunny:"\u2600",tent:"\u26FA",trademark:"\u2122",triangle_with_vertical_bar:"\u23EF",umbrella:"\u2614",vertical_bars:"\u23F8",watch:"\u231A",white_frowning_face:"\u2639",white_medium_square:"\u25FB",white_medium_small_square:"\u25FD",white_small_square:"\u25AB",wheelchair:"\u267F",white_circle:"\u26AA",writing_hand:"\u270D"};function
|
|
3
|
-
`),o=[];for(let r=0;r<t.length;++r){let s=t[r];o.push(s)}return o}catch(t){console.rawError(t.message)}return e.message}onDisplayError(...e){try{let t=-1,o=null;for(let r=0;r<e.length;++r){let s=e[r];if(s instanceof Error&&s.stack){t=r,o=this.assistStask(s)||[];break}}if(!o){this.error(...e);return}for(let r=0;r<o.length;++r)e[t]=o[r],this.error(...e)}catch(t){console.rawError(t)}}setLogFormat(e){if(typeof e!="function")return console.error("Invalid parameter for setFormat. It is expecting a function or method."),!1;this.format=e.bind(this)}resetLogFormatter(){this.format=this.originalFormatFunction}setErrorHandler(e){this.errorTargetHandler=e.bind(this)}setErrorHandlerForUserTarget(e){this.errorUserTargetHandler=e.bind(this)}isContextValid(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null?e.hasOwnProperty("contextName")&&e.hasOwnProperty("target"):!1}setDefaultContext(e){this.setContext(H.DEFAULT.contextName,e)}generateDefaultContext(){let e=l(this,A)[H.DEFAULT.contextName]||{};return e=Object.assign({},{lid:"",contextName:H.DEFAULT.contextName,target:_.ALL,symbol:"\u26A1",color:C[1],logLevel:u.LOG},e),e.name=e.contextName,e.id=this.logIndex++,e}generateNewContext(){let e=this.generateDefaultContext();return e.color=C[this.indexColor++%(C.length-3)+2],e.symbol="",e}generateErrorContext(){let e=this.generateDefaultContext();return e.contextName=H.ERROR.contextName,e.name=e.contextName,e.color=C[0],e.symbol="\u274C",e.error=!0,e.logLevel=u.ERROR,e}setContext(e,t={}){t.contextName=e,t.name=e,t=ie(this,K,Se).call(this,t),l(this,A)[e]=t}getContext(e){return l(this,A)[e]}setContexts(e){Object.keys(e).forEach(o=>{let r=e[o]||{};this.setContext(o,r),e[o]=l(this,A)[o]})}getContexts(){return Object.freeze(l(this,A))}setTargets(e={}){let t={};if(Array.isArray(e))try{for(let o=0;o<e.length;++o){let r=e[o];if(typeof r=="string"||r instanceof String)t[r]=r;else if(typeof r=="object"){let s=null;for(let i in r){let a=r[i];if(i=i.trim(),!i){console.error("Invalid target");break}if(typeof a=="string"||a instanceof String){a=a.trim(),s=[i,a];break}if(typeof a=="number")break}s&&(t[s[0]]=s[1])}}}catch(o){console.error({lid:4321},o.message)}else t=e;se(this,x,Object.assign({},t,{..._}))}addTargets(e){let t=l(this,x),o=Object.assign({},t,e);this.setTargets(o)}getTargets(){return Object.freeze(l(this,x))}setActiveTargets(e=null){if(e===null){this.activeTargets=[_.ALL];return}else if(typeof e=="string"||e instanceof String)e=e.split(",");else if(typeof e=="object"||typeof e=="function")return;for(let t=0;t<e.length;++t)e[t]=e[t].trim();this.activeTargets=e}getActiveTarget(){return this.activeTargets}setActiveTarget(e){this.activeTargets=[],this.setActiveTargets(e),this.activeTargets=[this.activeTargets[0]]}setLogLevel(e,t){l(this,R)[e]=t}getLogLevel(e){return l(this,R)[e]}setLogLevels(e){se(this,R,e)}getLogLevels(){return Object.freeze(l(this,R))}isTargetAllowed(e){return!e||!this.activeTargets||!this.activeTargets.length||e===_.ALL||this.activeTargets.includes(_.ALL)?!0:this.activeTargets.includes(e)}setColumns(e,t,o){let r=0;for(let i in t){if(!["contextName","symbol","lid","text"].includes(i))continue;let a=t[i],f=document.createElement("span");f.classList.add("analogger-col",`analogger-col-${i}`,`analogger-col-${r}`),++r,f.textContent=a,e.append(f)}let s=document.createElement("span");s.classList.add("analogger-col","analogger-col-text",`analogger-col-${r}`),s.textContent=o,e.append(s);for(let i=1;i<=3;++i)s=document.createElement("span"),s.classList.add("analogger-col","analogger-col-extra",`analogger-extra-${i}`),e.append(s)}checkOnLoggingToDom(e,t){try{let o=e.onLoggingToDom;return typeof o!="function"?void 0:o.call(this,e,t)}catch{}}addLineToDom(e,t,{context:o,addType:r,message:s,text:i,args:a}){if(this.checkOnLoggingToDom(o,{message:s,text:i,args:a,logCounter:this.logCounter,$view:e,$line:t,addType:r})===!1)return;if(r===V.BOTTOM?e.append(t):e.insertBefore(t,e.firstChild),this.removeDomOldEntries(e)){if(e.getElementsByClassName(fe).length)return;this.showRemovedNotification(o);return}this.scrollDivToBottom(e)}showRemovedNotification(e){e.contextName=xe,e.symbol="\u{1F5D1}",e.color="orange",e.className=fe,clearTimeout(this.timerAddLineToDomID),this.timerAddLineToDomID=setTimeout(()=>{this.timerAddLineToDomID=null,this.writeLogToDom(e,"",{addType:V.TOP,message:"Oldest entries removed"})},500)}writeLogToDom(e,t,{addType:o=V.BOTTOM,message:r="",args:s=null}={}){this.$containers=this.$containers||document.querySelectorAll(this.options.logToDom),t=r||t;for(let i=0;i<this.$containers.length;++i){let a=this.$containers[i],f=a.querySelector("."+de);f||(f=document.createElement("div"),f.classList.add(de),f.append(document.createElement("span")),f.append(document.createElement("span")),f.append(document.createElement("span")),a.append(f));let p=a.querySelector("."+he);p||(p=document.createElement("div"),p.classList.add(he),a.append(p));let d=a.querySelector("."+ue);d||(d=document.createElement("div"),d.classList.add(ue),d.append(document.createElement("span")),d.append(document.createElement("span")),d.append(document.createElement("span")),a.append(d));let g=document.createElement("div");g.classList.add(Ae),e.className&&g.classList.add(e.className),g.style.color=e.color,this.setColumns(g,e,t,s),setTimeout(function(L,G,{addType:Z,context:ee,message:te,text:oe,args:P}){this.addLineToDom(L,G,{addType:Z,context:ee,message:te,text:oe,args:P})}.bind(this,p,g,{addType:o,context:e,message:r,text:t,args:s}),0)}}writeLogToFile(e){try{fs.appendFileSync(this.options.logToFilePath,e+this.EOL)}catch(t){console.rawError("LOG_TO_FILE_FAILURE: ",t.message)}}writeLogToRemote(...e){try{let t=this.generateLogToRemoteUrl(this.options.logToRemoteUrl);if(!t)return null;let o=[...e],r=JSON.stringify(o);fetch(t,{method:"post",body:r,headers:{"Content-Type":"application/json"}}).then(s=>s.json()).catch(()=>null)}catch(t){console.rawError("LOG_TO_REMOTE_FAILURE: ",t.message)}}uploadDataToRemote(e,t=null,o=null){try{if(!this.options.logToRemote)return;let r=this.generateLogToRemoteUrl(this.options.logToRemoteBinaryUrl,{pathname:E.binarypathname});if(!r)return null;let s=e;t&&(s=JSON.stringify({raw:e,context:t})),fetch(r,{method:"post",body:s}).then(i=>i.json()).then(i=>o&&o(i)).catch(i=>i)}catch(r){console.rawError("BINARY_TO_REMOTE_FAILURE: ",r.message)}}stringifyEntry(e){let t;try{t=JSON.stringify(e)}catch{}if(!t)try{t=Ne(e)}catch{}return t}convertEntry(e){try{if(e==null||e==="")return e;if(typeof e=="boolean")return e;if(typeof e=="symbol"||typeof e=="number")return e;if(typeof e=="string"||myVar instanceof e)return e;if(e instanceof Date)return e}catch{}return this.stringifyEntry(e)}convertArgumentsToText(e){let t=[],o,r=e.length;for(let s=0;s<r;++s){let i,a=e[s];i=this.convertEntry(a),t.push(i)}return o=t.join("\u2022"),o}writeToConsole(e,t){let o=[e];this.isBrowser()&&o.push(`color: ${t.color}`);let r=t.contextLevel||u.LOG;r>=u.ERROR?l(this,v).call(this,...o):r>=u.WARN?l(this,N).call(this,...o):r>=u.INFO?l(this,w).call(this,...o):r>=u.LOG?l(this,b).call(this,...o):r>=u.DEBUG&&l(this,X).call(this,...o)}checkPlugins(e,{message:t,text:o,args:r,logCounter:s}){try{if(!Object.keys(c.pluginTable).length)return;let i=!0;for(let a in e){let f=e[a];if(!f)continue;let p=c.pluginTable[a];if(!p||typeof p!="object")continue;let{callback:d,methodName:g,type:L}=p;if(typeof d!="function")continue;d.call(this,e,{message:t,text:o,args:r,logCounter:s,methodName:g,type:L,pluginOptions:f})===!1&&(i=!1)}return i}catch{}}checkOnLogging(e,t){try{let o=e.onLogging;return typeof o!="function"?void 0:o.call(this,e,t)}catch{}}processOutput(e={}){try{let t="";if(this.applySymbolByName(e),!this.isTargetAllowed(e.target)||e.logLevel===u.OFF||this.options.requiredLogLevel>e.logLevel)return;let o=Array.prototype.slice.call(arguments,1);t=this.convertArgumentsToText(o);let r="",s=this.format({...e,message:t});this.keepLog&&this.addToLogHistory({context:e,message:t,text:s}),++this.logCounter;let i;if(i=this.checkOnLogging(e,{message:t,text:s,args:o,logCounter:this.logCounter}),i===!1||(i=this.checkPlugins(e,{message:t,text:s,args:o,logCounter:this.logCounter}),i===!1)||(this.options.logToRemote&&this.writeLogToRemote(e,...o),this.isBrowser()?(e.environnment=c.ENVIRONMENT_TYPE.BROWSER,this.options.logToDom&&this.writeLogToDom(e,s,{message:t,args:o}),r=`%c${s}`):(e.environnment=c.ENVIRONMENT_TYPE.NODE,r=$.getTextFromColor(s,{fg:e.color,bg:e.bgColor,isBold:e.bold,isUnderline:e.underline,isReversed:e.reversed}),this.options.logToFile&&this.writeLogToFile(s)),this.options.hideLog))return;this.writeToConsole(r,e),this.errorTargetHandler(e,o)}catch(t){console.rawError("AnaLogger:",t.message)}}isExtendedOptionsPassed(e){return typeof e!="object"?!1:e.hasOwnProperty("context")||e.hasOwnProperty("target")||e.hasOwnProperty("color")||e.hasOwnProperty("contextName")||e.hasOwnProperty("lid")}extractContextFromInput(e){return(typeof e=="string"||e instanceof String)&&e.toLowerCase().indexOf("lid:")!==0,e}listSymbols(){for(let e in J)console.rawLog(J[e]+` ${e} `)}applySymbolByName(e){try{e.symbol&&J[e.symbol]&&(e.symbol=J[e.symbol])}catch{}}convertToContext(e,t){e=e||t;let o=e;if(e.context&&typeof e.context=="object"){let r=Object.assign({},e);delete r.context,o=Object.assign({},e.context,r)}return o=Object.assign({},t,o),delete o.context,o}log(e,...t){if(e=this.extractContextFromInput(e),!this.isExtendedOptionsPassed(e)){let s=this.generateDefaultContext();this.processOutput.apply(this,[s,e,...t]);return}let o=this.generateDefaultContext(),r=this.convertToContext(e,o);this.processOutput.apply(this,[r,...t])}error(e,...t){if(this.options.hideError)return;if(e=this.extractContextFromInput(e),!this.isExtendedOptionsPassed(e)){let i=this.generateErrorContext();this.processOutput.apply(this,[i,e,...t]);return}let o=this.generateErrorContext(),r=this.convertToContext(e,o),s=Array.prototype.slice.call(arguments,1);this.log(r,...s)}overrideError(){this.options.hideHookMessage||l(this,b).call(this,"AnaLogger: Hook placed on console.error"),l(this,y).error=!0,console.error=this.onDisplayError.bind(this)}attachConsole(){try{return console.rawLog=l(this,b),console.raw=l(this,b),console.rawInfo=l(this,w),console.rawWarn=l(this,N),console.rawError=l(this,v),console.logHistory=this.logHistory,console.logHistory=this.logHistory,Ze.forEach(e=>{console[e]=function(...t){this[e](...t)}.bind(this)}),!0}catch(e){console.error({lid:4321},e.message)}return!1}overrideConsole({log:e=!0,info:t=!0,warn:o=!0,error:r=!1}={}){this.options.hideHookMessage||l(this,b).call(this,"AnaLogger: Hook placed on console.log"),[{log:e},{info:t},{warn:o}].forEach(function(s){let i=Object.keys(s)[0];s[i]&&(l(this,y)[i]=!0,console[i]=this.onDisplayLog.bind(this))}.bind(this)),r&&this.overrideError(),this.attachConsole()}removeOverrideError(){console.error=l(this,v),l(this,y).error=!1}removeOverride({log:e=!0,info:t=!0,warn:o=!0,error:r=!1}={}){e&&(console.log=l(this,b),l(this,y).log=!1),t&&(console.info=l(this,w),l(this,y).info=!1),o&&(console.warn=l(this,N),l(this,y).warn=!1),r&&this.removeOverrideError()}info(...e){return this.log(...e)}warn(...e){return this.log(...e)}table(...e){if(!l(this,y).log){l(this,U).call(this,...e);return}let t=console.log;console.log=l(this,b),l(this,U).call(this,...e),console.log=t}alert(...e){if(!this.isBrowser())return this.log(...e);let t=e.join(" | ");alert(t)}assert(e,t=!0,...o){let r;try{return typeof e=="function"?(r=e(...o),r!==t?(this.error("Asset failed"),!1):(this.options.hidePassingTests||this.log("SUCCESS: Assert passed"),!0)):e!==t?(this.error("Assert failed"),!1):(this.options.hidePassingTests||this.log("SUCCESS: Assert passed"),!0)}catch{this.error("Unexpected error in assert")}return!1}applyAnalogFormatting({activeTarget:e="",override:t=!1}={}){try{let r={STANDARD:null,TEST:{color:"#B18904",symbol:"diamonds"}};return this.setDefaultContext(r.DEFAULT),e&&this.setActiveTarget(e),this.setOptions({silent:!1,hideError:!1,hideHookMessage:!0,lidLenMax:6}),t&&(this.overrideConsole(),this.overrideError()),!0}catch(o){console.error({lid:3249},o.message)}return!1}applyPredefinedFormat(e=z.DEFAULT_FORMAT,{activeTarget:t="",override:o=!1}={}){if(e===z.DEFAULT_FORMAT)return this.applyAnalogFormatting({activeTarget:t,override:o})}static generateInstance(){return new c}static getInstance(e=0){return c.instanceCount?l(c,B)[e]:null}static generateMainInstance(){let e=c.getInstance();return e||new c}static startLogger(){c.generateMainInstance().applyPredefinedFormat(z.DEFAULT_FORMAT,{override:!0})}static stopLogger(){let e=c.generateMainInstance();e.removeOverride(),e.removeOverrideError()}convertToUrl({protocol:e=E.protocol,host:t=E.host,port:o=E.port,pathname:r=E.pathname}={}){let s=new URL("http://localhost");return s.protocol=e,s.host=t,s.port=o,r&&(s.pathname=r),s.toString()}generateLogToRemoteUrl(e=null,{pathname:t=E.pathname}={}){if(typeof e=="string"||e instanceof String)return e;if(!this.isBrowser())return null;let o=this.options.protocol||window.location.protocol+"//",r=this.options.host||window.location.host||E.host,s=this.options.port||E.port;return t=this.options.pathname||t,this.convertToUrl({protocol:o,host:r,port:s,pathname:t})}addPlugin(e,t,o=""){o=o||e,this[e]=t,c.pluginTable[o]={type:ve.LOCAL,methodName:e,callback:t}}addGlobalPlugin(e,t,o){c[e]=t,c.pluginTable[o]={type:ve.GLOBAL,methodName:e,callback:t}}getPluginList(){return Object.keys(c.pluginTable)}validatePlugin(e){return c.pluginTable[e]?!0:(console.warn(`The plugin ${e} is not registered`),!1)}},T=c;B=new WeakMap,A=new WeakMap,x=new WeakMap,R=new WeakMap,b=new WeakMap,w=new WeakMap,N=new WeakMap,v=new WeakMap,X=new WeakMap,U=new WeakMap,y=new WeakMap,K=new WeakSet,Se=function(e){let t=this.generateNewContext(),o=Object.assign({},t,e);return o.color.toLowerCase().indexOf("rgb")>-1?o.color=$.rgbStringToHex(o.color):o.color.indexOf("#")===-1&&(o.color=$.colorNameToHex(o.color)),o},Q=new WeakSet,Ce=function(){try{this.setTargets(_),this.setLogLevels(u),this.setContexts(H)}catch(e){console.error({lid:4321},e.message)}return!1},m(T,B,[]),h(T,"ALIGN",{LEFT:"LEFT",RIGHT:"RIGHT"}),h(T,"ENVIRONMENT_TYPE",{BROWSER:"BROWSER",NODE:"NODE",OTHER:"OTHER"}),h(T,"instanceCount",0),h(T,"pluginTable",{});var et=T,dt=et,ht=T.generateMainInstance();var ut=T;export{ut as AnaLogger,H as DEFAULT_LOG_CONTEXTS,u as DEFAULT_LOG_LEVELS,_ as DEFAULT_LOG_TARGETS,ht as anaLogger,dt as default};
|
|
1
|
+
var Be=Object.defineProperty;var Ue=(n,e,t)=>e in n?Be(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var u=(n,e,t)=>(Ue(n,typeof e!="symbol"?e+"":e,t),t),ne=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)};var l=(n,e,t)=>(ne(n,e,"read from private field"),t?t.call(n):e.get(n)),m=(n,e,t)=>{if(e.has(n))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(n):e.set(n,t)},se=(n,e,t,o)=>(ne(n,e,"write to private field"),o?o.call(n,t):e.set(n,t),t);var ie=(n,e,t)=>(ne(n,e,"access private method"),t);var ge={Foreground:38,Background:48},O="\x1B[1D",pe="\x1B[0m"+O,j={Bold:"\x1B[1m"+O,Underline:"\x1B[4m"+O,Reversed:"\x1B[7m"+O},Ge={Bold:"\x1B[1m"+O,Underline:"\x1B[4m"+O,Reversed:"\x1B[7m"+O},ae={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4","indianred ":"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function Pe(n){return!!ae[n]}var me=(n,e,t)=>n===e&&e===t?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(e/255*5)+Math.round(t/255*5),Le=n=>{let e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;n=n.replace(e,function(o,r,s,i){return r+r+s+s+i+i});let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return t?{red:parseInt(t[1],16),blue:parseInt(t[2],16),green:parseInt(t[3],16)}:{}},Ee=function({red:n,green:e,blue:t}){let o=n<<16|e<<8|t<<0;return"#"+(16777216+o).toString(16).slice(1)},be=function(n){let e=n.matchAll(/\d+/g),t=[];for(let o of e){let r=parseInt(o[0]);if(r>255)return null;t.push(r)}return t.length!==3?null:{red:t[0],green:t[1],blue:t[2]}},je=function(n){let e=be(n);return e&&Ee(e)},q=function(e,t,o){return o<0&&(o+=1),o>1&&(o-=1),o<1/6?e+(t-e)*6*o:o<1/2?t:o<2/3?e+(t-e)*(2/3-o)*6:e},Te=({hue:n,saturation:e,lightness:t})=>{let o,r,s;if(e===0)o=r=s=t;else{let i=t<.5?t*(1+e):t+e-t*e,a=2*t-i;o=q(a,i,n+1/3),r=q(a,i,n),s=q(a,i,n-1/3)}return{red:Math.round(o*255),blue:Math.round(s*255),green:Math.round(r*255)}},ye=n=>{let e=n.toLowerCase();return typeof ae[e]<"u"?ae[e]:""};function F({red:n,blue:e,green:t},o=!0){if(n===void 0||e===void 0||t===void 0)return"";let r=me(n,e,t);return`\x1B[${o?ge.Foreground:ge.Background};5;`+r+"m "+O}function S(n,e=!0){let{red:t,green:o,blue:r}=Le(n);return F({red:t,green:o,blue:r},e)}function $({hue:n,saturation:e,lightness:t},o){let{red:r,green:s,blue:i}=Te({hue:n,saturation:e,lightness:t});return F({red:r,green:s,blue:i},o)}function le(n,e=!0){try{let t;return n=n||"",n?((typeof n=="string"||n instanceof String)&&(n=n.trim()),Pe(n)?(t=ye(n),S(t,e)):typeof n=="object"&&!!n.red&&!!n.blue&&!!n.green?F(n,e):typeof n=="object"&&!!n.hue&&!!n.saturation&&!!n.lightness?$(n,e):n.startsWith("#")?S(n,e):(n=n.toString(),/^[\da-fA-F]+$/.test(n)?S("#"+n,e):"")):""}catch(t){console.error("TO_ANSI_INVALID_ARGUMENT_ERROR",t.message)}}function Y(n,{fg:e,bg:t,isUnderline:o=!1,isBold:r=!1,isReversed:s=!1}){let i=!1,a="";return e&&(i=!0,a=a+e),t&&(i=!0,a=a+t),o&&(i=!0,a=a+j.Underline),r&&(i=!0,a=a+j.Bold),s&&(i=!0,a=a+j.Reversed),i?a+n+pe:n}function qe(n,{fg:e={},bg:t={},isUnderline:o=!1,isBold:r=!1,isReversed:s=!1}){return e&&(e=F({...e})),t&&(t=F({...t},!1)),Y(n,{fg:e,bg:t,isUnderline:o,isBold:r,isReversed:s})}function $e(n,{fg:e="",bg:t="",isUnderline:o=!1,isBold:r=!1,isReversed:s=!1}){return e&&(e=$({...e})),t&&(t=$({...t},!1)),Y(n,{fg:e,bg:t,isUnderline:o,isBold:r,isReversed:s})}function Ye(n,{fg:e="",bg:t="",isUnderline:o=!1,isBold:r=!1,isReversed:s=!1}){return e&&(e=S(e)),t&&(t=S(t,!1)),Y(n,{fg:e,bg:t,isUnderline:o,isBold:r,isReversed:s})}function We(n,e=null){if(!e)return n;let{fg:t="",bg:o="",isUnderline:r=!1,isBold:s=!1,isReversed:i=!1}=e;return t&&(t=le(t)),o&&(o=le(o,!1)),Y(n,{fg:t,bg:o,isUnderline:r,isBold:s,isReversed:i})}var W={fromRgb:F,fromHexa:S,fromHsl:$,fromColor:le,getTextFromRgb:qe,getTextFromHsl:$e,getTextFromHex:Ye,getTextFromColor:We,colorNameToHex:ye,hslToRgb:Te,hexToRgb:Le,rgbToHex:Ee,rgbToAnsi256:me,rgbStringToRgb:be,rgbStringToHex:je,hue2rgb:q,RESET:pe,FONT_STYLE:j,STYLE:Ge};var Oe={COLOR_TABLE:["#d2466e","#FFA07A","#FF7F50","#FF6347","#FFE4B5","#ADFF2F","#808000","#40E0D0","#1E90FF","#EE82EE","#708090","#DEB887","#FE642E","#210B61","#088A4B","#5E610B","#FA8258","#088A68","#B40431"],SYSTEM:{BROWSER:"BROWSER",NODE:"NODE"}},C=Oe.COLOR_TABLE,k=Oe.SYSTEM,ce=2e3,fe="analogger-removed-notif",de="analogger-header",he="analogger-view",ue="analogger-footer",Ae="to-esm-line",V={TOP:"TOP",BOTTOM:"BOTTOM"},xe="ANALOGGER",z={DEFAULT_FORMAT:"FORMAT1"};var{parse:st,stringify:Ve}=JSON,{keys:it}=Object,ze=String,Je="string";var Re="object",Xe=(n,e)=>e;var we=(n,e,t)=>{let o=ze(e.push(t)-1);return n.set(t,o),o};var ve=(n,e,t)=>{let o=e&&typeof e===Re?(f,p)=>f===""||-1<e.indexOf(f)?p:void 0:e||Xe,r=new Map,s=[],i=[],a=+we(r,s,o.call({"":n},"",n)),c=!a;for(;a<s.length;)c=!0,i[a]=Ve(s[a++],h,t);return"["+i.join(",")+"]";function h(f,p){if(c)return c=!c,p;let L=o.call(this,f,p);switch(typeof L){case Re:if(L===null)return L;case Je:return r.get(L)||we(r,s,L)}return L}};var E={moduleName:"analogger",protocol:"http://",host:"localhost",port:12e3,pathname:"analogger",binarypathname:"uploaded",loopback:"localhost",consoleDomId:"#analogger",logFilename:"./analogger.log"},D={ALL:"ALL",USER:"USER"},g={FATAL:5e3,ERROR:4e3,WARN:3e3,INFO:2e3,LOG:1e3,DEBUG:500,ALL:200,OFF:0,INHERIT:-1},Ne={LOCAL:"local",GLOBAL:"global"},H={DEFAULT:{contextName:"DEFAULT",logLevel:g.LOG,symbol:"check"},LOG:{contextName:"LOG",logLevel:g.LOG,symbol:"check"},DEBUG:{contextName:"DEBUG",logLevel:g.DEBUG},INFO:{contextName:"INFO",logLevel:g.INFO,color:"#B18904",symbol:"diamonds"},WARN:{contextName:"WARN",logLevel:g.WARN,color:C[0],symbol:"cross"},ERROR:{contextName:"ERROR",logLevel:g.ERROR},CRITICAL:{contextName:"CRITICAL",logLevel:g.CRITICAL}},Ke=`
|
|
2
|
+
`,J={airplane:"\u2708",anchor:"\u2693",arrow_backward:"\u25C0",arrow_double_up:"\u23EB",arrow_double_down:"\u23EC",arrow_forward:"\u25B6",arrow_lower_right:"\u2198",arrow_lower_left:"\u2199",arrow_right_hook:"\u21AA",arrow_up_down:"\u2195",arrow_upper_left:"\u2196",arrow_upper_right:"\u2197",ballot_box_with_check:"\u2611",biohazard:"\u2623",black_circle:"\u23FA",black_medium_small_square:"\u25FE",black_medium_square:"\u25FC",black_nib:"\u2712",black_small_square:"\u25AA",black_square:"\u23F9",chains:"\u26D3",check:"\u2714",chess_pawn:"\u265F",cloud_and_rain:"\u26C8",clubs:"\u2663",coffee:"\u2615",copyright:"\xA9",cross:"\u274C",diamonds:"\u2666",divisions_ign:"\u2797",double_triangle_right:"\u23ED",double_triangle_left:"\u23EE",email:"\u2709",eject:"\u23CF",exclamation_mark:"\u2757",fast_forward:"\u23E9",female_sign:"\u2640",fist:"\u270A",fuel_pump:"\u26FD",gear:"\u2699",hammer_and_pick:"\u2692",hand:"\u270B",hearts:"\u2665",infinity:"\u267E",information:"\u2139",left_right_arrow:"\u2194",leftwards_arrow_with_hook:"\u21A9",male_sign:"\u2642",minus_sign:"\u2796",no_entry:"\u26D4",partly_sunny:"\u26C5",pencil:"\u270F",phone:"\u260E",plus_sign:"\u2795",question:"\u2754",radioactive:"\u2622",raised_hand:"\u270B",recycle:"\u267B",registered:"\xAE",relaxed:"\u263A",rewind:"\u23EA",scissors:"\u2702",snowman:"\u2603",spades:"\u2660",sparkles:"\u2728",star:"\u2B50",sunny:"\u2600",tent:"\u26FA",trademark:"\u2122",triangle_with_vertical_bar:"\u23EF",umbrella:"\u2614",vertical_bars:"\u23F8",watch:"\u231A",white_frowning_face:"\u2639",white_medium_square:"\u25FB",white_medium_small_square:"\u25FD",white_small_square:"\u25AB",wheelchair:"\u267F",white_circle:"\u26AA",writing_hand:"\u270D"};function Se(){return typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node<"u"?k.NODE:k.BROWSER}var Qe=Se();function Ze(){return Qe===k.NODE}var et=["alert","assert","keepLogHistory","getLogHistory","truncateMessage","truncateMessage","rawLog","removeOverride","removeOverrideError","overrideConsole","overrideError","table","rawInfo","rawWarn","rawError","hasSeenLid","addToLogHistory","releaseLogHistory","resetLogHistory","setLogFormat","resetLogFormatter","getRawLogHistory"],B,A,x,R,b,w,v,N,X,U,y,K,Fe,Q,Ce,d=class{constructor({name:e="default"}={}){m(this,K);m(this,Q);u(this,"system","");u(this,"instanceId","");u(this,"instanceName","");u(this,"logIndex",0);u(this,"logCounter",0);m(this,A,[]);m(this,x,{});m(this,R,{});u(this,"activeTargets",[]);u(this,"indexColor",0);u(this,"format","");u(this,"keepLog",!1);u(this,"logHistory",[]);u(this,"$containers",null);u(this,"options",{hideHookMessage:!1});m(this,b,console.log);m(this,w,console.info);m(this,v,console.warn);m(this,N,console.error);m(this,X,console.debug);m(this,U,console.table);m(this,y,{log:!1,info:!1,warn:!1,error:!1,debug:!1,table:!1});u(this,"originalFormatFunction");u(this,"removeDomOldEntries",e=>{if(e.childElementCount>ce){let o=Math.ceil(ce/10);for(let r=0;r<o;++r)e.removeChild(e.firstChild);return o}return 0});u(this,"scrollDivToBottom",e=>{let t=e.scrollHeight-(e.clientHeight+e.scrollTop),o=e.clientHeight||e.offsetHeight;t>o/2||(e.scrollTop=e.scrollHeight)});this.system=Se(),this.format=this.onBuildLog.bind(this),this.originalFormatFunction=this.format,this.instanceName=e,this.instanceId=d.instanceCount+"-"+Date.now(),l(d,B)[d.instanceCount]=this,++d.instanceCount,this.errorTargetHandler=this.onError.bind(this),this.errorUserTargetHandler=this.onErrorForUserTarget.bind(this),this.setOptions(this.options),this.rawLog=l(this,b),this.rawInfo=l(this,w),this.rawWarn=l(this,v),this.rawError=l(this,N),this.ALIGN=d.ALIGN,this.ENVIRONMENT_TYPE=d.ENVIRONMENT_TYPE,ie(this,Q,Ce).call(this),this.resetLogHistory()}getName(){return this.instanceName}getId(){return this.instanceId}keepLogHistory(){this.keepLog=!0}releaseLogHistory(){this.keepLog=!1}resetLogHistory(){this.logHistory=[]}addToLogHistory(e){e=e||{},this.logHistory.push(Object.assign({},e))}getLogHistory(e=!0,t=Ke){let o=this.logHistory||[],r=[];return o.forEach(s=>{let{text:i}=s;r.push(i)}),e?r.join(t):r}getRawLogHistory(){return this.logHistory||[]}hasSeenLid(e){this.logHistory=this.logHistory||[];for(let t=0;t<this.logHistory.length;++t){let r=(this.logHistory[t]||{}).context||{};if(e===r.lid)return!0}return!1}forceEnvironment(e){this.forcedSystem=e}isNode(){return this&&this.forcedSystem?this.forcedSystem===k.NODE:Ze()}isBrowser(){return!this.isNode()}resetLogger(){this.options={},this.options.timeLenMax=12,this.options.contextLenMax=10,this.options.idLenMax=5,this.options.lidLenMax=6,this.options.messageLenMax=void 0,this.options.symbolLenMax=60,this.options.hideHookMessage=void 0,this.options.hidePassingTests=void 0,this.options.hideLog=void 0,this.options.hideError=void 0,this.options.oneConsolePerContext=!0,this.options.logToDom=void 0,this.options.logToFile=void 0,this.options.logToRemote=void 0,this.options.logToRemoteUrl=void 0,this.options.logToRemoteBinaryUrl=void 0,this.options.logToDomlogToFile=void 0,this.options.protocol=void 0,this.options.host=void 0,this.options.port=void 0,this.options.pathname=void 0,this.options.binarypathname=void 0,this.options.enableDate=void 0}resetOptions(){this.resetLogger()}setOptions({contextLenMax:e=10,idLenMax:t=5,lidLenMax:o=6,symbolLenMax:r=2,messageLenMax:s=void 0,hideLog:i=void 0,hideError:a=void 0,hideHookMessage:c=void 0,hidePassingTests:h=void 0,logToDom:f=void 0,logToFile:p=void 0,logToRemote:L=void 0,logToRemoteUrl:G=void 0,logToRemoteBinaryUrl:Z=void 0,loopback:ee=E.loopback,requiredLogLevel:te=g.LOG,oneConsolePerContext:oe=void 0,silent:P=void 0,enableDate:De=void 0,protocol:_e=void 0,host:Me=void 0,port:Ie=void 0,pathname:ke=void 0,binarypathname:He=void 0}=null){this.options.contextLenMax=e,this.options.idLenMax=t,this.options.lidLenMax=o,this.options.messageLenMax=s,this.options.symbolLenMax=r,this.options.requiredLogLevel=te;let re;P!==void 0?re=!!P:i!==void 0&&(re=!!i),[{hideLog:re},{oneConsolePerContext:oe},{hideError:a},{enableDate:De},{hideHookMessage:c},{hidePassingTests:h},{logToRemote:L}].forEach(_=>{let M=Object.keys(_)[0],I=_[M];I!==void 0&&(this.options[M]=!!I)}),[{logToRemoteBinaryUrl:Z},{logToRemoteUrl:G},{loopback:ee},{protocol:_e},{host:Me},{port:Ie},{pathname:ke},{binarypathname:He}].forEach(_=>{let M=Object.keys(_)[0],I=_[M];I!==void 0&&(this.options[M]=I)}),this.options.logToRemote&&!this.options.logToRemoteUrl&&(this.options.logToRemoteUrl=this.convertToUrl({protocol:this.options.protocol,host:this.options.host,port:this.options.port,pathname:this.options.pathname})),this.options.logToRemote&&!this.options.logToRemoteBinaryUrl&&(this.options.logToRemoteBinaryUrl=this.convertToUrl({protocol:this.options.protocol,host:this.options.host,port:this.options.port,pathname:this.options.binarypathname||E.binarypathname})),f===!1?this.options.logToDom=!1:f!==void 0&&(this.options.logToDom=f===!0?E.consoleDomId:f),p===!1?this.options.logToFile=!1:p!==void 0&&(this.isBrowser()||(this.options.logToFile=p||E.logFilename),l(this,b).call(this,"LogToFile is not supported in this environment. "))}getOptions(){return this.options}truncateMessage(e="",{fit:t=0,align:o=d.ALIGN.LEFT,ellipsis:r="..."}={}){return e=""+e,t&&e.length>t&&(e=e.substring(0,t-r.length)+r),e=o===d.ALIGN.LEFT?e.padEnd(t," "):e.padStart(t," "),e}onBuildLog({contextName:e,message:t="",lid:o="",symbol:r=""}={}){try{let s="",i=t.split(/\n/g);for(let a=0;a<i.length;++a){let c=i[a],h=new Date,f=("0"+h.getHours()).slice(-2)+":"+("0"+h.getMinutes()).slice(-2)+":"+("0"+h.getSeconds()).slice(-2);this.options.enableDate&&(f=h.getFullYear().toString().slice(-2)+"-"+(h.getMonth()+1).toString().padStart(2,"0")+"-"+h.getDate().toString().padStart(2,"0")+" "+f),f=this.truncateMessage(f,{fit:this.options.timeLenMax}),a>0&&(e="",o=""),e=this.truncateMessage(e,{fit:this.options.contextLenMax,align:d.ALIGN.RIGHT}),o=this.truncateMessage(o,{fit:this.options.lidLenMax}),this.options.messageLenMax!==void 0&&(c=this.truncateMessage(c,{fit:this.options.messageLenMax})),r=this.truncateMessage(r,{fit:this.options.symbolLenMax}),a<=0?s+=`[${f}] ${e}: (${o}) ${r} ${c}`:a<i.length-1?(s+=`
|
|
3
|
+
`,s+=`[${f}] ${e} ${o} ${c}`):c&&(s+=`
|
|
4
|
+
`,s+=`[${f}] ${e} ${o} ${c}`)}return s}catch(s){console.rawError(s.message)}return""}onErrorForUserTarget(e,...t){this.errorUserTargetHandler(e,...t)}onError(e,...t){e.target===l(this,x).USER&&this.onErrorForUserTarget(e,...t)}onDisplayLog(...e){this.log(...e)}assistStask(e){try{let t=e.stack.split(`
|
|
5
|
+
`),o=[];for(let r=0;r<t.length;++r){let s=t[r];o.push(s)}return o}catch(t){console.rawError(t.message)}return e.message}onDisplayError(...e){try{let t=-1,o=null;for(let r=0;r<e.length;++r){let s=e[r];if(s instanceof Error&&s.stack){t=r,o=this.assistStask(s)||[];break}}if(!o){this.error(...e);return}for(let r=0;r<o.length;++r)e[t]=o[r],this.error(...e)}catch(t){console.rawError(t)}}setLogFormat(e){if(typeof e!="function")return console.error("Invalid parameter for setFormat. It is expecting a function or method."),!1;this.format=e.bind(this)}resetLogFormatter(){this.format=this.originalFormatFunction}setErrorHandler(e){this.errorTargetHandler=e.bind(this)}setErrorHandlerForUserTarget(e){this.errorUserTargetHandler=e.bind(this)}isContextValid(e){return typeof e=="object"&&!Array.isArray(e)&&e!==null?e.hasOwnProperty("contextName")&&e.hasOwnProperty("target"):!1}setDefaultContext(e){this.setContext(H.DEFAULT.contextName,e)}generateDefaultContext(){let e=l(this,A)[H.DEFAULT.contextName]||{};return e=Object.assign({},{lid:"",contextName:H.DEFAULT.contextName,target:D.ALL,symbol:"\u26A1",color:C[1],logLevel:g.LOG},e),e.name=e.contextName,e.id=this.logIndex++,e}generateNewContext(){let e=this.generateDefaultContext();return e.color=C[this.indexColor++%(C.length-3)+2],e.symbol="",e}generateErrorContext(){let e=this.generateDefaultContext();return e.contextName=H.ERROR.contextName,e.name=e.contextName,e.color=C[0],e.symbol="\u274C",e.error=!0,e.logLevel=g.ERROR,e}setContext(e,t={}){t.contextName=e,t.name=e,t=ie(this,K,Fe).call(this,t),l(this,A)[e]=t}getContext(e){return l(this,A)[e]}setContexts(e){Object.keys(e).forEach(o=>{let r=e[o]||{};this.setContext(o,r),e[o]=l(this,A)[o]})}getContexts(){return Object.freeze(l(this,A))}setTargets(e={}){let t={};if(Array.isArray(e))try{for(let o=0;o<e.length;++o){let r=e[o];if(typeof r=="string"||r instanceof String)t[r]=r;else if(typeof r=="object"){let s=null;for(let i in r){let a=r[i];if(i=i.trim(),!i){console.error("Invalid target");break}if(typeof a=="string"||a instanceof String){a=a.trim(),s=[i,a];break}if(typeof a=="number")break}s&&(t[s[0]]=s[1])}}}catch(o){console.error({lid:4321},o.message)}else t=e;se(this,x,Object.assign({},t,{...D}))}addTargets(e){let t=l(this,x),o=Object.assign({},t,e);this.setTargets(o)}getTargets(){return Object.freeze(l(this,x))}setActiveTargets(e=null){if(e===null){this.activeTargets=[D.ALL];return}else if(typeof e=="string"||e instanceof String)e=e.split(",");else if(typeof e=="object"||typeof e=="function")return;for(let t=0;t<e.length;++t)e[t]=e[t].trim();this.activeTargets=e}getActiveTarget(){return this.activeTargets}setActiveTarget(e){this.activeTargets=[],this.setActiveTargets(e),this.activeTargets=[this.activeTargets[0]]}setLogLevel(e,t){l(this,R)[e]=t}getLogLevel(e){return l(this,R)[e]}setLogLevels(e){se(this,R,e)}getLogLevels(){return Object.freeze(l(this,R))}isTargetAllowed(e){return!e||!this.activeTargets||!this.activeTargets.length||e===D.ALL||this.activeTargets.includes(D.ALL)?!0:this.activeTargets.includes(e)}setColumns(e,t,o){let r=0;for(let i in t){if(!["contextName","symbol","lid","text"].includes(i))continue;let a=t[i],c=document.createElement("span");c.classList.add("analogger-col",`analogger-col-${i}`,`analogger-col-${r}`),++r,c.textContent=a,e.append(c)}let s=document.createElement("span");s.classList.add("analogger-col","analogger-col-text",`analogger-col-${r}`),s.textContent=o,e.append(s);for(let i=1;i<=3;++i)s=document.createElement("span"),s.classList.add("analogger-col","analogger-col-extra",`analogger-extra-${i}`),e.append(s)}checkOnLoggingToDom(e,t){try{let o=e.onLoggingToDom;return typeof o!="function"?void 0:o.call(this,e,t)}catch{}}addLineToDom(e,t,{context:o,addType:r,message:s,text:i,args:a}){if(this.checkOnLoggingToDom(o,{message:s,text:i,args:a,logCounter:this.logCounter,$view:e,$line:t,addType:r})===!1)return;if(r===V.BOTTOM?e.append(t):e.insertBefore(t,e.firstChild),this.removeDomOldEntries(e)){if(e.getElementsByClassName(fe).length)return;this.showRemovedNotification(o);return}this.scrollDivToBottom(e)}showRemovedNotification(e){e.contextName=xe,e.symbol="\u{1F5D1}",e.color="orange",e.className=fe,clearTimeout(this.timerAddLineToDomID),this.timerAddLineToDomID=setTimeout(()=>{this.timerAddLineToDomID=null,this.writeLogToDom(e,"",{addType:V.TOP,message:"Oldest entries removed"})},500)}writeLogToDom(e,t,{addType:o=V.BOTTOM,message:r="",args:s=null}={}){this.$containers=this.$containers||document.querySelectorAll(this.options.logToDom),t=r||t;for(let i=0;i<this.$containers.length;++i){let a=this.$containers[i],c=a.querySelector("."+de);c||(c=document.createElement("div"),c.classList.add(de),c.append(document.createElement("span")),c.append(document.createElement("span")),c.append(document.createElement("span")),a.append(c));let h=a.querySelector("."+he);h||(h=document.createElement("div"),h.classList.add(he),a.append(h));let f=a.querySelector("."+ue);f||(f=document.createElement("div"),f.classList.add(ue),f.append(document.createElement("span")),f.append(document.createElement("span")),f.append(document.createElement("span")),a.append(f));let p=document.createElement("div");p.classList.add(Ae),e.className&&p.classList.add(e.className),p.style.color=e.color,this.setColumns(p,e,t,s),setTimeout(function(L,G,{addType:Z,context:ee,message:te,text:oe,args:P}){this.addLineToDom(L,G,{addType:Z,context:ee,message:te,text:oe,args:P})}.bind(this,h,p,{addType:o,context:e,message:r,text:t,args:s}),0)}}writeLogToFile(e){try{fs.appendFileSync(this.options.logToFilePath,e+this.EOL)}catch(t){console.rawError("LOG_TO_FILE_FAILURE: ",t.message)}}writeLogToRemote(...e){try{let t=this.generateLogToRemoteUrl(this.options.logToRemoteUrl);if(!t)return null;let o=[...e],r=JSON.stringify(o);fetch(t,{method:"post",body:r,headers:{"Content-Type":"application/json"}}).then(s=>s.json()).catch(()=>null)}catch(t){console.rawError("LOG_TO_REMOTE_FAILURE: ",t.message)}}uploadDataToRemote(e,t=null,o=null){try{if(!this.options.logToRemote)return;let r=this.generateLogToRemoteUrl(this.options.logToRemoteBinaryUrl,{pathname:E.binarypathname});if(!r)return null;let s=e;t&&(s=JSON.stringify({raw:e,context:t})),fetch(r,{method:"post",body:s}).then(i=>i.json()).then(i=>o&&o(i)).catch(i=>i)}catch(r){console.rawError("BINARY_TO_REMOTE_FAILURE: ",r.message)}}stringifyEntry(e){let t;try{t=JSON.stringify(e)}catch{}if(!t)try{t=ve(e)}catch{}return t}convertEntry(e){try{if(e==null||e==="")return e;if(typeof e=="boolean")return e;if(typeof e=="symbol"||typeof e=="number")return e;if(typeof e=="string"||myVar instanceof e)return e;if(e instanceof Date)return e}catch{}return this.stringifyEntry(e)}convertArgumentsToText(e){let t=[],o,r=e.length;for(let s=0;s<r;++s){let i,a=e[s];i=this.convertEntry(a),t.push(i)}return o=t.join("\u2022"),o}writeToConsole(e,t){let o=[e];this.isBrowser()&&o.push(`color: ${t.color}`);let r=t.contextLevel||g.LOG;r>=g.ERROR?l(this,N).call(this,...o):r>=g.WARN?l(this,v).call(this,...o):r>=g.INFO?l(this,w).call(this,...o):r>=g.LOG?l(this,b).call(this,...o):r>=g.DEBUG&&l(this,X).call(this,...o)}checkPlugins(e,{message:t,text:o,args:r,logCounter:s}){try{if(!Object.keys(d.pluginTable).length)return;let i=!0;for(let a in e){let c=e[a];if(!c)continue;let h=d.pluginTable[a];if(!h||typeof h!="object")continue;let{callback:f,methodName:p,type:L}=h;if(typeof f!="function")continue;f.call(this,e,{message:t,text:o,args:r,logCounter:s,methodName:p,type:L,pluginOptions:c})===!1&&(i=!1)}return i}catch{}}checkOnLogging(e,t){try{let o=e.onLogging;return typeof o!="function"?void 0:o.call(this,e,t)}catch{}}processOutput(e={}){try{let t="";if(this.applySymbolByName(e),!this.isTargetAllowed(e.target)||e.logLevel===g.OFF||this.options.requiredLogLevel>e.logLevel)return;let o=Array.prototype.slice.call(arguments,1);t=this.convertArgumentsToText(o);let r="",s=this.format({...e,message:t});this.keepLog&&this.addToLogHistory({context:e,message:t,text:s}),++this.logCounter;let i;if(i=this.checkOnLogging(e,{message:t,text:s,args:o,logCounter:this.logCounter}),i===!1||(i=this.checkPlugins(e,{message:t,text:s,args:o,logCounter:this.logCounter}),i===!1)||(this.options.logToRemote&&this.writeLogToRemote(e,...o),this.isBrowser()?(e.environnment=d.ENVIRONMENT_TYPE.BROWSER,this.options.logToDom&&this.writeLogToDom(e,s,{message:t,args:o}),r=`%c${s}`):(e.environnment=d.ENVIRONMENT_TYPE.NODE,r=W.getTextFromColor(s,{fg:e.color,bg:e.bgColor,isBold:e.bold,isUnderline:e.underline,isReversed:e.reversed}),this.options.logToFile&&this.writeLogToFile(s)),this.options.hideLog))return;this.writeToConsole(r,e),this.errorTargetHandler(e,o)}catch(t){console.rawError("AnaLogger:",t.message)}}isExtendedOptionsPassed(e){return typeof e!="object"?!1:e.hasOwnProperty("context")||e.hasOwnProperty("target")||e.hasOwnProperty("color")||e.hasOwnProperty("contextName")||e.hasOwnProperty("lid")}extractContextFromInput(e){return(typeof e=="string"||e instanceof String)&&e.toLowerCase().indexOf("lid:")!==0,e}listSymbols(){for(let e in J)console.rawLog(J[e]+` ${e} `)}applySymbolByName(e){try{e.symbol&&J[e.symbol]&&(e.symbol=J[e.symbol])}catch{}}convertToContext(e,t){e=e||t;let o=e;if(e.context&&typeof e.context=="object"){let r=Object.assign({},e);delete r.context,o=Object.assign({},e.context,r)}return o=Object.assign({},t,o),delete o.context,o}log(e,...t){if(e=this.extractContextFromInput(e),!this.isExtendedOptionsPassed(e)){let s=this.generateDefaultContext();this.processOutput.apply(this,[s,e,...t]);return}let o=this.generateDefaultContext(),r=this.convertToContext(e,o);this.processOutput.apply(this,[r,...t])}error(e,...t){if(this.options.hideError)return;if(e=this.extractContextFromInput(e),!this.isExtendedOptionsPassed(e)){let i=this.generateErrorContext();this.processOutput.apply(this,[i,e,...t]);return}let o=this.generateErrorContext(),r=this.convertToContext(e,o),s=Array.prototype.slice.call(arguments,1);this.log(r,...s)}overrideError(){this.options.hideHookMessage||l(this,b).call(this,"AnaLogger: Hook placed on console.error"),l(this,y).error=!0,console.error=this.onDisplayError.bind(this)}attachConsole(){try{return console.rawLog=l(this,b),console.raw=l(this,b),console.rawInfo=l(this,w),console.rawWarn=l(this,v),console.rawError=l(this,N),console.logHistory=this.logHistory,console.logHistory=this.logHistory,et.forEach(e=>{console[e]=function(...t){this[e](...t)}.bind(this)}),!0}catch(e){console.error({lid:4321},e.message)}return!1}overrideConsole({log:e=!0,info:t=!0,warn:o=!0,error:r=!1}={}){this.options.hideHookMessage||l(this,b).call(this,"AnaLogger: Hook placed on console.log"),[{log:e},{info:t},{warn:o}].forEach(function(s){let i=Object.keys(s)[0];s[i]&&(l(this,y)[i]=!0,console[i]=this.onDisplayLog.bind(this))}.bind(this)),r&&this.overrideError(),this.attachConsole()}removeOverrideError(){console.error=l(this,N),l(this,y).error=!1}removeOverride({log:e=!0,info:t=!0,warn:o=!0,error:r=!1}={}){e&&(console.log=l(this,b),l(this,y).log=!1),t&&(console.info=l(this,w),l(this,y).info=!1),o&&(console.warn=l(this,v),l(this,y).warn=!1),r&&this.removeOverrideError()}info(...e){return this.log(...e)}warn(...e){return this.log(...e)}table(...e){if(!l(this,y).log){l(this,U).call(this,...e);return}let t=console.log;console.log=l(this,b),l(this,U).call(this,...e),console.log=t}alert(...e){if(!this.isBrowser())return this.log(...e);let t;if(e&&(e[0]&&e[0].hasOwnProperty("lid")||this.isContextValid(e[0]))){let o=this.generateDefaultContext();t=this.convertToContext(e[0],o).lid+": "+e.slice(1).join(" | ")}else t=e.join(" | ");alert(t)}assert(e,t=!0,...o){let r;try{return typeof e=="function"?(r=e(...o),r!==t?(this.error("Asset failed"),!1):(this.options.hidePassingTests||this.log("SUCCESS: Assert passed"),!0)):e!==t?(this.error("Assert failed"),!1):(this.options.hidePassingTests||this.log("SUCCESS: Assert passed"),!0)}catch{this.error("Unexpected error in assert")}return!1}applyAnalogFormatting({activeTarget:e="",override:t=!1}={}){try{let r={STANDARD:null,TEST:{color:"#B18904",symbol:"diamonds"}};return this.setDefaultContext(r.DEFAULT),e&&this.setActiveTarget(e),this.setOptions({silent:!1,hideError:!1,hideHookMessage:!0,lidLenMax:6}),t&&(this.overrideConsole(),this.overrideError()),!0}catch(o){console.error({lid:3249},o.message)}return!1}applyPredefinedFormat(e=z.DEFAULT_FORMAT,{activeTarget:t="",override:o=!1}={}){if(e===z.DEFAULT_FORMAT)return this.applyAnalogFormatting({activeTarget:t,override:o})}static generateInstance(){return new d}static getInstance(e=0){return d.instanceCount?l(d,B)[e]:null}static generateMainInstance(){let e=d.getInstance();return e||new d}static startLogger(){d.generateMainInstance().applyPredefinedFormat(z.DEFAULT_FORMAT,{override:!0})}static stopLogger(){let e=d.generateMainInstance();e.removeOverride(),e.removeOverrideError()}convertToUrl({protocol:e=E.protocol,host:t=E.host,port:o=E.port,pathname:r=E.pathname}={}){let s=new URL("http://localhost");return s.protocol=e,s.host=t,s.port=o,r&&(s.pathname=r),s.toString()}generateLogToRemoteUrl(e=null,{pathname:t=E.pathname}={}){if(typeof e=="string"||e instanceof String)return e;if(!this.isBrowser())return null;let o=this.options.protocol||window.location.protocol+"//",r=this.options.host||window.location.host||E.host,s=this.options.port||E.port;return t=this.options.pathname||t,this.convertToUrl({protocol:o,host:r,port:s,pathname:t})}addPlugin(e,t,o=""){o=o||e,this[e]=t,d.pluginTable[o]={type:Ne.LOCAL,methodName:e,callback:t}}addGlobalPlugin(e,t,o){d[e]=t,d.pluginTable[o]={type:Ne.GLOBAL,methodName:e,callback:t}}getPluginList(){return Object.keys(d.pluginTable)}validatePlugin(e){return d.pluginTable[e]?!0:(console.warn(`The plugin ${e} is not registered`),!1)}},T=d;B=new WeakMap,A=new WeakMap,x=new WeakMap,R=new WeakMap,b=new WeakMap,w=new WeakMap,v=new WeakMap,N=new WeakMap,X=new WeakMap,U=new WeakMap,y=new WeakMap,K=new WeakSet,Fe=function(e){let t=this.generateNewContext(),o=Object.assign({},t,e);return o.color.toLowerCase().indexOf("rgb")>-1?o.color=W.rgbStringToHex(o.color):o.color.indexOf("#")===-1&&(o.color=W.colorNameToHex(o.color)),o},Q=new WeakSet,Ce=function(){try{this.setTargets(D),this.setLogLevels(g),this.setContexts(H)}catch(e){console.error({lid:4321},e.message)}return!1},m(T,B,[]),u(T,"ALIGN",{LEFT:"LEFT",RIGHT:"RIGHT"}),u(T,"ENVIRONMENT_TYPE",{BROWSER:"BROWSER",NODE:"NODE",OTHER:"OTHER"}),u(T,"instanceCount",0),u(T,"pluginTable",{});var tt=T,ht=tt,ut=T.generateMainInstance();var gt=T;export{gt as AnaLogger,H as DEFAULT_LOG_CONTEXTS,g as DEFAULT_LOG_LEVELS,D as DEFAULT_LOG_TARGETS,ut as anaLogger,ht as default};
|
|
4
6
|
|
package/esm/ana-logger.mjs
CHANGED
|
@@ -213,6 +213,8 @@ function isNode()
|
|
|
213
213
|
}
|
|
214
214
|
|
|
215
215
|
const COMMON_METHODS = [
|
|
216
|
+
"alert",
|
|
217
|
+
"assert",
|
|
216
218
|
"keepLogHistory",
|
|
217
219
|
"getLogHistory",
|
|
218
220
|
"truncateMessage",
|
|
@@ -227,6 +229,12 @@ const COMMON_METHODS = [
|
|
|
227
229
|
"rawWarn",
|
|
228
230
|
"rawError",
|
|
229
231
|
"hasSeenLid",
|
|
232
|
+
"addToLogHistory",
|
|
233
|
+
"releaseLogHistory",
|
|
234
|
+
"resetLogHistory",
|
|
235
|
+
"setLogFormat",
|
|
236
|
+
"resetLogFormatter",
|
|
237
|
+
"getRawLogHistory",
|
|
230
238
|
];
|
|
231
239
|
|
|
232
240
|
|
|
@@ -439,7 +447,7 @@ class ____AnaLogger
|
|
|
439
447
|
resetLogger()
|
|
440
448
|
{
|
|
441
449
|
this.options = {};
|
|
442
|
-
this.options.timeLenMax =
|
|
450
|
+
this.options.timeLenMax = 12;
|
|
443
451
|
this.options.contextLenMax = 10;
|
|
444
452
|
this.options.idLenMax = 5;
|
|
445
453
|
this.options.lidLenMax = 6;
|
|
@@ -461,6 +469,7 @@ class ____AnaLogger
|
|
|
461
469
|
this.options.port = undefined;
|
|
462
470
|
this.options.pathname = undefined;
|
|
463
471
|
this.options.binarypathname = undefined;
|
|
472
|
+
this.options.enableDate = undefined;
|
|
464
473
|
}
|
|
465
474
|
|
|
466
475
|
resetOptions()
|
|
@@ -487,6 +496,7 @@ class ____AnaLogger
|
|
|
487
496
|
requiredLogLevel = DEFAULT_LOG_LEVELS.LOG,
|
|
488
497
|
oneConsolePerContext = undefined,
|
|
489
498
|
silent = undefined,
|
|
499
|
+
enableDate = undefined,
|
|
490
500
|
/** Remote - all optional **/
|
|
491
501
|
protocol = undefined,
|
|
492
502
|
host = undefined,
|
|
@@ -519,6 +529,7 @@ class ____AnaLogger
|
|
|
519
529
|
{hideLog: solveSilent},
|
|
520
530
|
{oneConsolePerContext},
|
|
521
531
|
{hideError},
|
|
532
|
+
{enableDate},
|
|
522
533
|
{hideHookMessage},
|
|
523
534
|
{hidePassingTests},
|
|
524
535
|
{logToRemote},
|
|
@@ -633,26 +644,78 @@ class ____AnaLogger
|
|
|
633
644
|
*/
|
|
634
645
|
onBuildLog({contextName, message = "", lid = "", symbol = ""} = {})
|
|
635
646
|
{
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
647
|
+
try
|
|
648
|
+
{
|
|
649
|
+
let strResult = "";
|
|
639
650
|
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
651
|
+
const strs = message.split(/\n/g);
|
|
652
|
+
|
|
653
|
+
for (let i = 0; i < strs.length; ++i)
|
|
654
|
+
{
|
|
655
|
+
let message0 = strs[i];
|
|
656
|
+
|
|
657
|
+
// Time
|
|
658
|
+
const now = new Date();
|
|
659
|
+
let time = ("0" + now.getHours()).slice(-2) + ":" + ("0" + now.getMinutes()).slice(-2) + ":" + ("0" + now.getSeconds()).slice(-2);
|
|
660
|
+
|
|
661
|
+
if (this.options.enableDate)
|
|
662
|
+
{
|
|
663
|
+
let date = now.getFullYear().toString().slice(-2) + "-" + (now.getMonth() + 1).toString().padStart(2, "0") + "-" + now.getDate().toString().padStart(2, "0");
|
|
664
|
+
time = date + " " + time;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
// Display content in columns
|
|
668
|
+
time = this.truncateMessage(time, {fit: this.options.timeLenMax});
|
|
669
|
+
|
|
670
|
+
if (i > 0)
|
|
671
|
+
{
|
|
672
|
+
contextName = "";
|
|
673
|
+
lid = "";
|
|
674
|
+
}
|
|
675
|
+
contextName = this.truncateMessage(contextName, {
|
|
676
|
+
fit : this.options.contextLenMax,
|
|
677
|
+
align: ____AnaLogger.ALIGN.RIGHT
|
|
678
|
+
});
|
|
679
|
+
lid = this.truncateMessage(lid, {fit: this.options.lidLenMax});
|
|
680
|
+
|
|
681
|
+
if (this.options.messageLenMax !== undefined)
|
|
682
|
+
{
|
|
683
|
+
message0 = this.truncateMessage(message0, {fit: this.options.messageLenMax});
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
symbol = this.truncateMessage(symbol, {fit: this.options.symbolLenMax});
|
|
687
|
+
|
|
688
|
+
if (i <= 0)
|
|
689
|
+
{
|
|
690
|
+
strResult += `[${time}] ${contextName}: (${lid}) ${symbol} ${message0}`;
|
|
691
|
+
}
|
|
692
|
+
else
|
|
693
|
+
{
|
|
694
|
+
// If last line empty, don't display it
|
|
695
|
+
if (i < strs.length - 1)
|
|
696
|
+
{
|
|
697
|
+
strResult += "\n";
|
|
698
|
+
strResult += `[${time}] ${contextName} ${lid} ${message0}`;
|
|
699
|
+
}
|
|
700
|
+
else
|
|
701
|
+
{
|
|
702
|
+
if (message0)
|
|
703
|
+
{
|
|
704
|
+
strResult += "\n";
|
|
705
|
+
strResult += `[${time}] ${contextName} ${lid} ${message0}`;
|
|
706
|
+
}
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
}
|
|
647
710
|
|
|
648
|
-
|
|
711
|
+
return strResult;
|
|
712
|
+
}
|
|
713
|
+
catch (e)
|
|
649
714
|
{
|
|
650
|
-
|
|
715
|
+
console.rawError(e.message);
|
|
651
716
|
}
|
|
652
717
|
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
return `[${time}] ${contextName}: (${lid}) ${symbol} ${message}`;
|
|
718
|
+
return "";
|
|
656
719
|
}
|
|
657
720
|
|
|
658
721
|
onErrorForUserTarget(context, ...args)
|
|
@@ -1994,7 +2057,18 @@ class ____AnaLogger
|
|
|
1994
2057
|
return this.log(...args);
|
|
1995
2058
|
}
|
|
1996
2059
|
|
|
1997
|
-
|
|
2060
|
+
let message;
|
|
2061
|
+
if (args && ((args[0] && args[0].hasOwnProperty("lid")) || this.isContextValid(args[0])))
|
|
2062
|
+
{
|
|
2063
|
+
const someContext = this.generateDefaultContext();
|
|
2064
|
+
let context = this.convertToContext(args[0], someContext);
|
|
2065
|
+
|
|
2066
|
+
message = context.lid + ": " + args.slice(1).join(" | ");
|
|
2067
|
+
}
|
|
2068
|
+
else
|
|
2069
|
+
{
|
|
2070
|
+
message = args.join(" | ");
|
|
2071
|
+
}
|
|
1998
2072
|
|
|
1999
2073
|
alert(message);
|
|
2000
2074
|
}
|
package/package.json
CHANGED
package/src/ana-logger.cjs
CHANGED
|
@@ -199,6 +199,8 @@ function isNode()
|
|
|
199
199
|
}
|
|
200
200
|
|
|
201
201
|
const COMMON_METHODS = [
|
|
202
|
+
"alert",
|
|
203
|
+
"assert",
|
|
202
204
|
"keepLogHistory",
|
|
203
205
|
"getLogHistory",
|
|
204
206
|
"truncateMessage",
|
|
@@ -213,6 +215,12 @@ const COMMON_METHODS = [
|
|
|
213
215
|
"rawWarn",
|
|
214
216
|
"rawError",
|
|
215
217
|
"hasSeenLid",
|
|
218
|
+
"addToLogHistory",
|
|
219
|
+
"releaseLogHistory",
|
|
220
|
+
"resetLogHistory",
|
|
221
|
+
"setLogFormat",
|
|
222
|
+
"resetLogFormatter",
|
|
223
|
+
"getRawLogHistory",
|
|
216
224
|
];
|
|
217
225
|
|
|
218
226
|
|
|
@@ -425,7 +433,7 @@ class ____AnaLogger
|
|
|
425
433
|
resetLogger()
|
|
426
434
|
{
|
|
427
435
|
this.options = {};
|
|
428
|
-
this.options.timeLenMax =
|
|
436
|
+
this.options.timeLenMax = 12;
|
|
429
437
|
this.options.contextLenMax = 10;
|
|
430
438
|
this.options.idLenMax = 5;
|
|
431
439
|
this.options.lidLenMax = 6;
|
|
@@ -447,6 +455,7 @@ class ____AnaLogger
|
|
|
447
455
|
this.options.port = undefined;
|
|
448
456
|
this.options.pathname = undefined;
|
|
449
457
|
this.options.binarypathname = undefined;
|
|
458
|
+
this.options.enableDate = undefined;
|
|
450
459
|
}
|
|
451
460
|
|
|
452
461
|
resetOptions()
|
|
@@ -473,6 +482,7 @@ class ____AnaLogger
|
|
|
473
482
|
requiredLogLevel = DEFAULT_LOG_LEVELS.LOG,
|
|
474
483
|
oneConsolePerContext = undefined,
|
|
475
484
|
silent = undefined,
|
|
485
|
+
enableDate = undefined,
|
|
476
486
|
/** Remote - all optional **/
|
|
477
487
|
protocol = undefined,
|
|
478
488
|
host = undefined,
|
|
@@ -505,6 +515,7 @@ class ____AnaLogger
|
|
|
505
515
|
{hideLog: solveSilent},
|
|
506
516
|
{oneConsolePerContext},
|
|
507
517
|
{hideError},
|
|
518
|
+
{enableDate},
|
|
508
519
|
{hideHookMessage},
|
|
509
520
|
{hidePassingTests},
|
|
510
521
|
{logToRemote},
|
|
@@ -621,26 +632,78 @@ class ____AnaLogger
|
|
|
621
632
|
*/
|
|
622
633
|
onBuildLog({contextName, message = "", lid = "", symbol = ""} = {})
|
|
623
634
|
{
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
635
|
+
try
|
|
636
|
+
{
|
|
637
|
+
let strResult = "";
|
|
627
638
|
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
639
|
+
const strs = message.split(/\n/g);
|
|
640
|
+
|
|
641
|
+
for (let i = 0; i < strs.length; ++i)
|
|
642
|
+
{
|
|
643
|
+
let message0 = strs[i];
|
|
644
|
+
|
|
645
|
+
// Time
|
|
646
|
+
const now = new Date();
|
|
647
|
+
let time = ("0" + now.getHours()).slice(-2) + ":" + ("0" + now.getMinutes()).slice(-2) + ":" + ("0" + now.getSeconds()).slice(-2);
|
|
648
|
+
|
|
649
|
+
if (this.options.enableDate)
|
|
650
|
+
{
|
|
651
|
+
let date = now.getFullYear().toString().slice(-2) + "-" + (now.getMonth() + 1).toString().padStart(2, "0") + "-" + now.getDate().toString().padStart(2, "0");
|
|
652
|
+
time = date + " " + time;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
// Display content in columns
|
|
656
|
+
time = this.truncateMessage(time, {fit: this.options.timeLenMax});
|
|
657
|
+
|
|
658
|
+
if (i > 0)
|
|
659
|
+
{
|
|
660
|
+
contextName = "";
|
|
661
|
+
lid = "";
|
|
662
|
+
}
|
|
663
|
+
contextName = this.truncateMessage(contextName, {
|
|
664
|
+
fit : this.options.contextLenMax,
|
|
665
|
+
align: ____AnaLogger.ALIGN.RIGHT
|
|
666
|
+
});
|
|
667
|
+
lid = this.truncateMessage(lid, {fit: this.options.lidLenMax});
|
|
668
|
+
|
|
669
|
+
if (this.options.messageLenMax !== undefined)
|
|
670
|
+
{
|
|
671
|
+
message0 = this.truncateMessage(message0, {fit: this.options.messageLenMax});
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
symbol = this.truncateMessage(symbol, {fit: this.options.symbolLenMax});
|
|
675
|
+
|
|
676
|
+
if (i <= 0)
|
|
677
|
+
{
|
|
678
|
+
strResult += `[${time}] ${contextName}: (${lid}) ${symbol} ${message0}`;
|
|
679
|
+
}
|
|
680
|
+
else
|
|
681
|
+
{
|
|
682
|
+
// If last line empty, don't display it
|
|
683
|
+
if (i < strs.length - 1)
|
|
684
|
+
{
|
|
685
|
+
strResult += "\n";
|
|
686
|
+
strResult += `[${time}] ${contextName} ${lid} ${message0}`;
|
|
687
|
+
}
|
|
688
|
+
else
|
|
689
|
+
{
|
|
690
|
+
if (message0)
|
|
691
|
+
{
|
|
692
|
+
strResult += "\n";
|
|
693
|
+
strResult += `[${time}] ${contextName} ${lid} ${message0}`;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
}
|
|
635
698
|
|
|
636
|
-
|
|
699
|
+
return strResult;
|
|
700
|
+
}
|
|
701
|
+
catch (e)
|
|
637
702
|
{
|
|
638
|
-
|
|
703
|
+
console.rawError(e.message);
|
|
639
704
|
}
|
|
640
705
|
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
return `[${time}] ${contextName}: (${lid}) ${symbol} ${message}`;
|
|
706
|
+
return "";
|
|
644
707
|
}
|
|
645
708
|
|
|
646
709
|
onErrorForUserTarget(context, ...args)
|
|
@@ -1982,7 +2045,18 @@ class ____AnaLogger
|
|
|
1982
2045
|
return this.log(...args);
|
|
1983
2046
|
}
|
|
1984
2047
|
|
|
1985
|
-
|
|
2048
|
+
let message;
|
|
2049
|
+
if (args && ((args[0] && args[0].hasOwnProperty("lid")) || this.isContextValid(args[0])))
|
|
2050
|
+
{
|
|
2051
|
+
const someContext = this.generateDefaultContext();
|
|
2052
|
+
let context = this.convertToContext(args[0], someContext);
|
|
2053
|
+
|
|
2054
|
+
message = context.lid + ": " + args.slice(1).join(" | ");
|
|
2055
|
+
}
|
|
2056
|
+
else
|
|
2057
|
+
{
|
|
2058
|
+
message = args.join(" | ");
|
|
2059
|
+
}
|
|
1986
2060
|
|
|
1987
2061
|
alert(message);
|
|
1988
2062
|
}
|