analogger 1.17.2 → 1.18.2
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 +7 -1
- package/README.md +2 -2
- package/browser/src/ana-logger.mjs +1472 -0
- package/browser/src/constants.mjs +54 -0
- package/dist/analogger-browser.min.mjs +3 -2
- package/dist/analogger.min.css +1 -1
- package/esm/node_modules/define-property/index.mjs +1 -1
- package/esm/node_modules/is-accessor-descriptor/index.mjs +1 -1
- package/esm/node_modules/is-data-descriptor/index.mjs +1 -1
- package/esm/node_modules/is-descriptor/index.mjs +1 -1
- package/esm/node_modules/is-number/index.mjs +1 -1
- package/esm/node_modules/kind-of/index.mjs +1 -1
- package/esm/node_modules/window-size/index.mjs +1 -1
- package/esm/node_modules/window-size/utils.mjs +1 -1
- package/esm/{ana-logger.mjs → src/ana-logger.mjs} +116 -20
- package/esm/src/constants.mjs +1 -1
- package/package.json +29 -29
- package/src/ana-logger.cjs +113 -17
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "analogger",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.2",
|
|
4
4
|
"description": "Js Logger",
|
|
5
5
|
"main": "./src/ana-logger.cjs",
|
|
6
|
-
"module": "./esm/ana-logger.mjs",
|
|
7
|
-
"type": "
|
|
6
|
+
"module": "./esm/src/ana-logger.mjs",
|
|
7
|
+
"type": "commonjs",
|
|
8
8
|
"imports": {
|
|
9
9
|
"flatted": "./node_modules/flatted/esm/index.js",
|
|
10
10
|
"to-ansi": "./node_modules/to-ansi/index.mjs"
|
|
@@ -12,45 +12,43 @@
|
|
|
12
12
|
"exports": {
|
|
13
13
|
".": {
|
|
14
14
|
"require": "./src/ana-logger.cjs",
|
|
15
|
-
"import": "./esm/ana-logger.mjs"
|
|
15
|
+
"import": "./esm/src/ana-logger.mjs"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"browser": "./dist/analogger-browser.min.mjs",
|
|
19
19
|
"scripts": {
|
|
20
20
|
"lint": "eslint.cmd \"src/**/*.{cjs,js}\"",
|
|
21
21
|
"test": "npm run build:demo && nyc --reporter=lcov --reporter=text-summary mocha --exit --sort",
|
|
22
|
-
"manual:check": "genserve.cmd start --port 9877 --dir ./ --open example/index.html",
|
|
23
|
-
"demo:terminal:cjs": "node
|
|
22
|
+
"manual:check": "genserve.cmd start --port 9877 --dir ./ --open models/example-1/index.html",
|
|
23
|
+
"demo:terminal:cjs": "node models/jscode/demo.cjs",
|
|
24
24
|
"*** Pre-Cleaning-1 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
25
25
|
"*** Pre-Cleaning-2 ****": "# Clean directory",
|
|
26
26
|
"*** Pre-Cleaning-3 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
27
|
-
"clean:
|
|
28
|
-
"clean:terminal": "rimraf ./esm/",
|
|
29
|
-
"clean:browser": "rimraf ./generated/browser",
|
|
30
|
-
"clean:browser:importmaps": "rimraf ./generated/browser-import-maps && rimraf ./example-2/index-with-import-maps.html && clonefile example-2/index-maps.html example-2/index-with-import-maps.html",
|
|
31
|
-
"clean:browser:minified": "rimraf ./generated/browser-minified",
|
|
32
|
-
"clean:browser3": "rimraf ./generated/browser-minified-js",
|
|
27
|
+
"clean:browser:importmaps": "rimraf ./demo/browser-import-maps",
|
|
33
28
|
"clean:demo": "rimraf ./generated/demo/",
|
|
29
|
+
"*** On the Theme-1 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
30
|
+
"*** On the Theme-2 ****": "# CSS",
|
|
31
|
+
"*** On the Theme-3 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
32
|
+
"copy:css": "clonefile --force src/ana-logger.css dist/analogger.min.css",
|
|
34
33
|
"*** On the Terminal-1 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
35
|
-
"*** On the Terminal-2 ****": "# Generate library code",
|
|
34
|
+
"*** On the Terminal-2 ****": "# Generate library code in esm/ (esm version), browser (browser version) and dist (browser minified version)",
|
|
36
35
|
"*** On the Terminal-3 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
37
|
-
"build:esm:terminal": "
|
|
38
|
-
"build:esm:browser": "
|
|
39
|
-
"build:esm:browser:
|
|
40
|
-
"build:esm
|
|
41
|
-
"build:esm": "npm run clean:all && npm run build:esm:terminal && npm run build:esm:browser && npm run build:esm:browser:importmaps && npm run build:esm:browser:minified && clonefile src/ana-logger.css dist/analogger.min.css && npm pack",
|
|
36
|
+
"build:esm:terminal": " rimraf ./esm/ && to-esm src/ana-logger.cjs --output esm/ --config .toesm.cjs --target esm --update-all",
|
|
37
|
+
"build:esm:browser": " rimraf ./browser && to-esm src/ana-logger.cjs --output browser/ --config .toesm.cjs --target browser --update-all",
|
|
38
|
+
"build:esm:browser:minified": " rimraf ./dist/analogger-browser.min.mjs && to-esm src/ana-logger.cjs --bundle dist/analogger-browser.min.mjs --config .toesm.cjs --target browser --update-all --bundle-browser ./dist/analogger-browser.min.mjs ",
|
|
39
|
+
"build:esm": "npm run build:esm:terminal && npm run build:esm:browser && npm run build:esm:browser:minified && npm run copy:css",
|
|
42
40
|
"*** In the Browser-1 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
43
|
-
"*** In the Browser-2 ****": "# Generate Demo code",
|
|
41
|
+
"*** In the Browser-2 ****": "# Generate Demo code - They don't need to have the AnaLogger library built to work!!!",
|
|
44
42
|
"*** In the Browser-3 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
45
|
-
"build:demo:terminal": "
|
|
46
|
-
"build:demo:browser": " to-esm.cmd
|
|
47
|
-
"build:demo:browser:importmaps": " to-esm.cmd
|
|
48
|
-
"build:demo:minified": " to-esm.cmd
|
|
43
|
+
"build:demo:terminal": " to-esm.cmd models/jscode/demo.cjs --output demo/terminal/ --config .toesm.cjs --target=esm",
|
|
44
|
+
"build:demo:browser": " rimraf ./demo/browser-minified && clonefile --force models/example-1/index.html demo/browser/ && to-esm.cmd models/jscode/demo.cjs --output demo/browser/ --config .toesm.cjs --target browser",
|
|
45
|
+
"build:demo:browser:importmaps": " rimraf ./demo/browser-import-maps/ && clonefile --force models/example-2/index-maps.html demo/browser-import-maps/ && to-esm.cmd models/jscode/demo.cjs --output demo/browser-import-maps/ --config .toesm.cjs --target browser --html demo/browser-import-maps/*.html --useImportMaps ",
|
|
46
|
+
"build:demo:minified": " rimraf ./demo/browser-minified && clonefile --force models/example-3/index-bundle.html demo/browser-minified/ && to-esm.cmd models/jscode/demo.cjs --config .toesm.cjs --target browser --bundle ./demo/browser-minified/analogger-browser-demo.min.mjs",
|
|
49
47
|
"*** In the Browser with importmap-1 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
50
|
-
"*** In the Browser with importmap-2 ****": "# Generate
|
|
48
|
+
"*** In the Browser with importmap-2 ****": "# Generate models code with import map",
|
|
51
49
|
"*** In the Browser with importmap-3 ****": "# ----------------------------------------------------------------------------------------------------------",
|
|
52
|
-
"build:demo": "npm run build:
|
|
53
|
-
"quick:run": "node
|
|
50
|
+
"build:demo": "npm run build:demo:terminal && npm run build:demo:browser && npm run build:demo:browser:importmaps && npm run build:demo:minified",
|
|
51
|
+
"quick:run": "node models/jscode/demo.cjs"
|
|
54
52
|
},
|
|
55
53
|
"author": "Patrice Thimothee",
|
|
56
54
|
"license": "MIT",
|
|
@@ -79,9 +77,10 @@
|
|
|
79
77
|
"chai-spies": "^1.0.0",
|
|
80
78
|
"chromedriver": "^2.33.0",
|
|
81
79
|
"chromium": "^3.0.3",
|
|
82
|
-
"clonefile": "^1.
|
|
80
|
+
"clonefile": "^1.1.3",
|
|
83
81
|
"eslint": "^8.8.0",
|
|
84
|
-
"genserve": "^
|
|
82
|
+
"genserve": "^2.9.0",
|
|
83
|
+
"glob": "^8.0.3",
|
|
85
84
|
"jsdom": "19.0.0",
|
|
86
85
|
"jsdom-global": "3.0.2",
|
|
87
86
|
"mocha": "^9.2.0",
|
|
@@ -90,9 +89,10 @@
|
|
|
90
89
|
"selenium-webdriver": "^4.1.1",
|
|
91
90
|
"semantic-release": "^19.0.2",
|
|
92
91
|
"sinon": "^13.0.1",
|
|
93
|
-
"to-esm": "^2.
|
|
92
|
+
"to-esm": "^2.19.0"
|
|
94
93
|
},
|
|
95
94
|
"dependencies": {
|
|
95
|
+
"@thimpat/libutils": "^1.5.0",
|
|
96
96
|
"flatted": "^3.2.5",
|
|
97
97
|
"to-ansi": "^1.4.3",
|
|
98
98
|
"window-size": "^1.1.1"
|
package/src/ana-logger.cjs
CHANGED
|
@@ -119,6 +119,9 @@ class ____AnaLogger
|
|
|
119
119
|
{
|
|
120
120
|
system = "";
|
|
121
121
|
|
|
122
|
+
instanceId = "";
|
|
123
|
+
instanceName = "";
|
|
124
|
+
|
|
122
125
|
logIndex = 0;
|
|
123
126
|
logCounter = 0;
|
|
124
127
|
contexts = [];
|
|
@@ -156,14 +159,21 @@ class ____AnaLogger
|
|
|
156
159
|
NODE : "NODE",
|
|
157
160
|
OTHER : "OTHER"
|
|
158
161
|
};
|
|
162
|
+
|
|
163
|
+
static instanceCount = 0;
|
|
164
|
+
|
|
159
165
|
originalFormatFunction;
|
|
160
166
|
|
|
161
|
-
constructor()
|
|
167
|
+
constructor({name = "default"} = {})
|
|
162
168
|
{
|
|
163
169
|
this.system = (typeof process === "object") ? SYSTEM.NODE : SYSTEM.BROWSER;
|
|
164
170
|
this.format = this.onBuildLog.bind(this);
|
|
165
171
|
this.originalFormatFunction = this.format;
|
|
166
172
|
|
|
173
|
+
this.instanceName = name;
|
|
174
|
+
++____AnaLogger.instanceCount;
|
|
175
|
+
this.instanceId = ____AnaLogger.instanceCount + "-" + Date.now();
|
|
176
|
+
|
|
167
177
|
this.errorTargetHandler = this.onError.bind(this);
|
|
168
178
|
this.errorUserTargetHandler = this.onErrorForUserTarget.bind(this);
|
|
169
179
|
|
|
@@ -175,10 +185,15 @@ class ____AnaLogger
|
|
|
175
185
|
this.rawError = this.#realConsoleError;
|
|
176
186
|
|
|
177
187
|
console.rawLog = this.#realConsoleLog;
|
|
188
|
+
console.raw = this.#realConsoleLog;
|
|
189
|
+
|
|
178
190
|
console.rawInfo = this.#realConsoleInfo;
|
|
179
191
|
console.rawWarn = this.#realConsoleWarn;
|
|
180
192
|
console.rawError = this.#realConsoleError;
|
|
181
193
|
|
|
194
|
+
console.keepLogHistory = this.keepLogHistory;
|
|
195
|
+
console.getLogHistory = this.getLogHistory;
|
|
196
|
+
|
|
182
197
|
console.table = this.table;
|
|
183
198
|
console.buildTable = this.buildTable;
|
|
184
199
|
console.isNode = this.isNode;
|
|
@@ -192,6 +207,18 @@ class ____AnaLogger
|
|
|
192
207
|
|
|
193
208
|
this.ALIGN = ____AnaLogger.ALIGN;
|
|
194
209
|
this.ENVIRONMENT_TYPE = ____AnaLogger.ENVIRONMENT_TYPE;
|
|
210
|
+
|
|
211
|
+
this.resetLogHistory();
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
getName()
|
|
215
|
+
{
|
|
216
|
+
return this.instanceName;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
getId()
|
|
220
|
+
{
|
|
221
|
+
return this.instanceId;
|
|
195
222
|
}
|
|
196
223
|
|
|
197
224
|
keepLogHistory()
|
|
@@ -211,7 +238,13 @@ class ____AnaLogger
|
|
|
211
238
|
|
|
212
239
|
getLogHistory(join = true, symbol = EOL)
|
|
213
240
|
{
|
|
214
|
-
const
|
|
241
|
+
const historyLog = this.logHistory;
|
|
242
|
+
if (!historyLog)
|
|
243
|
+
{
|
|
244
|
+
return "";
|
|
245
|
+
}
|
|
246
|
+
const logs = this.logHistory.slice(0);
|
|
247
|
+
const history = JSON.parse(JSON.stringify(logs));
|
|
215
248
|
if (!join)
|
|
216
249
|
{
|
|
217
250
|
return history;
|
|
@@ -254,8 +287,6 @@ class ____AnaLogger
|
|
|
254
287
|
this.options.logToDom = undefined;
|
|
255
288
|
this.options.logToFile = undefined;
|
|
256
289
|
this.options.logToDomlogToFile = undefined;
|
|
257
|
-
this.options.silent = false;
|
|
258
|
-
|
|
259
290
|
}
|
|
260
291
|
|
|
261
292
|
resetOptions()
|
|
@@ -295,9 +326,20 @@ class ____AnaLogger
|
|
|
295
326
|
this.options.hideHookMessage = !!hideHookMessage;
|
|
296
327
|
}
|
|
297
328
|
|
|
298
|
-
|
|
329
|
+
// TODO: Make one of silent or hideToLog options obsolete
|
|
330
|
+
let solveSilent = undefined;
|
|
331
|
+
if (silent !== undefined)
|
|
332
|
+
{
|
|
333
|
+
solveSilent = !!silent;
|
|
334
|
+
}
|
|
335
|
+
else if (hideLog !== undefined)
|
|
336
|
+
{
|
|
337
|
+
solveSilent = !!hideLog;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
if (solveSilent)
|
|
299
341
|
{
|
|
300
|
-
this.options.hideLog = !!
|
|
342
|
+
this.options.hideLog = !!solveSilent;
|
|
301
343
|
}
|
|
302
344
|
|
|
303
345
|
if (hideError !== undefined)
|
|
@@ -337,12 +379,6 @@ class ____AnaLogger
|
|
|
337
379
|
**/
|
|
338
380
|
}
|
|
339
381
|
|
|
340
|
-
if (silent !== undefined)
|
|
341
|
-
{
|
|
342
|
-
this.options.silent = !!silent;
|
|
343
|
-
this.options.hideLog = this.options.silent;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
382
|
}
|
|
347
383
|
|
|
348
384
|
getOptions()
|
|
@@ -593,13 +629,71 @@ class ____AnaLogger
|
|
|
593
629
|
this.log(...args);
|
|
594
630
|
}
|
|
595
631
|
|
|
632
|
+
assistStask(error)
|
|
633
|
+
{
|
|
634
|
+
try
|
|
635
|
+
{
|
|
636
|
+
const lines = error.stack.split("\n");
|
|
637
|
+
const stack = [];
|
|
638
|
+
|
|
639
|
+
for (let i = 0; i < lines.length; ++i)
|
|
640
|
+
{
|
|
641
|
+
const line = lines[i];
|
|
642
|
+
stack.push(line);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
return stack;
|
|
646
|
+
}
|
|
647
|
+
catch (e)
|
|
648
|
+
{
|
|
649
|
+
console.rawError(e.message);
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
return error.message;
|
|
653
|
+
}
|
|
654
|
+
|
|
596
655
|
/**
|
|
597
656
|
* Forward input to real console log
|
|
598
657
|
* @param args
|
|
599
658
|
*/
|
|
600
659
|
onDisplayError(...args)
|
|
601
660
|
{
|
|
602
|
-
|
|
661
|
+
try
|
|
662
|
+
{
|
|
663
|
+
let mainIndex = -1
|
|
664
|
+
let extracted = null;
|
|
665
|
+
for (let i = 0; i < args.length; ++i)
|
|
666
|
+
{
|
|
667
|
+
const arg = args[i];
|
|
668
|
+
if (arg instanceof Error)
|
|
669
|
+
{
|
|
670
|
+
if (arg.stack)
|
|
671
|
+
{
|
|
672
|
+
mainIndex = i;
|
|
673
|
+
extracted = this.assistStask(arg) || []
|
|
674
|
+
break;
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
if (!extracted)
|
|
680
|
+
{
|
|
681
|
+
this.error(...args);
|
|
682
|
+
return
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
for (let i = 0; i < extracted.length; ++i)
|
|
686
|
+
{
|
|
687
|
+
args[mainIndex] = extracted[i];
|
|
688
|
+
this.error(...args);
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
}
|
|
692
|
+
catch (e)
|
|
693
|
+
{
|
|
694
|
+
console.rawError(e);
|
|
695
|
+
}
|
|
696
|
+
|
|
603
697
|
}
|
|
604
698
|
|
|
605
699
|
/**
|
|
@@ -1060,12 +1154,14 @@ class ____AnaLogger
|
|
|
1060
1154
|
catch (e)
|
|
1061
1155
|
{
|
|
1062
1156
|
/* istanbul ignore next */
|
|
1063
|
-
console.
|
|
1157
|
+
console.rawError("AnaLogger:", e.message);
|
|
1064
1158
|
}
|
|
1065
1159
|
}
|
|
1066
1160
|
|
|
1067
1161
|
/**
|
|
1068
|
-
* Check that a parameter
|
|
1162
|
+
* Check that a parameter uses the expected AnaLogger format.
|
|
1163
|
+
* For this, the first parameter should be an object that contains at least
|
|
1164
|
+
* a logging id (lid), a target, a contextName, etc
|
|
1069
1165
|
* @param options
|
|
1070
1166
|
* @returns {boolean}
|
|
1071
1167
|
*/
|
|
@@ -1314,7 +1410,7 @@ class ____AnaLogger
|
|
|
1314
1410
|
{
|
|
1315
1411
|
try
|
|
1316
1412
|
{
|
|
1317
|
-
const
|
|
1413
|
+
const lidLenMax = 4;
|
|
1318
1414
|
|
|
1319
1415
|
const LOG_CONTEXTS = {
|
|
1320
1416
|
STANDARD: null,
|
|
@@ -1341,7 +1437,7 @@ class ____AnaLogger
|
|
|
1341
1437
|
|
|
1342
1438
|
activeTarget && this.setActiveTarget(activeTarget);
|
|
1343
1439
|
|
|
1344
|
-
this.setOptions({silent, hideError: false, hideHookMessage: true, lidLenMax});
|
|
1440
|
+
this.setOptions({silent: false, hideError: false, hideHookMessage: true, lidLenMax});
|
|
1345
1441
|
if (override)
|
|
1346
1442
|
{
|
|
1347
1443
|
this.overrideConsole();
|