analogger 2.3.0 → 2.3.1

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/ana-logger.cjs +33 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "analogger",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "description": "Js Logger",
5
5
  "main": "./src/ana-logger.cjs",
6
6
  "module": "./esm/src/ana-logger.mjs",
@@ -898,6 +898,29 @@ class ____AnaLogger
898
898
  return !this.isNode();
899
899
  }
900
900
 
901
+ /**
902
+ * Get a unique identifier generated once by the logger and saved in the local storage.
903
+ * @returns {string|null}
904
+ */
905
+ getUid()
906
+ {
907
+ if (!this.isBrowser() || typeof window === "undefined" || !window.localStorage)
908
+ {
909
+ return null;
910
+ }
911
+
912
+ const key = "analogger-uid";
913
+ let uid = window.localStorage.getItem(key);
914
+
915
+ if (!uid)
916
+ {
917
+ uid = "uid-" + Date.now() + "-" + Math.floor(Math.random() * 1000000);
918
+ window.localStorage.setItem(key, uid);
919
+ }
920
+
921
+ return uid;
922
+ }
923
+
901
924
  resetLogger()
902
925
  {
903
926
  this.options = {};
@@ -938,6 +961,7 @@ class ____AnaLogger
938
961
  this.options.logToRemoteDebounce = undefined;
939
962
  this.options.logToRemoteMaxSize = undefined;
940
963
  this.options.logToRemoteMinSize = undefined;
964
+ this.options.logUidToRemote = undefined;
941
965
  this.remoteBuffer = [];
942
966
  this.remoteTimer = null;
943
967
  this.remoteWaitCount = 0;
@@ -985,6 +1009,7 @@ class ____AnaLogger
985
1009
  logToRemoteDebounce = undefined,
986
1010
  logToRemoteMaxSize = undefined,
987
1011
  logToRemoteMinSize = undefined,
1012
+ logUidToRemote = undefined,
988
1013
  /** Remote - all optional **/
989
1014
  protocol = undefined,
990
1015
  host = undefined,
@@ -1031,6 +1056,7 @@ class ____AnaLogger
1031
1056
  this.options.logToRemoteDebounce = logToRemoteDebounce;
1032
1057
  this.options.logToRemoteMaxSize = logToRemoteMaxSize;
1033
1058
  this.options.logToRemoteMinSize = logToRemoteMinSize;
1059
+ this.options.logUidToRemote = logUidToRemote;
1034
1060
 
1035
1061
  if (loadHtmlToImage) {
1036
1062
  const code = getHtmlToImage();
@@ -1058,6 +1084,7 @@ class ____AnaLogger
1058
1084
  {hidePassingTests},
1059
1085
  {logToRemote},
1060
1086
  {logToLocalStorage},
1087
+ {logUidToRemote},
1061
1088
  ].forEach((feature) =>
1062
1089
  {
1063
1090
  const key = Object.keys(feature)[0];
@@ -2628,6 +2655,12 @@ class ____AnaLogger
2628
2655
 
2629
2656
  message = this.convertArgumentsToText(args);
2630
2657
 
2658
+ // Ensure UID is set early so it's available in history/context when requested
2659
+ if (this.options.logUidToRemote)
2660
+ {
2661
+ context.uid = this.getUid();
2662
+ }
2663
+
2631
2664
  let output = "";
2632
2665
  let text = this.format({...context, message});
2633
2666