lens-content-processor 0.43.0 → 0.44.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.
@@ -1,4 +1,5 @@
1
- import type { ContentError } from '../index.js';
1
+ import type { ContentError } from "../index.js";
2
+ import { type ArticleImportSyntax } from "../validator/article-imports.js";
2
3
  export interface ArticleExcerptResult {
3
4
  content?: string;
4
5
  startIndex?: number;
@@ -9,37 +10,41 @@ export interface ExcerptInput {
9
10
  from?: string;
10
11
  to?: string;
11
12
  }
12
- /** An inline `::video[[...]]` import found in an article body. */
13
- export interface ArticleVideoImport {
14
- /** Character offset in the cleaned body where the video sits. */
13
+ /**
14
+ * An inline import (`::video[[...]]` or `![[../widgets/...]]`) found in an
15
+ * article body.
16
+ */
17
+ export type ArticleImport = ArticleImportSyntax & {
18
+ /** Character offset in the cleaned body where the import sits. */
15
19
  offset: number;
16
- /** Wikilink target, e.g. "../video_transcripts/name". */
17
- target: string;
18
- from?: string;
19
- to?: string;
20
20
  /** The trimmed source line, so callers can locate it in the raw file. */
21
21
  rawLine: string;
22
- }
22
+ };
23
23
  export interface ParsedArticleBody {
24
- /** Publishable body with all ::video import lines removed. */
24
+ /** Publishable body with all inline import lines removed. */
25
25
  body: string;
26
26
  /** Imports in document order, with offsets into the cleaned body. */
27
- videoImports: ArticleVideoImport[];
27
+ imports: ArticleImport[];
28
28
  }
29
- /** A piece of an excerpt that contains inline videos. */
29
+ /** A piece of an excerpt that contains inline imports. */
30
30
  export type ArticlePart = {
31
- kind: 'prose';
31
+ kind: "prose";
32
32
  content: string;
33
33
  /** Prose continues contiguously after the following video part. */
34
34
  contiguousWithNext?: boolean;
35
35
  /** Prose contiguously continues the part before the preceding video. */
36
36
  contiguousWithPrev?: boolean;
37
37
  } | {
38
- kind: 'videoRef';
38
+ kind: "videoRef";
39
39
  target: string;
40
40
  from?: string;
41
41
  to?: string;
42
42
  rawLine: string;
43
+ } | {
44
+ kind: "widgetRef";
45
+ target: string;
46
+ height?: string;
47
+ rawLine: string;
43
48
  };
44
49
  /** One lens excerpt of an article, fully resolved against the source body. */
45
50
  export interface ResolvedExcerpt {
@@ -48,10 +53,10 @@ export interface ResolvedExcerpt {
48
53
  collapsed_before?: string;
49
54
  collapsed_after?: string;
50
55
  /**
51
- * Present when the excerpt contains inline videos: the excerpt split into
52
- * ordered prose/videoRef parts. Prose parts carry only content and
53
- * contiguity; collapsed_* stay on this excerpt (they belong to its outer
54
- * boundaries, never to a video seam).
56
+ * Present when the excerpt contains inline imports: the excerpt split into
57
+ * ordered prose/videoRef/widgetRef parts. Prose parts carry only content
58
+ * and contiguity; collapsed_* stay on this excerpt (they belong to its
59
+ * outer boundaries, never to an import seam).
55
60
  */
56
61
  parts?: ArticlePart[];
57
62
  error?: ContentError;
@@ -63,14 +68,16 @@ export interface ResolvedExcerpt {
63
68
  export declare function stripFrontmatter(article: string): string;
64
69
  /**
65
70
  * Produce the renderable body of an article: frontmatter and authoring markup
66
- * stripped, and every valid own-line `::video[[...]]` import removed and
67
- * recorded with its character offset into the cleaned body. All downstream
68
- * work (anchor search, excerpt slicing, collapsed text, word counts) uses
69
- * this cleaned body, so import lines can never leak into reader-visible text
70
- * and anchors can never collide with directive syntax.
71
+ * stripped, and every valid own-line inline import (`::video[[...]]`,
72
+ * `![[../widgets/...]]`) removed and recorded with its character offset into
73
+ * the cleaned body. All downstream work (anchor search, excerpt slicing,
74
+ * collapsed text, word counts) uses this cleaned body, so import lines can
75
+ * never leak into reader-visible text and anchors can never collide with
76
+ * import syntax.
71
77
  *
72
- * Malformed import lines are left in place as inert prose — parse-time
73
- * validation (validator/video-imports.ts) reports them.
78
+ * Malformed import lines, and imports inside hide/collapse containers, are
79
+ * left in place as inert prose — parse-time validation
80
+ * (validator/article-imports.ts) reports them.
74
81
  */
75
82
  export declare function parseArticleBody(article: string): ParsedArticleBody;
76
83
  /**
@@ -91,13 +98,13 @@ export declare function extractArticleExcerpt(article: string, fromAnchor: strin
91
98
  /**
92
99
  * Resolve every excerpt a lens takes from one article source, in one pass:
93
100
  * extract each excerpt, compute the collapsed (elided) text at its outer
94
- * boundaries, and split it into prose/videoRef parts around any inline
95
- * `::video` imports that fall inside its range.
101
+ * boundaries, and split it into prose/videoRef/widgetRef parts around any
102
+ * inline imports that fall inside its range.
96
103
  *
97
104
  * Excerpts are expected in document order (as authored in the lens). An
98
- * import's offset points at the text that follows it, so a video between two
99
- * excerpt ranges attaches to the later excerpt; the consumed-set guard keeps
100
- * overlapping excerpt ranges from emitting the same video twice.
105
+ * import's offset points at the text that follows it, so an import between
106
+ * two excerpt ranges attaches to the later excerpt; the consumed-set guard
107
+ * keeps overlapping excerpt ranges from emitting the same import twice.
101
108
  *
102
109
  * @param article - The full article content
103
110
  * @param excerpts - Excerpt specifications { from, to } in lens order
@@ -1,5 +1,5 @@
1
- import { stripAuthoringMarkup } from '../authoring-markup.js';
2
- import { parseVideoImportLine } from '../validator/video-imports.js';
1
+ import { stripAuthoringMarkup } from "../authoring-markup.js";
2
+ import { parseArticleImportLine, scanArticleLines, } from "../validator/article-imports.js";
3
3
  /**
4
4
  * Find all occurrences of a substring in text (case-insensitive).
5
5
  * Returns array of start indices.
@@ -29,54 +29,43 @@ export function stripFrontmatter(article) {
29
29
  function publishableArticleBody(article) {
30
30
  return stripAuthoringMarkup(stripFrontmatter(article)).trim();
31
31
  }
32
- // CommonMark permits up to three leading spaces before a fenced code block.
33
- const CODE_FENCE = /^ {0,3}(?:```|~~~)/;
34
32
  /**
35
33
  * Produce the renderable body of an article: frontmatter and authoring markup
36
- * stripped, and every valid own-line `::video[[...]]` import removed and
37
- * recorded with its character offset into the cleaned body. All downstream
38
- * work (anchor search, excerpt slicing, collapsed text, word counts) uses
39
- * this cleaned body, so import lines can never leak into reader-visible text
40
- * and anchors can never collide with directive syntax.
34
+ * stripped, and every valid own-line inline import (`::video[[...]]`,
35
+ * `![[../widgets/...]]`) removed and recorded with its character offset into
36
+ * the cleaned body. All downstream work (anchor search, excerpt slicing,
37
+ * collapsed text, word counts) uses this cleaned body, so import lines can
38
+ * never leak into reader-visible text and anchors can never collide with
39
+ * import syntax.
41
40
  *
42
- * Malformed import lines are left in place as inert prose — parse-time
43
- * validation (validator/video-imports.ts) reports them.
41
+ * Malformed import lines, and imports inside hide/collapse containers, are
42
+ * left in place as inert prose — parse-time validation
43
+ * (validator/article-imports.ts) reports them.
44
44
  */
45
45
  export function parseArticleBody(article) {
46
- const rawLines = publishableArticleBody(article).split('\n');
46
+ const scanned = scanArticleLines(publishableArticleBody(article));
47
47
  const outLines = [];
48
48
  const pending = [];
49
- let inCodeBlock = false;
50
- for (let i = 0; i < rawLines.length; i++) {
51
- const line = rawLines[i];
52
- if (CODE_FENCE.test(line)) {
53
- inCodeBlock = !inCodeBlock;
54
- outLines.push(line);
55
- continue;
56
- }
57
- if (!inCodeBlock) {
58
- const parsed = parseVideoImportLine(line);
59
- if (parsed.kind === 'import') {
60
- const entry = {
61
- outLineIndex: outLines.length,
62
- target: parsed.import.target,
63
- rawLine: line.trim(),
64
- };
65
- if (parsed.import.from !== undefined)
66
- entry.from = parsed.import.from;
67
- if (parsed.import.to !== undefined)
68
- entry.to = parsed.import.to;
69
- pending.push(entry);
70
- // Removing the line would leave the blank lines around it doubled up;
71
- // swallow one so the prose keeps a single paragraph break.
72
- if (outLines.length > 0 &&
73
- outLines[outLines.length - 1].trim() === '' &&
74
- i + 1 < rawLines.length &&
75
- rawLines[i + 1].trim() === '') {
76
- i++;
77
- }
78
- continue;
49
+ for (let i = 0; i < scanned.length; i++) {
50
+ const { line, prose, hiddenIn } = scanned[i];
51
+ // Inside hide/collapse an import stays inert prose: splitting there would
52
+ // tear the container apart (validation rejects the placement anyway).
53
+ const parsed = prose && !hiddenIn ? parseArticleImportLine(line) : undefined;
54
+ if (parsed?.kind === "import") {
55
+ pending.push({
56
+ ...parsed.import,
57
+ outLineIndex: outLines.length,
58
+ rawLine: line.trim(),
59
+ });
60
+ // Removing the line would leave the blank lines around it doubled up;
61
+ // swallow one so the prose keeps a single paragraph break.
62
+ if (outLines.length > 0 &&
63
+ outLines[outLines.length - 1].trim() === "" &&
64
+ i + 1 < scanned.length &&
65
+ scanned[i + 1].line.trim() === "") {
66
+ i++;
79
67
  }
68
+ continue;
80
69
  }
81
70
  outLines.push(line);
82
71
  }
@@ -87,11 +76,11 @@ export function parseArticleBody(article) {
87
76
  lineStartOffsets.push(acc);
88
77
  acc += line.length + 1;
89
78
  }
90
- const joined = outLines.join('\n');
79
+ const joined = outLines.join("\n");
91
80
  // Imports at the very start/end leave blank edges behind — trim and shift
92
81
  const leading = joined.length - joined.trimStart().length;
93
82
  const body = joined.trim();
94
- const videoImports = pending.map((p) => {
83
+ const imports = pending.map((p) => {
95
84
  const rawOffset = p.outLineIndex < lineStartOffsets.length
96
85
  ? lineStartOffsets[p.outLineIndex]
97
86
  : joined.length;
@@ -101,7 +90,7 @@ export function parseArticleBody(article) {
101
90
  offset: Math.min(Math.max(rawOffset - leading, 0), body.length),
102
91
  };
103
92
  });
104
- return { body, videoImports };
93
+ return { body, imports };
105
94
  }
106
95
  /**
107
96
  * Extract content from an article between two anchor texts.
@@ -138,8 +127,8 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
138
127
  error: {
139
128
  file,
140
129
  message: `End anchor '${toAnchor}' not found in article`,
141
- suggestion: 'Check that the anchor text exists exactly in the article',
142
- severity: 'error',
130
+ suggestion: "Check that the anchor text exists exactly in the article",
131
+ severity: "error",
143
132
  },
144
133
  };
145
134
  }
@@ -148,8 +137,8 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
148
137
  error: {
149
138
  file,
150
139
  message: `End anchor '${toAnchor}' found multiple times (${toOccurrences.length} occurrences) - ambiguous`,
151
- suggestion: 'Use a more specific anchor text that appears only once',
152
- severity: 'error',
140
+ suggestion: "Use a more specific anchor text that appears only once",
141
+ severity: "error",
153
142
  },
154
143
  };
155
144
  }
@@ -169,8 +158,8 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
169
158
  error: {
170
159
  file,
171
160
  message: `Start anchor '${fromAnchor}' not found in article`,
172
- suggestion: 'Check that the anchor text exists exactly in the article',
173
- severity: 'error',
161
+ suggestion: "Check that the anchor text exists exactly in the article",
162
+ severity: "error",
174
163
  },
175
164
  };
176
165
  }
@@ -179,8 +168,8 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
179
168
  error: {
180
169
  file,
181
170
  message: `Start anchor '${fromAnchor}' found multiple times (${fromOccurrences.length} occurrences) - ambiguous`,
182
- suggestion: 'Use a more specific anchor text that appears only once',
183
- severity: 'error',
171
+ suggestion: "Use a more specific anchor text that appears only once",
172
+ severity: "error",
184
173
  },
185
174
  };
186
175
  }
@@ -202,8 +191,8 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
202
191
  error: {
203
192
  file,
204
193
  message: `Start anchor '${fromAnchorStr}' not found in article`,
205
- suggestion: 'Check that the anchor text exists exactly in the article',
206
- severity: 'error',
194
+ suggestion: "Check that the anchor text exists exactly in the article",
195
+ severity: "error",
207
196
  },
208
197
  };
209
198
  }
@@ -212,8 +201,8 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
212
201
  error: {
213
202
  file,
214
203
  message: `Start anchor '${fromAnchorStr}' found multiple times (${fromOccurrences.length} occurrences) - ambiguous`,
215
- suggestion: 'Use a more specific anchor text that appears only once',
216
- severity: 'error',
204
+ suggestion: "Use a more specific anchor text that appears only once",
205
+ severity: "error",
217
206
  },
218
207
  };
219
208
  }
@@ -226,8 +215,8 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
226
215
  error: {
227
216
  file,
228
217
  message: `End anchor '${toAnchorStr}' not found in article after start anchor`,
229
- suggestion: 'Check that the anchor text exists after the start anchor',
230
- severity: 'error',
218
+ suggestion: "Check that the anchor text exists after the start anchor",
219
+ severity: "error",
231
220
  },
232
221
  };
233
222
  }
@@ -236,8 +225,8 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
236
225
  error: {
237
226
  file,
238
227
  message: `End anchor '${toAnchorStr}' found multiple times (${toOccurrences.length} occurrences) after start - ambiguous`,
239
- suggestion: 'Use a more specific anchor text that appears only once',
240
- severity: 'error',
228
+ suggestion: "Use a more specific anchor text that appears only once",
229
+ severity: "error",
241
230
  },
242
231
  };
243
232
  }
@@ -255,20 +244,20 @@ function extractExcerptFromBody(body, fromAnchor, toAnchor, file) {
255
244
  /**
256
245
  * Resolve every excerpt a lens takes from one article source, in one pass:
257
246
  * extract each excerpt, compute the collapsed (elided) text at its outer
258
- * boundaries, and split it into prose/videoRef parts around any inline
259
- * `::video` imports that fall inside its range.
247
+ * boundaries, and split it into prose/videoRef/widgetRef parts around any
248
+ * inline imports that fall inside its range.
260
249
  *
261
250
  * Excerpts are expected in document order (as authored in the lens). An
262
- * import's offset points at the text that follows it, so a video between two
263
- * excerpt ranges attaches to the later excerpt; the consumed-set guard keeps
264
- * overlapping excerpt ranges from emitting the same video twice.
251
+ * import's offset points at the text that follows it, so an import between
252
+ * two excerpt ranges attaches to the later excerpt; the consumed-set guard
253
+ * keeps overlapping excerpt ranges from emitting the same import twice.
265
254
  *
266
255
  * @param article - The full article content
267
256
  * @param excerpts - Excerpt specifications { from, to } in lens order
268
257
  * @param file - Source file path for error reporting
269
258
  */
270
259
  export function resolveArticleSource(article, excerpts, file) {
271
- const { body, videoImports } = parseArticleBody(article);
260
+ const { body, imports } = parseArticleBody(article);
272
261
  const extracted = excerpts.map((excerpt) => extractExcerptFromBody(body, excerpt.from, excerpt.to, file));
273
262
  // Whole-article embeds (no anchors anywhere in the group) get no collapsed
274
263
  // fields — there is nothing elided to show.
@@ -310,7 +299,7 @@ export function resolveArticleSource(article, excerpts, file) {
310
299
  result.collapsed_after = collapsedAfter;
311
300
  }
312
301
  }
313
- const inRange = videoImports.filter((v) => !consumed.has(v) && v.offset >= start && v.offset <= end);
302
+ const inRange = imports.filter((v) => !consumed.has(v) && v.offset >= start && v.offset <= end);
314
303
  if (inRange.length > 0) {
315
304
  for (const v of inRange)
316
305
  consumed.add(v);
@@ -319,29 +308,27 @@ export function resolveArticleSource(article, excerpts, file) {
319
308
  for (const v of inRange) {
320
309
  const prose = body.slice(cursor, v.offset).trim();
321
310
  if (prose.length > 0)
322
- parts.push({ kind: 'prose', content: prose });
323
- const ref = { kind: 'videoRef', target: v.target, rawLine: v.rawLine };
324
- if (v.from !== undefined)
325
- ref.from = v.from;
326
- if (v.to !== undefined)
327
- ref.to = v.to;
328
- parts.push(ref);
311
+ parts.push({ kind: "prose", content: prose });
312
+ const { offset: _offset, ...ref } = v;
313
+ parts.push(ref.kind === "video"
314
+ ? { ...ref, kind: "videoRef" }
315
+ : { ...ref, kind: "widgetRef" });
329
316
  cursor = v.offset;
330
317
  }
331
318
  const tail = body.slice(cursor, end).trim();
332
319
  if (tail.length > 0)
333
- parts.push({ kind: 'prose', content: tail });
320
+ parts.push({ kind: "prose", content: tail });
334
321
  // Contiguity: a prose part separated from another prose part only by
335
- // videos is one continuous stretch of source text. A video at an
322
+ // imports is one continuous stretch of source text. An import at an
336
323
  // excerpt edge (no prose on one side) sets no flag on that side.
337
324
  for (let p = 0; p < parts.length; p++) {
338
325
  const part = parts[p];
339
- if (part.kind !== 'prose')
326
+ if (part.kind !== "prose")
340
327
  continue;
341
- if (parts.slice(0, p).some((x) => x.kind === 'prose')) {
328
+ if (parts.slice(0, p).some((x) => x.kind === "prose")) {
342
329
  part.contiguousWithPrev = true;
343
330
  }
344
- if (parts.slice(p + 1).some((x) => x.kind === 'prose')) {
331
+ if (parts.slice(p + 1).some((x) => x.kind === "prose")) {
345
332
  part.contiguousWithNext = true;
346
333
  }
347
334
  }
@@ -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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"}
@@ -1,4 +1,4 @@
1
- import type { FlattenedModule, Section, ContentError } from "../index.js";
1
+ import type { FlattenedModule, Section, Segment, ContentError } from "../index.js";
2
2
  import type { ContentTier } from "../validator/tier.js";
3
3
  import { type ParsedLens } from "../parser/lens.js";
4
4
  export interface FlattenModuleResult {
@@ -52,6 +52,15 @@ interface ExpandPromptImportsResult {
52
52
  * sole import.
53
53
  */
54
54
  export declare function expandPromptImports(value: string, fieldName: string, lensPath: string, files: Map<string, string>, tierMap?: Map<string, ContentTier>): ExpandPromptImportsResult;
55
+ /**
56
+ * Flatten an article file on its own, the way the standalone article page
57
+ * shows it: one anchorless excerpt of the whole body, split around inline
58
+ * imports exactly as a lens excerpt would be. Errors name the article file.
59
+ */
60
+ export declare function flattenStandaloneArticle(articlePath: string, files: Map<string, string>, tierMap?: Map<string, ContentTier>): {
61
+ segments: Segment[];
62
+ errors: ContentError[];
63
+ };
55
64
  /**
56
65
  * Flatten a single Lens file into a FlattenedModule.
57
66
  */