@sasjs/lint 4.7.0 → 4.8.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.
Files changed (40) hide show
  1. package/README.md +5 -0
  2. package/package.json +1 -1
  3. package/rules/file/hasDoxygenHeader.js +1 -1
  4. package/rules/file/hasMacroNameInMend.js +22 -10
  5. package/rules/file/hasMacroNameInMend.js.map +1 -1
  6. package/rules/file/hasMacroParentheses.js +6 -3
  7. package/rules/file/hasMacroParentheses.js.map +1 -1
  8. package/rules/file/lineEndings.js +7 -5
  9. package/rules/file/lineEndings.js.map +1 -1
  10. package/rules/file/minMacroNameLength.js +2 -4
  11. package/rules/file/minMacroNameLength.js.map +1 -1
  12. package/rules/file/noNestedCommentsInHeader.js +1 -1
  13. package/rules/file/noNestedMacros.js +2 -2
  14. package/rules/file/noNestedMacros.js.map +1 -1
  15. package/rules/file/noSingleAsteriskComments.js +1 -1
  16. package/rules/file/noSingleAsteriskComments.js.map +1 -1
  17. package/rules/file/strictMacroDefinition.js +121 -46
  18. package/rules/file/strictMacroDefinition.js.map +1 -1
  19. package/rules/line/noBannedStrings.js +1 -1
  20. package/rules/line/noBannedStrings.js.map +1 -1
  21. package/rules/line/noEncodedPasswords.js +1 -1
  22. package/rules/line/noEncodedPasswords.js.map +1 -1
  23. package/rules/line/noGremlins.js +1 -1
  24. package/rules/line/noGremlins.js.map +1 -1
  25. package/rules/line/noTabs.js +1 -1
  26. package/types/Diagnostic.d.ts +5 -0
  27. package/utils/escapeRegExp.d.ts +2 -0
  28. package/utils/escapeRegExp.js +7 -0
  29. package/utils/escapeRegExp.js.map +1 -0
  30. package/utils/getColumnNumber.d.ts +14 -1
  31. package/utils/getColumnNumber.js +20 -3
  32. package/utils/getColumnNumber.js.map +1 -1
  33. package/utils/index.d.ts +1 -0
  34. package/utils/index.js +1 -0
  35. package/utils/index.js.map +1 -1
  36. package/utils/parseMacros.js +45 -20
  37. package/utils/parseMacros.js.map +1 -1
  38. package/utils/trimComments.d.ts +21 -1
  39. package/utils/trimComments.js +52 -30
  40. package/utils/trimComments.js.map +1 -1
package/README.md CHANGED
@@ -16,6 +16,7 @@ _Note:_ The SASjs project and its repositories are not affiliated with SAS Insti
16
16
 
17
17
  - [@sasjs/vscode-extension](https://github.com/sasjs/vscode-extension) - just download SASjs in the VSCode marketplace, and select view/problems in the menu bar.
18
18
  - [@sasjs/cli](https://cli.sasjs.io/lint) - run `sasjs lint` to get a list of all files with their problems, along with line and column indexes.
19
+ - [SASjs Server](https://server.sasjs.io) - the Studio editor lints and formats its buffer through `POST /SASjsApi/code/lint` and `POST /SASjsApi/code/format`, resolving the `.sasjslint` nearest to the file so each folder in the drive can carry its own rules.
19
20
 
20
21
  Configuration is via a `.sasjslint` file with the following structure (these are also the defaults - a setting that is absent, and a project with no `.sasjslint` file at all, uses the value below):
21
22
 
@@ -71,6 +72,10 @@ For more details, and the default state, see the description of each rule below.
71
72
 
72
73
  Configuring a non-zero return code (ERROR) is helpful when running `sasjs lint` as part of a git pre-commit hook. An example is available [here](https://github.com/sasjs/template_jobs/blob/main/.git-hooks/pre-commit).
73
74
 
75
+ ## Diagnostic columns
76
+
77
+ A diagnostic carries `lineNumber`, `startColumnNumber` and `endColumnNumber`. Both columns are 1-based, and `endColumnNumber` is the column of the span's LAST character - a one-character span starts and ends on the same column. A consumer that highlights `startColumnNumber` through `endColumnNumber` inclusive therefore covers exactly the text the rule reports.
78
+
74
79
  ## Per-file overrides
75
80
 
76
81
  A file can adjust the configuration for itself, with a `@sasjslint` block in its Doxygen header:
package/package.json CHANGED
@@ -100,7 +100,7 @@
100
100
  "overrides": {
101
101
  "qs": "6.17.0"
102
102
  },
103
- "version": "4.7.0",
103
+ "version": "4.8.0",
104
104
  "devEngines": {
105
105
  "runtime": {
106
106
  "name": "node",
@@ -50,7 +50,7 @@ const diagnose = (value, config) => {
50
50
  message: messageForSingleAsteriskClose,
51
51
  lineNumber,
52
52
  startColumnNumber: columnNumber,
53
- endColumnNumber: columnNumber + 2,
53
+ endColumnNumber: columnNumber + 1,
54
54
  severity,
55
55
  close
56
56
  };
@@ -21,8 +21,10 @@ const test = (value, config) => {
21
21
  diagnostics.push({
22
22
  message: `%mend statement is redundant`,
23
23
  lineNumber: macro.endLineNumber,
24
- startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend'),
25
- endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend') + macro.termination.length,
24
+ startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend', true),
25
+ endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend', true) +
26
+ macro.termination.length -
27
+ 1,
26
28
  severity
27
29
  });
28
30
  }
@@ -53,8 +55,10 @@ const test = (value, config) => {
53
55
  diagnostics.push({
54
56
  message: `%mend statement is missing macro name - ${macro.name}`,
55
57
  lineNumber: macro.endLineNumber,
56
- startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend'),
57
- endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend') + 6,
58
+ startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend', true),
59
+ // The span covers the keyword itself, so it ends on its last character
60
+ // whatever its length - `%mend` is five characters, not seven.
61
+ endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend', true) + '%mend'.length - 1,
58
62
  severity
59
63
  });
60
64
  }
@@ -69,10 +73,13 @@ const fix = (value, config) => {
69
73
  if (macro.startLineNumbers.length === 0 && macro.endLineNumber !== null) {
70
74
  // %mend statement is redundant
71
75
  const endLine = lines[macro.endLineNumber - 1];
72
- const startColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend');
73
- const endColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend') + macro.termination.length;
76
+ const startColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend', true);
77
+ const endColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend', true) + macro.termination.length - 1;
74
78
  const beforeStatement = endLine.slice(0, startColumnNumber - 1);
75
- const afterStatement = endLine.slice(endColumnNumber);
79
+ // `termination` is the statement as the parser split it, so what follows it
80
+ // is optional whitespace and its own `;` - both go with the statement.
81
+ const trailing = endLine.slice(endColumnNumber).match(/^\s*;?/)[0].length;
82
+ const afterStatement = endLine.slice(endColumnNumber + trailing);
76
83
  lines[macro.endLineNumber - 1] = beforeStatement + afterStatement;
77
84
  }
78
85
  else if (macro.endLineNumber === null &&
@@ -94,12 +101,17 @@ const fix = (value, config) => {
94
101
  else if (!macro.hasMacroNameInMend) {
95
102
  // %mend statement is missing macro name
96
103
  const endLine = lines[macro.endLineNumber - 1];
97
- const startColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend');
98
- const endColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend') + 4;
104
+ const startColumnNumber = (0, getColumnNumber_1.getColumnNumber)(endLine, '%mend', true);
105
+ // The keyword keeps the capitalisation the file wrote - the fix adds a
106
+ // name, it does not restyle the statement.
107
+ const keyword = endLine.slice(startColumnNumber - 1, startColumnNumber - 1 + '%mend'.length);
108
+ const endColumnNumber = startColumnNumber + keyword.length - 1;
99
109
  const beforeStatement = endLine.slice(0, startColumnNumber - 1);
110
+ // The keyword is replaced in place: whatever follows it, `;` included, is
111
+ // kept.
100
112
  const afterStatement = endLine.slice(endColumnNumber);
101
113
  lines[macro.endLineNumber - 1] =
102
- beforeStatement + `%mend ${macro.name}` + afterStatement;
114
+ beforeStatement + `${keyword} ${macro.name}` + afterStatement;
103
115
  }
104
116
  });
105
117
  const formattedText = lines.join(lineEnding);
@@ -1 +1 @@
1
- {"version":3,"file":"hasMacroNameInMend.js","sourceRoot":"","sources":["../../../src/rules/file/hasMacroNameInMend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hasMacroNameInMend.js","sourceRoot":"","sources":["../../../src/rules/file/hasMacroNameInMend.ts"],"names":[],"mappings":"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"}
@@ -17,9 +17,12 @@ const test = (value, config) => {
17
17
  diagnostics.push({
18
18
  message: 'Macro definition missing name',
19
19
  lineNumber: macro.startLineNumbers[0],
20
- startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(macro.declarationLines[0], '%macro'),
21
- endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(macro.declarationLines[0], '%macro') +
22
- macro.declaration.length,
20
+ startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(macro.declarationLines[0], '%macro', true),
21
+ // The span ends on the declaration's last character, the convention the
22
+ // other macro rules use.
23
+ endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(macro.declarationLines[0], '%macro', true) +
24
+ macro.declaration.length -
25
+ 1,
23
26
  severity
24
27
  });
25
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hasMacroParentheses.js","sourceRoot":"","sources":["../../../src/rules/file/hasMacroParentheses.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mDAA+C;AAC/C,iEAA6D;AAC7D,yDAAqD;AAGrD,MAAM,IAAI,GAAG,qBAAqB,CAAA;AAClC,MAAM,WAAW,GAAG,4DAA4D,CAAA;AAChF,MAAM,OAAO,GAAG,sCAAsC,CAAA;AAEtD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,MAAmB,EAAE,EAAE;IAClD,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAEhE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,+BAA+B;gBACxC,UAAU,EAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAC;gBACtC,iBAAiB,EAAE,IAAA,iCAAe,EAChC,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAC,EAC1B,QAAQ,CACT;gBACD,eAAe,EACb,IAAA,iCAAe,EAAC,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;oBACrD,KAAK,CAAC,WAAW,CAAC,MAAM;gBAC1B,QAAQ;aACT,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CACjE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACxB,CAAA;YACD,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO;gBACP,UAAU,EAAE,KAAK,CAAC,gBAAiB,CAAC,kBAAkB,CAAC;gBACvD,iBAAiB,EAAE,IAAA,iCAAe,EAChC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAC1C,KAAK,CAAC,IAAI,CACX;gBACD,eAAe,EACb,IAAA,iCAAe,EACb,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAC1C,KAAK,CAAC,IAAI,CACX;oBACD,KAAK,CAAC,IAAI,CAAC,MAAM;oBACjB,CAAC;gBACH,QAAQ;aACT,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,mBAAmB,GAAiB;IAC/C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA"}
1
+ {"version":3,"file":"hasMacroParentheses.js","sourceRoot":"","sources":["../../../src/rules/file/hasMacroParentheses.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mDAA+C;AAC/C,iEAA6D;AAC7D,yDAAqD;AAGrD,MAAM,IAAI,GAAG,qBAAqB,CAAA;AAClC,MAAM,WAAW,GAAG,4DAA4D,CAAA;AAChF,MAAM,OAAO,GAAG,sCAAsC,CAAA;AAEtD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,MAAmB,EAAE,EAAE;IAClD,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAEhE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAChB,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,+BAA+B;gBACxC,UAAU,EAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAC;gBACtC,iBAAiB,EAAE,IAAA,iCAAe,EAChC,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAC,EAC1B,QAAQ,EACR,IAAI,CACL;gBACD,wEAAwE;gBACxE,yBAAyB;gBACzB,eAAe,EACb,IAAA,iCAAe,EAAC,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC;oBAC3D,KAAK,CAAC,WAAW,CAAC,MAAM;oBACxB,CAAC;gBACH,QAAQ;aACT,CAAC,CAAA;QACJ,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAClE,MAAM,kBAAkB,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CACjE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CACxB,CAAA;YACD,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO;gBACP,UAAU,EAAE,KAAK,CAAC,gBAAiB,CAAC,kBAAkB,CAAC;gBACvD,iBAAiB,EAAE,IAAA,iCAAe,EAChC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAC1C,KAAK,CAAC,IAAI,CACX;gBACD,eAAe,EACb,IAAA,iCAAe,EACb,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAC1C,KAAK,CAAC,IAAI,CACX;oBACD,KAAK,CAAC,IAAI,CAAC,MAAM;oBACjB,CAAC;gBACH,QAAQ;aACT,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,mBAAmB,GAAiB;IAC/C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA"}
@@ -26,8 +26,9 @@ const test = (value, config) => {
26
26
  .replace('{expected}', expectedLineEnding === '{lf}' ? 'LF' : 'CRLF')
27
27
  .replace('{actual}', incorrectLineEnding === '{lf}' ? 'LF' : 'CRLF'),
28
28
  lineNumber: index + 1 + indexOffset,
29
- startColumnNumber: line.indexOf(incorrectLineEnding),
30
- endColumnNumber: line.indexOf(incorrectLineEnding) + 1,
29
+ startColumnNumber: line.indexOf(incorrectLineEnding) + 1,
30
+ endColumnNumber: line.indexOf(incorrectLineEnding) +
31
+ (incorrectLineEnding === '{crlf}' ? 2 : 1),
31
32
  severity
32
33
  });
33
34
  }
@@ -43,8 +44,9 @@ const test = (value, config) => {
43
44
  .replace('{expected}', expectedLineEnding === '{lf}' ? 'LF' : 'CRLF')
44
45
  .replace('{actual}', incorrectLineEnding === '{lf}' ? 'LF' : 'CRLF'),
45
46
  lineNumber: index + i + 1,
46
- startColumnNumber: l.indexOf(incorrectLineEnding),
47
- endColumnNumber: l.indexOf(incorrectLineEnding) + 1,
47
+ startColumnNumber: l.indexOf(incorrectLineEnding) + 1,
48
+ endColumnNumber: l.indexOf(incorrectLineEnding) +
49
+ (incorrectLineEnding === '{crlf}' ? 2 : 1),
48
50
  severity
49
51
  });
50
52
  }
@@ -63,7 +65,7 @@ const test = (value, config) => {
63
65
  message: missingMessage.replace('{expected}', expectedLineEnding === '{lf}' ? 'LF' : 'CRLF'),
64
66
  lineNumber: lastLines.length,
65
67
  startColumnNumber: lastLine.length + 1,
66
- endColumnNumber: lastLine.length + 2,
68
+ endColumnNumber: lastLine.length + 1,
67
69
  severity
68
70
  });
69
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lineEndings.js","sourceRoot":"","sources":["../../../src/rules/file/lineEndings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lineEndings.js","sourceRoot":"","sources":["../../../src/rules/file/lineEndings.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,6 @@ const splitLines_1 = require("../../utils/splitLines");
11
11
  const name = 'minMacroNameLength';
12
12
  const description = 'Ensure a macro name is long enough not to collide with another language.';
13
13
  const message = `Macro name '{macro}' is shorter than {length} characters`;
14
- /** Escapes a macro name so it can be interpolated into a RegExp literally. */
15
- const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
16
14
  /**
17
15
  * The block-comment spans on a line. A `/*` inside a single-quoted string opens
18
16
  * nothing - `%put '/*';` writes those characters - so the scan tracks quotes.
@@ -90,12 +88,12 @@ const test = (value, config) => {
90
88
  const occurrence = (_a = seen.get(key)) !== null && _a !== void 0 ? _a : 0;
91
89
  seen.set(key, occurrence + 1);
92
90
  const matches = [
93
- ...line.matchAll(new RegExp(`%macro\\s+${escapeRegExp(macro.name)}\\b`, 'gi'))
91
+ ...line.matchAll(new RegExp(`%macro\\s+${(0, utils_1.escapeRegExp)(macro.name)}\\b`, 'gi'))
94
92
  ].filter((match) => !inComment(line, match.index));
95
93
  const declaration = matches[occurrence];
96
94
  const startColumnNumber = declaration
97
95
  ? declaration.index + 1
98
- : (0, getColumnNumber_1.getColumnNumber)(line, '%macro');
96
+ : (0, getColumnNumber_1.getColumnNumber)(line, '%macro', true);
99
97
  return {
100
98
  message: message
101
99
  .replace('{macro}', macro.name)
@@ -1 +1 @@
1
- {"version":3,"file":"minMacroNameLength.js","sourceRoot":"","sources":["../../../src/rules/file/minMacroNameLength.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"minMacroNameLength.js","sourceRoot":"","sources":["../../../src/rules/file/minMacroNameLength.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,7 @@ const test = (value, config) => {
86
86
  : message,
87
87
  lineNumber,
88
88
  startColumnNumber: columnNumber,
89
- endColumnNumber: columnNumber + 2,
89
+ endColumnNumber: columnNumber + 1,
90
90
  severity
91
91
  }
92
92
  ];
@@ -22,8 +22,8 @@ const test = (value, config) => {
22
22
  .replace('{macro}', macro.name)
23
23
  .replace('{parent}', macro.parentMacro),
24
24
  lineNumber: macro.startLineNumbers[0],
25
- startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(lines[macro.startLineNumbers[0] - 1], '%macro'),
26
- endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(lines[macro.startLineNumbers[0] - 1], '%macro') +
25
+ startColumnNumber: (0, getColumnNumber_1.getColumnNumber)(lines[macro.startLineNumbers[0] - 1], '%macro', true),
26
+ endColumnNumber: (0, getColumnNumber_1.getColumnNumber)(lines[macro.startLineNumbers[0] - 1], '%macro', true) +
27
27
  lines[macro.startLineNumbers[0] - 1].trim().length -
28
28
  1,
29
29
  severity
@@ -1 +1 @@
1
- {"version":3,"file":"noNestedMacros.js","sourceRoot":"","sources":["../../../src/rules/file/noNestedMacros.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mDAA+C;AAC/C,iEAA6D;AAC7D,yDAAqD;AACrD,uDAAmD;AAGnD,MAAM,IAAI,GAAG,gBAAgB,CAAA;AAC7B,MAAM,WAAW,GAAG,kDAAkD,CAAA;AACtE,MAAM,OAAO,GAAG,4DAA4D,CAAA;AAE5E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,MAAmB,EAAE,EAAE;IAClD,MAAM,KAAK,GAAG,IAAA,uBAAU,EAAC,KAAK,CAAC,CAAA;IAC/B,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAEhE,MAAM;SACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SAC9B,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,WAAW,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,OAAO;iBACb,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC;iBAC9B,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC;YACzC,UAAU,EAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAW;YAChD,iBAAiB,EAAE,IAAA,iCAAe,EAChC,KAAK,CAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAY,GAAG,CAAC,CAAC,EACjD,QAAQ,CACT;YACD,eAAe,EACb,IAAA,iCAAe,EACb,KAAK,CAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAY,GAAG,CAAC,CAAC,EACjD,QAAQ,CACT;gBACD,KAAK,CAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAY,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM;gBAC/D,CAAC;YACH,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACJ,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,cAAc,GAAiB;IAC1C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA"}
1
+ {"version":3,"file":"noNestedMacros.js","sourceRoot":"","sources":["../../../src/rules/file/noNestedMacros.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mDAA+C;AAC/C,iEAA6D;AAC7D,yDAAqD;AACrD,uDAAmD;AAGnD,MAAM,IAAI,GAAG,gBAAgB,CAAA;AAC7B,MAAM,WAAW,GAAG,kDAAkD,CAAA;AACtE,MAAM,OAAO,GAAG,4DAA4D,CAAA;AAE5E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,MAAmB,EAAE,EAAE;IAClD,MAAM,KAAK,GAAG,IAAA,uBAAU,EAAC,KAAK,CAAC,CAAA;IAC/B,MAAM,WAAW,GAAiB,EAAE,CAAA;IACpC,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAEhE,MAAM;SACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SAC9B,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACjB,WAAW,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,OAAO;iBACb,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC;iBAC9B,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC;YACzC,UAAU,EAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAW;YAChD,iBAAiB,EAAE,IAAA,iCAAe,EAChC,KAAK,CAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAY,GAAG,CAAC,CAAC,EACjD,QAAQ,EACR,IAAI,CACL;YACD,eAAe,EACb,IAAA,iCAAe,EACb,KAAK,CAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAY,GAAG,CAAC,CAAC,EACjD,QAAQ,EACR,IAAI,CACL;gBACD,KAAK,CAAE,KAAK,CAAC,gBAAiB,CAAC,CAAC,CAAY,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM;gBAC/D,CAAC;YACH,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACJ,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,cAAc,GAAiB;IAC1C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA"}
@@ -187,7 +187,7 @@ const test = (value, config) => {
187
187
  message,
188
188
  lineNumber,
189
189
  startColumnNumber: columnNumber,
190
- endColumnNumber: columnNumber + 1,
190
+ endColumnNumber: columnNumber,
191
191
  severity
192
192
  });
193
193
  let end = index + 1;
@@ -1 +1 @@
1
- {"version":3,"file":"noSingleAsteriskComments.js","sourceRoot":"","sources":["../../../src/rules/file/noSingleAsteriskComments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"noSingleAsteriskComments.js","sourceRoot":"","sources":["../../../src/rules/file/noSingleAsteriskComments.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.strictMacroDefinition = void 0;
4
4
  const types_1 = require("../../types");
5
5
  const LintRuleType_1 = require("../../types/LintRuleType");
6
+ const utils_1 = require("../../utils");
6
7
  const parseMacros_1 = require("../../utils/parseMacros");
7
8
  const name = 'strictMacroDefinition';
8
9
  const description = 'Enforce strictly rules of macro definition syntax.';
@@ -21,63 +22,137 @@ const validOptions = [
21
22
  'SRC',
22
23
  'STORE'
23
24
  ];
25
+ /**
26
+ * Reads a declaration's parameter list: where the list sits, and the text of each
27
+ * parameter, from ONE depth- and quote-aware pass.
28
+ *
29
+ * A declaration can run past its list - `)/secure`, then `des = '...'` - and a
30
+ * value can carry parentheses or commas of its own (`%sysfunc(pathname(work))`,
31
+ * `%sysfunc(catx(,x y,z))`, `des = 'a, b'`), so:
32
+ *
33
+ * - the list ends at the parenthesis that closes the first one, not at the last
34
+ * `)` in the declaration;
35
+ * - a comma separates parameters only at depth zero and outside a quoted value.
36
+ *
37
+ * Both facts come from the same reading of the same text. They used to be two
38
+ * scans - one delimiting the list, one splitting it - which disagreed about a
39
+ * comma inside a nested call and left `x y` looking like a parameter name.
40
+ * Returns an unclosed list as `null`, in which case there is nothing to check.
41
+ */
42
+ const parseParamList = (declaration) => {
43
+ const open = declaration.indexOf('(');
44
+ if (open === -1)
45
+ return { list: null, params: [], listEnd: -1 };
46
+ const params = [];
47
+ let current = '';
48
+ let quote = '';
49
+ let depth = 0;
50
+ for (let index = open + 1; index < declaration.length; index++) {
51
+ const character = declaration[index];
52
+ // Inside a quoted value nothing is syntax: SAS accepts both quote characters,
53
+ // and a `)` or a `,` in a value is text.
54
+ if (quote) {
55
+ current += character;
56
+ if (character === quote)
57
+ quote = '';
58
+ continue;
59
+ }
60
+ if (character === "'" || character === '"') {
61
+ quote = character;
62
+ current += character;
63
+ continue;
64
+ }
65
+ if (character === '(')
66
+ depth++;
67
+ if (character === ')') {
68
+ if (depth === 0) {
69
+ params.push(current);
70
+ return {
71
+ list: declaration.slice(open + 1, index),
72
+ params,
73
+ listEnd: index
74
+ };
75
+ }
76
+ depth--;
77
+ }
78
+ if (character === ',' && depth === 0) {
79
+ params.push(current);
80
+ current = '';
81
+ continue;
82
+ }
83
+ current += character;
84
+ }
85
+ return { list: null, params: [], listEnd: -1 };
86
+ };
24
87
  const processParams = (content, macro, diagnostics, config) => {
25
88
  const declaration = macro.declaration;
26
89
  const severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || types_1.Severity.Warning;
27
- const regExpParams = new RegExp(/(?<=\().*(?=\))/);
28
- const regExpParamsResult = regExpParams.exec(declaration);
29
- let _declaration = declaration;
30
- if (regExpParamsResult) {
31
- const paramsPresent = regExpParamsResult[0];
32
- const params = paramsPresent.trim().split(',');
33
- params.forEach((param) => {
34
- const trimedParam = param.split('=')[0].trim();
35
- let paramLineNumber = 1, paramStartIndex = 1, paramEndIndex = content.length;
36
- if (macro.declarationLines.findIndex((dl) => dl.indexOf(trimedParam) !== -1) === -1) {
37
- const comment = '/\\*(.*?)\\*/';
38
- for (let i = 1; i < trimedParam.length; i++) {
39
- const paramWithComment = trimedParam.slice(0, i) + comment + trimedParam.slice(i);
40
- const regEx = new RegExp(paramWithComment);
41
- const declarationLineIndex = macro.declarationLines.findIndex((dl) => !!regEx.exec(dl));
42
- if (declarationLineIndex !== -1) {
43
- const declarationLine = macro.declarationLines[declarationLineIndex];
44
- const partFound = regEx.exec(declarationLine)[0];
45
- paramLineNumber = macro.startLineNumbers[declarationLineIndex];
46
- paramStartIndex = declarationLine.indexOf(partFound);
47
- paramEndIndex =
48
- declarationLine.indexOf(partFound) + partFound.length;
49
- break;
50
- }
90
+ // The parser reports a declaration with its comments removed, including one that
91
+ // spans lines (sasjs/lint#274), so the list is read from the declaration itself.
92
+ const { list: paramList, params: rawParams, listEnd } = parseParamList(declaration);
93
+ const params = rawParams.map((param) => param.trim());
94
+ params.forEach((param) => {
95
+ const trimedParam = param.split('=')[0].trim();
96
+ let paramLineNumber = 1, paramStartIndex = 1, paramEndIndex = content.length;
97
+ if (macro.declarationLines.findIndex((dl) => dl.indexOf(trimedParam) !== -1) === -1) {
98
+ // The parameter name is interrupted by a comment in the declaration line,
99
+ // so the name as the parser reads it is not the text the line holds. Look
100
+ // for it with a comment in each possible position - the name and the
101
+ // suffix are escaped, since they come from the file and a parenthesis in
102
+ // one of them used to make the pattern invalid.
103
+ const comment = '/\\*(.*?)\\*/';
104
+ for (let i = 1; i < trimedParam.length; i++) {
105
+ const paramWithComment = (0, utils_1.escapeRegExp)(trimedParam.slice(0, i)) +
106
+ comment +
107
+ (0, utils_1.escapeRegExp)(trimedParam.slice(i));
108
+ const regEx = new RegExp(paramWithComment);
109
+ const declarationLineIndex = macro.declarationLines.findIndex((dl) => !!regEx.exec(dl));
110
+ if (declarationLineIndex !== -1) {
111
+ const declarationLine = macro.declarationLines[declarationLineIndex];
112
+ const partFound = regEx.exec(declarationLine)[0];
113
+ paramLineNumber = macro.startLineNumbers[declarationLineIndex];
114
+ paramStartIndex = declarationLine.indexOf(partFound);
115
+ paramEndIndex = declarationLine.indexOf(partFound) + partFound.length;
116
+ break;
51
117
  }
52
118
  }
53
- else {
54
- const declarationLineIndex = macro.declarationLines.findIndex((dl) => dl.indexOf(trimedParam) !== -1);
55
- const declarationLine = macro.declarationLines[declarationLineIndex];
56
- paramLineNumber = macro.startLineNumbers[declarationLineIndex];
57
- paramStartIndex = declarationLine.indexOf(trimedParam);
58
- paramEndIndex =
59
- declarationLine.indexOf(trimedParam) + trimedParam.length;
60
- }
61
- if (trimedParam.includes(' ')) {
62
- diagnostics.push({
63
- message: `Param '${trimedParam}' cannot have space`,
64
- lineNumber: paramLineNumber,
65
- startColumnNumber: paramStartIndex + 1,
66
- endColumnNumber: paramEndIndex,
67
- severity
68
- });
69
- }
70
- });
71
- _declaration = declaration.split(`(${paramsPresent})`)[1];
72
- }
73
- return _declaration;
119
+ }
120
+ else {
121
+ const declarationLineIndex = macro.declarationLines.findIndex((dl) => dl.indexOf(trimedParam) !== -1);
122
+ const declarationLine = macro.declarationLines[declarationLineIndex];
123
+ paramLineNumber = macro.startLineNumbers[declarationLineIndex];
124
+ paramStartIndex = declarationLine.indexOf(trimedParam);
125
+ paramEndIndex = declarationLine.indexOf(trimedParam) + trimedParam.length;
126
+ }
127
+ if (trimedParam.includes(' ')) {
128
+ diagnostics.push({
129
+ message: `Param '${trimedParam}' cannot have space`,
130
+ lineNumber: paramLineNumber,
131
+ startColumnNumber: paramStartIndex + 1,
132
+ endColumnNumber: paramEndIndex,
133
+ severity
134
+ });
135
+ }
136
+ });
137
+ if (paramList === null)
138
+ return declaration;
139
+ // The options text starts after the parenthesis that CLOSES the parameter list,
140
+ // which is where `parseParamList` says the list ends. It used to start after the
141
+ // LAST `)` in the declaration, so an option value carrying its own parenthesis
142
+ // (`des = 'Run %m(HELP) for help.'`) cut the text short and the options after it
143
+ // were never checked.
144
+ return declaration.slice(listEnd + 1);
74
145
  };
75
146
  const processOptions = (_declaration, macro, diagnostics, config) => {
76
147
  var _a, _b, _c;
77
148
  let optionsPresent = (_b = (_a = _declaration.split('/')) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.trim();
78
149
  const severity = (config === null || config === void 0 ? void 0 : config.severityLevel[name]) || types_1.Severity.Warning;
79
150
  if (optionsPresent) {
80
- const regex = new RegExp(/=["|'](.*?)["|']/, 'g');
151
+ // An option value is quoted and can hold spaces - and the other quote
152
+ // character, as in `des = 'Run %m("x") for help.'` - so the value is removed
153
+ // up to its matching quote before the text is split on spaces. SAS accepts
154
+ // whitespace around the `=`.
155
+ const regex = new RegExp(/=\s*(['"])([\s\S]*?)\1/, 'g');
81
156
  let result = regex.exec(optionsPresent);
82
157
  // removing Option's `="..."` part, e.g. des="..."
83
158
  while (result) {
@@ -1 +1 @@
1
- {"version":3,"file":"strictMacroDefinition.js","sourceRoot":"","sources":["../../../src/rules/file/strictMacroDefinition.ts"],"names":[],"mappings":";;;AAAA,uCAAqE;AAErE,2DAAuD;AACvD,yDAAqD;AAErD,MAAM,IAAI,GAAG,uBAAuB,CAAA;AACpC,MAAM,WAAW,GAAG,oDAAoD,CAAA;AACxE,MAAM,OAAO,GAAG,mCAAmC,CAAA;AAEnD,MAAM,YAAY,GAAG;IACnB,KAAK;IACL,KAAK;IACL,cAAc;IACd,aAAa;IACb,eAAe;IACf,UAAU;IACV,QAAQ;IACR,UAAU;IACV,MAAM;IACN,QAAQ;IACR,KAAK;IACL,OAAO;CACR,CAAA;AAED,MAAM,aAAa,GAAG,CACpB,OAAe,EACf,KAAY,EACZ,WAAyB,EACzB,MAAmB,EACX,EAAE;IACV,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAA;IACrC,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,gBAAQ,CAAC,OAAO,CAAA;IAEhE,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAClD,MAAM,kBAAkB,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAEzD,IAAI,YAAY,GAAG,WAAW,CAAA;IAC9B,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA;QAE3C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAE9C,IAAI,eAAe,GAAW,CAAC,EAC7B,eAAe,GAAW,CAAC,EAC3B,aAAa,GAAW,OAAO,CAAC,MAAM,CAAA;YAExC,IACE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAC9B,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CACvC,KAAK,CAAC,CAAC,EACR,CAAC;gBACD,MAAM,OAAO,GAAG,eAAe,CAAA;gBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC5C,MAAM,gBAAgB,GACpB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBAC1D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAA;oBAE1C,MAAM,oBAAoB,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAC3D,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CACzB,CAAA;oBAED,IAAI,oBAAoB,KAAK,CAAC,CAAC,EAAE,CAAC;wBAChC,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;wBACpE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAE,CAAC,CAAC,CAAC,CAAA;wBAEjD,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;wBAC9D,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;wBACpD,aAAa;4BACX,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,MAAM,CAAA;wBACvD,MAAK;oBACP,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,oBAAoB,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAC3D,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CACvC,CAAA;gBACD,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;gBACpE,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;gBAE9D,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;gBACtD,aAAa;oBACX,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,CAAA;YAC7D,CAAC;YAED,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,WAAW,CAAC,IAAI,CAAC;oBACf,OAAO,EAAE,UAAU,WAAW,qBAAqB;oBACnD,UAAU,EAAE,eAAe;oBAC3B,iBAAiB,EAAE,eAAe,GAAG,CAAC;oBACtC,eAAe,EAAE,aAAa;oBAC9B,QAAQ;iBACT,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3D,CAAC;IACD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CACrB,YAAoB,EACpB,KAAY,EACZ,WAAyB,EACzB,MAAmB,EACb,EAAE;;IACR,IAAI,cAAc,GAAG,MAAA,MAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,0CAAE,IAAI,EAAE,CAAA;IACzD,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,gBAAQ,CAAC,OAAO,CAAA;IAEhE,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;QAEjD,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAEvC,kDAAkD;QAClD,OAAO,MAAM,EAAE,CAAC;YACd,cAAc;gBACZ,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC;oBACrC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAEvD,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACrC,CAAC;QAED,MAAA,cAAc;aACX,KAAK,CAAC,GAAG,CAAC,0CACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAClB,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAClB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;YACnC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACxD,MAAM,oBAAoB,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAC3D,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CACzC,CAAA;gBACD,MAAM,eAAe,GAAG,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;gBAEpE,WAAW,CAAC,IAAI,CAAC;oBACf,OAAO,EAAE,WAAW,aAAa,gBAAgB;oBACjD,UAAU,EAAE,KAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC;oBACxD,iBAAiB,EAAE,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC;oBAC7D,eAAe,EACb,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC,MAAM;oBAC/D,QAAQ;iBACT,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;IACN,CAAC;AACH,CAAC,CAAA;AAED,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,MAAmB,EAAE,EAAE;IAClD,MAAM,WAAW,GAAiB,EAAE,CAAA;IAEpC,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAEzC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;QAErE,cAAc,CAAC,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,qBAAqB,GAAiB;IACjD,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA"}
1
+ {"version":3,"file":"strictMacroDefinition.js","sourceRoot":"","sources":["../../../src/rules/file/strictMacroDefinition.ts"],"names":[],"mappings":"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"}
@@ -53,7 +53,7 @@ const test = (value, lineNumber, config, options) => {
53
53
  message: `${message}: "${match[0]}"`,
54
54
  lineNumber,
55
55
  startColumnNumber: start + 1,
56
- endColumnNumber: end + 1,
56
+ endColumnNumber: end,
57
57
  severity
58
58
  });
59
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"noBannedStrings.js","sourceRoot":"","sources":["../../../src/rules/line/noBannedStrings.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mDAA+C;AAC/C,uCAAkD;AAElD,MAAM,IAAI,GAAG,iBAAiB,CAAA;AAC9B,MAAM,WAAW,GACf,wEAAwE,CAAA;AAC1E,MAAM,OAAO,GAAG,+BAA+B,CAAA;AAE/C;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CACrC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;AAE9C;;;;GAIG;AACH,MAAM,YAAY,GAAG,wBAAwB,CAAA;AAE7C,MAAM,IAAI,GAAG,CACX,KAAa,EACb,UAAkB,EAClB,MAAmB,EACnB,OAA6B,EAC7B,EAAE;IACF,MAAM,WAAW,GAAiB,EAAE,CAAA;IAEpC,6EAA6E;IAC7E,6EAA6E;IAC7E,kCAAkC;IAClC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU;QAAE,OAAO,WAAW,CAAA;IAC3C,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,CAAA;IAEhD,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAChE,MAAM,aAAa,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,KAAI,4BAAoB,CAAA;IAEnE,IAAI,CAAC,aAAa,CAAC,MAAM;QAAE,OAAO,WAAW,CAAA;IAE7C,+EAA+E;IAC/E,yDAAyD;IACzD,MAAM,QAAQ,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IAEvE,MAAM,OAAO,GAAc,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAE9D,KAAK,MAAM,YAAY,IAAI,QAAQ,EAAE,CAAC;QACpC,6EAA6E;QAC7E,oEAAoE;QACpE,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAAA;QAE1D,IAAI,KAAK,CAAA;QACT,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAA;YACzB,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;YAEnC,2EAA2E;YAC3E,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,SAAQ;YACrD,KAAK,IAAI,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE;gBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;YAEnE,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,GAAG,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG;gBACpC,UAAU;gBACV,iBAAiB,EAAE,KAAK,GAAG,CAAC;gBAC5B,eAAe,EAAE,GAAG,GAAG,CAAC;gBACxB,QAAQ;aACT,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED;;;GAGG;AACU,QAAA,eAAe,GAAiB;IAC3C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA"}
1
+ {"version":3,"file":"noBannedStrings.js","sourceRoot":"","sources":["../../../src/rules/line/noBannedStrings.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ const test = (value, lineNumber, config) => {
16
16
  message,
17
17
  lineNumber,
18
18
  startColumnNumber: value.indexOf(match) + 1,
19
- endColumnNumber: value.indexOf(match) + match.length + 1,
19
+ endColumnNumber: value.indexOf(match) + match.length,
20
20
  severity
21
21
  }));
22
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"noEncodedPasswords.js","sourceRoot":"","sources":["../../../src/rules/line/noEncodedPasswords.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mDAA+C;AAE/C,MAAM,IAAI,GAAG,oBAAoB,CAAA;AACjC,MAAM,WAAW,GAAG,yCAAyC,CAAA;AAC7D,MAAM,OAAO,GAAG,gCAAgC,CAAA;AAEhD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,UAAkB,EAAE,MAAmB,EAAE,EAAE;IACtE,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,KAAK,CAAA;IAC9D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,OAAO;QACP,UAAU;QACV,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3C,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QACxD,QAAQ;KACT,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA"}
1
+ {"version":3,"file":"noEncodedPasswords.js","sourceRoot":"","sources":["../../../src/rules/line/noEncodedPasswords.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mDAA+C;AAE/C,MAAM,IAAI,GAAG,oBAAoB,CAAA;AACjC,MAAM,WAAW,GAAG,yCAAyC,CAAA;AAC7D,MAAM,OAAO,GAAG,gCAAgC,CAAA;AAEhD,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,UAAkB,EAAE,MAAmB,EAAE,EAAE;IACtE,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,KAAK,CAAA;IAC9D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7B,OAAO;QACP,UAAU;QACV,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3C,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM;QACpD,QAAQ;KACT,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA"}
@@ -30,7 +30,7 @@ const test = (value, lineNumber, config) => {
30
30
  message: `${message}: ${gremlin.description}, hexCode(${gremlin.hexCode})`,
31
31
  lineNumber,
32
32
  startColumnNumber: match.index + 1,
33
- endColumnNumber: match.index + 1 + match[0].length,
33
+ endColumnNumber: match.index + match[0].length,
34
34
  severity
35
35
  });
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"noGremlins.js","sourceRoot":"","sources":["../../../src/rules/line/noGremlins.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mDAA+C;AAC/C,uCAA+C;AAE/C,MAAM,IAAI,GAAG,YAAY,CAAA;AACzB,MAAM,WAAW,GAAG,iDAAiD,CAAA;AACrE,MAAM,OAAO,GAAG,yBAAyB,CAAA;AAEzC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,UAAkB,EAAE,MAAmB,EAAE,EAAE;IACtE,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAChE,MAAM,eAAe,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,EAAE,CAAA;IAErD,MAAM,WAAW,GAAiB,EAAE,CAAA;IAEpC,MAAM,QAAQ,GAAQ,EAAE,CAAA;IAExB,KAAK,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,yBAAiB,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE;gBAChE,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,MAAM,CACnC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;SAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;SACzB,IAAI,CAAC,GAAG,CAAC,EACZ,GAAG,CACJ,CAAA;IAED,IAAI,KAAK,CAAA;IACT,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE1C,WAAW,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,GAAG,OAAO,KAAK,OAAO,CAAC,WAAW,aAAa,OAAO,CAAC,OAAO,GAAG;YAC1E,UAAU;YACV,iBAAiB,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC;YAClC,eAAe,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;YAClD,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,UAAU,GAAiB;IACtC,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CAC7C,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;AAD5B,QAAA,WAAW,eACiB"}
1
+ {"version":3,"file":"noGremlins.js","sourceRoot":"","sources":["../../../src/rules/line/noGremlins.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,mDAA+C;AAC/C,uCAA+C;AAE/C,MAAM,IAAI,GAAG,YAAY,CAAA;AACzB,MAAM,WAAW,GAAG,iDAAiD,CAAA;AACrE,MAAM,OAAO,GAAG,yBAAyB,CAAA;AAEzC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,UAAkB,EAAE,MAAmB,EAAE,EAAE;IACtE,MAAM,QAAQ,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,IAAI,CAAC,KAAI,mBAAQ,CAAC,OAAO,CAAA;IAChE,MAAM,eAAe,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,eAAe,KAAI,EAAE,CAAA;IAErD,MAAM,WAAW,GAAiB,EAAE,CAAA;IAEpC,MAAM,QAAQ,GAAQ,EAAE,CAAA;IAExB,KAAK,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,yBAAiB,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,QAAQ,CAAC,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE;gBAChE,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAI,MAAM,CACnC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;SAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;SACzB,IAAI,CAAC,GAAG,CAAC,EACZ,GAAG,CACJ,CAAA;IAED,IAAI,KAAK,CAAA;IACT,OAAO,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QAE1C,WAAW,CAAC,IAAI,CAAC;YACf,OAAO,EAAE,GAAG,OAAO,KAAK,OAAO,CAAC,WAAW,aAAa,OAAO,CAAC,OAAO,GAAG;YAC1E,UAAU;YACV,iBAAiB,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC;YAClC,eAAe,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;YAC9C,QAAQ;SACT,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;GAEG;AACU,QAAA,UAAU,GAAiB;IACtC,IAAI,EAAE,2BAAY,CAAC,IAAI;IACvB,IAAI;IACJ,WAAW;IACX,OAAO;IACP,IAAI;CACL,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CAC7C,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;AAD5B,QAAA,WAAW,eACiB"}
@@ -17,7 +17,7 @@ const test = (value, lineNumber, config) => {
17
17
  message,
18
18
  lineNumber,
19
19
  startColumnNumber: index + 1,
20
- endColumnNumber: index + 2,
20
+ endColumnNumber: index + 1,
21
21
  severity
22
22
  }));
23
23
  };
@@ -1,6 +1,11 @@
1
1
  import { Severity } from './Severity';
2
2
  /**
3
3
  * A diagnostic is produced by the execution of a lint rule against a file or line of text.
4
+ *
5
+ * Both columns are 1-based, and `endColumnNumber` is the column of the span's LAST
6
+ * character - a one-character span starts and ends on the same column. A consumer
7
+ * that highlights `startColumnNumber` through `endColumnNumber` inclusive covers
8
+ * exactly the text the rule reports, for every rule in the set.
4
9
  */
5
10
  export interface Diagnostic {
6
11
  lineNumber: number;
@@ -0,0 +1,2 @@
1
+ /** Escapes a string so it matches literally inside a RegExp. */
2
+ export declare const escapeRegExp: (value: string) => string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.escapeRegExp = void 0;
4
+ /** Escapes a string so it matches literally inside a RegExp. */
5
+ const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
6
+ exports.escapeRegExp = escapeRegExp;
7
+ //# sourceMappingURL=escapeRegExp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escapeRegExp.js","sourceRoot":"","sources":["../../src/utils/escapeRegExp.ts"],"names":[],"mappings":";;;AAAA,gEAAgE;AACzD,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CACpD,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;AADjC,QAAA,YAAY,gBACqB"}
@@ -1 +1,14 @@
1
- export declare const getColumnNumber: (line: string, text: string) => number;
1
+ /**
2
+ * The 1-based column at which `text` starts on the last line of `line`.
3
+ *
4
+ * `caseInsensitive` compares the characters without regard to case, which is
5
+ * what a SAS keyword needs: `%MACRO` and `%macro` are the same statement. It
6
+ * leaves the default exact, because the other callers search for a macro name or
7
+ * a parameter exactly as it is written in the file.
8
+ *
9
+ * The folded comparison runs as a RegExp over the ORIGINAL line rather than over
10
+ * a lowercased copy, because folding is not always length-preserving - `'İ'` is
11
+ * one character and lowercases to two - and an offset measured on the copy points
12
+ * somewhere else in the line that is returned to the caller.
13
+ */
14
+ export declare const getColumnNumber: (line: string, text: string, caseInsensitive?: boolean) => number;
@@ -1,12 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getColumnNumber = void 0;
4
- const getColumnNumber = (line, text) => {
5
- const index = line.split('\n').pop().indexOf(text);
4
+ const escapeRegExp_1 = require("./escapeRegExp");
5
+ /**
6
+ * The 1-based column at which `text` starts on the last line of `line`.
7
+ *
8
+ * `caseInsensitive` compares the characters without regard to case, which is
9
+ * what a SAS keyword needs: `%MACRO` and `%macro` are the same statement. It
10
+ * leaves the default exact, because the other callers search for a macro name or
11
+ * a parameter exactly as it is written in the file.
12
+ *
13
+ * The folded comparison runs as a RegExp over the ORIGINAL line rather than over
14
+ * a lowercased copy, because folding is not always length-preserving - `'İ'` is
15
+ * one character and lowercases to two - and an offset measured on the copy points
16
+ * somewhere else in the line that is returned to the caller.
17
+ */
18
+ const getColumnNumber = (line, text, caseInsensitive = false) => {
19
+ const lastLine = line.split('\n').pop();
20
+ const index = caseInsensitive
21
+ ? lastLine.search(new RegExp((0, escapeRegExp_1.escapeRegExp)(text), 'i'))
22
+ : lastLine.indexOf(text);
6
23
  if (index < 0) {
7
24
  throw new Error(`String '${text}' was not found in line '${line}'`);
8
25
  }
9
- return line.split('\n').pop().indexOf(text) + 1;
26
+ return index + 1;
10
27
  };
11
28
  exports.getColumnNumber = getColumnNumber;
12
29
  //# sourceMappingURL=getColumnNumber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getColumnNumber.js","sourceRoot":"","sources":["../../src/utils/getColumnNumber.ts"],"names":[],"mappings":";;;AAAO,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE;IACpE,MAAM,KAAK,GAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,4BAA4B,IAAI,GAAG,CAAC,CAAA;IACrE,CAAC;IACD,OAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7D,CAAC,CAAA;AANY,QAAA,eAAe,mBAM3B"}
1
+ {"version":3,"file":"getColumnNumber.js","sourceRoot":"","sources":["../../src/utils/getColumnNumber.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAE7C;;;;;;;;;;;;GAYG;AACI,MAAM,eAAe,GAAG,CAC7B,IAAY,EACZ,IAAY,EACZ,eAAe,GAAG,KAAK,EACf,EAAE;IACV,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAY,CAAA;IACjD,MAAM,KAAK,GAAG,eAAe;QAC3B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAA,2BAAY,EAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,4BAA4B,IAAI,GAAG,CAAC,CAAA;IACrE,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAA;AAClB,CAAC,CAAA;AAbY,QAAA,eAAe,mBAa3B"}
package/utils/index.d.ts CHANGED
@@ -12,6 +12,7 @@ export * from './getHeaderLinesCount';
12
12
  export * from './getDataSectionsDetail';
13
13
  export * from './defaultBannedStrings';
14
14
  export * from './defaultIgnoredMacros';
15
+ export * from './escapeRegExp';
15
16
  export * from './headerMacros';
16
17
  export * from './mergeLintConfig';
17
18
  export * from './parseLibnames';
package/utils/index.js CHANGED
@@ -28,6 +28,7 @@ __exportStar(require("./getHeaderLinesCount"), exports);
28
28
  __exportStar(require("./getDataSectionsDetail"), exports);
29
29
  __exportStar(require("./defaultBannedStrings"), exports);
30
30
  __exportStar(require("./defaultIgnoredMacros"), exports);
31
+ __exportStar(require("./escapeRegExp"), exports);
31
32
  __exportStar(require("./headerMacros"), exports);
32
33
  __exportStar(require("./mergeLintConfig"), exports);
33
34
  __exportStar(require("./parseLibnames"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,kDAA+B;AAC/B,mDAAgC;AAChC,sDAAmC;AACnC,8CAA2B;AAC3B,iDAA8B;AAC9B,8CAA2B;AAC3B,gDAA6B;AAC7B,+CAA4B;AAC5B,iDAA8B;AAC9B,wDAAqC;AACrC,0DAAuC;AACvC,yDAAsC;AACtC,yDAAsC;AACtC,iDAA8B;AAC9B,oDAAiC;AACjC,kDAA+B;AAC/B,sDAAmC;AACnC,oDAAiC;AACjC,8CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,kDAA+B;AAC/B,mDAAgC;AAChC,sDAAmC;AACnC,8CAA2B;AAC3B,iDAA8B;AAC9B,8CAA2B;AAC3B,gDAA6B;AAC7B,+CAA4B;AAC5B,iDAA8B;AAC9B,wDAAqC;AACrC,0DAAuC;AACvC,yDAAsC;AACtC,yDAAsC;AACtC,iDAA8B;AAC9B,iDAA8B;AAC9B,oDAAiC;AACjC,kDAA+B;AAC/B,sDAAmC;AACnC,oDAAiC;AACjC,8CAA2B"}
@@ -3,10 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseMacros = void 0;
4
4
  const trimComments_1 = require("./trimComments");
5
5
  const splitLines_1 = require("./splitLines");
6
+ /** The `%macro` statement, in any capitalisation. */
7
+ const macroStatement = /^%macro\b/i;
8
+ /** The `%mend` statement, in any capitalisation. */
9
+ const mendStatement = /^%mend\b/i;
10
+ /**
11
+ * The name in a `%macro` declaration, as written.
12
+ *
13
+ * The name runs to the first character that cannot belong to it: whitespace, an
14
+ * opening parenthesis, the `/` that introduces the options, or an end of
15
+ * statement. Reading it by pattern rather than from a fixed offset is what makes
16
+ * `%MACRO`, `%macro s` and `%macro\ts` yield the same name - the keyword and the
17
+ * whitespace before the name can each be a different length.
18
+ */
19
+ const declarationName = /^%macro\b\s*([^\s(;/]*)/i;
20
+ /** The name in a `%mend` statement, as written. */
21
+ const mendName = /^%mend\b\s*([^\s;]*)/i;
22
+ /** The name a macro statement carries, or an empty string when it has none. */
23
+ const getName = (statement, pattern) => {
24
+ const match = pattern.exec(statement);
25
+ return match ? match[1].trim() : '';
26
+ };
6
27
  const parseMacros = (text, config) => {
7
28
  const lines = (0, splitLines_1.splitLines)(text);
8
29
  const macros = [];
9
30
  let isCommentStarted = false;
31
+ let isQuoteStarted = '';
10
32
  let macroStack = [];
11
33
  let isReadingMacroDefinition = false;
12
34
  let isStatementContinues = true;
@@ -14,8 +36,14 @@ const parseMacros = (text, config) => {
14
36
  let tempMacroDeclarationLines = [];
15
37
  let tempStartLineNumbers = [];
16
38
  lines.forEach((line, lineIndex) => {
17
- const { statement: trimmedLine, commentStarted } = (0, trimComments_1.trimComments)(line, isCommentStarted);
18
- isCommentStarted = commentStarted;
39
+ // The state a line STARTS in belongs to the line's statements, and the state
40
+ // it ENDS in belongs to the next line. Reading the second into the statement
41
+ // loop swallowed the code that precedes a comment opening mid-line
42
+ // (sasjs/lint#274).
43
+ const stateBeforeLine = isCommentStarted;
44
+ const { statement: trimmedLine, commentStarted: stateAfterLine, quoteStarted: quoteAfterLine } = (0, trimComments_1.trimComments)(line, stateBeforeLine, false, isQuoteStarted);
45
+ isCommentStarted = stateAfterLine;
46
+ isQuoteStarted = quoteAfterLine;
19
47
  isStatementContinues = !trimmedLine.endsWith(';');
20
48
  const statements = trimmedLine.split(';');
21
49
  if (isReadingMacroDefinition) {
@@ -31,8 +59,11 @@ const parseMacros = (text, config) => {
31
59
  });
32
60
  }
33
61
  statements.forEach((statement, statementIndex) => {
34
- const { statement: trimmedStatement, commentStarted } = (0, trimComments_1.trimComments)(statement, isCommentStarted);
35
- isCommentStarted = commentStarted;
62
+ // The statements were split from the line's ALREADY trimmed text, so they
63
+ // carry no comment and no quoted value: trimming them again either swallowed
64
+ // the code after a comment that closes at the start of the line (`... */
65
+ // %macro foo;`) or re-read a `/*` inside a multi-line string as a comment.
66
+ const trimmedStatement = statement.trim();
36
67
  if (isReadingMacroDefinition) {
37
68
  tempMacroDeclaration =
38
69
  tempMacroDeclaration +
@@ -41,12 +72,7 @@ const parseMacros = (text, config) => {
41
72
  tempStartLineNumbers.push(lineIndex + 1);
42
73
  if (!Object.is(statements.length - 1, statementIndex)) {
43
74
  isReadingMacroDefinition = false;
44
- const name = tempMacroDeclaration
45
- .slice(7, tempMacroDeclaration.length)
46
- .trim()
47
- .split('/')[0]
48
- .split('(')[0]
49
- .trim();
75
+ const name = getName(tempMacroDeclaration, declarationName);
50
76
  macroStack.push({
51
77
  name,
52
78
  startLineNumbers: tempStartLineNumbers,
@@ -63,7 +89,7 @@ const parseMacros = (text, config) => {
63
89
  });
64
90
  }
65
91
  }
66
- if (trimmedStatement.startsWith('%macro')) {
92
+ if (macroStatement.test(trimmedStatement)) {
67
93
  const startLineNumber = lineIndex + 1;
68
94
  if (isStatementContinues &&
69
95
  Object.is(statements.length - 1, statementIndex)) {
@@ -73,12 +99,7 @@ const parseMacros = (text, config) => {
73
99
  isReadingMacroDefinition = true;
74
100
  return;
75
101
  }
76
- const name = trimmedStatement
77
- .slice(7, trimmedStatement.length)
78
- .trim()
79
- .split('/')[0]
80
- .split('(')[0]
81
- .trim();
102
+ const name = getName(trimmedStatement, declarationName);
82
103
  macroStack.push({
83
104
  name,
84
105
  startLineNumbers: [startLineNumber],
@@ -94,12 +115,16 @@ const parseMacros = (text, config) => {
94
115
  termination: ''
95
116
  });
96
117
  }
97
- else if (trimmedStatement.startsWith('%mend')) {
118
+ else if (mendStatement.test(trimmedStatement)) {
98
119
  if (macroStack.length) {
99
120
  const macro = macroStack.pop();
100
- const mendMacroName = trimmedStatement.split(' ').filter((s) => !!s)[1] || '';
121
+ const mendMacroName = getName(trimmedStatement, mendName);
101
122
  macro.endLineNumber = lineIndex + 1;
102
- macro.hasMacroNameInMend = mendMacroName === macro.name;
123
+ // SAS matches a macro name without regard to case, so `%mend s` closes
124
+ // `%macro S()`. The name is kept as written for the rules that point at
125
+ // it, and only the comparison folds the case.
126
+ macro.hasMacroNameInMend =
127
+ mendMacroName.toLowerCase() === macro.name.toLowerCase();
103
128
  macro.mismatchedMendMacroName = macro.hasMacroNameInMend
104
129
  ? ''
105
130
  : mendMacroName;
@@ -1 +1 @@
1
- {"version":3,"file":"parseMacros.js","sourceRoot":"","sources":["../../src/utils/parseMacros.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parseMacros.js","sourceRoot":"","sources":["../../src/utils/parseMacros.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,24 @@
1
- export declare const trimComments: (statement: string, commentStarted?: boolean, trimEnd?: boolean) => {
1
+ /**
2
+ * Removes the block comments from a statement, or from one line of a statement.
3
+ *
4
+ * The scan tracks two states the previous implementation did not:
5
+ *
6
+ * - a quoted value, because SAS accepts both quote characters, so an opening
7
+ * comment marker inside a string is data rather than the start of a comment;
8
+ * - a comment that is still open at the end of the text, which is reported back
9
+ * as `commentStarted` so the caller carries it into the next line. The old
10
+ * implementation lost that state when the opening marker had no closing
11
+ * delimiter on the same line, and returned the comment's content as code
12
+ * (sasjs/lint#274).
13
+ *
14
+ * A quoted value is carried across lines too (`quoteStarted`), because a SAS
15
+ * literal really does continue onto the next physical line: measured on a live
16
+ * engine, `x = "ab` / `cd";` is one string and `length(x)` is 4. An UNTERMINATED
17
+ * quote is carried as far as the text goes, which is also what the engine does -
18
+ * it consumes the rest of the file as string content.
19
+ */
20
+ export declare const trimComments: (statement: string, commentStarted?: boolean, trimEnd?: boolean, quoteStarted?: string) => {
2
21
  statement: string;
3
22
  commentStarted: boolean;
23
+ quoteStarted: string;
4
24
  };
@@ -1,40 +1,62 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.trimComments = void 0;
4
- const trimComments = (statement, commentStarted = false, trimEnd = false) => {
5
- let trimmed = trimEnd ? (statement || '').trimEnd() : (statement || '').trim();
6
- if (commentStarted || trimmed.startsWith('/*')) {
7
- const parts = trimmed.startsWith('/*')
8
- ? trimmed.slice(2).split('*/')
9
- : trimmed.split('*/');
10
- if (parts.length === 2) {
11
- return {
12
- statement: parts.pop().trim(),
13
- commentStarted: false
14
- };
4
+ /**
5
+ * Removes the block comments from a statement, or from one line of a statement.
6
+ *
7
+ * The scan tracks two states the previous implementation did not:
8
+ *
9
+ * - a quoted value, because SAS accepts both quote characters, so an opening
10
+ * comment marker inside a string is data rather than the start of a comment;
11
+ * - a comment that is still open at the end of the text, which is reported back
12
+ * as `commentStarted` so the caller carries it into the next line. The old
13
+ * implementation lost that state when the opening marker had no closing
14
+ * delimiter on the same line, and returned the comment's content as code
15
+ * (sasjs/lint#274).
16
+ *
17
+ * A quoted value is carried across lines too (`quoteStarted`), because a SAS
18
+ * literal really does continue onto the next physical line: measured on a live
19
+ * engine, `x = "ab` / `cd";` is one string and `length(x)` is 4. An UNTERMINATED
20
+ * quote is carried as far as the text goes, which is also what the engine does -
21
+ * it consumes the rest of the file as string content.
22
+ */
23
+ const trimComments = (statement, commentStarted = false, trimEnd = false, quoteStarted = '') => {
24
+ const text = statement || '';
25
+ let result = '';
26
+ let quote = quoteStarted;
27
+ let inComment = commentStarted;
28
+ for (let index = 0; index < text.length; index++) {
29
+ const character = text[index];
30
+ if (inComment) {
31
+ if (character === '*' && text[index + 1] === '/') {
32
+ inComment = false;
33
+ index++;
34
+ }
35
+ continue;
15
36
  }
16
- else if (parts.length > 2) {
17
- parts.shift();
18
- return (0, exports.trimComments)(parts.join('*/'), false);
37
+ if (quote) {
38
+ result += character;
39
+ if (character === quote)
40
+ quote = '';
41
+ continue;
19
42
  }
20
- else {
21
- return { statement: '', commentStarted: true };
43
+ if (character === "'" || character === '"') {
44
+ quote = character;
45
+ result += character;
46
+ continue;
22
47
  }
48
+ if (character === '/' && text[index + 1] === '*') {
49
+ inComment = true;
50
+ index++;
51
+ continue;
52
+ }
53
+ result += character;
23
54
  }
24
- else if (trimmed.includes('/*')) {
25
- const statementBeforeCommentStarts = trimmed.slice(0, trimmed.indexOf('/*'));
26
- trimmed = trimmed.slice(trimmed.indexOf('/*') + 2);
27
- const remainingStatement = trimmed.slice(trimmed.indexOf('*/') + 2);
28
- const result = (0, exports.trimComments)(remainingStatement, false, true);
29
- const completeStatement = statementBeforeCommentStarts + result.statement;
30
- return {
31
- statement: trimEnd
32
- ? completeStatement.trimEnd()
33
- : completeStatement.trim(),
34
- commentStarted: result.commentStarted
35
- };
36
- }
37
- return { statement: trimmed, commentStarted: false };
55
+ return {
56
+ statement: trimEnd ? result.trimEnd() : result.trim(),
57
+ commentStarted: inComment,
58
+ quoteStarted: quote
59
+ };
38
60
  };
39
61
  exports.trimComments = trimComments;
40
62
  //# sourceMappingURL=trimComments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"trimComments.js","sourceRoot":"","sources":["../../src/utils/trimComments.ts"],"names":[],"mappings":";;;AAAO,MAAM,YAAY,GAAG,CAC1B,SAAiB,EACjB,iBAA0B,KAAK,EAC/B,UAAmB,KAAK,EACwB,EAAE;IAClD,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAE9E,IAAI,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YACpC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,SAAS,EAAG,KAAK,CAAC,GAAG,EAAa,CAAC,IAAI,EAAE;gBACzC,cAAc,EAAE,KAAK;aACtB,CAAA;QACH,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,KAAK,EAAE,CAAA;YACb,OAAO,IAAA,oBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAA;QAChD,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,4BAA4B,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAC5E,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAClD,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAEnE,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAC5D,MAAM,iBAAiB,GAAG,4BAA4B,GAAG,MAAM,CAAC,SAAS,CAAA;QACzE,OAAO;YACL,SAAS,EAAE,OAAO;gBAChB,CAAC,CAAC,iBAAiB,CAAC,OAAO,EAAE;gBAC7B,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE;YAC5B,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAA;IACH,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,CAAA;AACtD,CAAC,CAAA;AArCY,QAAA,YAAY,gBAqCxB"}
1
+ {"version":3,"file":"trimComments.js","sourceRoot":"","sources":["../../src/utils/trimComments.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACI,MAAM,YAAY,GAAG,CAC1B,SAAiB,EACjB,iBAA0B,KAAK,EAC/B,UAAmB,KAAK,EACxB,eAAuB,EAAE,EAC6C,EAAE;IACxE,MAAM,IAAI,GAAG,SAAS,IAAI,EAAE,CAAA;IAC5B,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,KAAK,GAAG,YAAY,CAAA;IACxB,IAAI,SAAS,GAAG,cAAc,CAAA;IAE9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAE7B,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,SAAS,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACjD,SAAS,GAAG,KAAK,CAAA;gBACjB,KAAK,EAAE,CAAA;YACT,CAAC;YAED,SAAQ;QACV,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,SAAS,CAAA;YACnB,IAAI,SAAS,KAAK,KAAK;gBAAE,KAAK,GAAG,EAAE,CAAA;YACnC,SAAQ;QACV,CAAC;QAED,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC3C,KAAK,GAAG,SAAS,CAAA;YACjB,MAAM,IAAI,SAAS,CAAA;YACnB,SAAQ;QACV,CAAC;QAED,IAAI,SAAS,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACjD,SAAS,GAAG,IAAI,CAAA;YAChB,KAAK,EAAE,CAAA;YACP,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,SAAS,CAAA;IACrB,CAAC;IAED,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;QACrD,cAAc,EAAE,SAAS;QACzB,YAAY,EAAE,KAAK;KACpB,CAAA;AACH,CAAC,CAAA;AAjDY,QAAA,YAAY,gBAiDxB"}