lens-content-processor 0.1.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.
Files changed (103) hide show
  1. package/dist/bundler/article.d.ts +41 -0
  2. package/dist/bundler/article.js +240 -0
  3. package/dist/bundler/article.js.map +1 -0
  4. package/dist/bundler/article.test.d.ts +1 -0
  5. package/dist/bundler/article.test.js +212 -0
  6. package/dist/bundler/article.test.js.map +1 -0
  7. package/dist/bundler/video.d.ts +50 -0
  8. package/dist/bundler/video.js +213 -0
  9. package/dist/bundler/video.js.map +1 -0
  10. package/dist/bundler/video.test.d.ts +1 -0
  11. package/dist/bundler/video.test.js +95 -0
  12. package/dist/bundler/video.test.js.map +1 -0
  13. package/dist/cli.d.ts +10 -0
  14. package/dist/cli.js +80 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/cli.test.d.ts +1 -0
  17. package/dist/cli.test.js +45 -0
  18. package/dist/cli.test.js.map +1 -0
  19. package/dist/flattener/index.d.ts +20 -0
  20. package/dist/flattener/index.js +707 -0
  21. package/dist/flattener/index.js.map +1 -0
  22. package/dist/flattener/index.test.d.ts +1 -0
  23. package/dist/flattener/index.test.js +547 -0
  24. package/dist/flattener/index.test.js.map +1 -0
  25. package/dist/fs/read-vault.d.ts +4 -0
  26. package/dist/fs/read-vault.js +28 -0
  27. package/dist/fs/read-vault.js.map +1 -0
  28. package/dist/fs/read-vault.test.d.ts +1 -0
  29. package/dist/fs/read-vault.test.js +37 -0
  30. package/dist/fs/read-vault.test.js.map +1 -0
  31. package/dist/index.d.ts +75 -0
  32. package/dist/index.js +137 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/parser/course.d.ts +17 -0
  35. package/dist/parser/course.js +145 -0
  36. package/dist/parser/course.js.map +1 -0
  37. package/dist/parser/course.test.d.ts +1 -0
  38. package/dist/parser/course.test.js +117 -0
  39. package/dist/parser/course.test.js.map +1 -0
  40. package/dist/parser/frontmatter.d.ts +8 -0
  41. package/dist/parser/frontmatter.js +58 -0
  42. package/dist/parser/frontmatter.js.map +1 -0
  43. package/dist/parser/frontmatter.test.d.ts +1 -0
  44. package/dist/parser/frontmatter.test.js +54 -0
  45. package/dist/parser/frontmatter.test.js.map +1 -0
  46. package/dist/parser/learning-outcome.d.ts +21 -0
  47. package/dist/parser/learning-outcome.js +116 -0
  48. package/dist/parser/learning-outcome.js.map +1 -0
  49. package/dist/parser/learning-outcome.test.d.ts +1 -0
  50. package/dist/parser/learning-outcome.test.js +75 -0
  51. package/dist/parser/learning-outcome.test.js.map +1 -0
  52. package/dist/parser/lens.d.ts +51 -0
  53. package/dist/parser/lens.js +328 -0
  54. package/dist/parser/lens.js.map +1 -0
  55. package/dist/parser/lens.test.d.ts +1 -0
  56. package/dist/parser/lens.test.js +453 -0
  57. package/dist/parser/lens.test.js.map +1 -0
  58. package/dist/parser/module.d.ts +21 -0
  59. package/dist/parser/module.js +128 -0
  60. package/dist/parser/module.js.map +1 -0
  61. package/dist/parser/module.test.d.ts +1 -0
  62. package/dist/parser/module.test.js +99 -0
  63. package/dist/parser/module.test.js.map +1 -0
  64. package/dist/parser/sections.d.ts +18 -0
  65. package/dist/parser/sections.js +128 -0
  66. package/dist/parser/sections.js.map +1 -0
  67. package/dist/parser/sections.test.d.ts +1 -0
  68. package/dist/parser/sections.test.js +297 -0
  69. package/dist/parser/sections.test.js.map +1 -0
  70. package/dist/parser/wikilink.d.ts +12 -0
  71. package/dist/parser/wikilink.js +35 -0
  72. package/dist/parser/wikilink.js.map +1 -0
  73. package/dist/parser/wikilink.test.d.ts +1 -0
  74. package/dist/parser/wikilink.test.js +76 -0
  75. package/dist/parser/wikilink.test.js.map +1 -0
  76. package/dist/validator/field-typos.d.ts +10 -0
  77. package/dist/validator/field-typos.js +96 -0
  78. package/dist/validator/field-typos.js.map +1 -0
  79. package/dist/validator/field-typos.test.d.ts +1 -0
  80. package/dist/validator/field-typos.test.js +41 -0
  81. package/dist/validator/field-typos.test.js.map +1 -0
  82. package/dist/validator/field-values.d.ts +11 -0
  83. package/dist/validator/field-values.js +37 -0
  84. package/dist/validator/field-values.js.map +1 -0
  85. package/dist/validator/field-values.test.d.ts +1 -0
  86. package/dist/validator/field-values.test.js +45 -0
  87. package/dist/validator/field-values.test.js.map +1 -0
  88. package/dist/validator/segment-fields.d.ts +12 -0
  89. package/dist/validator/segment-fields.js +55 -0
  90. package/dist/validator/segment-fields.js.map +1 -0
  91. package/dist/validator/segment-fields.test.d.ts +1 -0
  92. package/dist/validator/segment-fields.test.js +73 -0
  93. package/dist/validator/segment-fields.test.js.map +1 -0
  94. package/dist/validator/standalone.test.d.ts +1 -0
  95. package/dist/validator/standalone.test.js +190 -0
  96. package/dist/validator/standalone.test.js.map +1 -0
  97. package/dist/validator/uuid.d.ts +17 -0
  98. package/dist/validator/uuid.js +46 -0
  99. package/dist/validator/uuid.js.map +1 -0
  100. package/dist/validator/uuid.test.d.ts +1 -0
  101. package/dist/validator/uuid.test.js +229 -0
  102. package/dist/validator/uuid.test.js.map +1 -0
  103. package/package.json +45 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flattener/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,547 @@
1
+ // src/flattener/index.test.ts
2
+ import { describe, it, expect } from 'vitest';
3
+ import { flattenModule } from './index.js';
4
+ describe('flattenModule', () => {
5
+ it('resolves learning outcome references', () => {
6
+ // LO with 2 lenses should produce 2 sections (one per lens)
7
+ const files = new Map([
8
+ ['modules/intro.md', `---
9
+ slug: intro
10
+ title: Intro
11
+ ---
12
+
13
+ # Learning Outcome: Topic
14
+ source:: [[../Learning Outcomes/lo1.md|LO1]]
15
+ `],
16
+ ['Learning Outcomes/lo1.md', `---
17
+ id: 550e8400-e29b-41d4-a716-446655440001
18
+ ---
19
+
20
+ ## Lens:
21
+ source:: [[../Lenses/video-lens.md|Video Lens]]
22
+
23
+ ## Lens:
24
+ source:: [[../Lenses/article-lens.md|Article Lens]]
25
+ `],
26
+ ['Lenses/video-lens.md', `---
27
+ id: 550e8400-e29b-41d4-a716-446655440002
28
+ ---
29
+
30
+ ### Video: Introduction Video
31
+ source:: [[../video_transcripts/intro.md|Intro Video]]
32
+
33
+ #### Video-excerpt
34
+ from:: 0:00
35
+ to:: 1:00
36
+ `],
37
+ ['Lenses/article-lens.md', `---
38
+ id: 550e8400-e29b-41d4-a716-446655440003
39
+ ---
40
+
41
+ ### Article: Deep Dive
42
+ source:: [[../articles/deep-dive.md|Article]]
43
+
44
+ #### Article-excerpt
45
+ from:: "Start here"
46
+ to:: "end here"
47
+ `],
48
+ ['video_transcripts/intro.md', `---
49
+ title: Intro Video
50
+ channel: Test Channel
51
+ url: https://youtube.com/watch?v=abc123
52
+ ---
53
+
54
+ 0:00 - Welcome to the video.
55
+ 1:00 - End of excerpt.
56
+ `],
57
+ ['articles/deep-dive.md', `---
58
+ title: Deep Dive Article
59
+ author: Jane Doe
60
+ sourceUrl: https://example.com/article
61
+ ---
62
+
63
+ Start here with some content and end here.
64
+ `],
65
+ ]);
66
+ const result = flattenModule('modules/intro.md', files);
67
+ expect(result.module).toBeDefined();
68
+ expect(result.module?.slug).toBe('intro');
69
+ expect(result.module?.title).toBe('Intro');
70
+ expect(result.errors).toHaveLength(0);
71
+ // Each lens should become its own section
72
+ expect(result.module?.sections).toHaveLength(2);
73
+ // First section: video lens
74
+ expect(result.module?.sections[0].type).toBe('lens-video');
75
+ expect(result.module?.sections[0].learningOutcomeId).toBe('550e8400-e29b-41d4-a716-446655440001');
76
+ expect(result.module?.sections[0].meta.title).toBe('Intro Video');
77
+ expect(result.module?.sections[0].meta.channel).toBe('Test Channel');
78
+ // Second section: article lens
79
+ expect(result.module?.sections[1].type).toBe('lens-article');
80
+ expect(result.module?.sections[1].learningOutcomeId).toBe('550e8400-e29b-41d4-a716-446655440001');
81
+ expect(result.module?.sections[1].meta.title).toBe('Deep Dive Article');
82
+ expect(result.module?.sections[1].meta.author).toBe('Jane Doe');
83
+ });
84
+ it('returns error for missing reference', () => {
85
+ const files = new Map([
86
+ ['modules/broken.md', `---
87
+ slug: broken
88
+ title: Broken
89
+ ---
90
+
91
+ # Learning Outcome: Missing
92
+ source:: [[../Learning Outcomes/nonexistent.md|Missing]]
93
+ `],
94
+ ]);
95
+ const result = flattenModule('modules/broken.md', files);
96
+ expect(result.errors.length).toBeGreaterThan(0);
97
+ expect(result.errors[0].message).toContain('not found');
98
+ // Module should still be returned for partial success (with empty sections)
99
+ expect(result.module).toBeDefined();
100
+ expect(result.module?.slug).toBe('broken');
101
+ expect(result.module?.sections).toHaveLength(0);
102
+ });
103
+ it('resolves article excerpt references', () => {
104
+ const files = new Map([
105
+ ['modules/reading.md', `---
106
+ slug: reading
107
+ title: Reading Module
108
+ ---
109
+
110
+ # Learning Outcome: Reading Topic
111
+ source:: [[../Learning Outcomes/lo-reading.md|Reading LO]]
112
+ `],
113
+ ['Learning Outcomes/lo-reading.md', `---
114
+ id: 550e8400-e29b-41d4-a716-446655440010
115
+ ---
116
+
117
+ ## Lens: Article Lens
118
+ source:: [[../Lenses/lens-article.md|Article Lens]]
119
+ `],
120
+ ['Lenses/lens-article.md', `---
121
+ id: 550e8400-e29b-41d4-a716-446655440011
122
+ ---
123
+
124
+ ### Article: Deep Dive
125
+ source:: [[../articles/sample.md|Sample Article]]
126
+
127
+ #### Article-excerpt
128
+ from:: "The key insight"
129
+ to:: "this concept."
130
+ `],
131
+ ['articles/sample.md', `# Sample Article
132
+
133
+ Introduction paragraph.
134
+
135
+ The key insight is that AI alignment requires careful
136
+ consideration of human values. Understanding
137
+ this concept.
138
+
139
+ Conclusion.
140
+ `],
141
+ ]);
142
+ const result = flattenModule('modules/reading.md', files);
143
+ expect(result.module).toBeDefined();
144
+ expect(result.errors).toHaveLength(0);
145
+ expect(result.module?.sections[0].type).toBe('lens-article');
146
+ expect(result.module?.sections[0].segments[0].type).toBe('article-excerpt');
147
+ const excerpt = result.module?.sections[0].segments[0];
148
+ expect(excerpt.content).toContain('AI alignment');
149
+ });
150
+ it('resolves video excerpt references', () => {
151
+ const files = new Map([
152
+ ['modules/video.md', `---
153
+ slug: video
154
+ title: Video Module
155
+ ---
156
+
157
+ # Learning Outcome: Video Topic
158
+ source:: [[../Learning Outcomes/lo-video.md|Video LO]]
159
+ `],
160
+ ['Learning Outcomes/lo-video.md', `---
161
+ id: 550e8400-e29b-41d4-a716-446655440020
162
+ ---
163
+
164
+ ## Lens: Video Lens
165
+ source:: [[../Lenses/lens-video.md|Video Lens]]
166
+ `],
167
+ ['Lenses/lens-video.md', `---
168
+ id: 550e8400-e29b-41d4-a716-446655440021
169
+ ---
170
+
171
+ ### Video: Expert Interview
172
+ source:: [[../video_transcripts/interview.md|Interview]]
173
+
174
+ #### Video-excerpt
175
+ from:: 1:30
176
+ to:: 2:00
177
+ `],
178
+ ['video_transcripts/interview.md', `0:00 - Welcome to the video.
179
+ 0:30 - Today we discuss AI safety.
180
+ 1:00 - Let's start with basics.
181
+ 1:30 - The first key point is alignment.
182
+ 2:00 - Moving on to the next topic.
183
+ 2:30 - More content here.
184
+ `],
185
+ ]);
186
+ const result = flattenModule('modules/video.md', files);
187
+ expect(result.module).toBeDefined();
188
+ expect(result.errors).toHaveLength(0);
189
+ expect(result.module?.sections[0].type).toBe('lens-video');
190
+ expect(result.module?.sections[0].segments[0].type).toBe('video-excerpt');
191
+ const excerpt = result.module?.sections[0].segments[0];
192
+ expect(excerpt.from).toBe(90); // 1:30 = 90 seconds
193
+ expect(excerpt.to).toBe(120); // 2:00 = 120 seconds
194
+ expect(excerpt.transcript).toContain('alignment');
195
+ });
196
+ it('handles missing lens file gracefully', () => {
197
+ const files = new Map([
198
+ ['modules/broken-lens.md', `---
199
+ slug: broken-lens
200
+ title: Broken Lens
201
+ ---
202
+
203
+ # Learning Outcome: Topic
204
+ source:: [[../Learning Outcomes/lo1.md|LO1]]
205
+ `],
206
+ ['Learning Outcomes/lo1.md', `---
207
+ id: 550e8400-e29b-41d4-a716-446655440001
208
+ ---
209
+
210
+ ## Lens: Missing Lens
211
+ source:: [[../Lenses/nonexistent.md|Missing]]
212
+ `],
213
+ ]);
214
+ const result = flattenModule('modules/broken-lens.md', files);
215
+ expect(result.errors.length).toBeGreaterThan(0);
216
+ expect(result.errors.some(e => e.message.includes('not found'))).toBe(true);
217
+ });
218
+ it('handles optional learning outcomes', () => {
219
+ const files = new Map([
220
+ ['modules/optional.md', `---
221
+ slug: optional
222
+ title: Optional Module
223
+ ---
224
+
225
+ # Learning Outcome: Required Topic
226
+ source:: [[../Learning Outcomes/lo1.md|LO1]]
227
+
228
+ # Learning Outcome: Optional Topic
229
+ source:: [[../Learning Outcomes/lo2.md|LO2]]
230
+ optional:: true
231
+ `],
232
+ ['Learning Outcomes/lo1.md', `---
233
+ id: 550e8400-e29b-41d4-a716-446655440001
234
+ ---
235
+
236
+ ## Lens: Lens 1
237
+ source:: [[../Lenses/lens1.md|Lens]]
238
+ `],
239
+ ['Learning Outcomes/lo2.md', `---
240
+ id: 550e8400-e29b-41d4-a716-446655440002
241
+ ---
242
+
243
+ ## Lens: Lens 2
244
+ source:: [[../Lenses/lens2.md|Lens]]
245
+ `],
246
+ ['Lenses/lens1.md', `---
247
+ id: 550e8400-e29b-41d4-a716-446655440010
248
+ ---
249
+
250
+ ### Text: Content 1
251
+
252
+ #### Text
253
+ content:: First content.
254
+ `],
255
+ ['Lenses/lens2.md', `---
256
+ id: 550e8400-e29b-41d4-a716-446655440011
257
+ ---
258
+
259
+ ### Text: Content 2
260
+
261
+ #### Text
262
+ content:: Second content.
263
+ `],
264
+ ]);
265
+ const result = flattenModule('modules/optional.md', files);
266
+ expect(result.module).toBeDefined();
267
+ expect(result.module?.sections).toHaveLength(2);
268
+ expect(result.module?.sections[0].optional).toBe(false);
269
+ expect(result.module?.sections[1].optional).toBe(true);
270
+ });
271
+ it('flattens Page section with ## Text content segments', () => {
272
+ const files = new Map([
273
+ ['modules/page-test.md', `---
274
+ slug: page-test
275
+ title: Page Test Module
276
+ ---
277
+
278
+ # Page: Welcome
279
+ id:: d1e2f3a4-5678-90ab-cdef-1234567890ab
280
+
281
+ ## Text
282
+ content::
283
+ This is the welcome text.
284
+ It spans multiple lines.
285
+ `],
286
+ ]);
287
+ const result = flattenModule('modules/page-test.md', files);
288
+ expect(result.module).toBeDefined();
289
+ expect(result.module?.sections).toHaveLength(1);
290
+ expect(result.module?.sections[0].type).toBe('page');
291
+ expect(result.module?.sections[0].contentId).toBe('d1e2f3a4-5678-90ab-cdef-1234567890ab');
292
+ expect(result.module?.sections[0].segments).toHaveLength(1);
293
+ expect(result.module?.sections[0].segments[0].type).toBe('text');
294
+ const textSegment = result.module?.sections[0].segments[0];
295
+ expect(textSegment.content).toContain('welcome text');
296
+ expect(textSegment.content).toContain('multiple lines');
297
+ });
298
+ it('flattens Page section with multiple ## Text subsections', () => {
299
+ const files = new Map([
300
+ ['modules/multi-text.md', `---
301
+ slug: multi-text
302
+ title: Multi Text Module
303
+ ---
304
+
305
+ # Page: Introduction
306
+ id:: aaaa-bbbb-cccc-dddd
307
+
308
+ ## Text
309
+ content::
310
+ First paragraph of text.
311
+
312
+ ## Text
313
+ content::
314
+ Second paragraph of text.
315
+ `],
316
+ ]);
317
+ const result = flattenModule('modules/multi-text.md', files);
318
+ expect(result.module).toBeDefined();
319
+ expect(result.module?.sections).toHaveLength(1);
320
+ expect(result.module?.sections[0].segments).toHaveLength(2);
321
+ const seg0 = result.module?.sections[0].segments[0];
322
+ const seg1 = result.module?.sections[0].segments[1];
323
+ expect(seg0.content).toContain('First paragraph');
324
+ expect(seg1.content).toContain('Second paragraph');
325
+ });
326
+ it('flattens Uncategorized section with Lens references', () => {
327
+ const files = new Map([
328
+ ['modules/test.md', `---
329
+ slug: test
330
+ title: Test
331
+ ---
332
+
333
+ # Uncategorized:
334
+ ## Lens:
335
+ source:: [[../Lenses/lens1.md|Lens 1]]
336
+ `],
337
+ ['Lenses/lens1.md', `---
338
+ id: lens-1-id
339
+ ---
340
+
341
+ ### Text: Content
342
+
343
+ #### Text
344
+ content:: This is lens content.
345
+ `],
346
+ ]);
347
+ const result = flattenModule('modules/test.md', files);
348
+ expect(result.module?.sections).toHaveLength(1);
349
+ expect(result.module?.sections[0].segments[0].content).toBe('This is lens content.');
350
+ });
351
+ it('extracts article metadata into section meta', () => {
352
+ const files = new Map([
353
+ ['modules/test.md', `---
354
+ slug: test
355
+ title: Test
356
+ ---
357
+
358
+ # Learning Outcome: Read Article
359
+ source:: [[../Learning Outcomes/lo1.md|LO1]]
360
+ `],
361
+ ['Learning Outcomes/lo1.md', `---
362
+ id: lo-id
363
+ ---
364
+
365
+ ## Lens:
366
+ source:: [[../Lenses/article-lens.md|Lens]]
367
+ `],
368
+ ['Lenses/article-lens.md', `---
369
+ id: lens-id
370
+ ---
371
+
372
+ ### Article: Good Article
373
+ source:: [[../articles/test-article.md|Article]]
374
+
375
+ #### Article-excerpt
376
+ from:: "Start here"
377
+ to:: "End here"
378
+ `],
379
+ ['articles/test-article.md', `---
380
+ title: The Article Title
381
+ author: John Doe
382
+ sourceUrl: https://example.com/article
383
+ ---
384
+
385
+ Start here with some content. End here with more.
386
+ `],
387
+ ]);
388
+ const result = flattenModule('modules/test.md', files);
389
+ expect(result.module?.sections[0].meta.title).toBe('The Article Title');
390
+ expect(result.module?.sections[0].meta.author).toBe('John Doe');
391
+ expect(result.module?.sections[0].meta.sourceUrl).toBe('https://example.com/article');
392
+ });
393
+ it('extracts video metadata into section meta', () => {
394
+ const files = new Map([
395
+ ['modules/test.md', `---
396
+ slug: test
397
+ title: Test
398
+ ---
399
+
400
+ # Learning Outcome: Watch Video
401
+ source:: [[../Learning Outcomes/lo1.md|LO1]]
402
+ `],
403
+ ['Learning Outcomes/lo1.md', `---
404
+ id: lo-id
405
+ ---
406
+
407
+ ## Lens:
408
+ source:: [[../Lenses/video-lens.md|Lens]]
409
+ `],
410
+ ['Lenses/video-lens.md', `---
411
+ id: lens-id
412
+ ---
413
+
414
+ ### Video: Good Video
415
+ source:: [[../video_transcripts/test-video.md|Video]]
416
+
417
+ #### Video-excerpt
418
+ from:: 0:00
419
+ to:: 5:00
420
+ `],
421
+ ['video_transcripts/test-video.md', `---
422
+ title: The Video Title
423
+ channel: Kurzgesagt
424
+ url: https://youtube.com/watch?v=abc123
425
+ ---
426
+
427
+ 0:00 - Start of video content.
428
+ 5:00 - End of excerpt.
429
+ `],
430
+ ]);
431
+ const result = flattenModule('modules/test.md', files);
432
+ expect(result.module?.sections[0].meta.title).toBe('The Video Title');
433
+ expect(result.module?.sections[0].meta.channel).toBe('Kurzgesagt');
434
+ });
435
+ it('sets section contentId from lens frontmatter id', () => {
436
+ const files = new Map([
437
+ ['modules/test.md', `---
438
+ slug: test
439
+ title: Test
440
+ ---
441
+
442
+ # Learning Outcome: Topic
443
+ source:: [[../Learning Outcomes/lo1.md|LO1]]
444
+ `],
445
+ ['Learning Outcomes/lo1.md', `---
446
+ id: lo-id
447
+ ---
448
+
449
+ ## Lens:
450
+ source:: [[../Lenses/lens1.md|Lens]]
451
+ `],
452
+ ['Lenses/lens1.md', `---
453
+ id: 3dd47fce-a0fe-4e03-916d-a160fe697dd0
454
+ ---
455
+
456
+ ### Text: Content
457
+
458
+ #### Text
459
+ content:: Some content.
460
+ `],
461
+ ]);
462
+ const result = flattenModule('modules/test.md', files);
463
+ expect(result.module?.sections[0].contentId).toBe('3dd47fce-a0fe-4e03-916d-a160fe697dd0');
464
+ });
465
+ it('flattens Uncategorized section with multiline source fields', () => {
466
+ // Bug: when source:: has no inline value and the wikilink is on the next line,
467
+ // the lens refs aren't being collected properly because the field value isn't
468
+ // finalized before checking if source exists.
469
+ const files = new Map([
470
+ ['modules/test.md', `---
471
+ slug: test
472
+ title: Test
473
+ ---
474
+
475
+ # Uncategorized:
476
+ ## Lens:
477
+ source::
478
+ ![[../Lenses/lens1.md]]
479
+
480
+ ## Lens:
481
+ source::
482
+ ![[../Lenses/lens2.md]]
483
+ `],
484
+ ['Lenses/lens1.md', `---
485
+ id: lens-1-id
486
+ ---
487
+
488
+ ### Text: Content 1
489
+
490
+ #### Text
491
+ content:: First lens content.
492
+ `],
493
+ ['Lenses/lens2.md', `---
494
+ id: lens-2-id
495
+ ---
496
+
497
+ ### Text: Content 2
498
+
499
+ #### Text
500
+ content:: Second lens content.
501
+ `],
502
+ ]);
503
+ const result = flattenModule('modules/test.md', files);
504
+ // Each lens should become its own section
505
+ expect(result.errors).toHaveLength(0);
506
+ expect(result.module?.sections).toHaveLength(2);
507
+ expect(result.module?.sections[0].segments).toHaveLength(1);
508
+ expect(result.module?.sections[1].segments).toHaveLength(1);
509
+ expect((result.module?.sections[0].segments[0]).content).toBe('First lens content.');
510
+ expect((result.module?.sections[1].segments[0]).content).toBe('Second lens content.');
511
+ });
512
+ it('detects circular reference and returns error', () => {
513
+ // Create a cycle: Module -> LO-A -> Lens-B -> (references back to LO-A)
514
+ // The lens has an article section that points back to the LO file
515
+ const files = new Map([
516
+ ['modules/circular.md', `---
517
+ slug: circular
518
+ title: Circular
519
+ ---
520
+
521
+ # Learning Outcome: Loop
522
+ source:: [[../Learning Outcomes/lo-a.md|LO A]]
523
+ `],
524
+ ['Learning Outcomes/lo-a.md', `---
525
+ id: lo-a-id
526
+ ---
527
+
528
+ ## Lens:
529
+ source:: [[../Lenses/lens-b.md|Lens B]]
530
+ `],
531
+ ['Lenses/lens-b.md', `---
532
+ id: lens-b-id
533
+ ---
534
+
535
+ ### Article: Back to LO
536
+ source:: [[../Learning Outcomes/lo-a.md|Back to A]]
537
+
538
+ #### Article-excerpt
539
+ from:: "Start"
540
+ to:: "End"
541
+ `],
542
+ ]);
543
+ const result = flattenModule('modules/circular.md', files);
544
+ expect(result.errors.some(e => e.message.toLowerCase().includes('circular'))).toBe(true);
545
+ });
546
+ });
547
+ //# sourceMappingURL=index.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/flattener/index.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export interface ReadVaultOptions {
2
+ includeWip?: boolean;
3
+ }
4
+ export declare function readVaultFiles(vaultPath: string, options?: ReadVaultOptions): Promise<Map<string, string>>;
@@ -0,0 +1,28 @@
1
+ // src/fs/read-vault.ts
2
+ import { readdir, readFile } from 'fs/promises';
3
+ import { join } from 'path';
4
+ export async function readVaultFiles(vaultPath, options = {}) {
5
+ const files = new Map();
6
+ await readFilesRecursive(vaultPath, '', files, options);
7
+ return files;
8
+ }
9
+ async function readFilesRecursive(dir, prefix, result, options) {
10
+ const entries = await readdir(dir, { withFileTypes: true });
11
+ for (const entry of entries) {
12
+ const relativePath = prefix ? `${prefix}/${entry.name}` : entry.name;
13
+ const fullPath = join(dir, entry.name);
14
+ if (entry.isDirectory()) {
15
+ // Skip WIP directories unless includeWip is true
16
+ if (!options.includeWip && entry.name.toLowerCase().includes('wip')) {
17
+ continue;
18
+ }
19
+ await readFilesRecursive(fullPath, relativePath, result, options);
20
+ }
21
+ else if (entry.name.endsWith('.md') || entry.name.endsWith('.timestamps.json')) {
22
+ // Load both .md files and .timestamps.json files (for video transcript timing data)
23
+ const content = await readFile(fullPath, 'utf-8');
24
+ result.set(relativePath, content);
25
+ }
26
+ }
27
+ }
28
+ //# sourceMappingURL=read-vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-vault.js","sourceRoot":"","sources":["../../src/fs/read-vault.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,UAA4B,EAAE;IAE9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,kBAAkB,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAAW,EACX,MAAc,EACd,MAA2B,EAC3B,OAAyB;IAEzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,iDAAiD;YACjD,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,SAAS;YACX,CAAC;YACD,MAAM,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACpE,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACjF,oFAAoF;YACpF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export {};