lens-content-processor 0.74.0 → 0.76.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/video.d.ts +29 -2
- package/dist/bundler/video.js +162 -8
- package/dist/bundler/video.js.map +1 -1
- package/dist/content-schema.js +16 -2
- package/dist/content-schema.js.map +1 -1
- package/dist/flattener/index.js +15 -7
- package/dist/flattener/index.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +87 -14
- package/dist/index.js.map +1 -1
- package/dist/parser/learning-outcome.d.ts +3 -0
- package/dist/parser/learning-outcome.js +12 -1
- package/dist/parser/learning-outcome.js.map +1 -1
- package/dist/parser/lens.d.ts +7 -0
- package/dist/parser/lens.js +26 -2
- package/dist/parser/lens.js.map +1 -1
- package/dist/validator/uuid.d.ts +16 -0
- package/dist/validator/uuid.js +63 -7
- package/dist/validator/uuid.js.map +1 -1
- package/package.json +1 -1
package/dist/bundler/video.d.ts
CHANGED
|
@@ -4,9 +4,19 @@ export interface TranscriptSentence {
|
|
|
4
4
|
start: number;
|
|
5
5
|
end: number;
|
|
6
6
|
}
|
|
7
|
+
/** A part of the excerpt the player jumps over (`skip::`), in seconds,
|
|
8
|
+
* with the author's optional reason, which the skip overlay shows. */
|
|
9
|
+
export interface VideoSkip {
|
|
10
|
+
from: number;
|
|
11
|
+
to: number;
|
|
12
|
+
reason?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Longest skip:: reason: it must fit the overlay in two lines on a phone. */
|
|
15
|
+
export declare const MAX_SKIP_REASON_LENGTH = 100;
|
|
7
16
|
export interface VideoExcerptResult {
|
|
8
17
|
from?: number;
|
|
9
18
|
to?: number | null;
|
|
19
|
+
skip?: VideoSkip[];
|
|
10
20
|
transcript?: TranscriptSentence[];
|
|
11
21
|
error?: ContentError;
|
|
12
22
|
}
|
|
@@ -29,6 +39,19 @@ export interface TimestampEntry {
|
|
|
29
39
|
* @returns Number of seconds, or null if invalid format
|
|
30
40
|
*/
|
|
31
41
|
export declare function parseTimestamp(str: string): number | null;
|
|
42
|
+
/**
|
|
43
|
+
* Parse a `skip::` value: one or more `start-end` ranges, comma-separated,
|
|
44
|
+
* each optionally followed by a reason in double quotes (e.g.
|
|
45
|
+
* `5:13-8:09 "Miles reads example problems", 9:00-9:30`). Commas inside a
|
|
46
|
+
* reason do not split. Returns the ranges sorted by start, or an error
|
|
47
|
+
* message for the first malformed part. Range checks against the excerpt's
|
|
48
|
+
* from/to happen in extractVideoExcerpt, which knows them.
|
|
49
|
+
*/
|
|
50
|
+
export declare function parseSkipRanges(value: string): {
|
|
51
|
+
skips: VideoSkip[];
|
|
52
|
+
} | {
|
|
53
|
+
error: string;
|
|
54
|
+
};
|
|
32
55
|
/**
|
|
33
56
|
* Extract words from timestamps data that fall within the requested time range,
|
|
34
57
|
* grouped into sentences by punctuation.
|
|
@@ -38,7 +61,7 @@ export declare function parseTimestamp(str: string): number | null;
|
|
|
38
61
|
* @param toSeconds - End time in seconds (use Infinity for open-ended)
|
|
39
62
|
* @returns Sentences with start/end times in seconds
|
|
40
63
|
*/
|
|
41
|
-
export declare function extractFromTimestamps(timestamps: TimestampEntry[], fromSeconds: number, toSeconds: number): TranscriptSentence[];
|
|
64
|
+
export declare function extractFromTimestamps(timestamps: TimestampEntry[], fromSeconds: number, toSeconds: number, skips?: VideoSkip[]): TranscriptSentence[];
|
|
42
65
|
/**
|
|
43
66
|
* Resolve the effective from/to timestamp strings for a video segment.
|
|
44
67
|
*
|
|
@@ -69,6 +92,10 @@ export declare function resolveVideoRange(segmentFrom: string | undefined, segme
|
|
|
69
92
|
* @param toTime - End timestamp string (e.g., "5:45")
|
|
70
93
|
* @param file - Source file path for error reporting
|
|
71
94
|
* @param timestamps - Optional word-level timestamps from .timestamps.json
|
|
95
|
+
* @param skips - Ranges inside the excerpt that do not play (skip::); their
|
|
96
|
+
* transcript text is left out
|
|
72
97
|
* @returns Extracted transcript with from/to as seconds, or error
|
|
73
98
|
*/
|
|
74
|
-
export declare function extractVideoExcerpt(transcript: string, fromTime: string, toTime: string | undefined, file: string, timestamps?: TimestampEntry[]): VideoExcerptResult;
|
|
99
|
+
export declare function extractVideoExcerpt(transcript: string, fromTime: string, toTime: string | undefined, file: string, timestamps?: TimestampEntry[], skips?: VideoSkip[]): VideoExcerptResult;
|
|
100
|
+
/** Seconds as M:SS or H:MM:SS, the form authors write (fractions dropped). */
|
|
101
|
+
export declare function formatTimestamp(seconds: number): string;
|
package/dist/bundler/video.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** Longest skip:: reason: it must fit the overlay in two lines on a phone. */
|
|
2
|
+
export const MAX_SKIP_REASON_LENGTH = 100;
|
|
1
3
|
/**
|
|
2
4
|
* Parse a timestamp string into seconds.
|
|
3
5
|
*
|
|
@@ -42,6 +44,84 @@ export function parseTimestamp(str) {
|
|
|
42
44
|
return hours * 3600 + minutes * 60 + seconds;
|
|
43
45
|
}
|
|
44
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Parse a `skip::` value: one or more `start-end` ranges, comma-separated,
|
|
49
|
+
* each optionally followed by a reason in double quotes (e.g.
|
|
50
|
+
* `5:13-8:09 "Miles reads example problems", 9:00-9:30`). Commas inside a
|
|
51
|
+
* reason do not split. Returns the ranges sorted by start, or an error
|
|
52
|
+
* message for the first malformed part. Range checks against the excerpt's
|
|
53
|
+
* from/to happen in extractVideoExcerpt, which knows them.
|
|
54
|
+
*/
|
|
55
|
+
export function parseSkipRanges(value) {
|
|
56
|
+
// Obsidian and pasted text may bring curly quotes; they count as straight.
|
|
57
|
+
const text = value.replace(/[\u201C\u201D]/g, '"');
|
|
58
|
+
const parts = [];
|
|
59
|
+
let part = '';
|
|
60
|
+
let quoted = false;
|
|
61
|
+
for (const ch of text) {
|
|
62
|
+
if (ch === '"')
|
|
63
|
+
quoted = !quoted;
|
|
64
|
+
if (ch === ',' && !quoted) {
|
|
65
|
+
parts.push(part);
|
|
66
|
+
part = '';
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
part += ch;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (quoted)
|
|
73
|
+
return { error: 'a reason is missing its closing quote (")' };
|
|
74
|
+
parts.push(part);
|
|
75
|
+
const skips = [];
|
|
76
|
+
for (const raw of parts) {
|
|
77
|
+
const match = raw.trim().match(/^([^"]*?)\s*(?:"([^"]*)")?$/);
|
|
78
|
+
if (!match) {
|
|
79
|
+
return { error: `'${raw.trim()}' is not a range like 5:13-8:09, optionally followed by a reason in quotes` };
|
|
80
|
+
}
|
|
81
|
+
const [, range, quotedReason] = match;
|
|
82
|
+
const bounds = range.split(/\s*[-–]\s*/);
|
|
83
|
+
const from = bounds.length === 2 ? parseTimestamp(bounds[0]) : null;
|
|
84
|
+
const to = bounds.length === 2 ? parseTimestamp(bounds[1]) : null;
|
|
85
|
+
if (from === null || to === null) {
|
|
86
|
+
return { error: `'${range}' is not a range like 5:13-8:09` };
|
|
87
|
+
}
|
|
88
|
+
if (from >= to) {
|
|
89
|
+
return { error: `'${range}' ends before it starts` };
|
|
90
|
+
}
|
|
91
|
+
const skip = { from, to };
|
|
92
|
+
if (quotedReason !== undefined) {
|
|
93
|
+
const reason = quotedReason.trim().replace(/\s+/g, ' ');
|
|
94
|
+
if (!reason)
|
|
95
|
+
return { error: `the reason after '${range}' is empty (leave the quotes out for none)` };
|
|
96
|
+
if (reason.length > MAX_SKIP_REASON_LENGTH) {
|
|
97
|
+
return { error: `the reason after '${range}' is ${reason.length} characters long; keep it to ${MAX_SKIP_REASON_LENGTH}` };
|
|
98
|
+
}
|
|
99
|
+
skip.reason = reason;
|
|
100
|
+
}
|
|
101
|
+
skips.push(skip);
|
|
102
|
+
}
|
|
103
|
+
skips.sort((a, b) => a.from - b.from);
|
|
104
|
+
for (let i = 1; i < skips.length; i++) {
|
|
105
|
+
if (skips[i].from <= skips[i - 1].to) {
|
|
106
|
+
return { error: 'two of its ranges overlap or touch (write them as one range)' };
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return { skips };
|
|
110
|
+
}
|
|
111
|
+
/** The parts of [from, to] that play: the excerpt minus its skips. */
|
|
112
|
+
function playedPieces(from, to, skips) {
|
|
113
|
+
const pieces = [];
|
|
114
|
+
let start = from;
|
|
115
|
+
for (const skip of skips) {
|
|
116
|
+
pieces.push({ from: start, to: skip.from });
|
|
117
|
+
start = skip.to;
|
|
118
|
+
}
|
|
119
|
+
pieces.push({ from: start, to });
|
|
120
|
+
return pieces;
|
|
121
|
+
}
|
|
122
|
+
function inSkip(time, skips) {
|
|
123
|
+
return skips.some((s) => time >= s.from && time < s.to);
|
|
124
|
+
}
|
|
45
125
|
/**
|
|
46
126
|
* Parse a transcript line to extract its timestamp.
|
|
47
127
|
* Expected format: "M:SS - text" or "H:MM:SS - text"
|
|
@@ -92,12 +172,17 @@ function groupIntoSentences(entries, toSeconds) {
|
|
|
92
172
|
* @param toSeconds - End time in seconds (use Infinity for open-ended)
|
|
93
173
|
* @returns Sentences with start/end times in seconds
|
|
94
174
|
*/
|
|
95
|
-
export function extractFromTimestamps(timestamps, fromSeconds, toSeconds) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
175
|
+
export function extractFromTimestamps(timestamps, fromSeconds, toSeconds, skips = []) {
|
|
176
|
+
// Each played piece is grouped on its own, so no sentence spans a skip.
|
|
177
|
+
// A word at a skip's start belongs to the skip; one at to:: still plays.
|
|
178
|
+
return playedPieces(fromSeconds, toSeconds, skips).flatMap((piece, i, all) => {
|
|
179
|
+
const last = i === all.length - 1;
|
|
180
|
+
const inRange = timestamps.filter(entry => {
|
|
181
|
+
const t = parseTimestamp(entry.start);
|
|
182
|
+
return t !== null && t >= piece.from && (last ? t <= piece.to : t < piece.to);
|
|
183
|
+
});
|
|
184
|
+
return groupIntoSentences(inRange, piece.to);
|
|
99
185
|
});
|
|
100
|
-
return groupIntoSentences(inRange, toSeconds);
|
|
101
186
|
}
|
|
102
187
|
/**
|
|
103
188
|
* Resolve the effective from/to timestamp strings for a video segment.
|
|
@@ -137,9 +222,11 @@ export function resolveVideoRange(segmentFrom, segmentTo, transcriptFrontmatter)
|
|
|
137
222
|
* @param toTime - End timestamp string (e.g., "5:45")
|
|
138
223
|
* @param file - Source file path for error reporting
|
|
139
224
|
* @param timestamps - Optional word-level timestamps from .timestamps.json
|
|
225
|
+
* @param skips - Ranges inside the excerpt that do not play (skip::); their
|
|
226
|
+
* transcript text is left out
|
|
140
227
|
* @returns Extracted transcript with from/to as seconds, or error
|
|
141
228
|
*/
|
|
142
|
-
export function extractVideoExcerpt(transcript, fromTime, toTime, file, timestamps) {
|
|
229
|
+
export function extractVideoExcerpt(transcript, fromTime, toTime, file, timestamps, skips = []) {
|
|
143
230
|
// Parse the requested timestamps
|
|
144
231
|
const fromSeconds = parseTimestamp(fromTime);
|
|
145
232
|
if (fromSeconds === null) {
|
|
@@ -175,13 +262,45 @@ export function extractVideoExcerpt(transcript, fromTime, toTime, file, timestam
|
|
|
175
262
|
},
|
|
176
263
|
};
|
|
177
264
|
}
|
|
265
|
+
// A skip must lie strictly inside the excerpt: one that touches from:: or
|
|
266
|
+
// to:: is a shorter from::/to::, and one outside it skips nothing.
|
|
267
|
+
for (const skip of skips) {
|
|
268
|
+
if (skip.from <= fromSeconds || (toSeconds !== null && skip.to >= toSeconds)) {
|
|
269
|
+
const range = `${formatTimestamp(skip.from)}-${formatTimestamp(skip.to)}`;
|
|
270
|
+
return {
|
|
271
|
+
error: {
|
|
272
|
+
file,
|
|
273
|
+
message: `skip:: range ${range} is not inside the excerpt ${fromTime}-${toTime ?? 'end'}`,
|
|
274
|
+
suggestion: 'A skip:: range must start after from:: and end before to::. To cut the start or end, change from:: or to:: instead',
|
|
275
|
+
severity: 'error',
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
const skipFields = skips.length > 0 ? { skip: skips } : {};
|
|
178
281
|
// If timestamps data is provided, use word-level extraction
|
|
179
282
|
if (timestamps && timestamps.length > 0) {
|
|
283
|
+
// Open-ended: the last spoken word stands in for to:: in the bounds check
|
|
284
|
+
if (toSeconds === null && skips.length > 0) {
|
|
285
|
+
const lastWord = Math.max(...timestamps.map((e) => parseTimestamp(e.start) ?? 0));
|
|
286
|
+
const late = skips.find((s) => s.to >= lastWord);
|
|
287
|
+
if (late) {
|
|
288
|
+
return {
|
|
289
|
+
error: {
|
|
290
|
+
file,
|
|
291
|
+
message: `skip:: range ${formatTimestamp(late.from)}-${formatTimestamp(late.to)} is not inside the excerpt ${fromTime}-end (the transcript ends at ${formatTimestamp(lastWord)})`,
|
|
292
|
+
suggestion: 'A skip:: range must end before the video does. To cut the end, set to:: instead',
|
|
293
|
+
severity: 'error',
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
}
|
|
180
298
|
const effectiveTo = toSeconds ?? Infinity;
|
|
181
|
-
const extractedText = extractFromTimestamps(timestamps, fromSeconds, effectiveTo);
|
|
299
|
+
const extractedText = extractFromTimestamps(timestamps, fromSeconds, effectiveTo, skips);
|
|
182
300
|
return {
|
|
183
301
|
from: fromSeconds,
|
|
184
302
|
to: toSeconds,
|
|
303
|
+
...skipFields,
|
|
185
304
|
transcript: extractedText,
|
|
186
305
|
};
|
|
187
306
|
}
|
|
@@ -198,6 +317,16 @@ export function extractVideoExcerpt(transcript, fromTime, toTime, file, timestam
|
|
|
198
317
|
// Find lines that fall within the requested range
|
|
199
318
|
// Handle plain prose transcripts (no timestamps at all)
|
|
200
319
|
if (timestampedLines.length === 0) {
|
|
320
|
+
if (skips.length > 0) {
|
|
321
|
+
return {
|
|
322
|
+
error: {
|
|
323
|
+
file,
|
|
324
|
+
message: 'skip:: needs a transcript with timestamps, to know which text to leave out',
|
|
325
|
+
suggestion: 'Add timestamps to the transcript, or use two Video segments instead of skip::',
|
|
326
|
+
severity: 'error',
|
|
327
|
+
},
|
|
328
|
+
};
|
|
329
|
+
}
|
|
201
330
|
// If starting from 0:00, include entire transcript as a single sentence
|
|
202
331
|
if (fromSeconds === 0) {
|
|
203
332
|
return {
|
|
@@ -247,7 +376,23 @@ export function extractVideoExcerpt(transcript, fromTime, toTime, file, timestam
|
|
|
247
376
|
},
|
|
248
377
|
};
|
|
249
378
|
}
|
|
250
|
-
|
|
379
|
+
// Line markers cut the text only at whole lines, so like from::/to:: each
|
|
380
|
+
// skip bound must be a marker: else a kept line's text would run into
|
|
381
|
+
// the skip, or a skipped line's text into the kept part.
|
|
382
|
+
const markers = new Set(timestampedLines.map(({ timestamp }) => timestamp));
|
|
383
|
+
for (const bound of skips.flatMap((s) => [s.from, s.to])) {
|
|
384
|
+
if (!markers.has(bound)) {
|
|
385
|
+
return {
|
|
386
|
+
error: {
|
|
387
|
+
file,
|
|
388
|
+
message: `skip:: timestamp '${formatTimestamp(bound)}' not found in transcript`,
|
|
389
|
+
suggestion: 'With a line-marker transcript, each skip:: start and end must be a line marker in the transcript',
|
|
390
|
+
severity: 'error',
|
|
391
|
+
},
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
const inRange = timestampedLines.filter(({ timestamp }) => timestamp >= fromSeconds && timestamp < effectiveTo && !inSkip(timestamp, skips));
|
|
251
396
|
const excerptSentences = inRange.map(({ timestamp, line }) => ({
|
|
252
397
|
text: line.replace(/^\d+:\d+(?::\d+)?\s*-\s*/, '').trim(),
|
|
253
398
|
start: timestamp,
|
|
@@ -256,7 +401,16 @@ export function extractVideoExcerpt(transcript, fromTime, toTime, file, timestam
|
|
|
256
401
|
return {
|
|
257
402
|
from: fromSeconds,
|
|
258
403
|
to: toSeconds,
|
|
404
|
+
...skipFields,
|
|
259
405
|
transcript: excerptSentences,
|
|
260
406
|
};
|
|
261
407
|
}
|
|
408
|
+
/** Seconds as M:SS or H:MM:SS, the form authors write (fractions dropped). */
|
|
409
|
+
export function formatTimestamp(seconds) {
|
|
410
|
+
const total = Math.floor(seconds);
|
|
411
|
+
const h = Math.floor(total / 3600);
|
|
412
|
+
const m = Math.floor((total % 3600) / 60);
|
|
413
|
+
const s = String(total % 60).padStart(2, '0');
|
|
414
|
+
return h > 0 ? `${h}:${String(m).padStart(2, '0')}:${s}` : `${m}:${s}`;
|
|
415
|
+
}
|
|
262
416
|
//# sourceMappingURL=video.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/bundler/video.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/bundler/video.ts"],"names":[],"mappings":"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"}
|
package/dist/content-schema.js
CHANGED
|
@@ -49,7 +49,15 @@ export const CONTENT_SCHEMAS = {
|
|
|
49
49
|
// (parseSidebarAuthor in parser/lens.ts). Bylines keep their author.
|
|
50
50
|
"sidebar_author",
|
|
51
51
|
]),
|
|
52
|
-
"learning-outcome": contentSchema(["id"], [
|
|
52
|
+
"learning-outcome": contentSchema(["id"], [
|
|
53
|
+
"discussion",
|
|
54
|
+
"learning-outcome",
|
|
55
|
+
"tags",
|
|
56
|
+
"domain",
|
|
57
|
+
"stage",
|
|
58
|
+
"requires",
|
|
59
|
+
"writing_minutes",
|
|
60
|
+
]),
|
|
53
61
|
article: contentSchema(["title", "author", "source_url", "published"], [
|
|
54
62
|
"created",
|
|
55
63
|
"description",
|
|
@@ -155,7 +163,13 @@ export const SEGMENT_SCHEMAS = {
|
|
|
155
163
|
// For text the site itself publishes, then; a third party's article keeps
|
|
156
164
|
// its attribution.
|
|
157
165
|
article: segmentSchema([], ["source", "from", "to", "optional", "render-as-non-article-text"], ["optional", "render-as-non-article-text"]),
|
|
158
|
-
|
|
166
|
+
// skip:: 5:13-8:09 "Miles reads example problems", 12:00-12:30 jumps over
|
|
167
|
+
// those parts of the from::/to:: excerpt: one player, the skipped
|
|
168
|
+
// transcript text left out, the time estimate without them. Each range
|
|
169
|
+
// lies strictly inside from::/to::, ranges may not overlap, and the
|
|
170
|
+
// transcript needs timestamps. A range's optional quoted reason (up to
|
|
171
|
+
// 100 characters) shows in the player's skip overlay and the tutor's view.
|
|
172
|
+
video: segmentSchema([], ["source", "from", "to", "skip", "optional"], ["optional"]),
|
|
159
173
|
// A bare `#### Question` is an alias of `#### Question: Open`. It keeps
|
|
160
174
|
// two extras from before subtypes existed: the `feedback::` bool (default
|
|
161
175
|
// true) and `min-chat-messages::` (accepted but ignored, like on chat).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-schema.js","sourceRoot":"","sources":["../src/content-schema.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAsBlG,SAAS,aAAa,CACpB,QAAkB,EAClB,QAAkB;IAElB,OAAO;QACL,cAAc,EAAE,QAAQ;QACxB,cAAc,EAAE,QAAQ;QACxB,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,QAAkB,EAClB,QAAkB,EAClB,aAAuB;IAEvB,OAAO;QACL,cAAc,EAAE,QAAQ;QACxB,cAAc,EAAE,QAAQ;QACxB,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,GAAG,QAAQ,CAAC;QACrC,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAsC;IAChE,MAAM,EAAE,aAAa,CACnB,CAAC,MAAM,EAAE,OAAO,CAAC,EACjB,CAAC,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAC1C;IACD,MAAM,EAAE,aAAa,CACnB,CAAC,MAAM,EAAE,OAAO,CAAC,EACjB;QACE,IAAI;QACJ,cAAc;QACd,MAAM;QACN,cAAc;QACd,cAAc;QACd,oBAAoB;QACpB,aAAa;QACb,2DAA2D;QAC3D,qEAAqE;QACrE,+DAA+D;QAC/D,aAAa;QACb,eAAe;QACf,UAAU;QACV,iBAAiB;QACjB,mBAAmB;QACnB,iEAAiE;QACjE,UAAU;KACX,CACF;IACD,IAAI,EAAE,aAAa,CACjB,CAAC,IAAI,CAAC,EACN;QACE,OAAO;QACP,MAAM;QACN,mBAAmB;QACnB,MAAM;QACN,mBAAmB;QACnB,kBAAkB;QAClB,iBAAiB;QACjB,eAAe;QACf,gBAAgB;QAChB,qEAAqE;QACrE,qEAAqE;QACrE,gBAAgB;KACjB,CACF;IACD,kBAAkB,EAAE,aAAa,CAC/B,CAAC,IAAI,CAAC,EACN,
|
|
1
|
+
{"version":3,"file":"content-schema.js","sourceRoot":"","sources":["../src/content-schema.ts"],"names":[],"mappings":"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"}
|
package/dist/flattener/index.js
CHANGED
|
@@ -45,7 +45,7 @@ function lensPlacementFields(fields, file, line, errors) {
|
|
|
45
45
|
/** Average spoken-word rate used to estimate the length of an open-ended
|
|
46
46
|
* video whose transcript has no timestamps (plain prose). */
|
|
47
47
|
const SPOKEN_WORDS_PER_MINUTE = 150;
|
|
48
|
-
/** Best-effort duration of a video segment in seconds
|
|
48
|
+
/** Best-effort duration of a video segment in seconds, without skip::.
|
|
49
49
|
* - Explicit range (to:: present): to - from.
|
|
50
50
|
* - Open-ended (no to:: = "play to the end"): last transcript timestamp
|
|
51
51
|
* minus from — without this, a full-length video contributed 0 seconds
|
|
@@ -53,8 +53,9 @@ const SPOKEN_WORDS_PER_MINUTE = 150;
|
|
|
53
53
|
* - Open-ended with a plain prose transcript (no timestamps at all):
|
|
54
54
|
* transcript word count at a spoken rate. */
|
|
55
55
|
function videoSegmentSeconds(seg) {
|
|
56
|
+
const skipped = (seg.skip ?? []).reduce((sum, s) => sum + s.to - s.from, 0);
|
|
56
57
|
if (seg.to != null)
|
|
57
|
-
return Math.max(0, seg.to - seg.from);
|
|
58
|
+
return Math.max(0, seg.to - seg.from - skipped);
|
|
58
59
|
let lastTimestamp = 0;
|
|
59
60
|
let transcriptWords = 0;
|
|
60
61
|
for (const sentence of seg.transcript ?? []) {
|
|
@@ -65,7 +66,7 @@ function videoSegmentSeconds(seg) {
|
|
|
65
66
|
transcriptWords += countWords(sentence.text);
|
|
66
67
|
}
|
|
67
68
|
if (lastTimestamp > seg.from)
|
|
68
|
-
return lastTimestamp - seg.from;
|
|
69
|
+
return Math.max(0, lastTimestamp - seg.from - skipped);
|
|
69
70
|
return Math.round((transcriptWords / SPOKEN_WORDS_PER_MINUTE) * 60);
|
|
70
71
|
}
|
|
71
72
|
/** The Section fields every lens read path copies verbatim from the parsed
|
|
@@ -628,10 +629,14 @@ export function flattenModule(modulePath, files, visitedPaths = new Set(), tierM
|
|
|
628
629
|
errors,
|
|
629
630
|
};
|
|
630
631
|
}
|
|
632
|
+
/** Minutes a learning-outcome test takes to write when its outcome sets no
|
|
633
|
+
* `writing_minutes`: one figure per test, whatever its question count. */
|
|
634
|
+
const TEST_WRITING_MINUTES = 7;
|
|
631
635
|
/**
|
|
632
|
-
* Build a test Section from a ParsedTestRef with inline segments.
|
|
636
|
+
* Build a test Section from a ParsedTestRef with inline segments. Its time is
|
|
637
|
+
* writing time, carried as durationMinutes (a total with no tutor share).
|
|
633
638
|
*/
|
|
634
|
-
function buildTestSection(testRef, outcome, loPath, files, visitedPaths, tierMap, errors) {
|
|
639
|
+
function buildTestSection(testRef, writingMinutes, outcome, loPath, files, visitedPaths, tierMap, errors) {
|
|
635
640
|
if (!testRef.segments.length)
|
|
636
641
|
return null;
|
|
637
642
|
const testSegments = [];
|
|
@@ -680,6 +685,7 @@ function buildTestSection(testRef, outcome, loPath, files, visitedPaths, tierMap
|
|
|
680
685
|
...(forceFeedback && { forceFeedback }),
|
|
681
686
|
contentId: testRef.id,
|
|
682
687
|
learningOutcomes: [outcome],
|
|
688
|
+
durationMinutes: writingMinutes ?? TEST_WRITING_MINUTES,
|
|
683
689
|
};
|
|
684
690
|
}
|
|
685
691
|
/** Tag a lens section with every outcome that suggests its file. An inline
|
|
@@ -851,7 +857,7 @@ function flattenLearningOutcomeSection(section, modulePath, files, visitedPaths,
|
|
|
851
857
|
const lensPaths = suggestedLensPaths(lo, files);
|
|
852
858
|
// Emit the test section if the LO has one with inline segments
|
|
853
859
|
if (lo.test) {
|
|
854
|
-
const testSection = buildTestSection(lo.test, ref, loPath, files, visitedPaths, tierMap, errors);
|
|
860
|
+
const testSection = buildTestSection(lo.test, lo.writingMinutes, ref, loPath, files, visitedPaths, tierMap, errors);
|
|
855
861
|
if (testSection)
|
|
856
862
|
sections.push(testSection);
|
|
857
863
|
}
|
|
@@ -1121,7 +1127,7 @@ function resolveVideoSegment(source, fromTimeStr, toTimeStr, ctx) {
|
|
|
1121
1127
|
// win over the transcript's frontmatter defaults (which win over
|
|
1122
1128
|
// 0:00/open-ended).
|
|
1123
1129
|
const { fromTime, toTime } = resolveVideoRange(fromTimeStr, toTimeStr, vfm);
|
|
1124
|
-
const excerptResult = extractVideoExcerpt(transcriptContent, fromTime, toTime, videoPath, timestamps);
|
|
1130
|
+
const excerptResult = extractVideoExcerpt(transcriptContent, fromTime, toTime, videoPath, timestamps, ctx.skip);
|
|
1125
1131
|
if (excerptResult.error) {
|
|
1126
1132
|
const error = { ...excerptResult.error, file: ctx.errorFile };
|
|
1127
1133
|
const line = ctx.errorLine ?? ctx.excerptErrorLine;
|
|
@@ -1134,6 +1140,7 @@ function resolveVideoSegment(source, fromTimeStr, toTimeStr, ctx) {
|
|
|
1134
1140
|
type: "video",
|
|
1135
1141
|
from: excerptResult.from,
|
|
1136
1142
|
to: excerptResult.to,
|
|
1143
|
+
...(excerptResult.skip && { skip: excerptResult.skip }),
|
|
1137
1144
|
transcript: excerptResult.transcript,
|
|
1138
1145
|
};
|
|
1139
1146
|
// Populate metadata from video transcript frontmatter
|
|
@@ -1592,6 +1599,7 @@ origin) {
|
|
|
1592
1599
|
files,
|
|
1593
1600
|
visitedPaths,
|
|
1594
1601
|
tierMap,
|
|
1602
|
+
skip: parsedSegment.skip,
|
|
1595
1603
|
});
|
|
1596
1604
|
errors.push(...result.errors);
|
|
1597
1605
|
if (!result.segment) {
|