lens-content-processor 0.76.0 → 0.79.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/cli.d.ts +2 -0
- package/dist/cli.js +17 -9
- package/dist/cli.js.map +1 -1
- package/dist/course-graph.d.ts +4 -1
- package/dist/course-graph.js +21 -3
- package/dist/course-graph.js.map +1 -1
- package/dist/dependency-cache.d.ts +25 -0
- package/dist/dependency-cache.js +189 -0
- package/dist/dependency-cache.js.map +1 -0
- package/dist/flattener/index.js +12 -12
- package/dist/flattener/index.js.map +1 -1
- package/dist/glossary.js +1 -1
- package/dist/glossary.js.map +1 -1
- package/dist/index.js +50 -8
- package/dist/index.js.map +1 -1
- package/dist/markdown-parse.d.ts +6 -1
- package/dist/markdown-parse.js +41 -11
- package/dist/markdown-parse.js.map +1 -1
- package/dist/parser/course.js +3 -3
- package/dist/parser/course.js.map +1 -1
- package/dist/parser/learning-outcome.js +3 -3
- package/dist/parser/learning-outcome.js.map +1 -1
- package/dist/parser/lens.d.ts +11 -2
- package/dist/parser/lens.js +24 -12
- package/dist/parser/lens.js.map +1 -1
- package/dist/parser/question-embeds.d.ts +45 -0
- package/dist/parser/question-embeds.js +302 -0
- package/dist/parser/question-embeds.js.map +1 -0
- package/dist/parser/response-segments.js +12 -0
- package/dist/parser/response-segments.js.map +1 -1
- package/dist/parser/sections.d.ts +8 -0
- package/dist/parser/sections.js +23 -0
- package/dist/parser/sections.js.map +1 -1
- package/dist/parser/wikilink.d.ts +9 -3
- package/dist/parser/wikilink.js +16 -39
- package/dist/parser/wikilink.js.map +1 -1
- package/dist/same-page-links.js +20 -2
- package/dist/same-page-links.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export interface CliOptions {
|
|
|
4
4
|
vaultPath: string | null;
|
|
5
5
|
outputPath: string | null;
|
|
6
6
|
stdin: boolean;
|
|
7
|
+
/** JSON file with the same { path: content } map --stdin takes. */
|
|
8
|
+
inputPath: string | null;
|
|
7
9
|
deferUrls: boolean;
|
|
8
10
|
checkUrlsOnly: boolean;
|
|
9
11
|
skipUrls: boolean;
|
package/dist/cli.js
CHANGED
|
@@ -7,12 +7,13 @@ import { UrlCache } from "./validator/url-cache.js";
|
|
|
7
7
|
import { buildFileToCourses } from "./reference-graph.js";
|
|
8
8
|
import { dedupeErrors } from "./dedupe-errors.js";
|
|
9
9
|
import { courseGraphIssues, partnerNameIssues } from "./course-graph.js";
|
|
10
|
-
import { writeFile } from "fs/promises";
|
|
10
|
+
import { readFile, writeFile } from "fs/promises";
|
|
11
11
|
export function parseArgs(argv) {
|
|
12
12
|
const args = argv.slice(2);
|
|
13
13
|
let vaultPath = null;
|
|
14
14
|
let outputPath = null;
|
|
15
15
|
let stdin = false;
|
|
16
|
+
let inputPath = null;
|
|
16
17
|
let deferUrls = false;
|
|
17
18
|
let checkUrlsOnly = false;
|
|
18
19
|
let skipUrls = false;
|
|
@@ -29,6 +30,10 @@ export function parseArgs(argv) {
|
|
|
29
30
|
else if (args[i] === "--stdin") {
|
|
30
31
|
stdin = true;
|
|
31
32
|
}
|
|
33
|
+
else if (args[i] === "--input") {
|
|
34
|
+
inputPath = args[i + 1] || null;
|
|
35
|
+
i++; // skip next arg
|
|
36
|
+
}
|
|
32
37
|
else if (args[i] === "--defer-urls") {
|
|
33
38
|
deferUrls = true;
|
|
34
39
|
}
|
|
@@ -46,6 +51,7 @@ export function parseArgs(argv) {
|
|
|
46
51
|
vaultPath,
|
|
47
52
|
outputPath,
|
|
48
53
|
stdin,
|
|
54
|
+
inputPath,
|
|
49
55
|
deferUrls,
|
|
50
56
|
checkUrlsOnly,
|
|
51
57
|
skipUrls,
|
|
@@ -61,15 +67,16 @@ async function readStdin() {
|
|
|
61
67
|
}
|
|
62
68
|
export async function run(options) {
|
|
63
69
|
let files;
|
|
64
|
-
if (options.stdin) {
|
|
65
|
-
//
|
|
66
|
-
const input =
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
if (options.stdin || options.inputPath) {
|
|
71
|
+
// JSON { "path": "content", ... } from stdin or a file
|
|
72
|
+
const input = options.inputPath
|
|
73
|
+
? await readFile(options.inputPath, "utf-8")
|
|
74
|
+
: await readStdin();
|
|
75
|
+
files = new Map(Object.entries(JSON.parse(input)));
|
|
69
76
|
}
|
|
70
77
|
else {
|
|
71
78
|
if (!options.vaultPath) {
|
|
72
|
-
throw new Error("Vault path is required (or use --stdin)");
|
|
79
|
+
throw new Error("Vault path is required (or use --stdin / --input)");
|
|
73
80
|
}
|
|
74
81
|
files = await readVaultFiles(options.vaultPath);
|
|
75
82
|
}
|
|
@@ -96,7 +103,7 @@ export async function run(options) {
|
|
|
96
103
|
try {
|
|
97
104
|
result.errors = dedupeErrors([
|
|
98
105
|
...result.errors,
|
|
99
|
-
...courseGraphIssues(files),
|
|
106
|
+
...courseGraphIssues(files, cache),
|
|
100
107
|
...partnerNameIssues(files),
|
|
101
108
|
]);
|
|
102
109
|
}
|
|
@@ -130,9 +137,10 @@ async function main() {
|
|
|
130
137
|
}
|
|
131
138
|
return;
|
|
132
139
|
}
|
|
133
|
-
if (!options.vaultPath && !options.stdin) {
|
|
140
|
+
if (!options.vaultPath && !options.stdin && !options.inputPath) {
|
|
134
141
|
console.error("Usage: npx tsx src/cli.ts <vault-path> [--output <file>]");
|
|
135
142
|
console.error(" npx tsx src/cli.ts --stdin [--output <file>]");
|
|
143
|
+
console.error(" npx tsx src/cli.ts --input <files.json> [--output <file>]");
|
|
136
144
|
process.exit(1);
|
|
137
145
|
}
|
|
138
146
|
try {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,eAAe,GAIhB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,YAAY,EACZ,mBAAmB,GACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/course-graph.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { ContentError } from "./index.js";
|
|
2
|
-
|
|
2
|
+
import type { FileResultCache } from "./cache.js";
|
|
3
|
+
/** cache: per-file memo of the title scan (the bulk of the cost), keyed by
|
|
4
|
+
* the file and the title pattern it was scanned with. */
|
|
5
|
+
export declare function courseGraphIssues(files: Map<string, string>, cache?: FileResultCache): ContentError[];
|
|
3
6
|
export declare function partnerNameIssues(files: Map<string, string>): ContentError[];
|
package/dist/course-graph.js
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
// cli.ts, not processContent, because they need every file at once (no
|
|
28
28
|
// per-file cache) and should fail softly.
|
|
29
29
|
// Link syntax and resolution are shared with reference-graph.ts.
|
|
30
|
+
import { createHash } from "crypto";
|
|
30
31
|
import { WIKILINK_RE, resolveReference as resolve } from "./reference-graph.js";
|
|
31
32
|
import { parseFrontmatter, HTML_FRONTMATTER_OPEN, HTML_FRONTMATTER_CLOSE, } from "./parser/frontmatter.js";
|
|
32
33
|
import { isContentTextFile } from "./parser/widget.js";
|
|
@@ -179,19 +180,23 @@ function lensTitles(files) {
|
|
|
179
180
|
function escape(s) {
|
|
180
181
|
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
181
182
|
}
|
|
182
|
-
|
|
183
|
+
/** cache: per-file memo of the title scan (the bulk of the cost), keyed by
|
|
184
|
+
* the file and the title pattern it was scanned with. */
|
|
185
|
+
export function courseGraphIssues(files, cache) {
|
|
183
186
|
const titles = lensTitles(files);
|
|
184
187
|
if (!titles.size)
|
|
185
188
|
return [];
|
|
186
189
|
const byTitle = [...titles.keys()]
|
|
187
|
-
|
|
190
|
+
// Longest first; ties by text, so the pattern (part of the scan cache
|
|
191
|
+
// key) does not depend on the order the caller listed the files in.
|
|
192
|
+
.sort((a, b) => b.length - a.length || (a < b ? -1 : a > b ? 1 : 0))
|
|
188
193
|
.map(escape)
|
|
189
194
|
.join("|");
|
|
190
195
|
const pattern = new RegExp(`(?<![\\w])(?:${byTitle})(?![\\w])`, "g");
|
|
191
196
|
const tier = buildTierMap(buildTagMap(files));
|
|
192
197
|
const scanned = memoized((p) => scan(p, files.get(p) ?? ""));
|
|
193
198
|
const text = memoized((p) => scanned(p).lines.join("\n"));
|
|
194
|
-
const
|
|
199
|
+
const scanMentions = (file) => {
|
|
195
200
|
const { lines, fields } = scanned(file);
|
|
196
201
|
return lines.flatMap((line, i) => line.startsWith("source::") || /^\s*#/.test(line)
|
|
197
202
|
? []
|
|
@@ -200,6 +205,19 @@ export function courseGraphIssues(files) {
|
|
|
200
205
|
title: m[0],
|
|
201
206
|
tutorFacing: TUTOR_FIELDS.has(fields[i] ?? ""),
|
|
202
207
|
})));
|
|
208
|
+
};
|
|
209
|
+
// A pure function of (file, content, pattern): a hit is what a rescan returns.
|
|
210
|
+
const mentionsKind = `course-graph-mentions:${createHash("sha256").update(pattern.source).digest("hex")}`;
|
|
211
|
+
const mentions = memoized((file) => {
|
|
212
|
+
const content = files.get(file);
|
|
213
|
+
if (!cache || content === undefined)
|
|
214
|
+
return scanMentions(file);
|
|
215
|
+
const hit = cache.get(mentionsKind, file, content);
|
|
216
|
+
if (Array.isArray(hit))
|
|
217
|
+
return hit;
|
|
218
|
+
const value = scanMentions(file);
|
|
219
|
+
cache.put(mentionsKind, file, content, value);
|
|
220
|
+
return value;
|
|
203
221
|
});
|
|
204
222
|
const found = new Map();
|
|
205
223
|
for (const { path: coursePath, slug } of courses(files)) {
|
package/dist/course-graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"course-graph.js","sourceRoot":"","sources":["../src/course-graph.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,qBAAqB;AACrB,yEAAyE;AACzE,+EAA+E;AAC/E,iFAAiF;AACjF,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,gFAAgF;AAChF,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,2EAA2E;AAC3E,gCAAgC;AAChC,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,0CAA0C;AAC1C,iEAAiE;AAGjE,OAAO,EAAE,WAAW,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,iCAAiC,GAClC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,SAAS,gBAAgB,CAAC,IAAY,EAAE,OAAe;IACrD,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;IAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,IAAI;SACR,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,2FAA2F;AAC3F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,yBAAyB;IACzB,uBAAuB;IACvB,cAAc;IACd,iBAAiB;IACjB,mBAAmB;CACpB,CAAC,CAAC;AAEH;;;;4EAI4E;AAC5E,SAAS,YAAY,CAAC,KAAe;IACnC,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,uEAAuE;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GACT,KAAK,KAAK,KAAK;QACb,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,KAAK,KAAK,qBAAqB;YAC/B,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjE,MAAM,WAAW,GACf,KAAK,KAAK,IAAI;gBACd,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAClC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;gBACtB,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW;gBAAE,KAAK,GAAG,IAAI,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QACtD,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAID;;+DAE+D;AAC/D,SAAS,IAAI,CAAC,IAAY,EAAE,OAAe;IACzC,wEAAwE;IACxE,MAAM,GAAG,GAAG,iCAAiC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAClE,CAAC;IACF,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,GAAG,IAAI,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,yEAAyE;AACzE,oEAAoE;AACpE,MAAM,UAAU,GAAG,4BAA4B,CAAC;AAEhD,SAAS,QAAQ,CAAI,CAAmB;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAC;IAClC,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC;AAED,uCAAuC;AACvC,SAAS,OAAO,CAAC,CAAe,EAAE,CAAe;IAC/C,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,gEAAgE;AAChE,SAAS,OAAO,CACd,KAA0B;IAE1B,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS;QAC3C,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CACtC,oBAAoB,CAAC,OAAO,CAAC,EAC7B,IAAI,CACL,CAAC;QACF,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;YACzC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kFAAkF;AAClF,SAAS,IAAI,CACX,MAAc,EACd,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;QAC7B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YACrC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACxC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,MAAM,CAAC,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC;AAED;wCACwC;AACxC,SAAS,UAAU,CAAC,KAA0B;IAC5C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK;QACxB,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC7D,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QACxC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAAE,SAAS;QAChE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA0B;IAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;SAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;SACnC,GAAG,CAAC,MAAM,CAAC;SACX,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,gBAAgB,OAAO,YAAY,EAAE,GAAG,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAG1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAa,EAAE;QAC5C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,CAAC,GAAG,CAAC;gBACX,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBACX,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/C,CAAC,CAAC,CACR,CAAC;IACJ,CAAC,CAAC,CAAC;IAQH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IAEvC,KAAK,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,SAAS;YACvE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACpC,MAAM,OAAO,GAAG,MAAM;qBACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;gBAClC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7D,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;oBAAE,SAAS;gBAC7D,MAAM,IAAI,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBACvC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;oBAC5B,IAAI;oBACJ,IAAI;oBACJ,KAAK;oBACL,IAAI;oBACJ,OAAO,EAAE,IAAI,GAAG,EAAU;iBAC3B,CAAC;gBACF,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC,EAAgB,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7F,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;YAC3D,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO;gBACpB,CAAC,CAAC;oBACE,IAAI,EAAE,mCAAmC;oBACzC,OAAO,EAAE,aAAa,CAAC,CAAC,KAAK,MAAM,IAAI,kBAAkB,OAAO,mDAAmD;oBACnH,UAAU,EACR,6FAA6F;iBAChG;gBACH,CAAC,CAAC;oBACE,IAAI,EAAE,+BAA+B;oBACrC,OAAO,EAAE,+BAA+B,CAAC,CAAC,KAAK,MAAM,IAAI,YAAY,OAAO,uEAAuE;oBACnJ,UAAU,EACR,6EAA6E;iBAChF,CAAC;SACP,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA0B;IAC1D,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,kEAAkE;IAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;QAChC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC/B,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,iCAAiC,EAAE,IAAI,CAAC;iBAC5D;aACF;YACH,CAAC,CAAC,EAAE,CACP,CAAC;IACJ,CAAC,CAAC,CAAC;IAOH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACtE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAClD,IACE,IAAI,KAAK,IAAI;gBACb,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAE5B,SAAS;YACX,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC/B,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACpD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;gBACvE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC,EAAgB,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;QAC3D,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,4BAA4B,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACzI,UAAU,EACR,kIAAkI;KACrI,CAAC,CAAC;SACF,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"course-graph.js","sourceRoot":"","sources":["../src/course-graph.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,qBAAqB;AACrB,yEAAyE;AACzE,+EAA+E;AAC/E,iFAAiF;AACjF,EAAE;AACF,8EAA8E;AAC9E,yEAAyE;AACzE,gFAAgF;AAChF,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,2EAA2E;AAC3E,gCAAgC;AAChC,EAAE;AACF,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,0CAA0C;AAC1C,iEAAiE;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,iCAAiC,GAClC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,SAAS,gBAAgB,CAAC,IAAY,EAAE,OAAe;IACrD,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;IAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,IAAI;SACR,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,2FAA2F;AAC3F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,yBAAyB;IACzB,uBAAuB;IACvB,cAAc;IACd,iBAAiB;IACjB,mBAAmB;CACpB,CAAC,CAAC;AAEH;;;;4EAI4E;AAC5E,SAAS,YAAY,CAAC,KAAe;IACnC,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,uEAAuE;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC/B,MAAM,KAAK,GACT,KAAK,KAAK,KAAK;QACb,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,KAAK,KAAK,qBAAqB;YAC/B,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/D,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,KAAK,GAAkB,IAAI,CAAC;IAChC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACjE,MAAM,WAAW,GACf,KAAK,KAAK,IAAI;gBACd,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAClC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;gBACtB,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW;gBAAE,KAAK,GAAG,IAAI,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QACtD,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAID;;+DAE+D;AAC/D,SAAS,IAAI,CAAC,IAAY,EAAE,OAAe;IACzC,wEAAwE;IACxE,MAAM,GAAG,GAAG,iCAAiC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC9B,MAAM,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAClE,CAAC;IACF,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,GAAG,IAAI,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,yEAAyE;AACzE,oEAAoE;AACpE,MAAM,UAAU,GAAG,4BAA4B,CAAC;AAEhD,SAAS,QAAQ,CAAI,CAAmB;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAC;IAClC,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC;AAED,uCAAuC;AACvC,SAAS,OAAO,CAAC,CAAe,EAAE,CAAe;IAC/C,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,gEAAgE;AAChE,SAAS,OAAO,CACd,KAA0B;IAE1B,MAAM,GAAG,GAAG,EAAE,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS;QAC3C,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CACtC,oBAAoB,CAAC,OAAO,CAAC,EAC7B,IAAI,CACL,CAAC;QACF,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;QAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;YACzC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,kFAAkF;AAClF,SAAS,IAAI,CACX,MAAc,EACd,KAA0B,EAC1B,IAA2B;IAE3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE;QAC7B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,SAAS;YACrC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACxC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,MAAM,CAAC,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC;AAED;wCACwC;AACxC,SAAS,UAAU,CAAC,KAA0B;IAC5C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK;QACxB,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC7D,MAAM,CAAC,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QACxC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAAE,SAAS;QAChE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;yDACyD;AACzD,MAAM,UAAU,iBAAiB,CAC/B,KAA0B,EAC1B,KAAuB;IAEvB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,sEAAsE;QACtE,oEAAoE;SACnE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACnE,GAAG,CAAC,MAAM,CAAC;SACX,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,gBAAgB,OAAO,YAAY,EAAE,GAAG,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAG1D,MAAM,YAAY,GAAG,CAAC,IAAY,EAAa,EAAE;QAC/C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,CAAC,GAAG,CAAC;gBACX,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBACX,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/C,CAAC,CAAC,CACR,CAAC;IACJ,CAAC,CAAC;IACF,+EAA+E;IAC/E,MAAM,YAAY,GAAG,yBAAyB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1G,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAa,EAAE;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAY,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QACnC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAQH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IAEvC,KAAK,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YAChC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,SAAS;YACvE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACpC,MAAM,OAAO,GAAG,MAAM;qBACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;gBAClC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7D,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;oBAAE,SAAS;gBAC7D,MAAM,IAAI,GAAG,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;gBACvC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;oBAC5B,IAAI;oBACJ,IAAI;oBACJ,KAAK;oBACL,IAAI;oBACJ,OAAO,EAAE,IAAI,GAAG,EAAU;iBAC3B,CAAC;gBACF,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC,EAAgB,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7F,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;YAC3D,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO;gBACpB,CAAC,CAAC;oBACE,IAAI,EAAE,mCAAmC;oBACzC,OAAO,EAAE,aAAa,CAAC,CAAC,KAAK,MAAM,IAAI,kBAAkB,OAAO,mDAAmD;oBACnH,UAAU,EACR,6FAA6F;iBAChG;gBACH,CAAC,CAAC;oBACE,IAAI,EAAE,+BAA+B;oBACrC,OAAO,EAAE,+BAA+B,CAAC,CAAC,KAAK,MAAM,IAAI,YAAY,OAAO,uEAAuE;oBACnJ,UAAU,EACR,6EAA6E;iBAChF,CAAC;SACP,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAA0B;IAC1D,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,kEAAkE;IAClE,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;QAChC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC/B,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/B,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,iCAAiC,EAAE,IAAI,CAAC;iBAC5D;aACF;YACH,CAAC,CAAC,EAAE,CACP,CAAC;IACJ,CAAC,CAAC,CAAC;IAOH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACtE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAClD,IACE,IAAI,KAAK,IAAI;gBACb,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAE5B,SAAS;YACX,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC/B,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACpD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;gBACvE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC,EAAgB,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,SAAS;QACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY;QAC3D,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,4BAA4B,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACzI,UAAU,EACR,kIAAkI;KACrI,CAAC,CAAC;SACF,IAAI,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { FileResultCache } from "./cache.js";
|
|
2
|
+
import type { ContentTier } from "./validator/tier.js";
|
|
3
|
+
/** The inputs of one processContent run, with lazily computed digests. */
|
|
4
|
+
export declare class RunInputs {
|
|
5
|
+
private readonly files;
|
|
6
|
+
private readonly tierMap;
|
|
7
|
+
private readonly cache;
|
|
8
|
+
private readonly hashes;
|
|
9
|
+
private keysDigest?;
|
|
10
|
+
private allDigest?;
|
|
11
|
+
private tierDigest?;
|
|
12
|
+
constructor(files: Map<string, string>, tierMap: Map<string, ContentTier>, cache: FileResultCache | undefined);
|
|
13
|
+
private fileState;
|
|
14
|
+
private keysState;
|
|
15
|
+
private allState;
|
|
16
|
+
private tierState;
|
|
17
|
+
private stillValid;
|
|
18
|
+
/**
|
|
19
|
+
* Run `step` (or reuse its stored result). `path` and `content` name the
|
|
20
|
+
* file the step is about; the key includes them, and they are recorded as
|
|
21
|
+
* read even when the step got the content from its caller. Without a cache
|
|
22
|
+
* this is just step(files, tierMap).
|
|
23
|
+
*/
|
|
24
|
+
cached<T>(kind: string, path: string, content: string, step: (files: Map<string, string>, tierMap: Map<string, ContentTier>) => T): T;
|
|
25
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
// Cache for steps that read OTHER files: flattening a module or lens, a
|
|
2
|
+
// standalone article with imports, a meeting doc. Their result depends on the
|
|
3
|
+
// file itself and on every file they look up, so the per-file key of
|
|
4
|
+
// cache.ts alone would be wrong. Instead the step runs against recording
|
|
5
|
+
// views of the file map and tier map; the entry stores what it read (each
|
|
6
|
+
// file's content hash, or that it was absent; a whole-key-list or whole-map
|
|
7
|
+
// digest when it iterated). A later run reuses the entry only when every one
|
|
8
|
+
// of those reads would return the same thing again, so a hit can only return
|
|
9
|
+
// what recomputing would return. The step must be a pure function of its two
|
|
10
|
+
// maps (no other run state); every caller in index.ts passes exactly that.
|
|
11
|
+
//
|
|
12
|
+
// After a one-file edit only the steps that read that file recompute: the
|
|
13
|
+
// rest of a run is cache reads.
|
|
14
|
+
import { createHash } from "crypto";
|
|
15
|
+
function sha256(data) {
|
|
16
|
+
return createHash("sha256").update(data).digest("hex");
|
|
17
|
+
}
|
|
18
|
+
class Recorder {
|
|
19
|
+
files = new Set();
|
|
20
|
+
tiers = new Set();
|
|
21
|
+
keys = false;
|
|
22
|
+
all = false;
|
|
23
|
+
tierAll = false;
|
|
24
|
+
/** The step wrote to a map: its result is not a function of the inputs. */
|
|
25
|
+
wrote = false;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A read-through view of a Map that records every read into a Recorder.
|
|
29
|
+
* Extends Map so `instanceof Map` and Map-typed parameters keep working; the
|
|
30
|
+
* (empty) base map is never used — every method delegates to `inner`.
|
|
31
|
+
*/
|
|
32
|
+
class RecordingMap extends Map {
|
|
33
|
+
inner;
|
|
34
|
+
onRead;
|
|
35
|
+
onKeys;
|
|
36
|
+
onAll;
|
|
37
|
+
onWrite;
|
|
38
|
+
constructor(inner, onRead, onKeys, onAll, onWrite) {
|
|
39
|
+
super();
|
|
40
|
+
this.inner = inner;
|
|
41
|
+
this.onRead = onRead;
|
|
42
|
+
this.onKeys = onKeys;
|
|
43
|
+
this.onAll = onAll;
|
|
44
|
+
this.onWrite = onWrite;
|
|
45
|
+
}
|
|
46
|
+
get(key) {
|
|
47
|
+
this.onRead(key);
|
|
48
|
+
return this.inner.get(key);
|
|
49
|
+
}
|
|
50
|
+
has(key) {
|
|
51
|
+
this.onRead(key);
|
|
52
|
+
return this.inner.has(key);
|
|
53
|
+
}
|
|
54
|
+
get size() {
|
|
55
|
+
this.onKeys();
|
|
56
|
+
return this.inner.size;
|
|
57
|
+
}
|
|
58
|
+
keys() {
|
|
59
|
+
this.onKeys();
|
|
60
|
+
return this.inner.keys();
|
|
61
|
+
}
|
|
62
|
+
values() {
|
|
63
|
+
this.onAll();
|
|
64
|
+
return this.inner.values();
|
|
65
|
+
}
|
|
66
|
+
entries() {
|
|
67
|
+
this.onAll();
|
|
68
|
+
return this.inner.entries();
|
|
69
|
+
}
|
|
70
|
+
[Symbol.iterator]() {
|
|
71
|
+
this.onAll();
|
|
72
|
+
return this.inner[Symbol.iterator]();
|
|
73
|
+
}
|
|
74
|
+
forEach(fn, thisArg) {
|
|
75
|
+
this.onAll();
|
|
76
|
+
this.inner.forEach((v, k) => fn.call(thisArg, v, k, this));
|
|
77
|
+
}
|
|
78
|
+
set(key, value) {
|
|
79
|
+
this.onWrite();
|
|
80
|
+
this.inner.set(key, value);
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
delete(key) {
|
|
84
|
+
this.onWrite();
|
|
85
|
+
return this.inner.delete(key);
|
|
86
|
+
}
|
|
87
|
+
clear() {
|
|
88
|
+
this.onWrite();
|
|
89
|
+
this.inner.clear();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** The inputs of one processContent run, with lazily computed digests. */
|
|
93
|
+
export class RunInputs {
|
|
94
|
+
files;
|
|
95
|
+
tierMap;
|
|
96
|
+
cache;
|
|
97
|
+
hashes = new Map();
|
|
98
|
+
keysDigest;
|
|
99
|
+
allDigest;
|
|
100
|
+
tierDigest;
|
|
101
|
+
constructor(files, tierMap, cache) {
|
|
102
|
+
this.files = files;
|
|
103
|
+
this.tierMap = tierMap;
|
|
104
|
+
this.cache = cache;
|
|
105
|
+
}
|
|
106
|
+
fileState(path) {
|
|
107
|
+
const content = this.files.get(path);
|
|
108
|
+
if (content === undefined)
|
|
109
|
+
return null;
|
|
110
|
+
let hash = this.hashes.get(path);
|
|
111
|
+
if (hash === undefined) {
|
|
112
|
+
hash = sha256(content);
|
|
113
|
+
this.hashes.set(path, hash);
|
|
114
|
+
}
|
|
115
|
+
return hash;
|
|
116
|
+
}
|
|
117
|
+
keysState() {
|
|
118
|
+
this.keysDigest ??= sha256(JSON.stringify([...this.files.keys()]));
|
|
119
|
+
return this.keysDigest;
|
|
120
|
+
}
|
|
121
|
+
allState() {
|
|
122
|
+
this.allDigest ??= sha256(JSON.stringify([...this.files.keys()].map((p) => [p, this.fileState(p)])));
|
|
123
|
+
return this.allDigest;
|
|
124
|
+
}
|
|
125
|
+
tierState() {
|
|
126
|
+
this.tierDigest ??= sha256(JSON.stringify([...this.tierMap]));
|
|
127
|
+
return this.tierDigest;
|
|
128
|
+
}
|
|
129
|
+
stillValid(reads) {
|
|
130
|
+
if (!Array.isArray(reads?.files) || !Array.isArray(reads.tiers))
|
|
131
|
+
return false;
|
|
132
|
+
if (reads.keys !== undefined && reads.keys !== this.keysState())
|
|
133
|
+
return false;
|
|
134
|
+
if (reads.all !== undefined && reads.all !== this.allState())
|
|
135
|
+
return false;
|
|
136
|
+
if (reads.tierAll !== undefined && reads.tierAll !== this.tierState())
|
|
137
|
+
return false;
|
|
138
|
+
for (const [path, state] of reads.files) {
|
|
139
|
+
if (this.fileState(path) !== state)
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
for (const [path, tier] of reads.tiers) {
|
|
143
|
+
if ((this.tierMap.get(path) ?? null) !== tier)
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Run `step` (or reuse its stored result). `path` and `content` name the
|
|
150
|
+
* file the step is about; the key includes them, and they are recorded as
|
|
151
|
+
* read even when the step got the content from its caller. Without a cache
|
|
152
|
+
* this is just step(files, tierMap).
|
|
153
|
+
*/
|
|
154
|
+
cached(kind, path, content, step) {
|
|
155
|
+
if (!this.cache)
|
|
156
|
+
return step(this.files, this.tierMap);
|
|
157
|
+
const hit = this.cache.get(kind, path, content);
|
|
158
|
+
if (hit !== undefined &&
|
|
159
|
+
hit !== null &&
|
|
160
|
+
typeof hit === "object" &&
|
|
161
|
+
"reads" in hit &&
|
|
162
|
+
"value" in hit &&
|
|
163
|
+
this.stillValid(hit.reads)) {
|
|
164
|
+
return hit.value;
|
|
165
|
+
}
|
|
166
|
+
const rec = new Recorder();
|
|
167
|
+
rec.files.add(path);
|
|
168
|
+
// has() counts as a read of the content too: only ever too strict (a
|
|
169
|
+
// spurious miss when a file it merely checked for changes).
|
|
170
|
+
const files = new RecordingMap(this.files, (key) => rec.files.add(key), () => (rec.keys = true), () => (rec.all = true), () => (rec.wrote = true));
|
|
171
|
+
const tierMap = new RecordingMap(this.tierMap, (key) => rec.tiers.add(key), () => (rec.tierAll = true), () => (rec.tierAll = true), () => (rec.wrote = true));
|
|
172
|
+
const value = step(files, tierMap);
|
|
173
|
+
if (rec.wrote)
|
|
174
|
+
return value;
|
|
175
|
+
const reads = {
|
|
176
|
+
files: [...rec.files].map((p) => [p, this.fileState(p)]),
|
|
177
|
+
tiers: [...rec.tiers].map((p) => [p, this.tierMap.get(p) ?? null]),
|
|
178
|
+
};
|
|
179
|
+
if (rec.keys)
|
|
180
|
+
reads.keys = this.keysState();
|
|
181
|
+
if (rec.all)
|
|
182
|
+
reads.all = this.allState();
|
|
183
|
+
if (rec.tierAll)
|
|
184
|
+
reads.tierAll = this.tierState();
|
|
185
|
+
this.cache.put(kind, path, content, { reads, value });
|
|
186
|
+
return value;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=dependency-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-cache.js","sourceRoot":"","sources":["../src/dependency-cache.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,8EAA8E;AAC9E,qEAAqE;AACrE,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,EAAE;AACF,0EAA0E;AAC1E,gCAAgC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIpC,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAkBD,MAAM,QAAQ;IACH,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1B,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,IAAI,GAAG,KAAK,CAAC;IACb,GAAG,GAAG,KAAK,CAAC;IACZ,OAAO,GAAG,KAAK,CAAC;IAChB,2EAA2E;IAC3E,KAAK,GAAG,KAAK,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,YAAgB,SAAQ,GAAc;IAEvB;IACA;IACA;IACA;IACA;IALnB,YACmB,KAAqB,EACrB,MAA6B,EAC7B,MAAkB,EAClB,KAAiB,EACjB,OAAmB;QAEpC,KAAK,EAAE,CAAC;QANS,UAAK,GAAL,KAAK,CAAgB;QACrB,WAAM,GAAN,MAAM,CAAuB;QAC7B,WAAM,GAAN,MAAM,CAAY;QAClB,UAAK,GAAL,KAAK,CAAY;QACjB,YAAO,GAAP,OAAO,CAAY;IAGtC,CAAC;IACQ,GAAG,CAAC,GAAW;QACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACQ,GAAG,CAAC,GAAW;QACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,IAAa,IAAI;QACf,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IACQ,IAAI;QACX,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IACQ,MAAM;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IACQ,OAAO;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IACQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IACvC,CAAC;IACQ,OAAO,CACd,EAAwD,EACxD,OAAiB;QAEjB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,CAAC;IACQ,GAAG,CAAC,GAAW,EAAE,KAAQ;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACQ,MAAM,CAAC,GAAW;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACQ,KAAK;QACZ,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED,0EAA0E;AAC1E,MAAM,OAAO,SAAS;IAOD;IACA;IACA;IARF,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,UAAU,CAAU;IACpB,SAAS,CAAU;IACnB,UAAU,CAAU;IAE5B,YACmB,KAA0B,EAC1B,OAAiC,EACjC,KAAkC;QAFlC,UAAK,GAAL,KAAK,CAAqB;QAC1B,YAAO,GAAP,OAAO,CAA0B;QACjC,UAAK,GAAL,KAAK,CAA6B;IAClD,CAAC;IAEI,SAAS,CAAC,IAAY;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,SAAS,KAAK,MAAM,CACvB,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,UAAU,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAEO,UAAU,CAAC,KAAY;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YAC7D,OAAO,KAAK,CAAC;QACf,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;YAC7D,OAAO,KAAK,CAAC;QACf,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,EAAE;YAAE,OAAO,KAAK,CAAC;QAC3E,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;YACnE,OAAO,KAAK,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,KAAK;gBAAE,OAAO,KAAK,CAAC;QACnD,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;QAC9D,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,MAAM,CACJ,IAAY,EACZ,IAAY,EACZ,OAAe,EACf,IAA0E;QAE1E,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAW,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1D,IACE,GAAG,KAAK,SAAS;YACjB,GAAG,KAAK,IAAI;YACZ,OAAO,GAAG,KAAK,QAAQ;YACvB,OAAO,IAAI,GAAG;YACd,OAAO,IAAI,GAAG;YACd,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAC1B,CAAC;YACD,OAAO,GAAG,CAAC,KAAK,CAAC;QACnB,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,qEAAqE;QACrE,4DAA4D;QAC5D,MAAM,KAAK,GAAG,IAAI,YAAY,CAC5B,IAAI,CAAC,KAAK,EACV,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAC3B,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EACvB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EACtB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CACzB,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,YAAY,CAC9B,IAAI,CAAC,OAAO,EACZ,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAC3B,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAC1B,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,EAC1B,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CACzB,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAE5B,MAAM,KAAK,GAAU;YACnB,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;SACnE,CAAC;QACF,IAAI,GAAG,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5C,IAAI,GAAG,CAAC,GAAG;YAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,GAAG,CAAC,OAAO;YAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
package/dist/flattener/index.js
CHANGED
|
@@ -784,7 +784,7 @@ function flattenLearningOutcomeSection(section, modulePath, files, visitedPaths,
|
|
|
784
784
|
return { sections: [], errors };
|
|
785
785
|
}
|
|
786
786
|
// Parse and resolve the wikilink
|
|
787
|
-
const wikilink = parseWikilink(source);
|
|
787
|
+
const wikilink = parseWikilink(source, modulePath);
|
|
788
788
|
if (!wikilink || wikilink.error) {
|
|
789
789
|
const suggestion = wikilink?.correctedPath
|
|
790
790
|
? `Did you mean '[[${wikilink.correctedPath}]]'?`
|
|
@@ -897,7 +897,7 @@ function flattenLensSection(section, modulePath, files, visitedPaths, tierMap, i
|
|
|
897
897
|
return { sections: [], errors };
|
|
898
898
|
}
|
|
899
899
|
// Parse and resolve the wikilink
|
|
900
|
-
const wikilink = parseWikilink(source);
|
|
900
|
+
const wikilink = parseWikilink(source, modulePath);
|
|
901
901
|
if (!wikilink || wikilink.error) {
|
|
902
902
|
const suggestion = wikilink?.correctedPath
|
|
903
903
|
? `Did you mean '[[${wikilink.correctedPath}]]'?`
|
|
@@ -950,7 +950,7 @@ function flattenLensSection(section, modulePath, files, visitedPaths, tierMap, i
|
|
|
950
950
|
}
|
|
951
951
|
visitedPaths.add(lensPath);
|
|
952
952
|
const lensContent = files.get(lensPath);
|
|
953
|
-
const lensResult = parseLens(lensContent, lensPath);
|
|
953
|
+
const lensResult = parseLens(lensContent, lensPath, files);
|
|
954
954
|
errors.push(...lensResult.errors);
|
|
955
955
|
if (!lensResult.lens) {
|
|
956
956
|
return { sections: [], errors };
|
|
@@ -985,7 +985,7 @@ function resolveWidgetSegment(source, placement, ctx) {
|
|
|
985
985
|
if (placement.required)
|
|
986
986
|
segment.required = true;
|
|
987
987
|
const broken = () => ({ segment, errors });
|
|
988
|
-
const wikilink = parseWikilink(source);
|
|
988
|
+
const wikilink = parseWikilink(source, ctx.resolveFrom);
|
|
989
989
|
if (!wikilink || wikilink.error) {
|
|
990
990
|
errors.push(withLine({
|
|
991
991
|
file: ctx.errorFile,
|
|
@@ -1058,7 +1058,7 @@ function resolveVideoSegment(source, fromTimeStr, toTimeStr, ctx) {
|
|
|
1058
1058
|
const errors = [];
|
|
1059
1059
|
const { files, visitedPaths, tierMap } = ctx;
|
|
1060
1060
|
const withLine = (error) => ctx.errorLine !== undefined ? { ...error, line: ctx.errorLine } : error;
|
|
1061
|
-
const wikilink = parseWikilink(source);
|
|
1061
|
+
const wikilink = parseWikilink(source, ctx.resolveFrom);
|
|
1062
1062
|
if (!wikilink || wikilink.error) {
|
|
1063
1063
|
const suggestion = wikilink?.correctedPath
|
|
1064
1064
|
? `Did you mean '[[${wikilink.correctedPath}]]'?`
|
|
@@ -1198,7 +1198,7 @@ function planLensArticles(parsedSegments, lensPath, files, visitedPaths, tierMap
|
|
|
1198
1198
|
});
|
|
1199
1199
|
continue;
|
|
1200
1200
|
}
|
|
1201
|
-
const wikilink = parseWikilink(parsedSegment.source);
|
|
1201
|
+
const wikilink = parseWikilink(parsedSegment.source, lensPath);
|
|
1202
1202
|
if (!wikilink || wikilink.error) {
|
|
1203
1203
|
const suggestion = wikilink?.correctedPath
|
|
1204
1204
|
? `Did you mean '[[${wikilink.correctedPath}]]'?`
|
|
@@ -1390,7 +1390,7 @@ function planLensArticles(parsedSegments, lensPath, files, visitedPaths, tierMap
|
|
|
1390
1390
|
*/
|
|
1391
1391
|
function resolvePromptImport(value, fieldName, lensPath, files, tierMap) {
|
|
1392
1392
|
const errors = [];
|
|
1393
|
-
const wikilink = parseWikilink(value.trim());
|
|
1393
|
+
const wikilink = parseWikilink(value.trim(), lensPath);
|
|
1394
1394
|
if (!wikilink || wikilink.error) {
|
|
1395
1395
|
const suggestion = wikilink?.correctedPath
|
|
1396
1396
|
? `Did you mean '[[${wikilink.correctedPath}]]'?`
|
|
@@ -1472,7 +1472,7 @@ function resolvePromptImport(value, fieldName, lensPath, files, tierMap) {
|
|
|
1472
1472
|
export function expandPromptImports(value, fieldName, lensPath, files, tierMap) {
|
|
1473
1473
|
// Sole wikilink — the whole field is the import (including recognizably
|
|
1474
1474
|
// malformed single wikilinks, which must fail loudly).
|
|
1475
|
-
if (isSoleWikilink(value)) {
|
|
1475
|
+
if (isSoleWikilink(value, lensPath)) {
|
|
1476
1476
|
const resolved = resolvePromptImport(value, fieldName, lensPath, files, tierMap);
|
|
1477
1477
|
return { value: resolved.body, errors: resolved.errors };
|
|
1478
1478
|
}
|
|
@@ -1482,7 +1482,7 @@ export function expandPromptImports(value, fieldName, lensPath, files, tierMap)
|
|
|
1482
1482
|
const errors = [];
|
|
1483
1483
|
// Malformed wikilinks that were clearly meant as prompt imports (mention
|
|
1484
1484
|
// prompts/) fail the whole field, mirroring parse-time validation.
|
|
1485
|
-
const brokenImports = findBrokenPromptImports(value);
|
|
1485
|
+
const brokenImports = findBrokenPromptImports(value, lensPath);
|
|
1486
1486
|
if (brokenImports.length > 0) {
|
|
1487
1487
|
for (const broken of brokenImports) {
|
|
1488
1488
|
errors.push({
|
|
@@ -1502,7 +1502,7 @@ export function expandPromptImports(value, fieldName, lensPath, files, tierMap)
|
|
|
1502
1502
|
for (const occ of findWikilinks(value)) {
|
|
1503
1503
|
out += value.slice(last, occ.index);
|
|
1504
1504
|
last = occ.index + occ.raw.length;
|
|
1505
|
-
const wikilink = parseWikilink(occ.raw);
|
|
1505
|
+
const wikilink = parseWikilink(occ.raw, lensPath);
|
|
1506
1506
|
if (!wikilink ||
|
|
1507
1507
|
wikilink.error ||
|
|
1508
1508
|
!isPromptPath(resolveWikilinkPath(wikilink.path, lensPath))) {
|
|
@@ -1715,7 +1715,7 @@ origin) {
|
|
|
1715
1715
|
});
|
|
1716
1716
|
return { segment: null, errors };
|
|
1717
1717
|
}
|
|
1718
|
-
const wikilink = parseWikilink(parsedSegment.source);
|
|
1718
|
+
const wikilink = parseWikilink(parsedSegment.source, lensPath);
|
|
1719
1719
|
if (!wikilink || wikilink.error) {
|
|
1720
1720
|
const suggestion = wikilink?.correctedPath
|
|
1721
1721
|
? `Did you mean '[[${wikilink.correctedPath}]]'?`
|
|
@@ -1863,7 +1863,7 @@ export function flattenLens(lensPath, files, tierMap, preParsedLens) {
|
|
|
1863
1863
|
// Use pre-parsed lens if provided, otherwise parse
|
|
1864
1864
|
const lens = preParsedLens ??
|
|
1865
1865
|
(() => {
|
|
1866
|
-
const lensResult = parseLens(lensContent, lensPath);
|
|
1866
|
+
const lensResult = parseLens(lensContent, lensPath, files);
|
|
1867
1867
|
errors.push(...lensResult.errors);
|
|
1868
1868
|
return lensResult.lens;
|
|
1869
1869
|
})();
|