expensify-common 2.0.170 → 2.0.171

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/dist/Logger.d.ts CHANGED
@@ -12,12 +12,14 @@ type LogLine = {
12
12
  parameters: Parameters;
13
13
  onlyFlushWithOthers?: boolean;
14
14
  timestamp: Date;
15
+ email?: string | null;
15
16
  };
16
17
  type LoggerOptions = {
17
18
  serverLoggingCallback: ServerLoggingCallback;
18
19
  isDebug: boolean;
19
20
  clientLoggingCallback: ClientLoggingCallBack;
20
21
  maxLogLinesBeforeFlush?: number;
22
+ getContextEmail?: () => string | null;
21
23
  };
22
24
  export default class Logger {
23
25
  logLines: LogLine[];
@@ -25,7 +27,8 @@ export default class Logger {
25
27
  clientLoggingCallback: ClientLoggingCallBack;
26
28
  isDebug: boolean;
27
29
  maxLogLinesBeforeFlush: number;
28
- constructor({ serverLoggingCallback, isDebug, clientLoggingCallback, maxLogLinesBeforeFlush }: LoggerOptions);
30
+ getContextEmail?: () => string | null;
31
+ constructor({ serverLoggingCallback, isDebug, clientLoggingCallback, maxLogLinesBeforeFlush, getContextEmail }: LoggerOptions);
29
32
  /**
30
33
  * Ask the server to write the log message
31
34
  */
package/dist/Logger.js CHANGED
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const MAX_LOG_LINES_BEFORE_FLUSH = 50;
4
4
  class Logger {
5
- constructor({ serverLoggingCallback, isDebug, clientLoggingCallback, maxLogLinesBeforeFlush }) {
5
+ constructor({ serverLoggingCallback, isDebug, clientLoggingCallback, maxLogLinesBeforeFlush, getContextEmail }) {
6
6
  // An array of log lines that limits itself to a certain number of entries (deleting the oldest)
7
7
  this.logLines = [];
8
8
  this.serverLoggingCallback = serverLoggingCallback;
9
9
  this.clientLoggingCallback = clientLoggingCallback;
10
10
  this.isDebug = isDebug;
11
11
  this.maxLogLinesBeforeFlush = maxLogLinesBeforeFlush || MAX_LOG_LINES_BEFORE_FLUSH;
12
+ this.getContextEmail = getContextEmail;
12
13
  // Public Methods
13
14
  this.info = this.info.bind(this);
14
15
  this.alert = this.alert.bind(this);
@@ -51,11 +52,21 @@ class Logger {
51
52
  * @param onlyFlushWithOthers A request will never be sent to the server if all loglines have this set to true
52
53
  */
53
54
  add(message, parameters, forceFlushToServer, onlyFlushWithOthers = false, extraData = '') {
55
+ // Capture the user's email at the moment this specific log line is created
56
+ // This ensures the log retains user context even if the session is cleared before sending
57
+ let email = null;
58
+ try {
59
+ email = this.getContextEmail ? this.getContextEmail() : null;
60
+ }
61
+ catch (_a) {
62
+ // Silently fail if getContextEmail throws - logging should not crash
63
+ }
54
64
  const length = this.logLines.push({
55
65
  message,
56
66
  parameters,
57
67
  onlyFlushWithOthers,
58
68
  timestamp: new Date(),
69
+ email,
59
70
  });
60
71
  if (this.isDebug) {
61
72
  this.client(`${message} - ${JSON.stringify(parameters)}`, extraData);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expensify-common",
3
- "version": "2.0.170",
3
+ "version": "2.0.171",
4
4
  "author": "Expensify, Inc.",
5
5
  "description": "Expensify libraries and components shared across different repos",
6
6
  "homepage": "https://expensify.com",