@descent-vtt/spec-guard 0.14.0 → 0.16.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.
package/dist/parser.js CHANGED
@@ -22,7 +22,7 @@
22
22
  * what a status line means. ADR-0002.
23
23
  */
24
24
  import { lineStarts, locate } from './text.js';
25
- import { findEntry, readFrontMatter, scanMarkdown, titleOf } from './vendor/spec-core/markdown/index.js';
25
+ import { findEntry, keyName, readFrontMatter, scanMarkdown, titleOf, } from './vendor/spec-core/markdown/index.js';
26
26
  /** Every directive spec-guard understands. */
27
27
  export const KINDS = new Set([
28
28
  'assert-absence',
@@ -192,22 +192,24 @@ function toStatus(raw, source) {
192
192
  return { value, label, source, active: !INACTIVE_STATUSES.has(value) };
193
193
  }
194
194
  /**
195
- * The status front matter declares, read as YAML reads it, or undefined when
196
- * front matter names none.
195
+ * The status front matter declares, or undefined when front matter names none.
197
196
  *
198
- * spec-core's reader, which the family's tools share: a quoted value is taken
199
- * up to its closing quote and a plain one up to a comment, as the one-line
200
- * reader this replaced did - MADR's own template quotes the status, and
201
- * `"proposed" # decided at review` is proposed. Quotes and `#` are syntax here
202
- * and nowhere else.
197
+ * YAML is read by spec-core's reader, which the family's tools share: a quoted
198
+ * value is taken up to its closing quote and a plain one up to a comment, as
199
+ * the one-line reader this replaced did - MADR's own template quotes the
200
+ * status, and `"proposed" # decided at review` is proposed. Quotes and `#` are
201
+ * syntax here and nowhere else. TOML, between `+++` lines, is read for this
202
+ * one key by `tomlStatus`: a string on one line, quoted as TOML quotes it.
203
203
  *
204
204
  * A `status` key decides, whether or not its value can be read. One the reader
205
205
  * refuses - continued onto the next line, text after a closing quote, `: ` in
206
- * a plain value - or one with no word in it declares no status, which leaves
207
- * the document in force, and says why. It used to be skipped, and then a
208
- * `## Status` section or a `Status:` line further down was read in its place:
209
- * `status: "accepted" (2024-05-01)` above a section still saying `Proposed`
210
- * took an accepted decision out of force.
206
+ * a plain value, a TOML array or table - or one with no word in it declares no
207
+ * status, which leaves the document in force, and says why. It used to be
208
+ * skipped, and then a `## Status` section or a `Status:` line further down was
209
+ * read in its place: `status: "accepted" (2024-05-01)` above a section still
210
+ * saying `Proposed` took an accepted decision out of force. TOML's key was
211
+ * once not read at all, and `status = "accepted"` above the same section was
212
+ * withheld by it.
211
213
  *
212
214
  * Front matter opened on the first line and never closed decides the same
213
215
  * way. Its author wrote front matter, and what it says cannot be read, so the
@@ -219,31 +221,271 @@ function toStatus(raw, source) {
219
221
  function fromFrontmatter(scan) {
220
222
  if (scan.unclosedFrontMatter !== null)
221
223
  return {};
222
- if (scan.frontMatter === null)
224
+ const block = scan.frontMatter;
225
+ if (block === null)
223
226
  return undefined;
224
- const entry = findEntry(readFrontMatter(scan.text.slice(0, scan.frontMatter.bodyStart)), 'status');
225
- if (entry === undefined)
227
+ const declared = block.kind === 'toml' ? tomlStatus(block.raw, (offset) => scan.index.positionAt(block.start + offset).line) : yamlStatus(scan, block);
228
+ if (declared === undefined)
226
229
  return undefined;
227
- const { value } = entry;
228
- const status = value.kind === 'scalar' ? toStatus(value.scalar.text, 'frontmatter') : undefined;
230
+ const status = 'text' in declared ? toStatus(declared.text, 'frontmatter') : undefined;
229
231
  if (status !== undefined)
230
232
  return { status };
231
- const reason = value.kind === 'unsupported'
232
- ? value.reason
233
- : value.kind === 'list'
234
- ? 'a list is not a status'
235
- : value.scalar.text.trim() === ''
236
- ? 'it is empty'
237
- : `"${value.scalar.text}" does not begin with a word`;
233
+ const reason = 'reason' in declared ? declared.reason : declared.text.trim() === '' ? 'it is empty' : `"${declared.text}" does not begin with a word`;
238
234
  return {
239
235
  problem: {
240
- // The reader counts lines from 0 in the text the scan read, which is the
241
- // document's own lines after any byte-order mark.
242
- line: entry.line + 1,
236
+ line: declared.line,
243
237
  message: `the status in front matter cannot be read (${reason}), so its status is unrecognised and the document stays in force; a status written below the front matter is not read in its place`,
244
238
  },
245
239
  };
246
240
  }
241
+ /** The `status` of YAML front matter, as spec-core's reader reads it, or undefined when it has none. */
242
+ function yamlStatus(scan, block) {
243
+ const entry = findEntry(readFrontMatter(scan.text.slice(0, block.bodyStart)), 'status');
244
+ if (entry === undefined)
245
+ return undefined;
246
+ // The reader counts lines from 0 in the text the scan read, which is the
247
+ // document's own lines after any byte-order mark.
248
+ const line = entry.line + 1;
249
+ const { value } = entry;
250
+ if (value.kind === 'scalar')
251
+ return { line, text: value.scalar.text };
252
+ return { line, reason: value.kind === 'list' ? 'a list is not a status' : value.reason };
253
+ }
254
+ /*
255
+ * What ends a line in TOML front matter, as the scanner ends its lines, and
256
+ * then what else ends what is being read. Past the end of the text `charAt`
257
+ * reads the empty string, which each of them includes, so every walk that
258
+ * stops at one of them stops at the end as well.
259
+ */
260
+ const TOML_LINE_END = '\n\r';
261
+ /** What may follow a value on its line: nothing, or a comment. */
262
+ const TOML_VALUE_END = '\n\r#';
263
+ /** What ends a number, a boolean or a date: its line, or the array or inline table it is in. */
264
+ const TOML_BARE_END = '\n\r#,]}';
265
+ const TOML_BARE_KEY = /[A-Za-z0-9_-]/;
266
+ /** TOML 1.0's escapes. A later version's `\e` and `\x` are refused, which leaves the document in force. */
267
+ const TOML_ESCAPES = { b: '\b', t: '\t', n: '\n', f: '\f', r: '\r', '"': '"', '\\': '\\' };
268
+ const TOML_HEX_DIGITS = { u: 4, U: 8 };
269
+ /**
270
+ * The top-level `status` of TOML front matter, as TOML reads it, or undefined
271
+ * when it has none. `raw` is the text between the `+++` lines, and `lineAt`
272
+ * turns an offset in it into a line of the document.
273
+ *
274
+ * Only that key is read, and only as a string on one line - `status =
275
+ * "accepted"` or `status = 'accepted'`, with the blanks and the comment TOML
276
+ * allows around it. spec-guard depends on nothing, and a TOML parser would be
277
+ * its first dependency, for one key. The rest of the block is walked rather
278
+ * than read: strings, arrays and inline tables are stepped over to their ends,
279
+ * whatever lines those are on, so that a `status = "draft"` line inside a
280
+ * multi-line string is not taken for the key, nor a `[1, 2]` line inside an
281
+ * array for a table header, which would end the top level early.
282
+ *
283
+ * The key is the document's when it comes before the first table header, or
284
+ * when a header names it; it is compared as the YAML reader compares keys, so
285
+ * `Status` is it. Any other form of it - a multi-line string, an array, a
286
+ * table, a value that is not a string - is why it cannot be read, as a YAML
287
+ * value the reader refuses is. A `status` in a table is the table's, one in an
288
+ * inline table is that table's, and one in a comment is not written. A line
289
+ * this walk cannot follow is passed over to its end, as the YAML reader passes
290
+ * over a line that is not `key: value`.
291
+ */
292
+ function tomlStatus(raw, lineAt) {
293
+ let i = 0;
294
+ const peek = () => raw.charAt(i);
295
+ const opens = (delimiter) => raw.startsWith(delimiter, i);
296
+ const blank = () => {
297
+ while (peek() === ' ' || peek() === '\t')
298
+ i += 1;
299
+ };
300
+ const toLineEnd = () => {
301
+ while (!TOML_LINE_END.includes(peek()))
302
+ i += 1;
303
+ };
304
+ /** Blanks, newlines and comments: what may come between the items of an array or an inline table. */
305
+ const space = () => {
306
+ for (;;) {
307
+ blank();
308
+ if (peek() === '#')
309
+ toLineEnd();
310
+ if (peek() !== '\n' && peek() !== '\r')
311
+ return;
312
+ i += 1;
313
+ }
314
+ };
315
+ /** A string on one line, basic or literal, from its opening quote: its text, or why it cannot be read. */
316
+ const string = () => {
317
+ const quote = peek();
318
+ let text = '';
319
+ for (i += 1;; i += 1) {
320
+ const ch = peek();
321
+ if (TOML_LINE_END.includes(ch))
322
+ return { reason: 'the string is never closed on its line' };
323
+ if (ch === quote) {
324
+ i += 1;
325
+ return { text };
326
+ }
327
+ if (ch !== '\\' || quote === "'") {
328
+ text += ch;
329
+ continue;
330
+ }
331
+ const code = raw.charAt(i + 1);
332
+ // A backslash ending the line escapes nothing, and the string runs off it.
333
+ if (TOML_LINE_END.includes(code))
334
+ continue;
335
+ i += 1;
336
+ const simple = TOML_ESCAPES[code];
337
+ if (simple !== undefined) {
338
+ text += simple;
339
+ continue;
340
+ }
341
+ const width = TOML_HEX_DIGITS[code] ?? 0;
342
+ const hex = raw.slice(i + 1, i + 1 + width);
343
+ // Every line of the block ends in a terminator, which is not a digit, so
344
+ // an escape cut short is never all digits.
345
+ if (!/^[0-9A-Fa-f]+$/.test(hex))
346
+ return { reason: `"\\${code}" is not an escape this reader knows` };
347
+ const point = Number.parseInt(hex, 16);
348
+ if (point > 0x10ffff)
349
+ return { reason: `"\\${code}${hex}" is not a character` };
350
+ text += String.fromCodePoint(point);
351
+ i += width;
352
+ }
353
+ };
354
+ /** Steps over a multi-line string from its opening delimiter to its closing one, or to the end. */
355
+ const multiline = (delimiter) => {
356
+ const quote = delimiter.charAt(0);
357
+ i += 3;
358
+ while (peek() !== '') {
359
+ if (opens(delimiter)) {
360
+ // Up to two quotes just inside the closing delimiter are the string's,
361
+ // so the string ends where the run of quotes does.
362
+ while (peek() === quote)
363
+ i += 1;
364
+ return;
365
+ }
366
+ // In a basic string a backslash escapes what follows it, a quote included.
367
+ i += peek() === '\\' && quote === '"' ? 2 : 1;
368
+ }
369
+ };
370
+ /** A key, dotted or not, as its parts, and the blanks after it; undefined where none is written. */
371
+ const key = () => {
372
+ const parts = [];
373
+ for (;;) {
374
+ blank();
375
+ if (peek() === '"' || peek() === "'") {
376
+ const read = string();
377
+ if ('reason' in read)
378
+ return undefined;
379
+ parts.push(read.text);
380
+ }
381
+ else {
382
+ const from = i;
383
+ while (TOML_BARE_KEY.test(peek()))
384
+ i += 1;
385
+ if (i === from)
386
+ return undefined;
387
+ parts.push(raw.slice(from, i));
388
+ }
389
+ blank();
390
+ if (peek() !== '.')
391
+ return parts;
392
+ i += 1;
393
+ }
394
+ };
395
+ /** The `=` after a key, and the blanks after it. */
396
+ const equals = () => {
397
+ if (peek() !== '=')
398
+ return false;
399
+ i += 1;
400
+ blank();
401
+ return true;
402
+ };
403
+ /** Steps over a value to its end, or to what it cannot follow. */
404
+ const value = () => {
405
+ if (opens('"""') || opens("'''"))
406
+ multiline(raw.slice(i, i + 3));
407
+ else if (peek() === '"' || peek() === "'")
408
+ string();
409
+ else if (peek() === '[' || peek() === '{')
410
+ brackets();
411
+ else
412
+ while (!TOML_BARE_END.includes(peek()))
413
+ i += 1;
414
+ };
415
+ /** Steps over an array or an inline table from its opening bracket to its closing one, or to what it cannot follow. */
416
+ const brackets = () => {
417
+ const table = peek() === '{';
418
+ const close = table ? '}' : ']';
419
+ i += 1;
420
+ for (;;) {
421
+ space();
422
+ if (peek() === close) {
423
+ i += 1;
424
+ return;
425
+ }
426
+ if (table && (key() === undefined || !equals()))
427
+ return;
428
+ value();
429
+ space();
430
+ if (peek() === ',')
431
+ i += 1;
432
+ else if (peek() !== close)
433
+ return;
434
+ }
435
+ };
436
+ const isStatus = (part) => keyName(part) === 'status';
437
+ /** The value of the top-level `status` key, from just past the key. */
438
+ const status = (parts, at) => {
439
+ const line = lineAt(at);
440
+ const cannot = (reason) => ({ line, reason });
441
+ if (parts.length > 1)
442
+ return cannot('a table is not a status');
443
+ if (!equals())
444
+ return cannot('"=" does not follow the key');
445
+ if (opens('"""') || opens("'''"))
446
+ return cannot('a multi-line string is not read; write it as "..." on one line');
447
+ const ch = peek();
448
+ if (ch === '[')
449
+ return cannot('an array is not a status');
450
+ if (ch === '{')
451
+ return cannot('a table is not a status');
452
+ if (TOML_VALUE_END.includes(ch))
453
+ return cannot('it is empty');
454
+ if (ch !== '"' && ch !== "'")
455
+ return cannot('it is not a string; quote it');
456
+ const read = string();
457
+ if ('reason' in read)
458
+ return cannot(read.reason);
459
+ blank();
460
+ return TOML_VALUE_END.includes(peek()) ? { line, text: read.text } : cannot('text follows a closing quote');
461
+ };
462
+ let root = true;
463
+ while (peek() !== '') {
464
+ blank();
465
+ const at = i;
466
+ if (peek() === '[') {
467
+ const array = opens('[[');
468
+ i += array ? 2 : 1;
469
+ const header = key();
470
+ if (header !== undefined && isStatus(header[0])) {
471
+ return { line: lineAt(at), reason: array ? 'an array of tables is not a status' : 'a table is not a status' };
472
+ }
473
+ root = false;
474
+ }
475
+ else {
476
+ // A blank line or a comment holds no key, so it is passed over as a
477
+ // line that cannot be followed is.
478
+ const parts = key();
479
+ if (parts !== undefined && root && isStatus(parts[0]))
480
+ return status(parts, at);
481
+ if (parts !== undefined && equals())
482
+ value();
483
+ }
484
+ toLineEnd();
485
+ i += 1;
486
+ }
487
+ return undefined;
488
+ }
247
489
  /**
248
490
  * A `## Status` section, whose value is the first line of prose under it.
249
491
  *
@@ -291,11 +533,12 @@ function fromLabel(scan) {
291
533
  * The lifecycle status a Markdown document declares about itself.
292
534
  *
293
535
  * Three spellings are recognised because three are in use, including two in
294
- * this repository's own ADRs: YAML front-matter (MADR), a `## Status` section
295
- * (Nygard), and a bold `**Status:**` label. Front-matter wins when it has a
296
- * `status` key, readable or not, and when it never closes - it is
297
- * machine-readable metadata rather than a convention read out of prose, and
298
- * front matter that cannot be read is no licence to read the prose instead.
536
+ * this repository's own ADRs: front-matter (MADR's YAML, or TOML between `+++`
537
+ * lines), a `## Status` section (Nygard), and a bold `**Status:**` label.
538
+ * Front-matter wins when it has a `status` key, readable or not, and when it
539
+ * never closes - it is machine-readable metadata rather than a convention read
540
+ * out of prose, and front matter that cannot be read is no licence to read the
541
+ * prose instead.
299
542
  *
300
543
  * The section and the label are read with code masked, so a document that
301
544
  * documents this syntax inside a fence - this project's README does - is not
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -29,8 +29,9 @@
29
29
  * - Braces expand first, and each alternative reads as it would written on
30
30
  * its own: `{src/,lib}` is `src/` or `lib`, and a trailing `/` means the
31
31
  * directory's contents - in an exclusion, the directory and its contents.
32
- * One that names no path, `{./,lib}` or `{,lib}`, is refused, as `./` and
33
- * the empty pattern are.
32
+ * `{/docs,lib}` is `/docs` or `lib`, the leading `/` rooting or anchoring
33
+ * that alternative as it would the pattern. One that names no path,
34
+ * `{./,lib}` or `{,lib}`, is refused, as `./` and the empty pattern are.
34
35
  * - Case is the caller's decision, stated every time. A result must not
35
36
  * depend on the host it ran on.
36
37
  * - A malformed pattern is an error, never a literal. An unclosed `[` or `{`,
@@ -1 +1 @@
1
- {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../../src/vendor/spec-core/pattern/glob.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../../src/vendor/spec-core/pattern/glob.ts"],"names":[],"mappings":"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"}
@@ -29,8 +29,9 @@
29
29
  * - Braces expand first, and each alternative reads as it would written on
30
30
  * its own: `{src/,lib}` is `src/` or `lib`, and a trailing `/` means the
31
31
  * directory's contents - in an exclusion, the directory and its contents.
32
- * One that names no path, `{./,lib}` or `{,lib}`, is refused, as `./` and
33
- * the empty pattern are.
32
+ * `{/docs,lib}` is `/docs` or `lib`, the leading `/` rooting or anchoring
33
+ * that alternative as it would the pattern. One that names no path,
34
+ * `{./,lib}` or `{,lib}`, is refused, as `./` and the empty pattern are.
34
35
  * - Case is the caller's decision, stated every time. A result must not
35
36
  * depend on the host it ran on.
36
37
  * - A malformed pattern is an error, never a literal. An unclosed `[` or `{`,
@@ -86,22 +87,13 @@ function build(source, options) {
86
87
  return 'a negated pattern is a list entry, not a glob; narrow the positive pattern';
87
88
  if (/(?:^|[^\\])[?*+@!]\([^)]*\|/.test(pattern))
88
89
  return EXTGLOB;
89
- while (pattern.startsWith('./'))
90
- pattern = pattern.slice(2);
91
- // A leading slash roots a pattern at the filesystem's root in the path and
92
- // ripgrep dialects, and only anchors it at the repository root in gitignore.
93
- let rooted = false;
94
- let anchored = false;
95
- if (pattern.startsWith('/')) {
96
- if (options.dialect === 'gitignore')
97
- anchored = true;
98
- else
99
- rooted = true;
100
- pattern = pattern.replace(/^\/+/, '');
101
- }
102
- if (pattern.length === 0)
90
+ // The pattern's own leading slash is taken off before the braces expand, so
91
+ // that the root itself, and a text the braces give, are refused in the
92
+ // words they always were: `/{./,a}` is told `./`.
93
+ const whole = unrooted(pattern);
94
+ if (whole.text.length === 0)
103
95
  return 'the pattern names the root itself, not a path under it';
104
- const expanded = expandBraces(pattern, escapes);
96
+ const expanded = expandBraces(whole.text, escapes);
105
97
  if (typeof expanded === 'string')
106
98
  return expanded;
107
99
  const alternatives = [];
@@ -111,13 +103,19 @@ function build(source, options) {
111
103
  // Each text the braces give is shorter than the pattern, so only a
112
104
  // pattern without braces is its own text.
113
105
  if (namesNoPath(text))
114
- return text === pattern ? 'the pattern names no path' : bracesNamingNoPath(text);
115
- const parsed = parseAlternative(trailingSlash(text, options.dialect), escapes);
106
+ return text === whole.text ? 'the pattern names no path' : bracesNamingNoPath(text);
107
+ // Its leading slash is read as the pattern's is, since braces expand
108
+ // before anything else is decided: `{/docs,x}` is `/docs` or `x`. Left to
109
+ // `parseAlternative`, the slash would be an empty segment, dropped, and
110
+ // `/docs` would read as `docs`. A slash after a segment, as in
111
+ // `a/{/b,c}`, starts no text, and is the empty segment of `a//b`.
112
+ const alone = unrooted(text);
113
+ const parsed = parseAlternative(trailingSlash(alone.text, options.dialect), escapes);
116
114
  if (parsed === GLOBSTAR_IN_NAME)
117
115
  return `${GLOBSTAR_IN_NAME}: ${globstarAdvice(written)}`;
118
116
  if (typeof parsed === 'string')
119
117
  return parsed;
120
- alternatives.push(parsed);
118
+ alternatives.push({ ...parsed, rooted: whole.rooted || alone.rooted });
121
119
  }
122
120
  const builder = new Builder();
123
121
  const fragments = [];
@@ -125,7 +123,7 @@ function build(source, options) {
125
123
  let automaton;
126
124
  try {
127
125
  for (const alternative of alternatives) {
128
- const compiled = compileAlternative(builder, alternative, options, rooted, anchored);
126
+ const compiled = compileAlternative(builder, alternative, options);
129
127
  fragments.push(compiled.fragment);
130
128
  bases.push(compiled.base);
131
129
  }
@@ -261,6 +259,20 @@ function classEnd(pattern, open, escapes) {
261
259
  return -1;
262
260
  }
263
261
  /* ---------------------------------------------------------------- segments */
262
+ /**
263
+ * A pattern, or a text its braces give, without the `./` and the slashes it
264
+ * starts with, and whether a slash led it once the `./` was gone. What a
265
+ * leading slash means is the dialect's: it roots a pattern at the
266
+ * filesystem's root in `path` and `ripgrep`, and only anchors it at the
267
+ * repository root in `gitignore`, as git reads one. `.//docs` is led by one,
268
+ * as `/docs` is.
269
+ */
270
+ function unrooted(text) {
271
+ let rest = text;
272
+ while (rest.startsWith('./'))
273
+ rest = rest.slice(2);
274
+ return { text: rest.replace(/^\/+/, ''), rooted: rest.startsWith('/') };
275
+ }
264
276
  /** Whether a pattern's text names no path: nothing in it but `/` and `.` segments. */
265
277
  function namesNoPath(text) {
266
278
  return text.split('/').every((part) => part === '' || part === '.');
@@ -504,14 +516,14 @@ function segmentsFragment(b, segments) {
504
516
  });
505
517
  return b.sequence(parts);
506
518
  }
507
- function compileAlternative(b, alternative, options, rooted, anchored) {
508
- const { segments } = alternative;
519
+ function compileAlternative(b, alternative, options) {
520
+ const { segments, rooted } = alternative;
509
521
  const body = segmentsFragment(b, segments);
510
522
  const root = rooted ? '/' : '';
511
523
  const literal = literalText(segments);
512
524
  const leading = leadingLiteral(segments);
513
525
  if (options.dialect === 'gitignore') {
514
- const floating = !anchored && !alternative.slashed;
526
+ const floating = !rooted && !alternative.slashed;
515
527
  const parts = [body, b.optional(beneath(b))];
516
528
  if (floating)
517
529
  parts.unshift(anyDirectories(b));