@sasjs/utils 4.3.0 → 4.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.
package/logs/sasLog.d.ts CHANGED
@@ -108,6 +108,11 @@ export declare const isNotableNote: (message: string) => boolean;
108
108
  * directly. A host that wants errors only filters on `severity`; nothing is
109
109
  * behind an option, because a notable note is worth reporting wherever the log
110
110
  * is shown.
111
+ *
112
+ * The text is never split into lines: a log is often megabytes, and a pass that
113
+ * builds an array of its lines costs more than the scan and hands the collector
114
+ * a million strings. One global match walks the text, the line number is counted
115
+ * forward from the previous match, and only the lines a message needs are sliced.
111
116
  */
112
117
  export declare const parseLog: (text: string) => LogIssue[];
113
118
  /**
package/logs/sasLog.js CHANGED
@@ -71,10 +71,26 @@ exports.nextIssue = exports.parseLog = exports.isNotableNote = exports.isSasLog
71
71
  * line's text. Padding without markup is not allowed: an indented marker is text
72
72
  * in a listing, not a message. The prefix is captured so the marker's column is
73
73
  * exact, and the code and message are captured separately.
74
+ *
75
+ * The spaces either side of a message code are a character class, not `\s`: the
76
+ * expression now runs over the whole text, where `\s` would let a match swallow
77
+ * the line break and read the next line as this message's code.
74
78
  */
75
- const MARKER = /^((?:<[^>]*>)+[ \t]*|)(?:(ERROR|WARNING)(?:\s+(\d+-\d+))?(:[ \t]?|[ \t]+)|(NOTE)(?:\s+(\d+-\d+))?:[ \t]?)(.*)$/;
76
- /** A line SAS numbers at the start, e.g. `1 data want;` - unlike a sequence number, it is padded. */
77
- const NUMBERED_STEP = /^\d+ {2,}\S/;
79
+ const MARKER = /^((?:<[^>]*>)+[ \t]*|)(?:(ERROR|WARNING)(?:[ \t]+(\d+-\d+))?(:[ \t]?|[ \t]+)|(NOTE)(?:[ \t]+(\d+-\d+))?:[ \t]?)(.*)$/;
80
+ /**
81
+ * The shapes only SAS writes, tested over the whole text in one pass so no line
82
+ * array is built: a coded marker (`ERROR 22-322:`), or a line SAS numbers at the
83
+ * start followed by a statement - one that begins with a macro call, a comment,
84
+ * or ends in the semicolon SAS statement syntax requires. The padded number alone
85
+ * is not evidence: `1 item` is a numbered list in somebody else's output.
86
+ *
87
+ * The statement tail is `[^\n;]*` rather than `[^;]*` because a negated class
88
+ * matches a newline, and a shape match must not span two lines. A semicolon alone
89
+ * does not make a statement - `12 Building target;` is a numbered list in output
90
+ * that is not SAS - so the line also has to begin with a statement keyword or
91
+ * carry an assignment or a call before its semicolon.
92
+ */
93
+ const SAS_SHAPE = /^(?:(?:<[^>]*>)+[ \t]*|)(?:(?:ERROR|WARNING|NOTE) +\d+-\d+|\d+ {2,}(?:[%*/]|(?:by|data|filename|footnote|format|if|infile|input|libname|merge|ods|options|output|proc|put|quit|run|set|title|where)\b|[^\n;]*[=(][^\n;]*;))/m;
78
94
  /**
79
95
  * The phrases SAS prints about itself, and nothing else does: the version banner,
80
96
  * the licence note, the platform note, the work-area conversion warning, the page
@@ -82,8 +98,6 @@ const NUMBERED_STEP = /^\d+ {2,}\S/;
82
98
  * a log that has lost its head usually keeps the step footer.
83
99
  */
84
100
  const SAS_BANNER = /(?:The SAS System|^You are running SAS \d|^NOTE: (?:SAS|Copyright .*\bSAS Institute|This session is executing|DATA statement used))/m;
85
- /** A coded marker, e.g. `ERROR 22-322:` - SAS's message identifiers, again its own. */
86
- const CODED_MARKER = /^((?:<[^>]*>)+[ \t]*|)(?:ERROR|WARNING|NOTE) +\d+-\d+/;
87
101
  /**
88
102
  * Whether a text is a SAS log rather than somebody else's log file.
89
103
  *
@@ -107,10 +121,7 @@ const CODED_MARKER = /^((?:<[^>]*>)+[ \t]*|)(?:ERROR|WARNING|NOTE) +\d+-\d+/;
107
121
  * The check is deliberately cheap and runs before a host publishes anything, so
108
122
  * a `.log` from another tool is left alone.
109
123
  */
110
- const isSasLog = (text) => SAS_BANNER.test(text) ||
111
- text
112
- .split(/\r?\n/)
113
- .some((line) => CODED_MARKER.test(line) || NUMBERED_STEP.test(line));
124
+ const isSasLog = (text) => SAS_BANNER.test(text) || SAS_SHAPE.test(text);
114
125
  exports.isSasLog = isSasLog;
115
126
  /**
116
127
  * The notes worth reporting, matched case-insensitively against the folded
@@ -157,24 +168,83 @@ const NOTE_KEYWORDS = [
157
168
  'not positive definite',
158
169
  'The SAS System stopped processing this step because of errors'
159
170
  ];
160
- const NOTABLE_NOTE_KEYWORDS = NOTE_KEYWORDS.map((keyword) => keyword.toLowerCase());
171
+ /** `RegExp`-escaping, so a keyword added later cannot change the meaning of the pattern. */
172
+ const escape = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
173
+ /**
174
+ * The keyword list as one case-insensitive expression. Testing 30 keywords with
175
+ * `includes` meant lowercasing every note and up to 30 scans of it; a log holds
176
+ * thousands of notes and this is the second hottest function in the module.
177
+ */
178
+ const NOTABLE_NOTE = new RegExp(NOTE_KEYWORDS.map(escape).join('|'), 'i');
161
179
  /** How many wrapped lines one message may absorb, so a malformed log cannot run away. */
162
180
  const MAX_WRAPPED_LINES = 10;
163
181
  /** Whether a note's message is one of the notable ones. */
164
- const isNotableNote = (message) => {
165
- const lower = message.toLowerCase();
166
- return NOTABLE_NOTE_KEYWORDS.some((keyword) => lower.includes(keyword));
167
- };
182
+ const isNotableNote = (message) => NOTABLE_NOTE.test(message);
168
183
  exports.isNotableNote = isNotableNote;
169
- /** A line SAS wrapped: indented, and not one of the pointer lines it prints under source. */
170
- const isWrappedLine = (line) => /^\s+\S/.test(line) &&
171
- !/^\s*[-_]+\s*$/.test(line) &&
172
- !/^\s*\d+\s*$/.test(line);
173
- /** Removes markup and collapses the whitespace a wrapped message carries. */
174
- const clean = (text) => text
175
- .replace(/<[^>]*>/g, '')
176
- .replace(/\s+/g, ' ')
177
- .trim();
184
+ /**
185
+ * The pointer line SAS prints under the token it complains about: a run of
186
+ * dashes, or the column number on its own.
187
+ */
188
+ const POINTER_LINE = /^\s*(?:[-_]+\s*$|\d+\s*$)/;
189
+ /**
190
+ * A line SAS wrapped: indented, and neither a pointer line nor a marker.
191
+ *
192
+ * The marker test is {@link MARKER} itself, applied to the trimmed line, so a
193
+ * continuation is excluded exactly when the line would have been a marker had it
194
+ * begun the line - the markup-prefixed form included. A second, subtly different
195
+ * expression is how an indented marker ends up belonging to neither the message
196
+ * above nor the issue list. Such a marker is dropped rather than reported, which
197
+ * is the rule the parser states: a message begins the line.
198
+ */
199
+ const isWrappedLine = (line) => /^\s+\S/.test(line) && !POINTER_LINE.test(line) && !MARKER.test(line.trim());
200
+ /**
201
+ * Whether a character code is printable ASCII and not a space. The fast path in
202
+ * {@link clean} is limited to ASCII at both ends, so a message carrying one of
203
+ * the non-ASCII spaces the slow path collapses still takes the slow path.
204
+ */
205
+ const isPlainCode = (code) => code > 32 && code < 127;
206
+ /**
207
+ * Removes markup and collapses the whitespace a wrapped message carries.
208
+ *
209
+ * Most messages need neither: a single line with no markup and no run of spaces
210
+ * is returned as it is, which keeps three passes off the common path - this is
211
+ * the hottest function in the module on a large log.
212
+ */
213
+ const clean = (text) => {
214
+ const plain = isPlainCode(text.charCodeAt(0)) &&
215
+ isPlainCode(text.charCodeAt(text.length - 1)) &&
216
+ text.indexOf('<') < 0 &&
217
+ text.indexOf('\t') < 0 &&
218
+ text.indexOf(' ') < 0;
219
+ return plain
220
+ ? text
221
+ : text
222
+ .replace(/<[^>]*>/g, '')
223
+ .replace(/\s+/g, ' ')
224
+ .trim();
225
+ };
226
+ /**
227
+ * Finds every ERROR and WARNING in a SAS log, and every notable note.
228
+ *
229
+ * The issue list is in log order. `line` and `column` address the text as
230
+ * supplied, so a caller can offset a decoration or a diagnostic by them
231
+ * directly. A host that wants errors only filters on `severity`; nothing is
232
+ * behind an option, because a notable note is worth reporting wherever the log
233
+ * is shown.
234
+ */
235
+ /**
236
+ * The marker expression with the multiline flags, so one call walks the whole
237
+ * text. `exec` on a line at a time costs a call per line - half a million on a
238
+ * 16 MB log - where one pass over the string costs a fraction of that, and the
239
+ * line and column indexes are recovered from the match offsets instead.
240
+ */
241
+ const SCAN = new RegExp(MARKER.source, 'gm');
242
+ /** The index of the line break that ends the line starting at `from`, or -1. */
243
+ const lineEnd = (text, from) => text.indexOf('\n', from);
244
+ /** A slice of the text with the carriage return of a CRLF line ending removed. */
245
+ const withoutCr = (text, from, to) => to > from && text.charCodeAt(to - 1) === 13
246
+ ? text.slice(from, to - 1)
247
+ : text.slice(from, to);
178
248
  /**
179
249
  * Finds every ERROR and WARNING in a SAS log, and every notable note.
180
250
  *
@@ -183,46 +253,83 @@ const clean = (text) => text
183
253
  * directly. A host that wants errors only filters on `severity`; nothing is
184
254
  * behind an option, because a notable note is worth reporting wherever the log
185
255
  * is shown.
256
+ *
257
+ * The text is never split into lines: a log is often megabytes, and a pass that
258
+ * builds an array of its lines costs more than the scan and hands the collector
259
+ * a million strings. One global match walks the text, the line number is counted
260
+ * forward from the previous match, and only the lines a message needs are sliced.
186
261
  */
187
262
  const parseLog = (text) => {
188
- var _a, _b, _c;
263
+ var _a;
189
264
  if (!text) {
190
265
  return [];
191
266
  }
192
- const lines = text.split(/\r?\n/);
193
267
  const issues = [];
194
- for (let line = 0; line < lines.length; line++) {
195
- const match = MARKER.exec(lines[line]);
196
- if (!match) {
197
- continue;
268
+ let line = 0;
269
+ let countedTo = 0;
270
+ let match;
271
+ SCAN.lastIndex = 0;
272
+ while ((match = SCAN.exec(text)) !== null) {
273
+ const markerStart = match.index;
274
+ // Lines between the last block and this marker.
275
+ for (let index = text.indexOf('\n', countedTo); index !== -1 && index < markerStart; index = text.indexOf('\n', index + 1)) {
276
+ line++;
198
277
  }
278
+ const markerEnd = lineEnd(text, markerStart);
279
+ const endIndex = markerEnd === -1 ? text.length : markerEnd;
199
280
  const markerLine = line;
200
- const parts = [clean((_a = match[7]) !== null && _a !== void 0 ? _a : '')];
281
+ let message = clean(match[7]);
201
282
  let endLine = markerLine;
283
+ let cursor = endIndex + 1;
202
284
  let wrapped = 0;
203
- while (wrapped < MAX_WRAPPED_LINES &&
204
- endLine + 1 < lines.length &&
205
- isWrappedLine(lines[endLine + 1])) {
285
+ while (cursor <= text.length && wrapped < MAX_WRAPPED_LINES) {
286
+ const nextEnd = lineEnd(text, cursor);
287
+ const sliceEnd = nextEnd === -1 ? text.length : nextEnd;
288
+ const candidate = withoutCr(text, cursor, sliceEnd);
289
+ if (!isWrappedLine(candidate)) {
290
+ break;
291
+ }
292
+ const part = clean(candidate);
293
+ if (part !== '') {
294
+ message = message === '' ? part : `${message} ${part}`;
295
+ }
206
296
  endLine++;
207
297
  wrapped++;
208
- parts.push(clean(lines[endLine]));
298
+ cursor = sliceEnd + 1;
209
299
  }
210
- const severity = ((_b = match[2]) !== null && _b !== void 0 ? _b : match[5]).toLowerCase();
211
- const message = parts.filter((part) => part !== '').join(' ');
212
- // The wrapped lines belong to this message whether or not it is reported, so
213
- // the scan resumes after them either way.
214
- line = endLine;
300
+ // The lines folded into this message belong to it whether or not it is
301
+ // reported, so the scan resumes after them either way.
302
+ SCAN.lastIndex = cursor;
303
+ countedTo = cursor;
304
+ line = endLine + 1;
215
305
  // A marker with nothing after it is not a message: SAS does not print a bare
216
306
  // `ERROR` or `ERROR:` line, and an empty issue would reach a host as a blank
217
307
  // line in its problem list.
218
308
  if (message === '') {
219
309
  continue;
220
310
  }
311
+ const severity = match[2]
312
+ ? match[2] === 'ERROR'
313
+ ? 'error'
314
+ : 'warning'
315
+ : 'note';
221
316
  if (severity === 'note' && !(0, exports.isNotableNote)(message)) {
222
317
  continue;
223
318
  }
224
- const code = (_c = match[3]) !== null && _c !== void 0 ? _c : match[6];
225
- issues.push(Object.assign(Object.assign({ line: markerLine, endLine, column: match[1].length, endColumn: lines[markerLine].length, severity }, (code ? { code } : {})), { message }));
319
+ const code = (_a = match[3]) !== null && _a !== void 0 ? _a : match[6];
320
+ const issue = {
321
+ line: markerLine,
322
+ endLine,
323
+ column: match[1].length,
324
+ // The whole match is the line's text: `$` stops before the `\r` of a CRLF.
325
+ endColumn: match[0].length,
326
+ severity,
327
+ message
328
+ };
329
+ if (code) {
330
+ issue.code = code;
331
+ }
332
+ issues.push(issue);
226
333
  }
227
334
  return issues;
228
335
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sasLog.js","sourceRoot":"","sources":["../../src/logs/sasLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sasLog.js","sourceRoot":"","sources":["../../src/logs/sasLog.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -96,5 +96,5 @@
96
96
  "jwt-decode": "4.0.0",
97
97
  "prompts": "2.4.2"
98
98
  },
99
- "version": "4.3.0"
99
+ "version": "4.3.1"
100
100
  }