lens-content-processor 0.33.0 → 0.34.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/authoring-markup.d.ts +0 -11
- package/dist/authoring-markup.js +0 -52
- package/dist/authoring-markup.js.map +1 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +2 -6
- package/dist/cli.js.map +1 -1
- package/dist/content-schema.d.ts +3 -1
- package/dist/content-schema.js +46 -12
- package/dist/content-schema.js.map +1 -1
- package/dist/dedupe-errors.js +1 -7
- package/dist/dedupe-errors.js.map +1 -1
- package/dist/flattener/index.d.ts +23 -0
- package/dist/flattener/index.js +39 -51
- package/dist/flattener/index.js.map +1 -1
- package/dist/index.d.ts +24 -3
- package/dist/index.js +85 -28
- package/dist/index.js.map +1 -1
- package/dist/parser/article.js +32 -34
- package/dist/parser/article.js.map +1 -1
- package/dist/parser/course.d.ts +10 -0
- package/dist/parser/course.js +14 -16
- package/dist/parser/course.js.map +1 -1
- package/dist/parser/learning-outcome.d.ts +0 -1
- package/dist/parser/learning-outcome.js +50 -29
- package/dist/parser/learning-outcome.js.map +1 -1
- package/dist/parser/lens.d.ts +12 -2
- package/dist/parser/lens.js +27 -67
- package/dist/parser/lens.js.map +1 -1
- package/dist/parser/module.js +17 -24
- package/dist/parser/module.js.map +1 -1
- package/dist/parser/response-segments.d.ts +54 -0
- package/dist/parser/response-segments.js +499 -0
- package/dist/parser/response-segments.js.map +1 -0
- package/dist/parser/sections.d.ts +1 -2
- package/dist/parser/sections.js +3 -5
- package/dist/parser/sections.js.map +1 -1
- package/dist/parser/survey.js +51 -25
- package/dist/parser/survey.js.map +1 -1
- package/dist/validator/directives.js +0 -42
- package/dist/validator/directives.js.map +1 -1
- package/dist/validator/emphasis.js +2 -126
- package/dist/validator/emphasis.js.map +1 -1
- package/dist/validator/html-tags.js +111 -103
- package/dist/validator/html-tags.js.map +1 -1
- package/dist/validator/math.js +9 -66
- package/dist/validator/math.js.map +1 -1
- package/dist/validator/output-integrity.d.ts +1 -1
- package/dist/validator/output-integrity.js +8 -14
- package/dist/validator/output-integrity.js.map +1 -1
- package/dist/validator/segment-fields.d.ts +4 -2
- package/dist/validator/segment-fields.js +27 -5
- package/dist/validator/segment-fields.js.map +1 -1
- package/dist/validator/test-segments.d.ts +11 -0
- package/dist/validator/test-segments.js +45 -0
- package/dist/validator/test-segments.js.map +1 -1
- package/dist/validator/uuid.d.ts +1 -2
- package/dist/validator/uuid.js +4 -6
- package/dist/validator/uuid.js.map +1 -1
- package/package.json +1 -9
- package/dist/source-location.d.ts +0 -2
- package/dist/source-location.js +0 -12
- package/dist/source-location.js.map +0 -1
- package/dist/validator/article-review-provenance.d.ts +0 -5
- package/dist/validator/article-review-provenance.js +0 -57
- package/dist/validator/article-review-provenance.js.map +0 -1
- package/dist/validator/article-structure.d.ts +0 -8
- package/dist/validator/article-structure.js +0 -674
- package/dist/validator/article-structure.js.map +0 -1
- package/dist/validator/same-lens-links.d.ts +0 -4
- package/dist/validator/same-lens-links.js +0 -297
- package/dist/validator/same-lens-links.js.map +0 -1
- package/dist/validator/suppressions.d.ts +0 -42
- package/dist/validator/suppressions.js +0 -97
- package/dist/validator/suppressions.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-segments.js","sourceRoot":"","sources":["../../src/validator/test-segments.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/validator/uuid.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ContentError } from
|
|
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[];
|
package/dist/validator/uuid.js
CHANGED
|
@@ -21,10 +21,9 @@ export function validateUuids(entries) {
|
|
|
21
21
|
if (!isValidUuid(entry.uuid)) {
|
|
22
22
|
errors.push({
|
|
23
23
|
file: entry.file,
|
|
24
|
-
line: entry.line,
|
|
25
24
|
message: `Invalid UUID format for ${entry.field}: '${entry.uuid}'`,
|
|
26
|
-
suggestion:
|
|
27
|
-
severity:
|
|
25
|
+
suggestion: "UUID must be in format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12 hex characters)",
|
|
26
|
+
severity: "error",
|
|
28
27
|
});
|
|
29
28
|
continue; // Skip duplicate check for invalid UUIDs
|
|
30
29
|
}
|
|
@@ -35,10 +34,9 @@ export function validateUuids(entries) {
|
|
|
35
34
|
if (existing.file !== entry.file || existing.field !== entry.field) {
|
|
36
35
|
errors.push({
|
|
37
36
|
file: entry.file,
|
|
38
|
-
line: entry.line,
|
|
39
37
|
message: `Duplicate UUID '${entry.uuid}' - also used in ${existing.file} (${existing.field})`,
|
|
40
|
-
suggestion:
|
|
41
|
-
severity:
|
|
38
|
+
suggestion: "Each UUID must be unique across the entire vault",
|
|
39
|
+
severity: "error",
|
|
42
40
|
});
|
|
43
41
|
}
|
|
44
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/validator/uuid.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../src/validator/uuid.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,UAAU,GACd,iEAAiE,CAAC;AAEpE;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAYD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAoB;IAChD,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAC,CAAC,2BAA2B;IAE3E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE3C,oBAAoB;QACpB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,2BAA2B,KAAK,CAAC,KAAK,MAAM,KAAK,CAAC,IAAI,GAAG;gBAClE,UAAU,EACR,0FAA0F;gBAC5F,QAAQ,EAAE,OAAO;aAClB,CAAC,CAAC;YACH,SAAS,CAAC,yCAAyC;QACrD,CAAC;QAED,sBAAsB;QACtB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,0FAA0F;YAC1F,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnE,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,mBAAmB,KAAK,CAAC,IAAI,oBAAoB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,GAAG;oBAC7F,UAAU,EAAE,kDAAkD;oBAC9D,QAAQ,EAAE,OAAO;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lens-content-processor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"description": "Parser and validator for Lens educational content (Markdown modules, lenses, learning outcomes)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
"directory": "content_processor"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@types/mdast": "^4.0.4",
|
|
38
37
|
"@types/node": "^22.0.0",
|
|
39
38
|
"tsx": "^4.0.0",
|
|
40
39
|
"typescript": "^5.7.0",
|
|
@@ -42,13 +41,6 @@
|
|
|
42
41
|
},
|
|
43
42
|
"dependencies": {
|
|
44
43
|
"katex": "^0.16.47",
|
|
45
|
-
"mdast-util-to-string": "^4.0.0",
|
|
46
|
-
"remark-directive": "^4.0.0",
|
|
47
|
-
"remark-gfm": "^4.0.1",
|
|
48
|
-
"remark-math": "^6.0.0",
|
|
49
|
-
"remark-parse": "^11.0.0",
|
|
50
|
-
"unified": "^11.0.5",
|
|
51
|
-
"unist-util-visit": "^5.1.0",
|
|
52
44
|
"yaml": "^2.8.2"
|
|
53
45
|
}
|
|
54
46
|
}
|
package/dist/source-location.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/** Internal source provenance that is omitted from serialized content. */
|
|
2
|
-
const SOURCE_LINE = Symbol("lens-content-source-line");
|
|
3
|
-
export function attachSourceLine(value, line) {
|
|
4
|
-
if (line !== undefined) {
|
|
5
|
-
Object.defineProperty(value, SOURCE_LINE, { value: line });
|
|
6
|
-
}
|
|
7
|
-
return value;
|
|
8
|
-
}
|
|
9
|
-
export function getSourceLine(value) {
|
|
10
|
-
return value[SOURCE_LINE];
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=source-location.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source-location.js","sourceRoot":"","sources":["../src/source-location.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAIvD,MAAM,UAAU,gBAAgB,CAC9B,KAAQ,EACR,IAAwB;IAExB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAQ,KAAuB,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { ContentError } from "../index.js";
|
|
2
|
-
export declare const ARTICLE_REVIEW_FIELDS: readonly ["llm_reviewed", "llm_review_version", "llm_review_model", "llm_review_digest", "llm_review_source_digest", "llm_review_source_fetched", "llm_review_source_kind"];
|
|
3
|
-
export declare function canonicalArticleForReview(content: string): string;
|
|
4
|
-
export declare function articleReviewDigest(content: string): string;
|
|
5
|
-
export declare function validateArticleReviewProvenance(content: string, file: string): ContentError[];
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import { parseFrontmatter } from "../parser/frontmatter.js";
|
|
3
|
-
export const ARTICLE_REVIEW_FIELDS = [
|
|
4
|
-
"llm_reviewed", "llm_review_version", "llm_review_model",
|
|
5
|
-
"llm_review_digest", "llm_review_source_digest",
|
|
6
|
-
"llm_review_source_fetched", "llm_review_source_kind",
|
|
7
|
-
];
|
|
8
|
-
export function canonicalArticleForReview(content) {
|
|
9
|
-
const normalized = content.replace(/\r\n?/g, "\n");
|
|
10
|
-
const lines = normalized.split("\n");
|
|
11
|
-
const out = [];
|
|
12
|
-
let inFrontmatter = false;
|
|
13
|
-
let frontmatterDone = false;
|
|
14
|
-
let inComment = false;
|
|
15
|
-
for (const line of lines) {
|
|
16
|
-
if (!frontmatterDone && line.trim() === "---") {
|
|
17
|
-
inFrontmatter = !inFrontmatter;
|
|
18
|
-
if (!inFrontmatter)
|
|
19
|
-
frontmatterDone = true;
|
|
20
|
-
out.push(line.trimEnd());
|
|
21
|
-
continue;
|
|
22
|
-
}
|
|
23
|
-
if (inFrontmatter && ARTICLE_REVIEW_FIELDS.some((field) => new RegExp(`^${field}\\s*:`).test(line)))
|
|
24
|
-
continue;
|
|
25
|
-
if (!inFrontmatter && line.trim() === "%%") {
|
|
26
|
-
inComment = !inComment;
|
|
27
|
-
continue;
|
|
28
|
-
}
|
|
29
|
-
if (!inComment)
|
|
30
|
-
out.push(line.replace(/[ \t]+$/g, ""));
|
|
31
|
-
}
|
|
32
|
-
return `${out.join("\n").replace(/\n{3,}/g, "\n\n").trimEnd()}\n`;
|
|
33
|
-
}
|
|
34
|
-
export function articleReviewDigest(content) {
|
|
35
|
-
return `sha256:${createHash("sha256").update(canonicalArticleForReview(content)).digest("hex")}`;
|
|
36
|
-
}
|
|
37
|
-
export function validateArticleReviewProvenance(content, file) {
|
|
38
|
-
const parsed = parseFrontmatter(content, file);
|
|
39
|
-
if (parsed.error)
|
|
40
|
-
return [];
|
|
41
|
-
const present = ARTICLE_REVIEW_FIELDS.filter((field) => parsed.frontmatter[field] !== undefined);
|
|
42
|
-
if (present.length === 0)
|
|
43
|
-
return []; // migration phase: unreviewed legacy articles remain valid
|
|
44
|
-
const missing = ARTICLE_REVIEW_FIELDS.filter((field) => {
|
|
45
|
-
const value = parsed.frontmatter[field];
|
|
46
|
-
return value === undefined || value === null || String(value).trim() === "";
|
|
47
|
-
});
|
|
48
|
-
if (missing.length) {
|
|
49
|
-
return [{
|
|
50
|
-
file, line: 2, code: "article.llm-review-incomplete", severity: "error",
|
|
51
|
-
message: `LLM review provenance is incomplete; missing ${missing.join(", ")}`,
|
|
52
|
-
suggestion: "Run the article review workflow and write all review provenance fields together",
|
|
53
|
-
}];
|
|
54
|
-
}
|
|
55
|
-
return [];
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=article-review-provenance.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"article-review-provenance.js","sourceRoot":"","sources":["../../src/validator/article-review-provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ContentError } from "../index.js";
|
|
2
|
-
export declare function collectArticleImages(body: string, bodyStartLine: number): Array<{
|
|
3
|
-
url: string;
|
|
4
|
-
line: number;
|
|
5
|
-
}>;
|
|
6
|
-
export declare function validateWikilinkImages(body: string, file: string, bodyStartLine: number): ContentError[];
|
|
7
|
-
/** Structural validation for a complete article draft. Parsing happens once. */
|
|
8
|
-
export declare function validateArticleStructure(content: string, file: string): ContentError[];
|