analogger 1.19.0 → 1.20.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 +3 -1
- package/README.md +75 -1
- package/browser/node_modules/flatted/esm/index.mjs +94 -0
- package/browser/node_modules/to-ansi/index.mjs +682 -0
- package/browser/src/ana-logger.mjs +106 -34
- package/browser/src/html-to-image-plugin.mjs +49 -0
- package/browser/src/html-to-image.js +26 -0
- package/dist/analogger-browser.min.mjs +3 -3
- package/esm/src/ana-logger.mjs +104 -32
- package/package.json +11 -7
- package/src/ana-logger.cjs +104 -32
- package/src/html-to-image-plugin.cjs +58 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
# [1.
|
|
1
|
+
# [1.20.0](https://github.com/thimpat/analogger/compare/v1.19.0...v1.20.0) (2022-09-05)
|
|
2
2
|
|
|
3
|
+
# [1.19.0](https://github.com/thimpat/analogger/compare/v1.18.3...v1.19.0) (2022-09-03)
|
|
4
|
+
|
|
3
5
|
## [1.18.3](https://github.com/thimpat/analogger/compare/v1.18.2...v1.18.3) (2022-08-31)
|
|
4
6
|
|
|
5
7
|
## [1.18.2](https://github.com/thimpat/analogger/compare/v1.18.1...v1.18.2) (2022-08-13)
|
package/README.md
CHANGED
|
@@ -97,6 +97,9 @@ import {anaLogger} from "./node_modules/analogger/dist/analogger-browser.min.mjs
|
|
|
97
97
|
#### FileSystem
|
|
98
98
|

|
|
99
99
|
|
|
100
|
+
#### Remote logging
|
|
101
|
+

|
|
102
|
+
|
|
100
103
|
<br/>
|
|
101
104
|
|
|
102
105
|
---
|
|
@@ -327,12 +330,13 @@ Display the browser native message box if run from it; otherwise, it displays th
|
|
|
327
330
|
| logToRemote | undefined | string (url) | _Send log to a remote (more info in the next version)_ |
|
|
328
331
|
| requiredLogLevel | "LOG" | "LOG" / "INFO" / "WARN" / "ERROR" | _Define the log level from which the system can show a log entry_ |
|
|
329
332
|
|
|
333
|
+
<br/>
|
|
330
334
|
|
|
331
335
|
```javascript
|
|
332
336
|
// No hook alert message + Log messages in the div #analogger
|
|
333
337
|
anaLogger.setOptions({hideHookMessage: true, logToDom: "#analogger"})
|
|
334
338
|
```
|
|
335
|
-
|
|
339
|
+
|
|
336
340
|
<br/>
|
|
337
341
|
|
|
338
342
|
#### Examples
|
|
@@ -353,6 +357,18 @@ anaLogger.setOptions({silent: false, logToFile: logFilePath});
|
|
|
353
357
|
|
|
354
358
|
<br/>
|
|
355
359
|
|
|
360
|
+
##### Write logs to a remote server
|
|
361
|
+
|
|
362
|
+
```javascript
|
|
363
|
+
// Use a predefined remote server
|
|
364
|
+
anaLogger.setOptions({logToRemote: true});
|
|
365
|
+
|
|
366
|
+
// Use your remote server (You are resposible for the back-end implementation)
|
|
367
|
+
anaLogger.setOptions({logToRemote: "http://your.server.com/data"});
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
<br/>
|
|
371
|
+
|
|
356
372
|
---
|
|
357
373
|
|
|
358
374
|
### overrideConsole()
|
|
@@ -641,5 +657,63 @@ anaLoggerInstance2.setOptions({logToFile: "./logme.log"});
|
|
|
641
657
|
```
|
|
642
658
|
|
|
643
659
|
<br/>
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
## Take a screenshot
|
|
663
|
+
|
|
664
|
+
### takeScreenshot()
|
|
665
|
+
|
|
666
|
+
You can take screenshot via the "html-to-image" plugin (integrated in the module).
|
|
667
|
+
html-to-image is an external module that this module uses to take screenshots.
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
```javascript
|
|
671
|
+
// Load an AnaLogger instance
|
|
672
|
+
import {anaLogger} from "./node_modules/analogger/browser/src/ana-logger.mjs";
|
|
673
|
+
|
|
674
|
+
// Register the plugin
|
|
675
|
+
import "./node_modules/analogger/browser/src/html-to-image-plugin.mjs";
|
|
676
|
+
|
|
677
|
+
// Ask AnaLogger to upload the image to the predefined server (not available yet - should be ready by 08/08/2022)
|
|
678
|
+
anaLogger.setOptions({logToRemote: true});
|
|
679
|
+
|
|
680
|
+
// Take a screenshot then upload to the server
|
|
681
|
+
anaLogger.takeScreenshot({callback: (data) =>
|
|
682
|
+
{
|
|
683
|
+
// Add the image to the DOM
|
|
684
|
+
const img = new Image();
|
|
685
|
+
img.src = data;
|
|
686
|
+
document.body.appendChild(img);
|
|
687
|
+
}});
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
```
|
|
691
|
+
|
|
644
692
|
<br/>
|
|
645
693
|
|
|
694
|
+
---
|
|
695
|
+
|
|
696
|
+
## Plugins
|
|
697
|
+
|
|
698
|
+
### Implement a plugin
|
|
699
|
+
|
|
700
|
+
```javascript
|
|
701
|
+
// Load anaLogger
|
|
702
|
+
import {anaLogger} from "./ana-logger.mjs";
|
|
703
|
+
|
|
704
|
+
// Implement
|
|
705
|
+
const doSomething = ({node = document.body, container = document.body} = {}) =>
|
|
706
|
+
{
|
|
707
|
+
console.log(`Hello plugin`)
|
|
708
|
+
};
|
|
709
|
+
|
|
710
|
+
// Register the plugin
|
|
711
|
+
anaLogger.addPlugin("doSomething", doSomething);
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
---
|
|
718
|
+
|
|
719
|
+
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/*! (c) 2020 Andrea Giammarchi */
|
|
2
|
+
|
|
3
|
+
const {parse: $parse, stringify: $stringify} = JSON;
|
|
4
|
+
const {keys} = Object;
|
|
5
|
+
|
|
6
|
+
const Primitive = String; // it could be Number
|
|
7
|
+
const primitive = 'string'; // it could be 'number'
|
|
8
|
+
|
|
9
|
+
const ignore = {};
|
|
10
|
+
const object = 'object';
|
|
11
|
+
|
|
12
|
+
const noop = (_, value) => value;
|
|
13
|
+
|
|
14
|
+
const primitives = value => (
|
|
15
|
+
value instanceof Primitive ? Primitive(value) : value
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const Primitives = (_, value) => (
|
|
19
|
+
typeof value === primitive ? new Primitive(value) : value
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
const revive = (input, parsed, output, $) => {
|
|
23
|
+
const lazy = [];
|
|
24
|
+
for (let ke = keys(output), {length} = ke, y = 0; y < length; y++) {
|
|
25
|
+
const k = ke[y];
|
|
26
|
+
const value = output[k];
|
|
27
|
+
if (value instanceof Primitive) {
|
|
28
|
+
const tmp = input[value];
|
|
29
|
+
if (typeof tmp === object && !parsed.has(tmp)) {
|
|
30
|
+
parsed.add(tmp);
|
|
31
|
+
output[k] = ignore;
|
|
32
|
+
lazy.push({k, a: [input, parsed, tmp, $]});
|
|
33
|
+
}
|
|
34
|
+
else
|
|
35
|
+
output[k] = $.call(output, k, tmp);
|
|
36
|
+
}
|
|
37
|
+
else if (output[k] !== ignore)
|
|
38
|
+
output[k] = $.call(output, k, value);
|
|
39
|
+
}
|
|
40
|
+
for (let {length} = lazy, i = 0; i < length; i++) {
|
|
41
|
+
const {k, a} = lazy[i];
|
|
42
|
+
output[k] = $.call(output, k, revive.apply(null, a));
|
|
43
|
+
}
|
|
44
|
+
return output;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const set = (known, input, value) => {
|
|
48
|
+
const index = Primitive(input.push(value) - 1);
|
|
49
|
+
known.set(value, index);
|
|
50
|
+
return index;
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export const parse = (text, reviver) => {
|
|
54
|
+
const input = $parse(text, Primitives).map(primitives);
|
|
55
|
+
const value = input[0];
|
|
56
|
+
const $ = reviver || noop;
|
|
57
|
+
const tmp = typeof value === object && value ?
|
|
58
|
+
revive(input, new Set, value, $) :
|
|
59
|
+
value;
|
|
60
|
+
return $.call({'': tmp}, '', tmp);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export const stringify = (value, replacer, space) => {
|
|
64
|
+
const $ = replacer && typeof replacer === object ?
|
|
65
|
+
(k, v) => (k === '' || -1 < replacer.indexOf(k) ? v : void 0) :
|
|
66
|
+
(replacer || noop);
|
|
67
|
+
const known = new Map;
|
|
68
|
+
const input = [];
|
|
69
|
+
const output = [];
|
|
70
|
+
let i = +set(known, input, $.call({'': value}, '', value));
|
|
71
|
+
let firstRun = !i;
|
|
72
|
+
while (i < input.length) {
|
|
73
|
+
firstRun = true;
|
|
74
|
+
output[i] = $stringify(input[i++], replace, space);
|
|
75
|
+
}
|
|
76
|
+
return '[' + output.join(',') + ']';
|
|
77
|
+
function replace(key, value) {
|
|
78
|
+
if (firstRun) {
|
|
79
|
+
firstRun = !firstRun;
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
const after = $.call(this, key, value);
|
|
83
|
+
switch (typeof after) {
|
|
84
|
+
case object:
|
|
85
|
+
if (after === null) return after;
|
|
86
|
+
case primitive:
|
|
87
|
+
return known.get(after) || set(known, input, after);
|
|
88
|
+
}
|
|
89
|
+
return after;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export const toJSON = any => $parse(stringify(any));
|
|
94
|
+
export const fromJSON = any => parse($stringify(any));
|