lens-content-processor 0.3.0 → 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 +19 -8
- package/dist/bundler/article.js.map +1 -1
- package/dist/content-schema.js +3 -2
- package/dist/content-schema.js.map +1 -1
- package/dist/flattener/index.d.ts +20 -1
- package/dist/flattener/index.js +476 -72
- 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/index.d.ts +18 -2
- package/dist/index.js +53 -23
- package/dist/index.js.map +1 -1
- package/dist/parser/article.d.ts +1 -1
- package/dist/parser/article.js +8 -1
- package/dist/parser/article.js.map +1 -1
- package/dist/parser/course.js +11 -8
- package/dist/parser/course.js.map +1 -1
- package/dist/parser/learning-outcome.d.ts +7 -0
- package/dist/parser/learning-outcome.js +129 -86
- package/dist/parser/learning-outcome.js.map +1 -1
- package/dist/parser/lens.d.ts +26 -1
- package/dist/parser/lens.js +99 -10
- package/dist/parser/lens.js.map +1 -1
- package/dist/parser/module.d.ts +1 -1
- package/dist/parser/module.js +13 -8
- package/dist/parser/module.js.map +1 -1
- package/dist/parser/sections.d.ts +2 -0
- package/dist/parser/sections.js +53 -19
- 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/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-values.js +14 -0
- package/dist/validator/field-values.js.map +1 -1
- 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 +1 -1
|
@@ -12,9 +12,14 @@ export interface CollapsedExcerpt {
|
|
|
12
12
|
error?: ContentError;
|
|
13
13
|
}
|
|
14
14
|
export interface ExcerptInput {
|
|
15
|
-
from
|
|
16
|
-
to
|
|
15
|
+
from?: string;
|
|
16
|
+
to?: string;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Strip frontmatter from article content.
|
|
20
|
+
* Frontmatter is enclosed in --- markers at the start of the file.
|
|
21
|
+
*/
|
|
22
|
+
export declare function stripFrontmatter(article: string): string;
|
|
18
23
|
/**
|
|
19
24
|
* Extract content from an article between two anchor texts.
|
|
20
25
|
*
|
package/dist/bundler/article.js
CHANGED
|
@@ -20,7 +20,7 @@ function findAllOccurrences(text, anchor) {
|
|
|
20
20
|
* Strip frontmatter from article content.
|
|
21
21
|
* Frontmatter is enclosed in --- markers at the start of the file.
|
|
22
22
|
*/
|
|
23
|
-
function stripFrontmatter(article) {
|
|
23
|
+
export function stripFrontmatter(article) {
|
|
24
24
|
const match = article.match(/^---\n[\s\S]*?\n---\n([\s\S]*)$/);
|
|
25
25
|
return match ? match[1].trim() : article.trim();
|
|
26
26
|
}
|
|
@@ -116,7 +116,7 @@ export function extractArticleExcerpt(article, fromAnchor, toAnchor, file) {
|
|
|
116
116
|
// At this point we know both fromAnchor and toAnchor are defined (not undefined)
|
|
117
117
|
const fromAnchorStr = fromAnchor;
|
|
118
118
|
const toAnchorStr = toAnchor;
|
|
119
|
-
const fromOccurrences = findAllOccurrences(
|
|
119
|
+
const fromOccurrences = findAllOccurrences(body, fromAnchorStr);
|
|
120
120
|
if (fromOccurrences.length === 0) {
|
|
121
121
|
return {
|
|
122
122
|
error: {
|
|
@@ -139,7 +139,7 @@ export function extractArticleExcerpt(article, fromAnchor, toAnchor, file) {
|
|
|
139
139
|
}
|
|
140
140
|
const startIndex = fromOccurrences[0];
|
|
141
141
|
// Search for end anchor only AFTER the start anchor (case-insensitive)
|
|
142
|
-
const afterStart =
|
|
142
|
+
const afterStart = body.slice(startIndex);
|
|
143
143
|
const toOccurrences = findAllOccurrences(afterStart, toAnchorStr);
|
|
144
144
|
if (toOccurrences.length === 0) {
|
|
145
145
|
return {
|
|
@@ -165,7 +165,7 @@ export function extractArticleExcerpt(article, fromAnchor, toAnchor, file) {
|
|
|
165
165
|
const relativeToIndex = toOccurrences[0];
|
|
166
166
|
const endIndex = startIndex + relativeToIndex + toAnchorStr.length;
|
|
167
167
|
// Extract the content between (and including) the anchors
|
|
168
|
-
const content =
|
|
168
|
+
const content = body.slice(startIndex, endIndex);
|
|
169
169
|
return {
|
|
170
170
|
content,
|
|
171
171
|
startIndex,
|
|
@@ -181,6 +181,7 @@ export function extractArticleExcerpt(article, fromAnchor, toAnchor, file) {
|
|
|
181
181
|
* @returns Array of excerpts with collapsed_before/collapsed_after fields
|
|
182
182
|
*/
|
|
183
183
|
export function bundleArticleWithCollapsed(article, excerpts, file) {
|
|
184
|
+
const body = stripFrontmatter(article);
|
|
184
185
|
// First, extract all excerpts and their positions
|
|
185
186
|
const extractedExcerpts = [];
|
|
186
187
|
for (const excerpt of excerpts) {
|
|
@@ -215,11 +216,21 @@ export function bundleArticleWithCollapsed(article, excerpts, file) {
|
|
|
215
216
|
const result = {
|
|
216
217
|
content: extracted.content,
|
|
217
218
|
};
|
|
218
|
-
// Calculate collapsed_before
|
|
219
|
-
if (i
|
|
219
|
+
// Calculate collapsed_before
|
|
220
|
+
if (i === 0) {
|
|
221
|
+
// First excerpt: content from body start to this excerpt start
|
|
222
|
+
if (extracted.startIndex > 0) {
|
|
223
|
+
const collapsedBefore = body.slice(0, extracted.startIndex).trim();
|
|
224
|
+
if (collapsedBefore.length > 0) {
|
|
225
|
+
result.collapsed_before = collapsedBefore;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// Subsequent excerpts: content between previous excerpt end and this excerpt start
|
|
220
231
|
const prevExcerpt = extractedExcerpts[i - 1];
|
|
221
232
|
if (!prevExcerpt.error && prevExcerpt.endIndex < extracted.startIndex) {
|
|
222
|
-
const collapsedBefore =
|
|
233
|
+
const collapsedBefore = body.slice(prevExcerpt.endIndex, extracted.startIndex).trim();
|
|
223
234
|
if (collapsedBefore.length > 0) {
|
|
224
235
|
result.collapsed_before = collapsedBefore;
|
|
225
236
|
}
|
|
@@ -228,7 +239,7 @@ export function bundleArticleWithCollapsed(article, excerpts, file) {
|
|
|
228
239
|
// Calculate collapsed_after (content after this excerpt to next excerpt or end)
|
|
229
240
|
// Only set for the last excerpt
|
|
230
241
|
if (i === extractedExcerpts.length - 1) {
|
|
231
|
-
const collapsedAfter =
|
|
242
|
+
const collapsedAfter = body.slice(extracted.endIndex).trim();
|
|
232
243
|
if (collapsedAfter.length > 0) {
|
|
233
244
|
result.collapsed_after = collapsedAfter;
|
|
234
245
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/bundler/article.ts"],"names":[],"mappings":"AAsBA;;;GAGG;AACH,SAAS,kBAAkB,CAAC,IAAY,EAAE,MAAc;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAChD,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,MAAM;QACtB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"article.js","sourceRoot":"","sources":["../../src/bundler/article.ts"],"names":[],"mappings":"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"}
|
package/dist/content-schema.js
CHANGED
|
@@ -8,9 +8,9 @@ function segmentSchema(required, optional, booleanFields) {
|
|
|
8
8
|
export const CONTENT_SCHEMAS = {
|
|
9
9
|
'module': contentSchema(['slug', 'title'], ['contentId', 'id', 'discussion', 'tags']),
|
|
10
10
|
'course': contentSchema(['slug', 'title'], ['id', 'tags']),
|
|
11
|
-
'lens': contentSchema(['id'], ['tags']),
|
|
11
|
+
'lens': contentSchema(['id'], ['tldr', 'tags']),
|
|
12
12
|
'learning-outcome': contentSchema(['id'], ['discussion', 'learning-outcome', 'tags']),
|
|
13
|
-
'article': contentSchema(['title', 'author', 'source_url'
|
|
13
|
+
'article': contentSchema(['title', 'author', 'source_url', 'published'], ['created', 'description', 'tags', 'url']),
|
|
14
14
|
'video-transcript': contentSchema(['title', 'channel', 'url'], ['tags']),
|
|
15
15
|
};
|
|
16
16
|
export const SEGMENT_SCHEMAS = {
|
|
@@ -19,6 +19,7 @@ export const SEGMENT_SCHEMAS = {
|
|
|
19
19
|
'article-excerpt': segmentSchema([], ['from', 'to', 'optional'], ['optional']),
|
|
20
20
|
'video-excerpt': segmentSchema(['to'], ['from', 'optional'], ['optional']),
|
|
21
21
|
'question': segmentSchema(['content'], ['assessment-instructions', 'max-time', 'max-chars', 'enforce-voice', 'optional', 'feedback'], ['enforce-voice', 'optional', 'feedback']),
|
|
22
|
+
'roleplay': segmentSchema(['id', 'content', 'ai-instructions'], ['opening-message', 'assessment-instructions', 'optional', 'feedback'], ['optional', 'feedback']),
|
|
22
23
|
};
|
|
23
24
|
/**
|
|
24
25
|
* Valid fields per segment type, derived from SEGMENT_SCHEMAS.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-schema.js","sourceRoot":"","sources":["../src/content-schema.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAsBlG,SAAS,aAAa,CAAC,QAAkB,EAAE,QAAkB;IAC3D,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;AACvG,CAAC;AAED,SAAS,aAAa,CAAC,QAAkB,EAAE,QAAkB,EAAE,aAAuB;IACpF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;AACtH,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAsC;IAChE,QAAQ,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACrF,QAAQ,EAAE,aAAa,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1D,MAAM,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"content-schema.js","sourceRoot":"","sources":["../src/content-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,28 @@
|
|
|
1
|
-
import type { FlattenedModule, ContentError } from '../index.js';
|
|
1
|
+
import type { FlattenedModule, Section, 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 {
|
|
5
5
|
module: FlattenedModule | null;
|
|
6
|
+
modules: FlattenedModule[];
|
|
6
7
|
errors: ContentError[];
|
|
7
8
|
}
|
|
9
|
+
export type BoundaryMarker = {
|
|
10
|
+
__boundary: true;
|
|
11
|
+
title: string;
|
|
12
|
+
customSlug?: string;
|
|
13
|
+
};
|
|
14
|
+
export type FlatItem = Section | BoundaryMarker;
|
|
15
|
+
export declare function isBoundary(item: FlatItem): item is BoundaryMarker;
|
|
16
|
+
export declare function validateBoundaries(items: FlatItem[], file: string): ContentError[];
|
|
17
|
+
interface VirtualModuleGroup {
|
|
18
|
+
slug: string;
|
|
19
|
+
title: string;
|
|
20
|
+
parentSlug: string;
|
|
21
|
+
parentTitle: string;
|
|
22
|
+
sections: Section[];
|
|
23
|
+
contentId: string | null;
|
|
24
|
+
}
|
|
25
|
+
export declare function splitAtBoundaries(items: FlatItem[], parentSlug: string, parentTitle: string): VirtualModuleGroup[];
|
|
8
26
|
/**
|
|
9
27
|
* Flatten a module by resolving all references to Learning Outcomes, Lenses, and content.
|
|
10
28
|
*
|
|
@@ -38,3 +56,4 @@ export declare function flattenModule(modulePath: string, files: Map<string, str
|
|
|
38
56
|
* @returns Flattened module with a single section, plus any errors
|
|
39
57
|
*/
|
|
40
58
|
export declare function flattenLens(lensPath: string, files: Map<string, string>, tierMap?: Map<string, ContentTier>, preParsedLens?: ParsedLens): FlattenModuleResult;
|
|
59
|
+
export {};
|