lens-content-processor 0.33.0 → 0.35.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 (61) hide show
  1. package/dist/authoring-markup.d.ts +26 -1
  2. package/dist/authoring-markup.js +67 -16
  3. package/dist/authoring-markup.js.map +1 -1
  4. package/dist/bundler/article.d.ts +69 -9
  5. package/dist/bundler/article.js +159 -58
  6. package/dist/bundler/article.js.map +1 -1
  7. package/dist/content-schema.d.ts +3 -1
  8. package/dist/content-schema.js +51 -12
  9. package/dist/content-schema.js.map +1 -1
  10. package/dist/dedupe-errors.js +1 -7
  11. package/dist/dedupe-errors.js.map +1 -1
  12. package/dist/flattener/index.d.ts +23 -0
  13. package/dist/flattener/index.js +379 -262
  14. package/dist/flattener/index.js.map +1 -1
  15. package/dist/index.d.ts +29 -2
  16. package/dist/index.js +84 -15
  17. package/dist/index.js.map +1 -1
  18. package/dist/parser/article.js +13 -5
  19. package/dist/parser/article.js.map +1 -1
  20. package/dist/parser/course.js +19 -6
  21. package/dist/parser/course.js.map +1 -1
  22. package/dist/parser/learning-outcome.d.ts +0 -1
  23. package/dist/parser/learning-outcome.js +55 -18
  24. package/dist/parser/learning-outcome.js.map +1 -1
  25. package/dist/parser/lens.d.ts +6 -1
  26. package/dist/parser/lens.js +47 -41
  27. package/dist/parser/lens.js.map +1 -1
  28. package/dist/parser/module.js +9 -5
  29. package/dist/parser/module.js.map +1 -1
  30. package/dist/parser/response-segments.d.ts +54 -0
  31. package/dist/parser/response-segments.js +499 -0
  32. package/dist/parser/response-segments.js.map +1 -0
  33. package/dist/parser/survey.js +56 -15
  34. package/dist/parser/survey.js.map +1 -1
  35. package/dist/validator/article-structure.js +4 -18
  36. package/dist/validator/article-structure.js.map +1 -1
  37. package/dist/validator/directives.js +20 -42
  38. package/dist/validator/directives.js.map +1 -1
  39. package/dist/validator/emphasis.js +34 -55
  40. package/dist/validator/emphasis.js.map +1 -1
  41. package/dist/validator/html-tags.js +111 -103
  42. package/dist/validator/html-tags.js.map +1 -1
  43. package/dist/validator/markdown-parse.d.ts +3 -0
  44. package/dist/validator/markdown-parse.js +22 -0
  45. package/dist/validator/markdown-parse.js.map +1 -0
  46. package/dist/validator/output-integrity.d.ts +1 -1
  47. package/dist/validator/output-integrity.js +17 -23
  48. package/dist/validator/output-integrity.js.map +1 -1
  49. package/dist/validator/segment-fields.d.ts +4 -2
  50. package/dist/validator/segment-fields.js +27 -5
  51. package/dist/validator/segment-fields.js.map +1 -1
  52. package/dist/validator/test-segments.d.ts +11 -0
  53. package/dist/validator/test-segments.js +45 -0
  54. package/dist/validator/test-segments.js.map +1 -1
  55. package/dist/validator/uuid.d.ts +1 -2
  56. package/dist/validator/uuid.js +4 -6
  57. package/dist/validator/uuid.js.map +1 -1
  58. package/dist/validator/video-imports.d.ts +35 -0
  59. package/dist/validator/video-imports.js +183 -0
  60. package/dist/validator/video-imports.js.map +1 -0
  61. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"emphasis.js","sourceRoot":"","sources":["../../src/validator/emphasis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emphasis.js","sourceRoot":"","sources":["../../src/validator/emphasis.ts"],"names":[],"mappings":"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"}
@@ -36,102 +36,120 @@ const ALLOWED_TAGS = new Set([
36
36
  // unambiguous and are flagged for ANY non-allowed name, which also catches
37
37
  // XML tags and scrape artifacts like `</nbsp>`.
38
38
  const KNOWN_HTML_TAGS = new Set([
39
- "html", "head", "body", "title", "meta", "link", "base", "style", "script",
40
- "noscript", "template", "slot",
41
- "div", "span", "p", "hr", "pre", "blockquote", "figure", "figcaption",
42
- "h1", "h2", "h3", "h4", "h5", "h6",
43
- "ul", "ol", "li", "dl", "dt", "dd", "menu",
44
- "table", "caption", "thead", "tbody", "tfoot", "tr", "td", "th", "col", "colgroup",
45
- "em", "i", "b", "strong", "u", "s", "strike", "small", "big", "mark",
46
- "del", "ins", "q", "cite", "abbr", "dfn", "kbd", "samp", "var", "code",
47
- "wbr", "bdi", "bdo", "ruby", "rt", "rp", "data", "time", "address",
48
- "section", "article", "header", "footer", "nav", "aside", "main",
49
- "details", "summary", "dialog",
50
- "img", "picture", "video", "track", "embed", "object", "param", "iframe",
51
- "map", "area", "canvas",
52
- "form", "input", "button", "select", "option", "optgroup", "datalist",
53
- "textarea", "label", "fieldset", "legend", "output", "progress", "meter",
54
- "center", "font",
39
+ "html",
40
+ "head",
41
+ "body",
42
+ "title",
43
+ "meta",
44
+ "link",
45
+ "base",
46
+ "style",
47
+ "script",
48
+ "noscript",
49
+ "template",
50
+ "slot",
51
+ "div",
52
+ "span",
53
+ "p",
54
+ "hr",
55
+ "pre",
56
+ "blockquote",
57
+ "figure",
58
+ "figcaption",
59
+ "h1",
60
+ "h2",
61
+ "h3",
62
+ "h4",
63
+ "h5",
64
+ "h6",
65
+ "ul",
66
+ "ol",
67
+ "li",
68
+ "dl",
69
+ "dt",
70
+ "dd",
71
+ "menu",
72
+ "table",
73
+ "caption",
74
+ "thead",
75
+ "tbody",
76
+ "tfoot",
77
+ "tr",
78
+ "td",
79
+ "th",
80
+ "col",
81
+ "colgroup",
82
+ "em",
83
+ "i",
84
+ "b",
85
+ "strong",
86
+ "u",
87
+ "s",
88
+ "strike",
89
+ "small",
90
+ "big",
91
+ "mark",
92
+ "del",
93
+ "ins",
94
+ "q",
95
+ "cite",
96
+ "abbr",
97
+ "dfn",
98
+ "kbd",
99
+ "samp",
100
+ "var",
101
+ "code",
102
+ "wbr",
103
+ "bdi",
104
+ "bdo",
105
+ "ruby",
106
+ "rt",
107
+ "rp",
108
+ "data",
109
+ "time",
110
+ "address",
111
+ "section",
112
+ "article",
113
+ "header",
114
+ "footer",
115
+ "nav",
116
+ "aside",
117
+ "main",
118
+ "details",
119
+ "summary",
120
+ "dialog",
121
+ "img",
122
+ "picture",
123
+ "video",
124
+ "track",
125
+ "embed",
126
+ "object",
127
+ "param",
128
+ "iframe",
129
+ "map",
130
+ "area",
131
+ "canvas",
132
+ "form",
133
+ "input",
134
+ "button",
135
+ "select",
136
+ "option",
137
+ "optgroup",
138
+ "datalist",
139
+ "textarea",
140
+ "label",
141
+ "fieldset",
142
+ "legend",
143
+ "output",
144
+ "progress",
145
+ "meter",
146
+ "center",
147
+ "font",
55
148
  ]);
56
149
  const CODE_FENCE = /^(?:```|~~~)/;
57
150
  // <name ...>, <name/>, </name> — name must start with a letter.
58
151
  const TAG_PATTERN = /<(\/?)([a-zA-Z][a-zA-Z0-9-]*)((?:\s[^<>]*)?)(\/?)>/g;
59
152
  const XML_DECL_PATTERN = /<[?!](?:xml|doctype)/i;
60
- const VIDEO_EMBED_HOSTS = new Set([
61
- "youtube.com",
62
- "www.youtube.com",
63
- "m.youtube.com",
64
- "youtube-nocookie.com",
65
- "www.youtube-nocookie.com",
66
- "youtu.be",
67
- "www.youtu.be",
68
- "vimeo.com",
69
- "www.vimeo.com",
70
- "player.vimeo.com",
71
- ]);
72
- const VIDEO_IFRAME_ATTRIBUTES = new Set([
73
- "src",
74
- "width",
75
- "height",
76
- "frameborder",
77
- "allow",
78
- "referrerpolicy",
79
- "allowfullscreen",
80
- "title",
81
- "loading",
82
- ]);
83
- const HTML_ATTRIBUTE = /([A-Za-z_:][-A-Za-z0-9_:.]*)(?:\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/y;
84
- function isSafeVideoIframeAttributes(source) {
85
- const attributes = new Map();
86
- let offset = 0;
87
- while (offset < source.length) {
88
- const whitespace = /^\s+/.exec(source.slice(offset));
89
- if (!whitespace)
90
- return false;
91
- offset += whitespace[0].length;
92
- if (offset === source.length)
93
- break;
94
- HTML_ATTRIBUTE.lastIndex = offset;
95
- const match = HTML_ATTRIBUTE.exec(source);
96
- if (!match)
97
- return false;
98
- offset = HTML_ATTRIBUTE.lastIndex;
99
- const name = match[1].toLowerCase();
100
- if (!VIDEO_IFRAME_ATTRIBUTES.has(name) || attributes.has(name))
101
- return false;
102
- attributes.set(name, match[2] ?? match[3] ?? match[4] ?? null);
103
- }
104
- const src = attributes.get("src");
105
- if (!src)
106
- return false;
107
- try {
108
- const url = new URL(src);
109
- if ((url.protocol !== "https:" && url.protocol !== "http:") ||
110
- !VIDEO_EMBED_HOSTS.has(url.hostname.toLowerCase()))
111
- return false;
112
- }
113
- catch {
114
- return false;
115
- }
116
- for (const dimension of ["width", "height"]) {
117
- const value = attributes.get(dimension);
118
- if (value !== undefined && (value === null || !/^\d+$/.test(value)))
119
- return false;
120
- }
121
- const frameborder = attributes.get("frameborder");
122
- if (frameborder !== undefined && frameborder !== "0")
123
- return false;
124
- const allowfullscreen = attributes.get("allowfullscreen");
125
- if (allowfullscreen !== undefined && allowfullscreen !== null && allowfullscreen !== "")
126
- return false;
127
- const loading = attributes.get("loading");
128
- if (loading !== undefined && loading !== "lazy" && loading !== "eager")
129
- return false;
130
- return true;
131
- }
132
- function stripSafeVideoIframes(line) {
133
- return line.replace(/<iframe\b([^<>]*)>\s*<\/iframe>/gi, (whole, attributes) => isSafeVideoIframeAttributes(attributes) ? " ".repeat(whole.length) : whole);
134
- }
135
153
  /**
136
154
  * Flag raw HTML/XML tags in article body content.
137
155
  *
@@ -156,7 +174,7 @@ export function validateHtmlTags(body, file, bodyStartLine) {
156
174
  if (inCodeBlock)
157
175
  continue;
158
176
  // Strip inline code spans so `<div>` in backticks is not flagged.
159
- const line = stripSafeVideoIframes(rawLine.replace(/`[^`]*`/g, ""));
177
+ const line = rawLine.replace(/`[^`]*`/g, "");
160
178
  if (XML_DECL_PATTERN.test(line)) {
161
179
  errors.push({
162
180
  file,
@@ -166,16 +184,6 @@ export function validateHtmlTags(body, file, bodyStartLine) {
166
184
  severity: "error",
167
185
  });
168
186
  }
169
- if (/<svg(?:\s|>)/i.test(line)) {
170
- errors.push({
171
- file,
172
- line: absLine,
173
- code: "article.inline-svg-unsupported",
174
- message: "Inline SVG found in article content",
175
- suggestion: "Replace the inline SVG with a standard Markdown image that references a portable SVG or PNG asset",
176
- severity: "error",
177
- });
178
- }
179
187
  for (const match of line.matchAll(TAG_PATTERN)) {
180
188
  const isClosing = match[1] === "/";
181
189
  const name = match[2].toLowerCase();
@@ -191,7 +199,7 @@ export function validateHtmlTags(body, file, bodyStartLine) {
191
199
  line: absLine,
192
200
  message: `HTML tag '${rendered}' in article content`,
193
201
  suggestion: "Use markdown syntax instead of raw HTML tags (allowed exceptions: " +
194
- "<sup>, <sub>, <a>, <br>, <audio>, and approved YouTube/Vimeo video embeds)",
202
+ "<sup>, <sub>, <a>, <br>, <audio>, and inline SVG elements)",
195
203
  severity: "error",
196
204
  });
197
205
  }
@@ -1 +1 @@
1
- {"version":3,"file":"html-tags.js","sourceRoot":"","sources":["../../src/validator/html-tags.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-tags.js","sourceRoot":"","sources":["../../src/validator/html-tags.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Root } from "mdast";
2
+ export type MarkdownPreset = "gfm" | "gfm-directive-math";
3
+ export declare function parseMarkdown(source: string, preset: MarkdownPreset): Root;
@@ -0,0 +1,22 @@
1
+ import remarkDirective from "remark-directive";
2
+ import remarkGfm from "remark-gfm";
3
+ import remarkMath from "remark-math";
4
+ import remarkParse from "remark-parse";
5
+ import { unified } from "unified";
6
+ const lastParse = {};
7
+ export function parseMarkdown(source, preset) {
8
+ const cached = lastParse[preset];
9
+ if (cached && cached.source === source)
10
+ return cached.tree;
11
+ const processor = preset === "gfm"
12
+ ? unified().use(remarkParse).use(remarkGfm)
13
+ : unified()
14
+ .use(remarkParse)
15
+ .use(remarkGfm)
16
+ .use(remarkDirective)
17
+ .use(remarkMath, { singleDollarTextMath: false });
18
+ const tree = processor.parse(source);
19
+ lastParse[preset] = { source, tree };
20
+ return tree;
21
+ }
22
+ //# sourceMappingURL=markdown-parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-parse.js","sourceRoot":"","sources":["../../src/validator/markdown-parse.ts"],"names":[],"mappings":"AAUA,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAOlC,MAAM,SAAS,GAEX,EAAE,CAAC;AAEP,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,MAAsB;IAClE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAC3D,MAAM,SAAS,GACb,MAAM,KAAK,KAAK;QACd,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QAC3C,CAAC,CAAC,OAAO,EAAE;aACN,GAAG,CAAC,WAAW,CAAC;aAChB,GAAG,CAAC,SAAS,CAAC;aACd,GAAG,CAAC,eAAe,CAAC;aACpB,GAAG,CAAC,UAAU,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAS,CAAC;IAC7C,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ContentError, FlattenedModule } from '../index.js';
1
+ import type { ContentError, FlattenedModule } from "../index.js";
2
2
  /**
3
3
  * Broad safety-net validation on the flattened output.
4
4
  * Catches empty sections (no segments) and empty segments (no content)
@@ -1,4 +1,4 @@
1
- import { getSourceLine } from '../source-location.js';
1
+ import { getSourceLine } from "../source-location.js";
2
2
  /**
3
3
  * Broad safety-net validation on the flattened output.
4
4
  * Catches empty sections (no segments) and empty segments (no content)
@@ -6,6 +6,7 @@ import { getSourceLine } from '../source-location.js';
6
6
  */
7
7
  export function validateOutputIntegrity(modules, slugToPath) {
8
8
  const errors = [];
9
+ const reportedEmptySegments = new Set();
9
10
  for (const module of modules) {
10
11
  const moduleFile = slugToPath?.get(module.slug) ?? module.slug;
11
12
  for (const section of module.sections) {
@@ -16,41 +17,34 @@ export function validateOutputIntegrity(modules, slugToPath) {
16
17
  file,
17
18
  line: getSourceLine(section),
18
19
  message: `Section "${sectionLabel}" has no segments`,
19
- severity: 'error',
20
+ severity: "error",
20
21
  });
21
22
  continue;
22
23
  }
23
24
  for (let i = 0; i < section.segments.length; i++) {
24
25
  const segment = section.segments[i];
26
+ const sourceLine = getSourceLine(segment) ?? getSourceLine(section);
27
+ const emptySegmentKey = `${file}\0${sourceLine ?? ""}\0${segment.type}`;
28
+ const reportEmpty = (message) => {
29
+ if (reportedEmptySegments.has(emptySegmentKey))
30
+ return;
31
+ reportedEmptySegments.add(emptySegmentKey);
32
+ errors.push({ file, line: sourceLine, message, severity: "error" });
33
+ };
25
34
  switch (segment.type) {
26
- case 'text':
35
+ case "text":
27
36
  if (!segment.content?.trim()) {
28
- errors.push({
29
- file,
30
- line: getSourceLine(segment) ?? getSourceLine(section),
31
- message: `Empty text segment in "${sectionLabel}" (segment ${i + 1})`,
32
- severity: 'error',
33
- });
37
+ reportEmpty(`Empty text segment in "${sectionLabel}" (segment ${i + 1})`);
34
38
  }
35
39
  break;
36
- case 'article':
40
+ case "article":
37
41
  if (!segment.content?.trim()) {
38
- errors.push({
39
- file,
40
- line: getSourceLine(segment) ?? getSourceLine(section),
41
- message: `Empty article segment in "${sectionLabel}" (segment ${i + 1})`,
42
- severity: 'error',
43
- });
42
+ reportEmpty(`Empty article segment in "${sectionLabel}" (segment ${i + 1})`);
44
43
  }
45
44
  break;
46
- case 'video':
45
+ case "video":
47
46
  if (!segment.transcript?.length) {
48
- errors.push({
49
- file,
50
- line: getSourceLine(segment) ?? getSourceLine(section),
51
- message: `Empty video transcript in "${sectionLabel}" (segment ${i + 1})`,
52
- severity: 'error',
53
- });
47
+ reportEmpty(`Empty video transcript in "${sectionLabel}" (segment ${i + 1})`);
54
48
  }
55
49
  break;
56
50
  // chat segments have no required content body
@@ -1 +1 @@
1
- {"version":3,"file":"output-integrity.js","sourceRoot":"","sources":["../../src/validator/output-integrity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA0B,EAC1B,UAAgC;IAEhC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;QAE/D,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC;YAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAExD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;oBAC5B,OAAO,EAAE,YAAY,YAAY,mBAAmB;oBACpD,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAEpC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACrB,KAAK,MAAM;wBACT,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;4BAC7B,MAAM,CAAC,IAAI,CAAC;gCACV,IAAI;gCACJ,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC;gCACtD,OAAO,EAAE,0BAA0B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG;gCACrE,QAAQ,EAAE,OAAO;6BAClB,CAAC,CAAC;wBACL,CAAC;wBACD,MAAM;oBACR,KAAK,SAAS;wBACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;4BAC7B,MAAM,CAAC,IAAI,CAAC;gCACV,IAAI;gCACJ,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC;gCACtD,OAAO,EAAE,6BAA6B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG;gCACxE,QAAQ,EAAE,OAAO;6BAClB,CAAC,CAAC;wBACL,CAAC;wBACD,MAAM;oBACR,KAAK,OAAO;wBACV,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;4BAChC,MAAM,CAAC,IAAI,CAAC;gCACV,IAAI;gCACJ,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC;gCACtD,OAAO,EAAE,8BAA8B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG;gCACzE,QAAQ,EAAE,OAAO;6BAClB,CAAC,CAAC;wBACL,CAAC;wBACD,MAAM;oBACR,8CAA8C;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"output-integrity.js","sourceRoot":"","sources":["../../src/validator/output-integrity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAA0B,EAC1B,UAAgC;IAEhC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;QAE/D,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,IAAI,UAAU,CAAC;YAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAExD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;oBAC5B,OAAO,EAAE,YAAY,YAAY,mBAAmB;oBACpD,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;gBACpE,MAAM,eAAe,GAAG,GAAG,IAAI,KAAK,UAAU,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxE,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE;oBACtC,IAAI,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC;wBAAE,OAAO;oBACvD,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;gBACtE,CAAC,CAAC;gBAEF,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;oBACrB,KAAK,MAAM;wBACT,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;4BAC7B,WAAW,CACT,0BAA0B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CAC7D,CAAC;wBACJ,CAAC;wBACD,MAAM;oBACR,KAAK,SAAS;wBACZ,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;4BAC7B,WAAW,CACT,6BAA6B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CAChE,CAAC;wBACJ,CAAC;wBACD,MAAM;oBACR,KAAK,OAAO;wBACV,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;4BAChC,WAAW,CACT,8BAA8B,YAAY,cAAc,CAAC,GAAG,CAAC,GAAG,CACjE,CAAC;wBACJ,CAAC;wBACD,MAAM;oBACR,8CAA8C;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,9 +1,11 @@
1
- import type { ContentError } from '../index.js';
1
+ import type { ContentError } from "../index.js";
2
2
  /**
3
3
  * Validate that fields are appropriate for the segment type.
4
4
  * Warns about fields that belong to different segment types.
5
5
  *
6
- * @param segmentType - The type of segment (text, chat, article, video, question, roleplay)
6
+ * @param segmentType - The type of segment (text, chat, article, video,
7
+ * question, roleplay), or a "question:<subtype>" response-segment schema
8
+ * key (from responseSegmentSchemaKey)
7
9
  * @param fields - Object mapping field names to their values
8
10
  * @param file - File path for error reporting
9
11
  * @param line - Line number for error reporting
@@ -1,13 +1,15 @@
1
- import { VALID_FIELDS_BY_SEGMENT_TYPE } from '../content-schema.js';
1
+ import { VALID_FIELDS_BY_SEGMENT_TYPE } from "../content-schema.js";
2
2
  /**
3
3
  * Fields that are specific to excerpt segments (not valid in text/chat).
4
4
  */
5
- const EXCERPT_ONLY_FIELDS = new Set(['from', 'to']);
5
+ const EXCERPT_ONLY_FIELDS = new Set(["from", "to"]);
6
6
  /**
7
7
  * Validate that fields are appropriate for the segment type.
8
8
  * Warns about fields that belong to different segment types.
9
9
  *
10
- * @param segmentType - The type of segment (text, chat, article, video, question, roleplay)
10
+ * @param segmentType - The type of segment (text, chat, article, video,
11
+ * question, roleplay), or a "question:<subtype>" response-segment schema
12
+ * key (from responseSegmentSchemaKey)
11
13
  * @param fields - Object mapping field names to their values
12
14
  * @param file - File path for error reporting
13
15
  * @param line - Line number for error reporting
@@ -20,6 +22,13 @@ export function validateSegmentFields(segmentType, fields, file, line) {
20
22
  // Unknown segment type - validation handled elsewhere
21
23
  return warnings;
22
24
  }
25
+ // "question:open" → "Question: Open" for messages
26
+ const subtype = segmentType.startsWith("question:")
27
+ ? segmentType.slice("question:".length)
28
+ : null;
29
+ const displayType = subtype
30
+ ? `Question: ${subtype === "fillblank" ? "FillBlank" : subtype[0].toUpperCase() + subtype.slice(1)}`
31
+ : segmentType;
23
32
  for (const fieldName of Object.keys(fields)) {
24
33
  if (!validFields.has(fieldName)) {
25
34
  // Check if this is a field that belongs to a different segment type
@@ -27,9 +36,22 @@ export function validateSegmentFields(segmentType, fields, file, line) {
27
36
  warnings.push({
28
37
  file,
29
38
  line,
30
- message: `Field '${fieldName}' is not valid in ${segmentType} segment`,
39
+ message: `Field '${fieldName}' is not valid in ${displayType} segment`,
31
40
  suggestion: `'${fieldName}' is only valid in article, video, or embed segments`,
32
- severity: 'warning',
41
+ severity: "warning",
42
+ });
43
+ }
44
+ else if (subtype) {
45
+ // Response subtypes each have a small, closed field set; a known
46
+ // field from another subtype (e.g. scale:: on a Choice) would
47
+ // otherwise be silently ignored — field-typos.ts only catches
48
+ // unknown names.
49
+ warnings.push({
50
+ file,
51
+ line,
52
+ message: `Field '${fieldName}' is not valid in a ${displayType} segment`,
53
+ suggestion: `Valid fields: ${[...validFields].join(", ")}`,
54
+ severity: "warning",
33
55
  });
34
56
  }
35
57
  // Note: We don't warn about completely unknown fields here
@@ -1 +1 @@
1
- {"version":3,"file":"segment-fields.js","sourceRoot":"","sources":["../../src/validator/segment-fields.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;GAEG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAEpD;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,MAA8B,EAC9B,IAAY,EACZ,IAAY;IAEZ,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE9D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,sDAAsD;QACtD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,oEAAoE;YACpE,IAAI,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,UAAU,SAAS,qBAAqB,WAAW,UAAU;oBACtE,UAAU,EAAE,IAAI,SAAS,sDAAsD;oBAC/E,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,2DAA2D;YAC3D,mCAAmC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"segment-fields.js","sourceRoot":"","sources":["../../src/validator/segment-fields.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpE;;GAEG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,MAA8B,EAC9B,IAAY,EACZ,IAAY;IAEZ,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,WAAW,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAE9D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,sDAAsD;QACtD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kDAAkD;IAClD,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC;QACjD,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,aAAa,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACpG,CAAC,CAAC,WAAW,CAAC;IAEhB,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,oEAAoE;YACpE,IAAI,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,UAAU,SAAS,qBAAqB,WAAW,UAAU;oBACtE,UAAU,EAAE,IAAI,SAAS,sDAAsD;oBAC/E,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,iEAAiE;gBACjE,8DAA8D;gBAC9D,8DAA8D;gBAC9D,iBAAiB;gBACjB,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,UAAU,SAAS,uBAAuB,WAAW,UAAU;oBACxE,UAAU,EAAE,iBAAiB,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC1D,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;YACD,2DAA2D;YAC3D,mCAAmC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { ContentError } from "../index.js";
2
2
  import type { ParsedSection } from "../parser/sections.js";
3
+ import type { ParsedLensSegment } from "../parser/lens.js";
3
4
  /**
4
5
  * Validate that an LO Test section contains only assessable segment types.
5
6
  * Flags non-assessable segments (text/article/video/chat) as errors, since
@@ -10,3 +11,13 @@ import type { ParsedSection } from "../parser/sections.js";
10
11
  * @returns Array of error ContentError objects for disallowed segments
11
12
  */
12
13
  export declare function validateTestSegments(segments: ParsedSection[], file: string): ContentError[];
14
+ /**
15
+ * Validate that a converted Test segment is gradable. A Test is an
16
+ * assessment, so every item in it must produce a score: legacy questions and
17
+ * roleplays always do, but new-style response segments only when they are
18
+ * graded — a Rating never is, and the other subtypes only with a rubric or
19
+ * correct answers. Returns an error for anything ungradable; the line is
20
+ * relative to the Test section body (callers offset it like the other
21
+ * conversion errors).
22
+ */
23
+ export declare function validateTestSegmentGradability(segment: ParsedLensSegment, file: string, line: number): ContentError[];
@@ -37,4 +37,49 @@ export function validateTestSegments(segments, file) {
37
37
  }
38
38
  return errors;
39
39
  }
40
+ /** How to make each response subtype gradable, for the errors below. */
41
+ const GRADABLE_HINTS = {
42
+ open: "add assessment-instructions:: with a scoring rubric",
43
+ choice: "mark at least one correct option with '- [x] Option text'",
44
+ fillblank: "make at least one blank graded ({{expected answer}} or {{number <reference>}}), or add assessment-instructions::",
45
+ ranking: "add assessment-instructions:: with a scoring rubric",
46
+ };
47
+ /**
48
+ * Validate that a converted Test segment is gradable. A Test is an
49
+ * assessment, so every item in it must produce a score: legacy questions and
50
+ * roleplays always do, but new-style response segments only when they are
51
+ * graded — a Rating never is, and the other subtypes only with a rubric or
52
+ * correct answers. Returns an error for anything ungradable; the line is
53
+ * relative to the Test section body (callers offset it like the other
54
+ * conversion errors).
55
+ */
56
+ export function validateTestSegmentGradability(segment, file, line) {
57
+ if (segment.type !== "question" || !("questionType" in segment))
58
+ return [];
59
+ if (segment.graded)
60
+ return [];
61
+ if (segment.questionType === "rating") {
62
+ return [
63
+ {
64
+ file,
65
+ line,
66
+ message: "Test section contains a 'Question: Rating' segment — ratings are never graded, so a rating cannot be part of an assessment.",
67
+ suggestion: "Remove the rating from the Test (move it into a lens or survey), or use a gradable subtype",
68
+ severity: "error",
69
+ },
70
+ ];
71
+ }
72
+ const display = segment.questionType === "fillblank"
73
+ ? "FillBlank"
74
+ : segment.questionType[0].toUpperCase() + segment.questionType.slice(1);
75
+ return [
76
+ {
77
+ file,
78
+ line,
79
+ message: `Test section contains an ungraded 'Question: ${display}' segment. Every segment in a Test must be gradable, because a Test is an assessment.`,
80
+ suggestion: `To make it gradable, ${GRADABLE_HINTS[segment.questionType]}`,
81
+ severity: "error",
82
+ },
83
+ ];
84
+ }
40
85
  //# sourceMappingURL=test-segments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-segments.js","sourceRoot":"","sources":["../../src/validator/test-segments.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AACH,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAExE;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAyB,EACzB,IAAY;IAEZ,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QAE9D,MAAM,UAAU,GACd,OAAO,CAAC,IAAI,KAAK,MAAM;YACrB,CAAC,CAAC,uLAAuL;YACzL,CAAC,CAAC,wEAAwE,OAAO,CAAC,IAAI,oCAAoC,CAAC;QAE/H,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,4BAA4B,OAAO,CAAC,IAAI,0JAA0J;YAC3M,UAAU;YACV,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"test-segments.js","sourceRoot":"","sources":["../../src/validator/test-segments.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAExE;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAyB,EACzB,IAAY;IAEZ,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QAE9D,MAAM,UAAU,GACd,OAAO,CAAC,IAAI,KAAK,MAAM;YACrB,CAAC,CAAC,uLAAuL;YACzL,CAAC,CAAC,wEAAwE,OAAO,CAAC,IAAI,oCAAoC,CAAC;QAE/H,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,4BAA4B,OAAO,CAAC,IAAI,0JAA0J;YAC3M,UAAU;YACV,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wEAAwE;AACxE,MAAM,cAAc,GAA2B;IAC7C,IAAI,EAAE,qDAAqD;IAC3D,MAAM,EAAE,2DAA2D;IACnE,SAAS,EACP,kHAAkH;IACpH,OAAO,EAAE,qDAAqD;CAC/D,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,8BAA8B,CAC5C,OAA0B,EAC1B,IAAY,EACZ,IAAY;IAEZ,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,cAAc,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3E,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAE9B,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO;YACL;gBACE,IAAI;gBACJ,IAAI;gBACJ,OAAO,EACL,6HAA6H;gBAC/H,UAAU,EACR,4FAA4F;gBAC9F,QAAQ,EAAE,OAAO;aAClB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GACX,OAAO,CAAC,YAAY,KAAK,WAAW;QAClC,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO;QACL;YACE,IAAI;YACJ,IAAI;YACJ,OAAO,EAAE,gDAAgD,OAAO,uFAAuF;YACvJ,UAAU,EAAE,wBAAwB,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YAC1E,QAAQ,EAAE,OAAO;SAClB;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ContentError } from '../index.js';
1
+ import type { ContentError } from "../index.js";
2
2
  /**
3
3
  * Validate that a string is a valid UUID format.
4
4
  */
@@ -7,7 +7,6 @@ export interface UuidEntry {
7
7
  uuid: string;
8
8
  file: string;
9
9
  field: string;
10
- line?: number;
11
10
  }
12
11
  export interface UuidValidationResult {
13
12
  errors: ContentError[];