lens-content-processor 0.49.0 → 0.51.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/bundler/article.d.ts +56 -45
- package/dist/bundler/article.js +129 -51
- package/dist/bundler/article.js.map +1 -1
- package/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -1
- package/dist/content-schema.d.ts +14 -0
- package/dist/content-schema.js +33 -0
- package/dist/content-schema.js.map +1 -1
- package/dist/course-graph.d.ts +2 -0
- package/dist/course-graph.js +190 -0
- package/dist/course-graph.js.map +1 -0
- package/dist/flattener/index.js +64 -38
- package/dist/flattener/index.js.map +1 -1
- package/dist/index.d.ts +21 -2
- package/dist/index.js +27 -97
- package/dist/index.js.map +1 -1
- package/dist/markdown-parse.d.ts +5 -0
- package/dist/markdown-parse.js +33 -0
- package/dist/markdown-parse.js.map +1 -0
- package/dist/parser/article-elements.d.ts +139 -0
- package/dist/parser/article-elements.js +489 -0
- package/dist/parser/article-elements.js.map +1 -0
- package/dist/parser/article.d.ts +4 -0
- package/dist/parser/article.js +7 -4
- package/dist/parser/article.js.map +1 -1
- package/dist/parser/code-fence.d.ts +7 -0
- package/dist/parser/code-fence.js +34 -0
- package/dist/parser/code-fence.js.map +1 -0
- package/dist/parser/frames.d.ts +51 -0
- package/dist/parser/frames.js +116 -0
- package/dist/parser/frames.js.map +1 -0
- package/dist/parser/learning-outcome.js +4 -2
- package/dist/parser/learning-outcome.js.map +1 -1
- package/dist/parser/lens.d.ts +14 -1
- package/dist/parser/lens.js +28 -20
- package/dist/parser/lens.js.map +1 -1
- package/dist/parser/module.js +7 -27
- package/dist/parser/module.js.map +1 -1
- package/dist/parser/response-segments.d.ts +2 -0
- package/dist/parser/response-segments.js +2 -2
- package/dist/parser/response-segments.js.map +1 -1
- package/dist/parser/sections.d.ts +21 -1
- package/dist/parser/sections.js +94 -14
- package/dist/parser/sections.js.map +1 -1
- package/dist/parser/survey.js +9 -5
- package/dist/parser/survey.js.map +1 -1
- package/dist/reference-graph.d.ts +3 -0
- package/dist/reference-graph.js +11 -7
- package/dist/reference-graph.js.map +1 -1
- package/dist/same-page-links.js +3 -18
- package/dist/same-page-links.js.map +1 -1
- package/dist/source-location.js +6 -1
- package/dist/source-location.js.map +1 -1
- package/dist/validator/article-structure.js +25 -5
- package/dist/validator/article-structure.js.map +1 -1
- package/dist/validator/directives.js +61 -58
- package/dist/validator/directives.js.map +1 -1
- package/dist/validator/emphasis.js +1 -1
- package/dist/validator/emphasis.js.map +1 -1
- package/dist/validator/same-lens-links.js +3 -15
- package/dist/validator/same-lens-links.js.map +1 -1
- package/dist/validator/test-segments.js +1 -1
- package/dist/validator/tier.d.ts +2 -2
- package/dist/validator/tier.js +20 -18
- package/dist/validator/tier.js.map +1 -1
- package/package.json +1 -1
- package/dist/validator/article-imports.d.ts +0 -68
- package/dist/validator/article-imports.js +0 -265
- package/dist/validator/article-imports.js.map +0 -1
- package/dist/validator/markdown-parse.d.ts +0 -3
- package/dist/validator/markdown-parse.js +0 -22
- package/dist/validator/markdown-parse.js.map +0 -1
|
@@ -1,51 +1,54 @@
|
|
|
1
|
-
import type { ContentError } from "../index.js";
|
|
2
|
-
import { type
|
|
1
|
+
import type { ContentError, Frame } from "../index.js";
|
|
2
|
+
import { type ArticleElement } from "../parser/article-elements.js";
|
|
3
3
|
export interface ArticleExcerptResult {
|
|
4
4
|
content?: string;
|
|
5
5
|
startIndex?: number;
|
|
6
6
|
endIndex?: number;
|
|
7
7
|
error?: ContentError;
|
|
8
|
+
/** Set when to:: lands on a heading line: the excerpt then ends with that
|
|
9
|
+
* heading and nothing under it (four such slices shipped in 2026-08). */
|
|
10
|
+
warning?: ContentError;
|
|
8
11
|
}
|
|
9
12
|
export interface ExcerptInput {
|
|
10
13
|
from?: string;
|
|
11
14
|
to?: string;
|
|
12
15
|
}
|
|
13
16
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
17
|
+
* A point in the cleaned body where the prose is interrupted: an inline
|
|
18
|
+
* element (`::video[[...]]`, `![[../widgets/...]]`, `:::question` block) or
|
|
19
|
+
* the edge of a lifted callout (a `:::callout` that holds an element; one
|
|
20
|
+
* holding only prose stays markdown and leaves no marker).
|
|
16
21
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
type ArticleMarkerBody = ({
|
|
23
|
+
kind: "element";
|
|
24
|
+
} & ArticleElement) | {
|
|
25
|
+
kind: "open";
|
|
26
|
+
frame: Frame;
|
|
27
|
+
} | {
|
|
28
|
+
kind: "close";
|
|
22
29
|
};
|
|
30
|
+
export type ArticleMarker = {
|
|
31
|
+
offset: number;
|
|
32
|
+
} & ArticleMarkerBody;
|
|
23
33
|
export interface ParsedArticleBody {
|
|
24
|
-
/** Publishable body with
|
|
34
|
+
/** Publishable body with element lines and lifted callout fences removed. */
|
|
25
35
|
body: string;
|
|
26
|
-
/**
|
|
27
|
-
|
|
36
|
+
/** Markers in document order, with offsets into the cleaned body. */
|
|
37
|
+
markers: ArticleMarker[];
|
|
28
38
|
}
|
|
29
|
-
/** A piece of an excerpt that contains
|
|
39
|
+
/** A piece of an excerpt that contains markers. */
|
|
30
40
|
export type ArticlePart = {
|
|
41
|
+
frames?: Frame[];
|
|
42
|
+
} & ({
|
|
31
43
|
kind: "prose";
|
|
32
44
|
content: string;
|
|
33
|
-
/** Prose continues contiguously after the following
|
|
45
|
+
/** Prose continues contiguously after the following element/edge. */
|
|
34
46
|
contiguousWithNext?: boolean;
|
|
35
|
-
/** Prose contiguously continues the part before the preceding
|
|
47
|
+
/** Prose contiguously continues the part before the preceding element/edge. */
|
|
36
48
|
contiguousWithPrev?: boolean;
|
|
37
|
-
} | {
|
|
38
|
-
kind: "
|
|
39
|
-
|
|
40
|
-
from?: string;
|
|
41
|
-
to?: string;
|
|
42
|
-
rawLine: string;
|
|
43
|
-
} | {
|
|
44
|
-
kind: "widgetRef";
|
|
45
|
-
target: string;
|
|
46
|
-
height?: string;
|
|
47
|
-
rawLine: string;
|
|
48
|
-
};
|
|
49
|
+
} | ({
|
|
50
|
+
kind: "element";
|
|
51
|
+
} & ArticleElement));
|
|
49
52
|
/** One lens excerpt of an article, fully resolved against the source body. */
|
|
50
53
|
export interface ResolvedExcerpt {
|
|
51
54
|
/** Full excerpt content (import lines removed). Absent on error. */
|
|
@@ -53,13 +56,16 @@ export interface ResolvedExcerpt {
|
|
|
53
56
|
collapsed_before?: string;
|
|
54
57
|
collapsed_after?: string;
|
|
55
58
|
/**
|
|
56
|
-
* Present when
|
|
57
|
-
* ordered prose/
|
|
58
|
-
*
|
|
59
|
-
*
|
|
59
|
+
* Present when a marker falls inside the excerpt: the excerpt split into
|
|
60
|
+
* ordered prose/element parts, each carrying the callouts it sits in as
|
|
61
|
+
* frames. Prose parts carry only content, frames and contiguity;
|
|
62
|
+
* collapsed_* stay on this excerpt (they belong to its outer boundaries,
|
|
63
|
+
* never to a seam).
|
|
60
64
|
*/
|
|
61
65
|
parts?: ArticlePart[];
|
|
62
66
|
error?: ContentError;
|
|
67
|
+
/** Non-fatal problem with this excerpt (see ArticleExcerptResult.warning). */
|
|
68
|
+
warning?: ContentError;
|
|
63
69
|
}
|
|
64
70
|
/**
|
|
65
71
|
* Strip frontmatter from article content.
|
|
@@ -68,18 +74,19 @@ export interface ResolvedExcerpt {
|
|
|
68
74
|
export declare function stripFrontmatter(article: string): string;
|
|
69
75
|
/**
|
|
70
76
|
* Produce the renderable body of an article: frontmatter and authoring markup
|
|
71
|
-
* stripped,
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
+
* stripped, every valid element removed and recorded as a marker with its
|
|
78
|
+
* character offset into the cleaned body, and every callout that holds an
|
|
79
|
+
* element lifted: its fences are removed too and recorded as open/close
|
|
80
|
+
* markers, so the prose and elements inside carry it as a frame. All
|
|
81
|
+
* downstream work (anchor search, excerpt slicing, collapsed text, word
|
|
82
|
+
* counts) uses this cleaned body, so element lines can never leak into
|
|
83
|
+
* reader-visible text and anchors can never collide with element syntax.
|
|
77
84
|
*
|
|
78
|
-
* Malformed
|
|
85
|
+
* Malformed element lines, and elements inside hide/collapse containers, are
|
|
79
86
|
* left in place as inert prose — parse-time validation
|
|
80
|
-
* (
|
|
87
|
+
* (parser/article-elements.ts) reports them.
|
|
81
88
|
*/
|
|
82
|
-
export declare function parseArticleBody(article: string): ParsedArticleBody;
|
|
89
|
+
export declare function parseArticleBody(article: string, file?: string): ParsedArticleBody;
|
|
83
90
|
/**
|
|
84
91
|
* Extract content from an article between two anchor texts.
|
|
85
92
|
*
|
|
@@ -98,16 +105,20 @@ export declare function extractArticleExcerpt(article: string, fromAnchor: strin
|
|
|
98
105
|
/**
|
|
99
106
|
* Resolve every excerpt a lens takes from one article source, in one pass:
|
|
100
107
|
* extract each excerpt, compute the collapsed (elided) text at its outer
|
|
101
|
-
* boundaries, and split it into prose/
|
|
102
|
-
*
|
|
108
|
+
* boundaries, and split it into prose/element parts around any markers that
|
|
109
|
+
* fall inside its range, each part carrying the lifted callouts open at its
|
|
110
|
+
* position as frames.
|
|
103
111
|
*
|
|
104
|
-
* Excerpts are expected in document order (as authored in the lens).
|
|
105
|
-
*
|
|
112
|
+
* Excerpts are expected in document order (as authored in the lens). A
|
|
113
|
+
* marker's offset points at the text that follows it, so an element between
|
|
106
114
|
* two excerpt ranges attaches to the later excerpt; the consumed-set guard
|
|
107
|
-
* keeps overlapping excerpt ranges from emitting the same
|
|
115
|
+
* keeps overlapping excerpt ranges from emitting the same element twice.
|
|
116
|
+
* Callout edges are never consumed: every excerpt replays them to know
|
|
117
|
+
* which callouts are open where it starts.
|
|
108
118
|
*
|
|
109
119
|
* @param article - The full article content
|
|
110
120
|
* @param excerpts - Excerpt specifications { from, to } in lens order
|
|
111
121
|
* @param file - Source file path for error reporting
|
|
112
122
|
*/
|
|
113
123
|
export declare function resolveArticleSource(article: string, excerpts: ExcerptInput[], file: string): ResolvedExcerpt[];
|
|
124
|
+
export {};
|
package/dist/bundler/article.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { stripAuthoringMarkup } from "../authoring-markup.js";
|
|
2
|
-
import {
|
|
2
|
+
import { calloutFrameFromAttributes, scanArticleBody, } from "../parser/article-elements.js";
|
|
3
3
|
/**
|
|
4
4
|
* Find all occurrences of a substring in text (case-insensitive).
|
|
5
5
|
* Returns array of start indices.
|
|
@@ -31,40 +31,71 @@ function publishableArticleBody(article) {
|
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Produce the renderable body of an article: frontmatter and authoring markup
|
|
34
|
-
* stripped,
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
34
|
+
* stripped, every valid element removed and recorded as a marker with its
|
|
35
|
+
* character offset into the cleaned body, and every callout that holds an
|
|
36
|
+
* element lifted: its fences are removed too and recorded as open/close
|
|
37
|
+
* markers, so the prose and elements inside carry it as a frame. All
|
|
38
|
+
* downstream work (anchor search, excerpt slicing, collapsed text, word
|
|
39
|
+
* counts) uses this cleaned body, so element lines can never leak into
|
|
40
|
+
* reader-visible text and anchors can never collide with element syntax.
|
|
40
41
|
*
|
|
41
|
-
* Malformed
|
|
42
|
+
* Malformed element lines, and elements inside hide/collapse containers, are
|
|
42
43
|
* left in place as inert prose — parse-time validation
|
|
43
|
-
* (
|
|
44
|
+
* (parser/article-elements.ts) reports them.
|
|
44
45
|
*/
|
|
45
|
-
export function parseArticleBody(article) {
|
|
46
|
-
const scanned =
|
|
46
|
+
export function parseArticleBody(article, file = "") {
|
|
47
|
+
const scanned = scanArticleBody(publishableArticleBody(article));
|
|
48
|
+
// A callout is lifted when an element sits inside it (at any depth).
|
|
49
|
+
const lifted = new Set();
|
|
50
|
+
for (const { element, hiddenIn, callouts } of scanned) {
|
|
51
|
+
if (element && !hiddenIn)
|
|
52
|
+
for (const index of callouts ?? [])
|
|
53
|
+
lifted.add(index);
|
|
54
|
+
}
|
|
47
55
|
const outLines = [];
|
|
48
56
|
const pending = [];
|
|
57
|
+
const swallowBlankAround = (i, endIndex) => {
|
|
58
|
+
// Removing the line(s) would leave the blank lines around them doubled
|
|
59
|
+
// up; swallow one so the prose keeps a single paragraph break.
|
|
60
|
+
return (outLines.length > 0 &&
|
|
61
|
+
outLines[outLines.length - 1].trim() === "" &&
|
|
62
|
+
endIndex + 1 < scanned.length &&
|
|
63
|
+
scanned[endIndex + 1].line.trim() === "");
|
|
64
|
+
};
|
|
49
65
|
for (let i = 0; i < scanned.length; i++) {
|
|
50
|
-
const { line,
|
|
51
|
-
// Inside hide/collapse an
|
|
66
|
+
const { line, element, hiddenIn, marker } = scanned[i];
|
|
67
|
+
// Inside hide/collapse an element stays inert prose: splitting there would
|
|
52
68
|
// tear the container apart (validation rejects the placement anyway).
|
|
53
|
-
|
|
54
|
-
if (parsed?.kind === "import") {
|
|
69
|
+
if (element && !hiddenIn) {
|
|
55
70
|
pending.push({
|
|
56
|
-
|
|
71
|
+
kind: "element",
|
|
72
|
+
raw: element.raw,
|
|
73
|
+
rawLine: element.rawLine,
|
|
57
74
|
outLineIndex: outLines.length,
|
|
58
|
-
rawLine: line.trim(),
|
|
59
75
|
});
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
i
|
|
65
|
-
|
|
76
|
+
const end = element.endIndex;
|
|
77
|
+
if (swallowBlankAround(i, end))
|
|
78
|
+
i = end + 1;
|
|
79
|
+
else
|
|
80
|
+
i = end;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (marker?.kind === "open" && marker.name === "callout" && lifted.has(i)) {
|
|
84
|
+
pending.push({
|
|
85
|
+
kind: "open",
|
|
86
|
+
// Keyed by file and line: boxes from different articles in one lens
|
|
87
|
+
// must never merge into one.
|
|
88
|
+
frame: calloutFrameFromAttributes(file, i + 1, marker.attrs),
|
|
89
|
+
outLineIndex: outLines.length,
|
|
90
|
+
});
|
|
91
|
+
if (swallowBlankAround(i, i))
|
|
92
|
+
i++;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (marker?.kind === "close" && lifted.has(marker.opener)) {
|
|
96
|
+
pending.push({ kind: "close", outLineIndex: outLines.length });
|
|
97
|
+
if (swallowBlankAround(i, i))
|
|
66
98
|
i++;
|
|
67
|
-
}
|
|
68
99
|
continue;
|
|
69
100
|
}
|
|
70
101
|
outLines.push(line);
|
|
@@ -77,10 +108,10 @@ export function parseArticleBody(article) {
|
|
|
77
108
|
acc += line.length + 1;
|
|
78
109
|
}
|
|
79
110
|
const joined = outLines.join("\n");
|
|
80
|
-
//
|
|
111
|
+
// Markers at the very start/end leave blank edges behind — trim and shift
|
|
81
112
|
const leading = joined.length - joined.trimStart().length;
|
|
82
113
|
const body = joined.trim();
|
|
83
|
-
const
|
|
114
|
+
const markers = pending.map((p) => {
|
|
84
115
|
const rawOffset = p.outLineIndex < lineStartOffsets.length
|
|
85
116
|
? lineStartOffsets[p.outLineIndex]
|
|
86
117
|
: joined.length;
|
|
@@ -90,7 +121,7 @@ export function parseArticleBody(article) {
|
|
|
90
121
|
offset: Math.min(Math.max(rawOffset - leading, 0), body.length),
|
|
91
122
|
};
|
|
92
123
|
});
|
|
93
|
-
return { body,
|
|
124
|
+
return { body, markers };
|
|
94
125
|
}
|
|
95
126
|
/**
|
|
96
127
|
* Extract content from an article between two anchor texts.
|
|
@@ -107,10 +138,30 @@ export function parseArticleBody(article) {
|
|
|
107
138
|
* @returns Extracted content or error
|
|
108
139
|
*/
|
|
109
140
|
export function extractArticleExcerpt(article, fromAnchor, toAnchor, file) {
|
|
110
|
-
return extractExcerptFromBody(parseArticleBody(article).body, fromAnchor, toAnchor, file);
|
|
141
|
+
return extractExcerptFromBody(parseArticleBody(article, file).body, fromAnchor, toAnchor, file);
|
|
111
142
|
}
|
|
112
|
-
/**
|
|
143
|
+
/** Anchor extraction plus the to::-on-heading warning. */
|
|
113
144
|
function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
|
|
145
|
+
const result = extractAnchored(body, fromAnchor, toAnchor, file);
|
|
146
|
+
if (!toAnchor || result.error || result.endIndex === undefined)
|
|
147
|
+
return result;
|
|
148
|
+
const anchorStart = result.endIndex - toAnchor.length;
|
|
149
|
+
const lineStart = body.lastIndexOf("\n", anchorStart - 1) + 1;
|
|
150
|
+
if (!body.slice(lineStart, result.endIndex).trimStart().startsWith("#"))
|
|
151
|
+
return result;
|
|
152
|
+
return {
|
|
153
|
+
...result,
|
|
154
|
+
warning: {
|
|
155
|
+
file,
|
|
156
|
+
code: "excerpt.to-anchor-on-heading",
|
|
157
|
+
message: `End anchor '${toAnchor}' is on a heading, so the excerpt ends with that heading and nothing under it`,
|
|
158
|
+
suggestion: "Anchor to:: on the last line of prose before the heading",
|
|
159
|
+
severity: "warning",
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/** Core anchor-search extraction over an already-cleaned body. */
|
|
164
|
+
function extractAnchored(body, fromAnchor, toAnchor, file) {
|
|
114
165
|
// If no anchors, return entire article (strip frontmatter)
|
|
115
166
|
if (!fromAnchor && !toAnchor) {
|
|
116
167
|
return {
|
|
@@ -244,20 +295,23 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
|
|
|
244
295
|
/**
|
|
245
296
|
* Resolve every excerpt a lens takes from one article source, in one pass:
|
|
246
297
|
* extract each excerpt, compute the collapsed (elided) text at its outer
|
|
247
|
-
* boundaries, and split it into prose/
|
|
248
|
-
*
|
|
298
|
+
* boundaries, and split it into prose/element parts around any markers that
|
|
299
|
+
* fall inside its range, each part carrying the lifted callouts open at its
|
|
300
|
+
* position as frames.
|
|
249
301
|
*
|
|
250
|
-
* Excerpts are expected in document order (as authored in the lens).
|
|
251
|
-
*
|
|
302
|
+
* Excerpts are expected in document order (as authored in the lens). A
|
|
303
|
+
* marker's offset points at the text that follows it, so an element between
|
|
252
304
|
* two excerpt ranges attaches to the later excerpt; the consumed-set guard
|
|
253
|
-
* keeps overlapping excerpt ranges from emitting the same
|
|
305
|
+
* keeps overlapping excerpt ranges from emitting the same element twice.
|
|
306
|
+
* Callout edges are never consumed: every excerpt replays them to know
|
|
307
|
+
* which callouts are open where it starts.
|
|
254
308
|
*
|
|
255
309
|
* @param article - The full article content
|
|
256
310
|
* @param excerpts - Excerpt specifications { from, to } in lens order
|
|
257
311
|
* @param file - Source file path for error reporting
|
|
258
312
|
*/
|
|
259
313
|
export function resolveArticleSource(article, excerpts, file) {
|
|
260
|
-
const { body,
|
|
314
|
+
const { body, markers } = parseArticleBody(article, file);
|
|
261
315
|
const extracted = excerpts.map((excerpt) => extractExcerptFromBody(body, excerpt.from, excerpt.to, file));
|
|
262
316
|
// Whole-article embeds (no anchors anywhere in the group) get no collapsed
|
|
263
317
|
// fields — there is nothing elided to show.
|
|
@@ -273,6 +327,8 @@ export function resolveArticleSource(article, excerpts, file) {
|
|
|
273
327
|
const start = excerpt.startIndex;
|
|
274
328
|
const end = excerpt.endIndex;
|
|
275
329
|
const result = { content: excerpt.content };
|
|
330
|
+
if (excerpt.warning)
|
|
331
|
+
result.warning = excerpt.warning;
|
|
276
332
|
if (hasAnchors) {
|
|
277
333
|
// collapsed_before: from the body start (first excerpt) or the previous
|
|
278
334
|
// excerpt's end. A previous excerpt that failed to extract yields none —
|
|
@@ -299,28 +355,50 @@ export function resolveArticleSource(article, excerpts, file) {
|
|
|
299
355
|
result.collapsed_after = collapsedAfter;
|
|
300
356
|
}
|
|
301
357
|
}
|
|
302
|
-
const inRange =
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
358
|
+
const inRange = markers.filter((m) => m.offset >= start &&
|
|
359
|
+
m.offset <= end &&
|
|
360
|
+
(m.kind !== "element" || !consumed.has(m)));
|
|
361
|
+
// Callouts open where the excerpt starts: replay the edges before it. An
|
|
362
|
+
// excerpt lying wholly inside a lifted callout has no marker of its own
|
|
363
|
+
// but still belongs in the box.
|
|
364
|
+
const frames = [];
|
|
365
|
+
for (const m of markers) {
|
|
366
|
+
if (m.offset >= start)
|
|
367
|
+
break;
|
|
368
|
+
if (m.kind === "open")
|
|
369
|
+
frames.push(m.frame);
|
|
370
|
+
else if (m.kind === "close")
|
|
371
|
+
frames.pop();
|
|
372
|
+
}
|
|
373
|
+
if (inRange.length > 0 || frames.length > 0) {
|
|
306
374
|
const parts = [];
|
|
375
|
+
const framed = (part) => frames.length > 0 ? { ...part, frames: [...frames] } : part;
|
|
307
376
|
let cursor = start;
|
|
308
|
-
for (const
|
|
309
|
-
const prose = body.slice(cursor,
|
|
310
|
-
if (prose.length > 0)
|
|
311
|
-
parts.push({ kind: "prose", content: prose });
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
377
|
+
for (const m of inRange) {
|
|
378
|
+
const prose = body.slice(cursor, m.offset).trim();
|
|
379
|
+
if (prose.length > 0) {
|
|
380
|
+
parts.push(framed({ kind: "prose", content: prose }));
|
|
381
|
+
}
|
|
382
|
+
if (m.kind === "element") {
|
|
383
|
+
consumed.add(m);
|
|
384
|
+
const { offset: _offset, kind: _kind, ...element } = m;
|
|
385
|
+
parts.push(framed({ kind: "element", ...element }));
|
|
386
|
+
}
|
|
387
|
+
else if (m.kind === "open") {
|
|
388
|
+
frames.push(m.frame);
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
frames.pop();
|
|
392
|
+
}
|
|
393
|
+
cursor = m.offset;
|
|
317
394
|
}
|
|
318
395
|
const tail = body.slice(cursor, end).trim();
|
|
319
396
|
if (tail.length > 0)
|
|
320
|
-
parts.push({ kind: "prose", content: tail });
|
|
397
|
+
parts.push(framed({ kind: "prose", content: tail }));
|
|
321
398
|
// Contiguity: a prose part separated from another prose part only by
|
|
322
|
-
//
|
|
323
|
-
// excerpt edge (no prose on one side) sets no flag on
|
|
399
|
+
// elements or callout edges is one continuous stretch of source text.
|
|
400
|
+
// A marker at an excerpt edge (no prose on one side) sets no flag on
|
|
401
|
+
// that side.
|
|
324
402
|
for (let p = 0; p < parts.length; p++) {
|
|
325
403
|
const part = parts[p];
|
|
326
404
|
if (part.kind !== "prose")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/bundler/article.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/bundler/article.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -6,6 +6,7 @@ import { validateUrls, materializeUrlIssue, } from "./validator/url-reachability
|
|
|
6
6
|
import { UrlCache } from "./validator/url-cache.js";
|
|
7
7
|
import { buildFileToCourses } from "./reference-graph.js";
|
|
8
8
|
import { dedupeErrors } from "./dedupe-errors.js";
|
|
9
|
+
import { courseGraphIssues } from "./course-graph.js";
|
|
9
10
|
import { writeFile } from "fs/promises";
|
|
10
11
|
export function parseArgs(argv) {
|
|
11
12
|
const args = argv.slice(2);
|
|
@@ -90,6 +91,24 @@ export async function run(options) {
|
|
|
90
91
|
catch (error) {
|
|
91
92
|
console.error("buildFileToCourses failed; serving validation without the course filter:", error instanceof Error ? error.message : error);
|
|
92
93
|
}
|
|
94
|
+
// Ordered per-course checks (course-graph.ts). Warnings only, and degradable
|
|
95
|
+
// for the same reason as the map above.
|
|
96
|
+
try {
|
|
97
|
+
result.errors = dedupeErrors([
|
|
98
|
+
...result.errors,
|
|
99
|
+
...courseGraphIssues(files),
|
|
100
|
+
]);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error("courseGraphIssues failed; serving validation without course-graph checks:", error instanceof Error ? error.message : error);
|
|
104
|
+
// Say so in the output too: silence would read as "no course-graph problems".
|
|
105
|
+
result.errors.push({
|
|
106
|
+
file: "(course graph)",
|
|
107
|
+
code: "course-graph.failed",
|
|
108
|
+
severity: "warning",
|
|
109
|
+
message: `Course-graph checks did not run: ${error instanceof Error ? error.message : String(error)}`,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
93
112
|
return { ...result, fileToCourses };
|
|
94
113
|
}
|
|
95
114
|
async function main() {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/content-schema.d.ts
CHANGED
|
@@ -26,6 +26,20 @@ export declare const CONTENT_SCHEMAS: Record<string, ContentTypeSchema>;
|
|
|
26
26
|
*/
|
|
27
27
|
export declare const SURVEY_SEGMENT_SCHEMAS: Record<string, SegmentTypeSchema>;
|
|
28
28
|
export declare const SEGMENT_SCHEMAS: Record<string, SegmentTypeSchema>;
|
|
29
|
+
export declare const CALLOUT_TONES: readonly ["neutral", "blue", "green", "amber", "red", "purple"];
|
|
30
|
+
export declare const CALLOUT_COLLAPSE: readonly ["closed", "open"];
|
|
31
|
+
/**
|
|
32
|
+
* Segment types that open a container in heading notation. Each is closed by
|
|
33
|
+
* a `#### End <Type>` header (containerCloser), which is a valid segment
|
|
34
|
+
* header type wherever the container itself is.
|
|
35
|
+
*/
|
|
36
|
+
export declare const CONTAINER_SEGMENT_TYPES: readonly ["callout"];
|
|
37
|
+
export type ContainerSegmentType = (typeof CONTAINER_SEGMENT_TYPES)[number];
|
|
38
|
+
export declare function isContainerSegmentType(type: string): type is ContainerSegmentType;
|
|
39
|
+
/** Header type that closes a container, e.g. "end callout". */
|
|
40
|
+
export declare function containerCloser(type: ContainerSegmentType): string;
|
|
41
|
+
/** Segment-type form of a closer as parseSections emits it ("end-callout"). */
|
|
42
|
+
export declare function containerCloserSegmentType(type: ContainerSegmentType): string;
|
|
29
43
|
/**
|
|
30
44
|
* Response (subtyped) question segment schemas, keyed "question:<subtype>".
|
|
31
45
|
* `#### Question: Open` etc. — the same segment family in lenses, LO tests,
|
package/dist/content-schema.js
CHANGED
|
@@ -152,7 +152,40 @@ export const SEGMENT_SCHEMAS = {
|
|
|
152
152
|
// required:: true makes the lens wait for the widget's Lens.complete()
|
|
153
153
|
// before it can be marked complete (widgets gate nothing by default).
|
|
154
154
|
widget: segmentSchema(["source"], ["height", "required"], ["required"]),
|
|
155
|
+
// Container. `#### Callout: Title` … `#### End Callout` in segment bodies
|
|
156
|
+
// (lenses, LO tests, surveys); `:::callout{title="…" tone="…"}` … `:::` in
|
|
157
|
+
// prose (text fields, article bodies). The title is the header title or
|
|
158
|
+
// attribute; tone:: and collapse:: are its only fields (values below). A
|
|
159
|
+
// callout never becomes a segment of its own: the segments inside carry it
|
|
160
|
+
// as a frame (parser/frames.ts), nested to any depth.
|
|
161
|
+
callout: segmentSchema([], ["tone", "collapse"], []),
|
|
155
162
|
};
|
|
163
|
+
export const CALLOUT_TONES = [
|
|
164
|
+
"neutral",
|
|
165
|
+
"blue",
|
|
166
|
+
"green",
|
|
167
|
+
"amber",
|
|
168
|
+
"red",
|
|
169
|
+
"purple",
|
|
170
|
+
];
|
|
171
|
+
export const CALLOUT_COLLAPSE = ["closed", "open"];
|
|
172
|
+
/**
|
|
173
|
+
* Segment types that open a container in heading notation. Each is closed by
|
|
174
|
+
* a `#### End <Type>` header (containerCloser), which is a valid segment
|
|
175
|
+
* header type wherever the container itself is.
|
|
176
|
+
*/
|
|
177
|
+
export const CONTAINER_SEGMENT_TYPES = ["callout"];
|
|
178
|
+
export function isContainerSegmentType(type) {
|
|
179
|
+
return CONTAINER_SEGMENT_TYPES.includes(type);
|
|
180
|
+
}
|
|
181
|
+
/** Header type that closes a container, e.g. "end callout". */
|
|
182
|
+
export function containerCloser(type) {
|
|
183
|
+
return `end ${type}`;
|
|
184
|
+
}
|
|
185
|
+
/** Segment-type form of a closer as parseSections emits it ("end-callout"). */
|
|
186
|
+
export function containerCloserSegmentType(type) {
|
|
187
|
+
return `end-${type}`;
|
|
188
|
+
}
|
|
156
189
|
/**
|
|
157
190
|
* Response (subtyped) question segment schemas, keyed "question:<subtype>".
|
|
158
191
|
* `#### Question: Open` etc. — the same segment family in lenses, LO tests,
|