lens-content-processor 0.2.2 → 0.4.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 +7 -2
- package/dist/bundler/article.js +23 -24
- package/dist/bundler/article.js.map +1 -1
- package/dist/cli.d.ts +1 -2
- package/dist/cli.js +6 -10
- package/dist/cli.js.map +1 -1
- package/dist/content-schema.js +8 -6
- package/dist/content-schema.js.map +1 -1
- package/dist/flattener/index.d.ts +41 -2
- package/dist/flattener/index.js +699 -48
- package/dist/flattener/index.js.map +1 -1
- package/dist/flattener/test-helpers.d.ts +23 -0
- package/dist/flattener/test-helpers.js +58 -0
- package/dist/flattener/test-helpers.js.map +1 -0
- package/dist/fs/read-vault.d.ts +1 -4
- package/dist/fs/read-vault.js +4 -8
- package/dist/fs/read-vault.js.map +1 -1
- package/dist/index.d.ts +34 -6
- package/dist/index.js +170 -33
- package/dist/index.js.map +1 -1
- package/dist/parser/article.d.ts +1 -1
- package/dist/parser/article.js +14 -4
- package/dist/parser/article.js.map +1 -1
- package/dist/parser/course.d.ts +2 -2
- package/dist/parser/course.js +16 -23
- package/dist/parser/course.js.map +1 -1
- package/dist/parser/learning-outcome.d.ts +11 -2
- package/dist/parser/learning-outcome.js +135 -62
- package/dist/parser/learning-outcome.js.map +1 -1
- package/dist/parser/lens.d.ts +63 -1
- package/dist/parser/lens.js +138 -11
- package/dist/parser/lens.js.map +1 -1
- package/dist/parser/module.d.ts +1 -1
- package/dist/parser/module.js +14 -9
- package/dist/parser/module.js.map +1 -1
- package/dist/parser/sections.d.ts +2 -0
- package/dist/parser/sections.js +57 -21
- package/dist/parser/sections.js.map +1 -1
- package/dist/parser/video-transcript.js +3 -0
- package/dist/parser/video-transcript.js.map +1 -1
- package/dist/parser/wikilink.js +6 -1
- package/dist/parser/wikilink.js.map +1 -1
- package/dist/utils/slug.d.ts +5 -0
- package/dist/utils/slug.js +16 -0
- package/dist/utils/slug.js.map +1 -0
- package/dist/validator/chat-precedence.d.ts +9 -0
- package/dist/validator/chat-precedence.js +32 -0
- package/dist/validator/chat-precedence.js.map +1 -0
- package/dist/validator/directives.d.ts +12 -0
- package/dist/validator/directives.js +428 -0
- package/dist/validator/directives.js.map +1 -0
- package/dist/validator/field-typos.js +0 -9
- package/dist/validator/field-typos.js.map +1 -1
- package/dist/validator/field-values.js +14 -0
- package/dist/validator/field-values.js.map +1 -1
- package/dist/validator/tier.d.ts +18 -0
- package/dist/validator/tier.js +74 -0
- package/dist/validator/tier.js.map +1 -0
- package/dist/validator/url-reachability.js +3 -1
- package/dist/validator/url-reachability.js.map +1 -1
- package/dist/validator/uuid.js +9 -6
- package/dist/validator/uuid.js.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { flattenModule } from './flattener/index.js';
|
|
1
|
+
import { flattenModule, flattenLens } from './flattener/index.js';
|
|
2
2
|
import { parseModule } from './parser/module.js';
|
|
3
3
|
import { parseCourse } from './parser/course.js';
|
|
4
4
|
import { parseLearningOutcome } from './parser/learning-outcome.js';
|
|
@@ -13,10 +13,12 @@ import { parseArticle } from './parser/article.js';
|
|
|
13
13
|
import { parseVideoTranscript } from './parser/video-transcript.js';
|
|
14
14
|
import { validateTimestamps } from './validator/timestamps.js';
|
|
15
15
|
import { levenshtein } from './validator/field-typos.js';
|
|
16
|
+
import { buildTierMap, checkTierViolation } from './validator/tier.js';
|
|
17
|
+
export { checkTierViolation } from './validator/tier.js';
|
|
16
18
|
/**
|
|
17
19
|
* Validate lens excerpts by checking if source files exist and anchors/timestamps are valid.
|
|
18
20
|
*/
|
|
19
|
-
function validateLensExcerpts(lens, lensPath, files) {
|
|
21
|
+
function validateLensExcerpts(lens, lensPath, files, tierMap) {
|
|
20
22
|
const errors = [];
|
|
21
23
|
for (const section of lens.sections) {
|
|
22
24
|
// Skip sections without source (e.g., Text sections)
|
|
@@ -42,6 +44,20 @@ function validateLensExcerpts(lens, lensPath, files) {
|
|
|
42
44
|
});
|
|
43
45
|
continue;
|
|
44
46
|
}
|
|
47
|
+
// Check tier violation (Lens → Article/Video)
|
|
48
|
+
if (tierMap) {
|
|
49
|
+
const childLabel = section.type.includes('article') ? 'article' : 'video transcript';
|
|
50
|
+
const parentTier = tierMap.get(lensPath) ?? 'production';
|
|
51
|
+
const childTier = tierMap.get(actualPath) ?? 'production';
|
|
52
|
+
const violation = checkTierViolation(lensPath, parentTier, actualPath, childTier, childLabel, section.line);
|
|
53
|
+
if (violation) {
|
|
54
|
+
errors.push(violation);
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (childTier === 'ignored') {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
45
61
|
const sourceContent = files.get(actualPath);
|
|
46
62
|
// Validate article excerpts
|
|
47
63
|
if (section.type === 'article' || section.type === 'lens-article') {
|
|
@@ -79,13 +95,7 @@ function validateLensExcerpts(lens, lensPath, files) {
|
|
|
79
95
|
}
|
|
80
96
|
return errors;
|
|
81
97
|
}
|
|
82
|
-
|
|
83
|
-
* Check if a file path contains a WIP directory segment (case-insensitive).
|
|
84
|
-
*/
|
|
85
|
-
function isWipPath(path) {
|
|
86
|
-
return path.split('/').some(segment => segment.toLowerCase().includes('wip'));
|
|
87
|
-
}
|
|
88
|
-
export function processContent(files, options = {}) {
|
|
98
|
+
export function processContent(files) {
|
|
89
99
|
const modules = [];
|
|
90
100
|
const courses = [];
|
|
91
101
|
const errors = [];
|
|
@@ -93,35 +103,63 @@ export function processContent(files, options = {}) {
|
|
|
93
103
|
const uuidEntries = [];
|
|
94
104
|
const slugEntries = [];
|
|
95
105
|
const slugToPath = new Map();
|
|
106
|
+
const filePathToSlug = new Map(); // Reverse: file path → slug (survives duplicate slugs)
|
|
107
|
+
const courseSlugToFile = new Map();
|
|
108
|
+
const parentSlugToChildren = new Map();
|
|
109
|
+
// Pre-scan: build tier map from frontmatter tags
|
|
110
|
+
const tierMap = buildTierMap(files);
|
|
96
111
|
// Identify file types by path
|
|
97
112
|
for (const [path, content] of files.entries()) {
|
|
98
|
-
// Skip
|
|
99
|
-
if (
|
|
113
|
+
// Skip ignored files entirely
|
|
114
|
+
if (tierMap.get(path) === 'ignored') {
|
|
100
115
|
continue;
|
|
101
116
|
}
|
|
102
117
|
if (path.startsWith('modules/')) {
|
|
103
|
-
const result = flattenModule(path, files);
|
|
104
|
-
|
|
105
|
-
modules.push(
|
|
106
|
-
slugToPath.set(
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
118
|
+
const result = flattenModule(path, files, new Set(), tierMap);
|
|
119
|
+
for (const mod of result.modules) {
|
|
120
|
+
modules.push(mod);
|
|
121
|
+
slugToPath.set(mod.slug, path);
|
|
122
|
+
// Track parent→children mapping for course expansion
|
|
123
|
+
if (mod.parentSlug) {
|
|
124
|
+
if (!parentSlugToChildren.has(mod.parentSlug)) {
|
|
125
|
+
parentSlugToChildren.set(mod.parentSlug, []);
|
|
126
|
+
}
|
|
127
|
+
parentSlugToChildren.get(mod.parentSlug).push(mod.slug);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
filePathToSlug.set(path, mod.slug);
|
|
131
|
+
}
|
|
132
|
+
slugEntries.push({ slug: mod.slug, file: path });
|
|
133
|
+
if (mod.contentId) {
|
|
114
134
|
uuidEntries.push({
|
|
115
|
-
uuid:
|
|
135
|
+
uuid: mod.contentId,
|
|
116
136
|
file: path,
|
|
117
137
|
field: 'contentId',
|
|
118
138
|
});
|
|
119
139
|
}
|
|
120
|
-
|
|
121
|
-
|
|
140
|
+
}
|
|
141
|
+
// If no submodules, set filePathToSlug for the primary module
|
|
142
|
+
if (result.modules.length === 1 && !result.modules[0].parentSlug) {
|
|
143
|
+
filePathToSlug.set(path, result.modules[0].slug);
|
|
144
|
+
}
|
|
145
|
+
else if (result.modules.length > 0 && result.modules[0].parentSlug) {
|
|
146
|
+
// For split modules, map the file path to the parent slug
|
|
147
|
+
filePathToSlug.set(path, result.modules[0].parentSlug);
|
|
148
|
+
}
|
|
149
|
+
// Collect section-level id:: fields from raw # Page: sections.
|
|
150
|
+
if (result.modules.length > 0) {
|
|
122
151
|
const rawParse = parseModule(content, path);
|
|
123
152
|
if (rawParse.module) {
|
|
124
153
|
for (const section of rawParse.module.sections) {
|
|
154
|
+
if (section.type === 'page' && !section.fields.id) {
|
|
155
|
+
errors.push({
|
|
156
|
+
file: path,
|
|
157
|
+
line: section.line,
|
|
158
|
+
message: `Page section '${section.title}' is missing required id:: field`,
|
|
159
|
+
suggestion: 'Add an id:: field with a UUID (e.g., id:: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)',
|
|
160
|
+
severity: 'error',
|
|
161
|
+
});
|
|
162
|
+
}
|
|
125
163
|
if (section.type === 'page' && section.fields.id) {
|
|
126
164
|
uuidEntries.push({
|
|
127
165
|
uuid: section.fields.id,
|
|
@@ -138,6 +176,7 @@ export function processContent(files, options = {}) {
|
|
|
138
176
|
const result = parseCourse(content, path);
|
|
139
177
|
if (result.course) {
|
|
140
178
|
courses.push(result.course);
|
|
179
|
+
courseSlugToFile.set(result.course.slug, path);
|
|
141
180
|
}
|
|
142
181
|
errors.push(...result.errors);
|
|
143
182
|
}
|
|
@@ -159,6 +198,18 @@ export function processContent(files, options = {}) {
|
|
|
159
198
|
suggestion,
|
|
160
199
|
severity: 'error',
|
|
161
200
|
});
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
// Check tier violation (LO → Lens)
|
|
204
|
+
const parentTier = tierMap.get(path) ?? 'production';
|
|
205
|
+
const childTier = tierMap.get(lensPath) ?? 'production';
|
|
206
|
+
const violation = checkTierViolation(path, parentTier, lensPath, childTier, 'lens');
|
|
207
|
+
if (violation) {
|
|
208
|
+
errors.push(violation);
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (childTier === 'ignored') {
|
|
212
|
+
continue;
|
|
162
213
|
}
|
|
163
214
|
}
|
|
164
215
|
}
|
|
@@ -175,11 +226,6 @@ export function processContent(files, options = {}) {
|
|
|
175
226
|
// Fully validate Lens (structure, segments, fields)
|
|
176
227
|
const result = parseLens(content, path);
|
|
177
228
|
errors.push(...result.errors);
|
|
178
|
-
// Validate excerpts (source files exist, anchors/timestamps valid)
|
|
179
|
-
if (result.lens) {
|
|
180
|
-
const excerptErrors = validateLensExcerpts(result.lens, path, files);
|
|
181
|
-
errors.push(...excerptErrors);
|
|
182
|
-
}
|
|
183
229
|
// Collect id for UUID validation
|
|
184
230
|
if (result.lens?.id) {
|
|
185
231
|
uuidEntries.push({
|
|
@@ -188,6 +234,16 @@ export function processContent(files, options = {}) {
|
|
|
188
234
|
field: 'id',
|
|
189
235
|
});
|
|
190
236
|
}
|
|
237
|
+
// Flatten lens as standalone module (pass pre-parsed lens to avoid re-parsing)
|
|
238
|
+
if (result.lens) {
|
|
239
|
+
const lensModuleResult = flattenLens(path, files, tierMap, result.lens);
|
|
240
|
+
if (lensModuleResult.module) {
|
|
241
|
+
modules.push(lensModuleResult.module);
|
|
242
|
+
slugEntries.push({ slug: lensModuleResult.module.slug, file: path });
|
|
243
|
+
slugToPath.set(lensModuleResult.module.slug, path);
|
|
244
|
+
}
|
|
245
|
+
errors.push(...lensModuleResult.errors);
|
|
246
|
+
}
|
|
191
247
|
}
|
|
192
248
|
else if (path.endsWith('.timestamps.json')) {
|
|
193
249
|
const tsErrors = validateTimestamps(content, path);
|
|
@@ -235,6 +291,80 @@ export function processContent(files, options = {}) {
|
|
|
235
291
|
}
|
|
236
292
|
}
|
|
237
293
|
}
|
|
294
|
+
// Resolve course module paths to frontmatter slugs.
|
|
295
|
+
// Use filePathToSlug (built during module parsing) instead of inverting slugToPath,
|
|
296
|
+
// because slugToPath loses entries when duplicate slugs exist.
|
|
297
|
+
for (const course of courses) {
|
|
298
|
+
const courseFile = courseSlugToFile.get(course.slug) ?? 'courses/';
|
|
299
|
+
for (const item of course.progression) {
|
|
300
|
+
if (item.type === 'module' && item.path) {
|
|
301
|
+
// Resolve wikilink path relative to the course file
|
|
302
|
+
const resolved = resolveWikilinkPath(item.path, courseFile);
|
|
303
|
+
const actualFile = findFileWithExtension(resolved, files);
|
|
304
|
+
if (actualFile && filePathToSlug.has(actualFile)) {
|
|
305
|
+
item.slug = filePathToSlug.get(actualFile);
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
// Try matching just the filename stem against module file stems
|
|
309
|
+
const stem = item.path.split('/').pop() ?? item.path;
|
|
310
|
+
let matched = false;
|
|
311
|
+
for (const [filePath, slug] of filePathToSlug.entries()) {
|
|
312
|
+
const fileStem = filePath.replace(/\.md$/, '').split('/').pop() ?? '';
|
|
313
|
+
if (fileStem === stem) {
|
|
314
|
+
item.slug = slug;
|
|
315
|
+
matched = true;
|
|
316
|
+
break;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
if (!matched) {
|
|
320
|
+
errors.push({
|
|
321
|
+
file: courseFile,
|
|
322
|
+
message: `Module reference could not be resolved: "${item.path}"`,
|
|
323
|
+
suggestion: 'Check that the wikilink path points to an existing module file',
|
|
324
|
+
severity: 'error',
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// Clean up internal path field from output
|
|
329
|
+
delete item.path;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
// Remove unresolved module items (no slug after resolution)
|
|
333
|
+
course.progression = course.progression.filter(item => item.type !== 'module' || item.slug !== undefined);
|
|
334
|
+
// Expand split modules: replace parent slug with child submodule slugs
|
|
335
|
+
const expanded = [];
|
|
336
|
+
for (const item of course.progression) {
|
|
337
|
+
if (item.type === 'module' && item.slug && parentSlugToChildren.has(item.slug)) {
|
|
338
|
+
const children = parentSlugToChildren.get(item.slug);
|
|
339
|
+
for (const childSlug of children) {
|
|
340
|
+
expanded.push({ ...item, slug: childSlug });
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
expanded.push(item);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
course.progression = expanded;
|
|
348
|
+
}
|
|
349
|
+
// Check tier violations: Course → Module
|
|
350
|
+
for (const course of courses) {
|
|
351
|
+
const coursePath = courseSlugToFile.get(course.slug);
|
|
352
|
+
if (!coursePath)
|
|
353
|
+
continue;
|
|
354
|
+
for (const item of course.progression) {
|
|
355
|
+
if (item.type !== 'module' || !item.slug)
|
|
356
|
+
continue;
|
|
357
|
+
const modulePath = slugToPath.get(item.slug);
|
|
358
|
+
if (modulePath && tierMap.has(modulePath)) {
|
|
359
|
+
const parentTier = tierMap.get(coursePath) ?? 'production';
|
|
360
|
+
const childTier = tierMap.get(modulePath) ?? 'production';
|
|
361
|
+
const violation = checkTierViolation(coursePath, parentTier, modulePath, childTier, 'module');
|
|
362
|
+
if (violation) {
|
|
363
|
+
errors.push(violation);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
238
368
|
// Validate all collected UUIDs
|
|
239
369
|
const uuidValidation = validateUuids(uuidEntries);
|
|
240
370
|
errors.push(...uuidValidation.errors);
|
|
@@ -244,7 +374,7 @@ export function processContent(files, options = {}) {
|
|
|
244
374
|
// Validate video transcript / timestamps.json pairing
|
|
245
375
|
const transcriptPaths = [...files.keys()].filter(p => (p.startsWith('video_transcripts/') || p.includes('/video_transcripts/')) &&
|
|
246
376
|
p.endsWith('.md') &&
|
|
247
|
-
|
|
377
|
+
tierMap.get(p) !== 'ignored');
|
|
248
378
|
const timestampPaths = new Set([...files.keys()].filter(p => p.endsWith('.timestamps.json')));
|
|
249
379
|
for (const mdPath of transcriptPaths) {
|
|
250
380
|
const expectedTs = mdPath.replace(/\.md$/, '.timestamps.json');
|
|
@@ -257,9 +387,9 @@ export function processContent(files, options = {}) {
|
|
|
257
387
|
}
|
|
258
388
|
}
|
|
259
389
|
for (const tsPath of timestampPaths) {
|
|
260
|
-
if (!options.includeWip && isWipPath(tsPath))
|
|
261
|
-
continue;
|
|
262
390
|
const expectedMd = tsPath.replace(/\.timestamps\.json$/, '.md');
|
|
391
|
+
if (tierMap.get(expectedMd) === 'ignored')
|
|
392
|
+
continue;
|
|
263
393
|
if (!files.has(expectedMd)) {
|
|
264
394
|
errors.push({
|
|
265
395
|
file: tsPath,
|
|
@@ -271,6 +401,13 @@ export function processContent(files, options = {}) {
|
|
|
271
401
|
// Safety-net: catch empty sections/segments in final output
|
|
272
402
|
const integrityErrors = validateOutputIntegrity(modules, slugToPath);
|
|
273
403
|
errors.push(...integrityErrors);
|
|
404
|
+
// Post-process: assign category to errors that don't already have one
|
|
405
|
+
for (const error of errors) {
|
|
406
|
+
if (!error.category) {
|
|
407
|
+
const tier = tierMap.get(error.file);
|
|
408
|
+
error.category = tier === 'wip' ? 'wip' : 'production';
|
|
409
|
+
}
|
|
410
|
+
}
|
|
274
411
|
return { modules, courses, errors, urlsToValidate };
|
|
275
412
|
}
|
|
276
413
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/article.d.ts
CHANGED
package/dist/parser/article.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { parseFrontmatter } from './frontmatter.js';
|
|
2
2
|
import { validateFrontmatter } from '../validator/validate-frontmatter.js';
|
|
3
|
+
import { validateDirectives } from '../validator/directives.js';
|
|
4
|
+
import { stripAuthoringMarkup } from './lens.js';
|
|
3
5
|
export function parseArticle(content, file) {
|
|
4
6
|
const errors = [];
|
|
7
|
+
// Strip authoring markup (CriticMarkup + Obsidian comments) before parsing
|
|
8
|
+
content = stripAuthoringMarkup(content);
|
|
5
9
|
const frontmatterResult = parseFrontmatter(content, file);
|
|
6
10
|
if (frontmatterResult.error) {
|
|
7
11
|
errors.push(frontmatterResult.error);
|
|
@@ -18,8 +22,9 @@ export function parseArticle(content, file) {
|
|
|
18
22
|
// Check text fields for wikilinks (not source_url — that's a URL)
|
|
19
23
|
const textFields = ['title', 'author'];
|
|
20
24
|
for (const field of textFields) {
|
|
21
|
-
const
|
|
22
|
-
|
|
25
|
+
const raw = frontmatter[field];
|
|
26
|
+
const values = Array.isArray(raw) ? raw.map(String) : [String(raw)];
|
|
27
|
+
if (values.some(v => /\[\[.+?\]\]/.test(v))) {
|
|
23
28
|
errors.push({
|
|
24
29
|
file,
|
|
25
30
|
line: 2,
|
|
@@ -30,6 +35,9 @@ export function parseArticle(content, file) {
|
|
|
30
35
|
}
|
|
31
36
|
}
|
|
32
37
|
const { body, bodyStartLine } = frontmatterResult;
|
|
38
|
+
// Validate directive syntax in article body
|
|
39
|
+
const directiveErrors = validateDirectives(body, file, bodyStartLine);
|
|
40
|
+
errors.push(...directiveErrors);
|
|
33
41
|
// Scan body for images
|
|
34
42
|
const imageUrls = [];
|
|
35
43
|
const bodyLines = body.split('\n');
|
|
@@ -57,9 +65,11 @@ export function parseArticle(content, file) {
|
|
|
57
65
|
}
|
|
58
66
|
const article = {
|
|
59
67
|
title: String(frontmatter.title),
|
|
60
|
-
author:
|
|
68
|
+
author: Array.isArray(frontmatter.author)
|
|
69
|
+
? frontmatter.author.join(', ')
|
|
70
|
+
: String(frontmatter.author),
|
|
61
71
|
sourceUrl: String(frontmatter.source_url),
|
|
62
|
-
|
|
72
|
+
published: frontmatter.published !== undefined ? String(frontmatter.published) : undefined,
|
|
63
73
|
imageUrls,
|
|
64
74
|
};
|
|
65
75
|
return { article, errors };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/parser/article.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/parser/article.ts"],"names":[],"mappings":"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"}
|
package/dist/parser/course.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export interface CourseParseResult {
|
|
|
11
11
|
* - `# Module: [[../modules/name.md|Display]]` - references a module
|
|
12
12
|
* - `# Meeting: 1` - marks a meeting point
|
|
13
13
|
*
|
|
14
|
-
* The
|
|
15
|
-
*
|
|
14
|
+
* The raw wikilink path is stored in the progression item; processContent
|
|
15
|
+
* resolves it to the frontmatter slug after all files are parsed.
|
|
16
16
|
*/
|
|
17
17
|
export declare function parseCourse(content: string, file: string): CourseParseResult;
|
package/dist/parser/course.js
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
import { parseFrontmatter } from './frontmatter.js';
|
|
2
2
|
import { parseSections } from './sections.js';
|
|
3
3
|
import { parseWikilink } from './wikilink.js';
|
|
4
|
-
import { basename } from 'path';
|
|
5
4
|
import { validateSlugFormat } from '../validator/field-values.js';
|
|
6
5
|
import { validateFrontmatter } from '../validator/validate-frontmatter.js';
|
|
6
|
+
import { stripAuthoringMarkup } from './lens.js';
|
|
7
7
|
// Valid section types for course files
|
|
8
8
|
export const COURSE_SECTION_TYPES = new Set(['module', 'meeting']);
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
* e.g., '../modules/intro.md' -> 'intro'
|
|
12
|
-
*/
|
|
13
|
-
function extractSlugFromPath(path) {
|
|
14
|
-
const filename = basename(path);
|
|
15
|
-
return filename.replace(/\.md$/, '');
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Parses a Module section title to extract the wikilink and module slug
|
|
10
|
+
* Parses a Module section title to extract the wikilink path
|
|
19
11
|
* Title format: [[../modules/intro.md|Display Text]]
|
|
20
12
|
*/
|
|
21
13
|
function parseModuleSection(section, file) {
|
|
@@ -32,28 +24,27 @@ function parseModuleSection(section, file) {
|
|
|
32
24
|
},
|
|
33
25
|
};
|
|
34
26
|
}
|
|
35
|
-
const slug = extractSlugFromPath(wikilink.path);
|
|
36
27
|
const optional = section.fields.optional?.toLowerCase() === 'true';
|
|
37
|
-
return {
|
|
28
|
+
return { path: wikilink.path, optional };
|
|
38
29
|
}
|
|
39
30
|
/**
|
|
40
|
-
* Parses a Meeting section title to extract the meeting
|
|
41
|
-
* Title format:
|
|
31
|
+
* Parses a Meeting section title to extract the meeting name.
|
|
32
|
+
* Title format: any non-empty string (e.g., "Introduction", "Week 1")
|
|
42
33
|
*/
|
|
43
34
|
function parseMeetingSection(section, file) {
|
|
44
|
-
const
|
|
45
|
-
if (
|
|
35
|
+
const name = section.title.trim();
|
|
36
|
+
if (!name) {
|
|
46
37
|
return {
|
|
47
38
|
error: {
|
|
48
39
|
file,
|
|
49
40
|
line: section.line,
|
|
50
|
-
message: `Meeting section must have a
|
|
51
|
-
suggestion: 'Use format: # Meeting:
|
|
41
|
+
message: `Meeting section must have a name in title, got: "${section.title}"`,
|
|
42
|
+
suggestion: 'Use format: # Meeting: Introduction',
|
|
52
43
|
severity: 'error',
|
|
53
44
|
},
|
|
54
45
|
};
|
|
55
46
|
}
|
|
56
|
-
return {
|
|
47
|
+
return { name };
|
|
57
48
|
}
|
|
58
49
|
/**
|
|
59
50
|
* Parses a course file and extracts its structure.
|
|
@@ -62,11 +53,13 @@ function parseMeetingSection(section, file) {
|
|
|
62
53
|
* - `# Module: [[../modules/name.md|Display]]` - references a module
|
|
63
54
|
* - `# Meeting: 1` - marks a meeting point
|
|
64
55
|
*
|
|
65
|
-
* The
|
|
66
|
-
*
|
|
56
|
+
* The raw wikilink path is stored in the progression item; processContent
|
|
57
|
+
* resolves it to the frontmatter slug after all files are parsed.
|
|
67
58
|
*/
|
|
68
59
|
export function parseCourse(content, file) {
|
|
69
60
|
const errors = [];
|
|
61
|
+
// Strip authoring markup (CriticMarkup + Obsidian comments) before parsing
|
|
62
|
+
content = stripAuthoringMarkup(content);
|
|
70
63
|
// Parse frontmatter
|
|
71
64
|
const frontmatterResult = parseFrontmatter(content, file);
|
|
72
65
|
if (frontmatterResult.error) {
|
|
@@ -110,7 +103,7 @@ export function parseCourse(content, file) {
|
|
|
110
103
|
else {
|
|
111
104
|
progression.push({
|
|
112
105
|
type: 'module',
|
|
113
|
-
|
|
106
|
+
path: result.path,
|
|
114
107
|
optional: result.optional,
|
|
115
108
|
});
|
|
116
109
|
}
|
|
@@ -123,7 +116,7 @@ export function parseCourse(content, file) {
|
|
|
123
116
|
else {
|
|
124
117
|
progression.push({
|
|
125
118
|
type: 'meeting',
|
|
126
|
-
|
|
119
|
+
name: result.name,
|
|
127
120
|
});
|
|
128
121
|
}
|
|
129
122
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course.js","sourceRoot":"","sources":["../../src/parser/course.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAsB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"course.js","sourceRoot":"","sources":["../../src/parser/course.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,27 @@
|
|
|
1
1
|
import type { ContentError } from '../index.js';
|
|
2
|
+
import { type ParsedLensSegment } from './lens.js';
|
|
2
3
|
export interface ParsedLensRef {
|
|
3
4
|
source: string;
|
|
4
5
|
resolvedPath: string;
|
|
5
6
|
optional: boolean;
|
|
6
7
|
}
|
|
7
8
|
export interface ParsedTestRef {
|
|
8
|
-
source
|
|
9
|
-
resolvedPath
|
|
9
|
+
source?: string;
|
|
10
|
+
resolvedPath?: string;
|
|
11
|
+
segments: ParsedLensSegment[];
|
|
12
|
+
}
|
|
13
|
+
export interface ParsedSubmoduleGroup {
|
|
14
|
+
title: string;
|
|
15
|
+
customSlug?: string;
|
|
16
|
+
lenses: ParsedLensRef[];
|
|
17
|
+
test?: ParsedTestRef;
|
|
10
18
|
}
|
|
11
19
|
export interface ParsedLearningOutcome {
|
|
12
20
|
id: string;
|
|
13
21
|
lenses: ParsedLensRef[];
|
|
14
22
|
test?: ParsedTestRef;
|
|
15
23
|
discussion?: string;
|
|
24
|
+
submodules?: ParsedSubmoduleGroup[];
|
|
16
25
|
}
|
|
17
26
|
export interface LearningOutcomeParseResult {
|
|
18
27
|
learningOutcome: ParsedLearningOutcome | null;
|