expensify-common 2.0.6 → 2.0.8

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.
@@ -1,3 +1,5 @@
1
+ import type Logger from './Logger';
2
+
1
3
  declare type Replacement = (...args: string[], extras?: ExtrasObject) => string;
2
4
  declare type Name =
3
5
  | 'codeFence'
@@ -39,6 +41,9 @@ declare type ExtrasObject = {
39
41
  accountIDToName?: Record<string, string>;
40
42
  };
41
43
  export default class ExpensiMark {
44
+ static Log: Logger;
45
+ static setLogger(logger: Logger): void;
46
+
42
47
  rules: Rule[];
43
48
  htmlToMarkdownRules: Rule[];
44
49
  htmlToTextRules: Rule[];
@@ -30,11 +30,18 @@ const _ = __importStar(require("underscore"));
30
30
  const str_1 = __importDefault(require("./str"));
31
31
  const Constants = __importStar(require("./CONST"));
32
32
  const UrlPatterns = __importStar(require("./Url"));
33
- const Log_1 = __importDefault(require("./Log"));
33
+ const Logger_1 = __importDefault(require("./Logger"));
34
34
  const MARKDOWN_LINK_REGEX = new RegExp(`\\[([^\\][]*(?:\\[[^\\][]*][^\\][]*)*)]\\(${UrlPatterns.MARKDOWN_URL_REGEX}\\)(?![^<]*(<\\/pre>|<\\/code>))`, 'gi');
35
35
  const MARKDOWN_IMAGE_REGEX = new RegExp(`\\!(?:\\[([^\\][]*(?:\\[[^\\][]*][^\\][]*)*)])?\\(${UrlPatterns.MARKDOWN_URL_REGEX}\\)(?![^<]*(<\\/pre>|<\\/code>))`, 'gi');
36
36
  const SLACK_SPAN_NEW_LINE_TAG = '<span class="c-mrkdwn__br" data-stringify-type="paragraph-break" style="box-sizing: inherit; display: block; height: unset;"></span>';
37
37
  class ExpensiMark {
38
+ /**
39
+ * Set the logger to use for logging inside of the ExpensiMark class
40
+ * @param {Object} logger - The logger object to use
41
+ */
42
+ static setLogger(logger) {
43
+ ExpensiMark.Log = logger;
44
+ }
38
45
  constructor() {
39
46
  /**
40
47
  * The list of regex replacements to do on a comment. Check the link regex is first so links are processed
@@ -246,7 +253,8 @@ class ExpensiMark {
246
253
  const regex = /^(?:&gt;)+ +(?! )(?![^<]*(?:<\/pre>|<\/code>))([^\v\n\r]+)/gm;
247
254
  const replaceFunction = (g1) => replacement(g1, shouldKeepRawInput);
248
255
  if (shouldKeepRawInput) {
249
- return textToProcess.replace(regex, replaceFunction);
256
+ const rawInputRegex = /^(?:&gt;)+ +(?! )(?![^<]*(?:<\/pre>|<\/code>))([^\v\n\r]*)/gm;
257
+ return textToProcess.replace(rawInputRegex, replaceFunction);
250
258
  }
251
259
  return this.modifyTextForQuote(regex, textToProcess, replacement);
252
260
  },
@@ -478,7 +486,7 @@ class ExpensiMark {
478
486
  replacement: (match, g1, offset, string, extras) => {
479
487
  const reportToNameMap = extras.reportIDToName;
480
488
  if (!reportToNameMap || !reportToNameMap[g1]) {
481
- Log_1.default.alert('[ExpensiMark] Missing report name', { reportID: g1 });
489
+ ExpensiMark.Log.alert('[ExpensiMark] Missing report name', { reportID: g1 });
482
490
  return '#Hidden';
483
491
  }
484
492
  return reportToNameMap[g1];
@@ -491,7 +499,7 @@ class ExpensiMark {
491
499
  if (g1) {
492
500
  const accountToNameMap = extras.accountIDToName;
493
501
  if (!accountToNameMap || !accountToNameMap[g1]) {
494
- Log_1.default.alert('[ExpensiMark] Missing account name', { accountID: g1 });
502
+ ExpensiMark.Log.alert('[ExpensiMark] Missing account name', { accountID: g1 });
495
503
  return '@Hidden';
496
504
  }
497
505
  return `@${extras.accountIDToName[g1]}`;
@@ -547,7 +555,7 @@ class ExpensiMark {
547
555
  replacement: (match, g1, offset, string, extras) => {
548
556
  const reportToNameMap = extras.reportIDToName;
549
557
  if (!reportToNameMap || !reportToNameMap[g1]) {
550
- Log_1.default.alert('[ExpensiMark] Missing report name', { reportID: g1 });
558
+ ExpensiMark.Log.alert('[ExpensiMark] Missing report name', { reportID: g1 });
551
559
  return '#Hidden';
552
560
  }
553
561
  return reportToNameMap[g1];
@@ -559,7 +567,7 @@ class ExpensiMark {
559
567
  replacement: (match, g1, offset, string, extras) => {
560
568
  const accountToNameMap = extras.accountIDToName;
561
569
  if (!accountToNameMap || !accountToNameMap[g1]) {
562
- Log_1.default.alert('[ExpensiMark] Missing account name', { accountID: g1 });
570
+ ExpensiMark.Log.alert('[ExpensiMark] Missing account name', { accountID: g1 });
563
571
  return '@Hidden';
564
572
  }
565
573
  return `@${extras.accountIDToName[g1]}`;
@@ -1046,4 +1054,10 @@ class ExpensiMark {
1046
1054
  return _.escape(originalContent);
1047
1055
  }
1048
1056
  }
1057
+ ExpensiMark.Log = new Logger_1.default({
1058
+ serverLoggingCallback: _.noop,
1059
+ // eslint-disable-next-line no-console
1060
+ clientLoggingCallback: (message) => console.warn(message),
1061
+ isDebug: true,
1062
+ });
1049
1063
  exports.default = ExpensiMark;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expensify-common",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "author": "Expensify, Inc.",
5
5
  "description": "Expensify libraries and components shared across different repos",
6
6
  "homepage": "https://expensify.com",