@creeperhost/modlens-mcp 1.6.13 → 1.6.15

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 (66) hide show
  1. package/README.md +32 -2
  2. package/dist/feed-the-beast.d.ts +46 -0
  3. package/dist/feed-the-beast.d.ts.map +1 -0
  4. package/dist/feed-the-beast.js +29 -0
  5. package/dist/feed-the-beast.js.map +1 -0
  6. package/dist/generated/sqlite/browser.d.ts +10 -0
  7. package/dist/generated/sqlite/browser.d.ts.map +1 -1
  8. package/dist/generated/sqlite/client.d.ts +10 -0
  9. package/dist/generated/sqlite/client.d.ts.map +1 -1
  10. package/dist/generated/sqlite/internal/class.d.ts +22 -0
  11. package/dist/generated/sqlite/internal/class.d.ts.map +1 -1
  12. package/dist/generated/sqlite/internal/class.js +5 -5
  13. package/dist/generated/sqlite/internal/class.js.map +1 -1
  14. package/dist/generated/sqlite/internal/prismaNamespace.d.ts +180 -1
  15. package/dist/generated/sqlite/internal/prismaNamespace.d.ts.map +1 -1
  16. package/dist/generated/sqlite/internal/prismaNamespace.js +27 -0
  17. package/dist/generated/sqlite/internal/prismaNamespace.js.map +1 -1
  18. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.d.ts +29 -0
  19. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  20. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.js +27 -0
  21. package/dist/generated/sqlite/internal/prismaNamespaceBrowser.js.map +1 -1
  22. package/dist/generated/sqlite/models/Mod.d.ts +219 -0
  23. package/dist/generated/sqlite/models/Mod.d.ts.map +1 -1
  24. package/dist/generated/sqlite/models/PackFile.d.ts +1603 -0
  25. package/dist/generated/sqlite/models/PackFile.d.ts.map +1 -0
  26. package/dist/generated/sqlite/models/PackFile.js +2 -0
  27. package/dist/generated/sqlite/models/PackFile.js.map +1 -0
  28. package/dist/generated/sqlite/models/PackVersion.d.ts +1365 -0
  29. package/dist/generated/sqlite/models/PackVersion.d.ts.map +1 -0
  30. package/dist/generated/sqlite/models/PackVersion.js +2 -0
  31. package/dist/generated/sqlite/models/PackVersion.js.map +1 -0
  32. package/dist/generated/sqlite/models.d.ts +2 -0
  33. package/dist/generated/sqlite/models.d.ts.map +1 -1
  34. package/dist/java-tools.d.ts.map +1 -1
  35. package/dist/java-tools.js +75 -1
  36. package/dist/java-tools.js.map +1 -1
  37. package/dist/modpacks-ch.d.ts +5 -0
  38. package/dist/modpacks-ch.d.ts.map +1 -1
  39. package/dist/modpacks-ch.js +27 -5
  40. package/dist/modpacks-ch.js.map +1 -1
  41. package/dist/modrinth.d.ts +10 -0
  42. package/dist/modrinth.d.ts.map +1 -1
  43. package/dist/modrinth.js +20 -0
  44. package/dist/modrinth.js.map +1 -1
  45. package/dist/repositories/mod.d.ts.map +1 -1
  46. package/dist/repositories/mod.js +8 -1
  47. package/dist/repositories/mod.js.map +1 -1
  48. package/dist/server.js +43 -10
  49. package/dist/server.js.map +1 -1
  50. package/dist/tools/diagnostics.d.ts +2 -1
  51. package/dist/tools/diagnostics.d.ts.map +1 -1
  52. package/dist/tools/diagnostics.js +387 -56
  53. package/dist/tools/diagnostics.js.map +1 -1
  54. package/dist/tools/ingest.d.ts.map +1 -1
  55. package/dist/tools/ingest.js +3 -2
  56. package/dist/tools/ingest.js.map +1 -1
  57. package/dist/tools/modpacks-ch.d.ts +269 -3
  58. package/dist/tools/modpacks-ch.d.ts.map +1 -1
  59. package/dist/tools/modpacks-ch.js +810 -11
  60. package/dist/tools/modpacks-ch.js.map +1 -1
  61. package/dist/tools/source.d.ts.map +1 -1
  62. package/dist/tools/source.js +9 -1
  63. package/dist/tools/source.js.map +1 -1
  64. package/package.json +1 -1
  65. package/prisma/backends/schema.sqlite.prisma +42 -0
  66. package/prisma/backends/template.db +0 -0
@@ -2,88 +2,419 @@
2
2
  * Diagnostics tools for modpack developers.
3
3
  *
4
4
  * - analyzeCrashLog: rank suspect mods from a NeoForge/Fabric/Forge crash log
5
- * by cross-referencing stack frames with the ModClass index.
5
+ * by cross-referencing stack frames with the ModClass index and bounded
6
+ * fallback signals from modern crash report sections.
6
7
  * - findMissingDeps: find declared dependencies not satisfied by ingested mods.
7
8
  */
8
9
  import { findModClassesByClassNames, listAllMods } from "../repositories/mod.js";
10
+ import { searchMods, getModsBatch } from "../modpacks-ch.js";
11
+ import { downloadModAction } from "./modpacks-ch.js";
12
+ import { reindexClasses } from "./ingest.js";
9
13
  // Loader-level pseudo-deps that are never in the mod DB
10
14
  const SKIP_DEP_IDS = new Set([
11
- "minecraft", "neoforge", "forge", "fabric-api",
12
- "fabricloader", "quilt_loader", "java",
15
+ "minecraft", "neoforge", "forge", "fabric-api", "fabricloader",
16
+ "quilt_loader", "java", "modlauncher", "fml_loader", "mixin",
17
+ "spongepowered", "architectury", "fabric", "knot", "bootstrap",
18
+ "server", "client", "loader", "modlauncher", "bootstraplauncher",
19
+ "cpw.mods.modlauncher", "cpw.mods.bootstraplauncher", "lowcodefml",
20
+ "dev", "neoforged", "cpw",
13
21
  ]);
14
22
  const MAX_SUSPECTS = 10;
23
+ const MAX_POPULATE_ATTEMPTS = 3;
15
24
  export async function analyzeCrashLog(logText) {
16
- const FRAME_RE = /\tat ([\w.$]+)\.([\w$<>[\]]+)\(/g;
17
- const rawFrames = [];
18
- for (const m of logText.matchAll(FRAME_RE)) {
19
- rawFrames.push(m[1].replace(/\./g, "/"));
20
- }
21
- if (rawFrames.length === 0) {
22
- return {
23
- suspects: [],
24
- modsInLogSection: [],
25
- totalFrames: 0,
26
- recognizedFrames: 0,
27
- unrecognizedFrames: 0,
28
- };
29
- }
25
+ const frames = parseFrames(logText);
26
+ const rawFrames = frames.map((f) => f.className);
30
27
  const uniqueClasses = [...new Set(rawFrames)];
31
- const rows = await findModClassesByClassNames(uniqueClasses);
32
- // className mod info
33
- const classToMod = new Map();
34
- for (const row of rows) {
35
- classToMod.set(row.className, { modId: row.mod.modId, dbId: row.modId, display: row.mod.displayName });
36
- }
37
- // Accumulate per-mod frame lists (deduped class names) and frame counts
38
- const modInfo = new Map();
39
- let recognized = 0;
40
- for (const cls of rawFrames) {
41
- const mod = classToMod.get(cls);
42
- if (!mod)
43
- continue;
44
- recognized++;
45
- const entry = modInfo.get(mod.dbId) ?? { modId: mod.modId, display: mod.display, dbId: mod.dbId, frames: [] };
46
- if (!entry.frames.includes(cls))
47
- entry.frames.push(cls);
48
- modInfo.set(mod.dbId, entry);
28
+ const facts = parseCrashFacts(logText);
29
+ const modsInLogSection = parseModsInLogSection(logText);
30
+ let lookup = await lookupModClasses(uniqueClasses);
31
+ let rows = lookup.rows;
32
+ let candidates = buildCandidates(frames, rows, facts, modsInLogSection);
33
+ const population = lookup.available
34
+ ? await populateMissingMods(candidates, frames, facts)
35
+ : { attempted: 0, attempts: [], skipped: "mod class database unavailable" };
36
+ if (population.attempts.some((a) => a.status === "ingested" || a.status === "replaced" || a.status === "already_ingested")) {
37
+ lookup = await lookupModClasses(uniqueClasses);
38
+ rows = lookup.rows;
39
+ candidates = buildCandidates(frames, rows, facts, modsInLogSection);
49
40
  }
50
- // Build suspect list sorted by raw frame count (counts duplicates)
51
- const suspects = [...modInfo.values()]
52
- .map((s) => ({
41
+ const recognized = frames.filter((f) => rows.some((r) => r.className === f.className)).length;
42
+ const suspects = candidates.slice(0, MAX_SUSPECTS).map((s) => ({
53
43
  modId: s.modId,
54
- display: s.display,
55
- dbId: s.dbId,
56
- frameCount: rawFrames.filter((c) => classToMod.get(c)?.dbId === s.dbId).length,
44
+ display: s.display ?? s.modId,
45
+ dbId: s.dbId ?? null,
46
+ frameCount: s.frameCount,
57
47
  frames: s.frames.slice(0, 5),
58
- }))
59
- .sort((a, b) => b.frameCount - a.frameCount)
60
- .slice(0, MAX_SUSPECTS);
61
- // Parse "-- Mod List --" section (NeoForge crash format)
62
- const modsInLogSection = [];
63
- const modListMatch = logText.match(/-- Mod List --\n([\s\S]*?)(?:\n--|$)/);
64
- if (modListMatch) {
65
- for (const line of modListMatch[1].split("\n")) {
66
- const m = line.match(/^\s*(\S+)\|/);
67
- if (m)
68
- modsInLogSection.push(m[1].trim());
69
- }
70
- }
48
+ jars: s.jars.slice(0, 3),
49
+ source: s.source,
50
+ reasons: s.reasons.slice(0, 4),
51
+ }));
71
52
  const unrecognized = rawFrames.length - recognized;
72
53
  const coverageWarning = rawFrames.length >= 5 && unrecognized / rawFrames.length > 0.5
73
- ? `${unrecognized}/${rawFrames.length} stack frames could not be matched to ingested mods. Run reindex_classes to improve coverage.`
54
+ ? `${unrecognized}/${rawFrames.length} stack frames could not be matched to ingested mods. Fallback crash signals were used; ingest the missing jars to improve coverage.`
74
55
  : undefined;
75
56
  return {
76
57
  suspects,
58
+ fallbackSuspects: suspects.filter((s) => s.dbId === null),
59
+ crashFacts: facts,
60
+ frames: frames.slice(0, 50),
77
61
  modsInLogSection,
78
62
  totalFrames: rawFrames.length,
79
63
  recognizedFrames: recognized,
80
64
  unrecognizedFrames: unrecognized,
65
+ population,
81
66
  ...(coverageWarning ? { coverageWarning } : {}),
82
67
  };
83
68
  }
69
+ async function lookupModClasses(classNames) {
70
+ try {
71
+ return { rows: await findModClassesByClassNames(classNames), available: true };
72
+ }
73
+ catch {
74
+ return { rows: [], available: false };
75
+ }
76
+ }
77
+ function parseFrames(logText) {
78
+ const frames = [];
79
+ const modernRe = /^\s*at\s+(?:(?:TRANSFORMER|MOD|KNOT|MC-BOOTSTRAP|BOOTSTRAP)\/)?([^@\s/]+)@[^/\s]+\/([A-Za-z_$][\w$]*(?:[.$/][A-Za-z_$][\w$]*)*)\.([A-Za-z_$<][\w$<>[\]]*)\(([^)]*)\)(.*)$/;
80
+ const plainRe = /^\s*at\s+([A-Za-z_$][\w$]*(?:[.$/][A-Za-z_$][\w$]*)*)\.([A-Za-z_$<][\w$<>[\]]*)\(([^)]*)\)(.*)$/;
81
+ for (const line of logText.split(/\r?\n/)) {
82
+ let m = line.match(modernRe);
83
+ if (m) {
84
+ frames.push({
85
+ className: normalizeClassName(m[2]),
86
+ method: m[3],
87
+ raw: line.trim(),
88
+ source: "module",
89
+ modId: cleanModId(m[1]),
90
+ jar: extractJar(line),
91
+ });
92
+ continue;
93
+ }
94
+ m = line.match(plainRe);
95
+ if (m) {
96
+ frames.push({
97
+ className: normalizeClassName(m[1]),
98
+ method: m[2],
99
+ raw: line.trim(),
100
+ source: "plain",
101
+ modId: undefined,
102
+ jar: extractJar(line),
103
+ });
104
+ }
105
+ }
106
+ return frames;
107
+ }
108
+ function parseCrashFacts(logText) {
109
+ const facts = { causedBy: [], modLoadingIssues: [], missingDependencies: [], tickContext: {} };
110
+ facts.description = logText.match(/Description:\s*(.+)/)?.[1]?.trim();
111
+ facts.exception = logText.match(/^\s*((?:[\w.$]+\.)?(?:\w+Exception|\w+Error)(?::\s*.+)?)/m)?.[1]?.trim();
112
+ facts.minecraftVersion = logText.match(/Minecraft Version:\s*([^\r\n]+)/i)?.[1]?.trim()
113
+ ?? logText.match(/-- System Details --[\s\S]*?Details:\s*Minecraft Version:\s*([^\r\n]+)/i)?.[1]?.trim();
114
+ const loaderText = logText.match(/(?:Forge|NeoForge|Fabric Loader) Version:\s*([^\r\n]+)/i)?.[0]?.toLowerCase()
115
+ ?? logText.match(/ModLauncher:\s*([^\r\n]+)/i)?.[0]?.toLowerCase();
116
+ if (loaderText?.includes("neoforge"))
117
+ facts.loader = "neoforge";
118
+ else if (loaderText?.includes("fabric"))
119
+ facts.loader = "fabric";
120
+ else if (loaderText?.includes("forge"))
121
+ facts.loader = "forge";
122
+ for (const m of logText.matchAll(/^\s*Caused by:\s*(.+)$/gm))
123
+ facts.causedBy.push(m[1].trim());
124
+ const issueRe = /-- Mod loading issue for:\s*([^\s-]+)\s*--([\s\S]*?)(?=\n-- |\n\n|$)/g;
125
+ for (const m of logText.matchAll(issueRe)) {
126
+ const body = m[2];
127
+ const issue = {
128
+ modId: cleanModId(m[1]),
129
+ modFile: body.match(/Mod file:\s*([^\r\n]+)/i)?.[1]?.trim(),
130
+ failure: body.match(/Failure message:\s*([^\r\n]+)/i)?.[1]?.trim(),
131
+ exception: body.match(/Exception message:\s*([^\r\n]+)/i)?.[1]?.trim(),
132
+ };
133
+ facts.modLoadingIssues.push(issue);
134
+ parseMissingDependency(issue.failure ?? "", issue.modId, facts);
135
+ parseMissingDependency(issue.exception ?? "", issue.modId, facts);
136
+ }
137
+ for (const line of logText.split(/\r?\n/))
138
+ parseMissingDependency(line, undefined, facts);
139
+ for (const sectionName of ["Block entity being ticked", "Entity being ticked", "Affected level", "Block being ticked"]) {
140
+ const section = logText.match(new RegExp(`-- ${escapeRegExp(sectionName)} --\\n([\\s\\S]*?)(?:\\n--|$)`));
141
+ if (!section)
142
+ continue;
143
+ for (const line of section[1].split(/\r?\n/)) {
144
+ const m = line.match(/^\s*([^:]+):\s*(.+)$/);
145
+ if (m)
146
+ facts.tickContext[m[1].trim()] = m[2].trim();
147
+ }
148
+ }
149
+ return facts;
150
+ }
151
+ function parseMissingDependency(text, requiredBy, facts) {
152
+ const lower = text.toLowerCase();
153
+ const notInstalled = text.match(/currently,\s*([a-z0-9_.-]+)\s+is not installed/i)?.[1];
154
+ const requires = text.match(/requires\s+([a-z0-9_.-]+)\s+([^,.;]+)?/i);
155
+ const depModId = cleanModId(notInstalled ?? requires?.[1] ?? "");
156
+ if (!depModId || SKIP_DEP_IDS.has(depModId))
157
+ return;
158
+ if (!lower.includes("requires") && !lower.includes("not installed") && !lower.includes("missing"))
159
+ return;
160
+ if (facts.missingDependencies.some((d) => d.depModId === depModId && d.requiredBy === requiredBy))
161
+ return;
162
+ facts.missingDependencies.push({ requiredBy, depModId, version: requires?.[2]?.trim() });
163
+ }
164
+ function parseModsInLogSection(logText) {
165
+ const mods = new Set();
166
+ const sections = logText.matchAll(/(?:-- Mod List --|Mod List:|Fabric Mods:)\s*\n([\s\S]*?)(?:\n-- |\n\n|$)/g);
167
+ for (const section of sections) {
168
+ for (const line of section[1].split(/\r?\n/)) {
169
+ const trimmed = line.trim();
170
+ if (trimmed.includes("|")) {
171
+ const parts = trimmed.split("|").map((p) => p.trim()).filter(Boolean);
172
+ if (parts.length >= 3) {
173
+ addModId(mods, parts[2]);
174
+ continue;
175
+ }
176
+ }
177
+ let m = trimmed.match(/^([a-z0-9_.-]+)\|/i);
178
+ if (m) {
179
+ addModId(mods, m[1]);
180
+ continue;
181
+ }
182
+ m = trimmed.match(/^\|\s*[A-Z\s]+\|\s*([a-z0-9_.-]+)\s*\|/i);
183
+ if (m) {
184
+ addModId(mods, m[1]);
185
+ continue;
186
+ }
187
+ m = trimmed.match(/^\|[^|]*\.jar\s*\|[^|]*\|\s*([a-z0-9_.-]+)\s*\|/i);
188
+ if (m) {
189
+ addModId(mods, m[1]);
190
+ continue;
191
+ }
192
+ m = trimmed.match(/^([a-z0-9_.-]+):\s+.+\s+[\w.-]+$/i);
193
+ if (m)
194
+ addModId(mods, m[1]);
195
+ }
196
+ }
197
+ return [...mods];
198
+ }
199
+ function buildCandidates(frames, rows, facts, modsInLogSection) {
200
+ const byClass = new Map(rows.map((r) => [r.className, r]));
201
+ const candidates = new Map();
202
+ const add = (modId, reason, frame, display, dbId, source = "fallback") => {
203
+ modId = cleanModId(modId);
204
+ if (!modId || SKIP_DEP_IDS.has(modId))
205
+ return;
206
+ const c = candidates.get(modId) ?? {
207
+ modId,
208
+ display,
209
+ dbId: dbId ?? null,
210
+ frameCount: 0,
211
+ frames: [],
212
+ jars: [],
213
+ source,
214
+ reasons: [],
215
+ };
216
+ if (display && (!c.display || c.display === c.modId))
217
+ c.display = display;
218
+ if (dbId)
219
+ c.dbId = dbId;
220
+ if (c.source !== "indexed" && source === "indexed")
221
+ c.source = "indexed";
222
+ if (!c.reasons.includes(reason))
223
+ c.reasons.push(reason);
224
+ if (frame) {
225
+ c.frameCount++;
226
+ if (!c.frames.includes(frame.className))
227
+ c.frames.push(frame.className);
228
+ if (frame.jar && !c.jars.includes(frame.jar))
229
+ c.jars.push(frame.jar);
230
+ }
231
+ candidates.set(modId, c);
232
+ };
233
+ for (const frame of frames) {
234
+ const row = byClass.get(frame.className);
235
+ if (row) {
236
+ add(row.mod.modId, "class matched ingested mod", frame, row.mod.displayName, row.modId, "indexed");
237
+ continue;
238
+ }
239
+ if (frame.modId)
240
+ add(frame.modId, "module stack frame named this mod", frame, undefined, null, "stack");
241
+ const jarModId = modIdFromJar(frame.jar);
242
+ if (jarModId)
243
+ add(jarModId, "stack frame came from this jar", frame, undefined, null, "jar");
244
+ if (!frame.modId && !jarModId) {
245
+ const packageModId = modIdFromClass(frame.className);
246
+ if (packageModId)
247
+ add(packageModId, "class package points at this mod", frame, undefined, null, "package");
248
+ }
249
+ }
250
+ for (const issue of facts.modLoadingIssues) {
251
+ add(issue.modId, "mod loading issue section names this mod", undefined, undefined, null, "mod_loading_issue");
252
+ const jarModId = modIdFromJar(issue.modFile);
253
+ if (jarModId)
254
+ add(jarModId, "mod loading issue names this jar", undefined, undefined, null, "jar");
255
+ }
256
+ for (const dep of facts.missingDependencies) {
257
+ add(dep.depModId, "required dependency is missing", undefined, undefined, null, "dependency");
258
+ if (dep.requiredBy)
259
+ add(dep.requiredBy, "mod has a failed dependency", undefined, undefined, null, "dependency");
260
+ }
261
+ for (const value of Object.values(facts.tickContext)) {
262
+ const namespace = value.match(/\b([a-z0-9_.-]+):[a-z0-9_./-]+/i)?.[1];
263
+ if (namespace)
264
+ add(namespace, "ticking context uses this namespace", undefined, undefined, null, "tick_context");
265
+ }
266
+ const inPack = new Set(modsInLogSection.map(cleanModId));
267
+ return [...candidates.values()]
268
+ .filter((c) => c.dbId || c.frameCount > 0 || inPack.has(c.modId) || c.source !== "package")
269
+ .sort((a, b) => scoreCandidate(b) - scoreCandidate(a) || b.frameCount - a.frameCount || a.modId.localeCompare(b.modId));
270
+ }
271
+ async function populateMissingMods(candidates, frames, facts) {
272
+ const attempts = [];
273
+ const unresolved = candidates.filter((c) => !c.dbId && ["stack", "jar", "mod_loading_issue", "dependency"].includes(c.source)).slice(0, MAX_POPULATE_ATTEMPTS);
274
+ for (const candidate of unresolved) {
275
+ const terms = [...new Set([candidate.modId, candidate.display, ...candidate.jars.map(stripJarVersion)].filter((v) => !!v))];
276
+ const attempt = { modId: candidate.modId, terms, status: "not_found" };
277
+ attempts.push(attempt);
278
+ try {
279
+ const remote = await findRemoteMod(terms, candidate, facts);
280
+ if (!remote)
281
+ continue;
282
+ const version = pickRemoteVersion(remote, candidate, facts);
283
+ attempt.remoteId = remote.id;
284
+ if (version)
285
+ attempt.fileId = version.id;
286
+ const result = await downloadModAction(remote.id, {
287
+ mcVersion: version ? undefined : facts.minecraftVersion,
288
+ loader: version ? undefined : facts.loader,
289
+ fileId: version?.id,
290
+ });
291
+ attempt.status = result.status;
292
+ attempt.message = result.message ?? result.name;
293
+ if (result.modId && ["ingested", "replaced", "already_ingested"].includes(result.status)) {
294
+ const indexed = await reindexClasses(result.modId).catch((err) => ({ indexed: 0, failed: 1, skipped: 0, error: err instanceof Error ? err.message : String(err) }));
295
+ attempt.message = (attempt.message ? attempt.message + "; " : "") + "indexed " + indexed.indexed + " classes";
296
+ }
297
+ }
298
+ catch (err) {
299
+ attempt.status = "failed";
300
+ attempt.message = err instanceof Error ? err.message : String(err);
301
+ }
302
+ }
303
+ return { attempted: attempts.length, attempts };
304
+ }
305
+ async function findRemoteMod(terms, candidate, facts) {
306
+ for (const term of terms) {
307
+ const found = await searchMods(term, 8);
308
+ const ids = found?.mods ?? [];
309
+ if (ids.length === 0)
310
+ continue;
311
+ const mods = await getModsBatch(ids.slice(0, 8));
312
+ const wanted = normalized(term);
313
+ const byName = mods
314
+ .map((m) => ({ mod: m, score: remoteScore(m, wanted, candidate, facts) }))
315
+ .sort((a, b) => a.score - b.score || b.mod.installs - a.mod.installs);
316
+ if (byName[0] && byName[0].score < 6)
317
+ return byName[0].mod;
318
+ }
319
+ return null;
320
+ }
321
+ function remoteScore(mod, wanted, candidate, facts) {
322
+ const name = normalized(mod.name);
323
+ const links = (mod.links ?? []).map((l) => normalized(l.link + " " + l.name + " " + l.type)).join(" ");
324
+ if (name === wanted)
325
+ return 0;
326
+ if (links.includes(wanted))
327
+ return 1;
328
+ if (name.includes(wanted) || wanted.includes(name))
329
+ return 2;
330
+ if (mod.versions?.some((v) => candidate.jars.some((j) => normalized(v.name) === normalized(j))))
331
+ return 0;
332
+ if (facts.loader && !mod.versions?.some((v) => versionMatches(v, facts)))
333
+ return 5;
334
+ return 6;
335
+ }
336
+ function pickRemoteVersion(mod, candidate, facts) {
337
+ const jars = candidate.jars.map(normalized);
338
+ const exactJar = mod.versions?.find((v) => jars.includes(normalized(v.name)));
339
+ if (exactJar)
340
+ return exactJar;
341
+ return mod.versions?.find((v) => versionMatches(v, facts));
342
+ }
343
+ function versionMatches(version, facts) {
344
+ if (facts.minecraftVersion && !version.targets.some((t) => t.type === "game" && t.version === facts.minecraftVersion))
345
+ return false;
346
+ if (facts.loader && !version.targets.some((t) => t.type === "modloader" && t.name.toLowerCase() === facts.loader))
347
+ return false;
348
+ return true;
349
+ }
350
+ function scoreCandidate(c) {
351
+ let score = c.frameCount;
352
+ if (c.dbId)
353
+ score += 1000;
354
+ if (c.source === "mod_loading_issue")
355
+ score += 80;
356
+ if (c.source === "dependency")
357
+ score += 70;
358
+ if (c.source === "stack")
359
+ score += 60;
360
+ if (c.source === "jar")
361
+ score += 40;
362
+ if (c.source === "tick_context")
363
+ score += 20;
364
+ if (c.source === "package")
365
+ score -= 20;
366
+ return score;
367
+ }
368
+ function extractJar(line) {
369
+ const match = line.match(/\[([^\]\r\n]*?\.jar)(?:[!%\]\s:/?].*)?\]/i);
370
+ if (!match)
371
+ return undefined;
372
+ return basename(match[1].split(/[!%]/)[0]);
373
+ }
374
+ function modIdFromJar(jar) {
375
+ if (!jar)
376
+ return undefined;
377
+ const base = stripJarVersion(jar);
378
+ return cleanModId(base.replace(/[^a-z0-9_.-]+/gi, "_"));
379
+ }
380
+ function stripJarVersion(jar) {
381
+ return basename(jar).replace(/\.jar$/i, "").replace(/[-_]?\d[\w.+-]*$/i, "");
382
+ }
383
+ function modIdFromClass(className) {
384
+ const parts = className.split("/").map(cleanModId).filter(Boolean);
385
+ if (parts.length === 0)
386
+ return undefined;
387
+ if (["net/minecraft", "com/mojang", "org/spongepowered", "cpw/mods", "java/", "javax/"].some((p) => className.startsWith(p)))
388
+ return undefined;
389
+ if (["com", "org", "net", "io", "me", "dev"].includes(parts[0]) && parts[1])
390
+ return parts[1];
391
+ if (["mcjty"].includes(parts[0]) && parts[1])
392
+ return parts[1];
393
+ return parts[0];
394
+ }
395
+ function normalizeClassName(value) {
396
+ return value.replace(/\./g, "/");
397
+ }
398
+ function cleanModId(value) {
399
+ return (value ?? "").trim().toLowerCase().replace(/^mods\//, "").replace(/\.jar$/i, "").replace(/[^a-z0-9_.-]+/g, "_").replace(/^_+|_+$/g, "");
400
+ }
401
+ function addModId(set, value) {
402
+ const modId = cleanModId(value);
403
+ if (modId && !SKIP_DEP_IDS.has(modId))
404
+ set.add(modId);
405
+ }
406
+ function basename(path) {
407
+ return path.replace(/\\/g, "/").split("/").pop() ?? path;
408
+ }
409
+ function normalized(value) {
410
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, "");
411
+ }
412
+ function escapeRegExp(value) {
413
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
414
+ }
84
415
  export async function findMissingDeps(mcVersion, loader) {
85
416
  const allMods = await listAllMods();
86
- // Full ingested modId set (not filtered — deps may cross mcVersion boundaries)
417
+ // Full ingested modId set (deps may cross mcVersion boundaries)
87
418
  const ingestedIds = new Set(allMods.map((m) => m.modId));
88
419
  // Filter comparison pool to mcVersion/loader if requested
89
420
  const pool = allMods.filter((m) => {
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/tools/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAmC,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,wDAAwD;AACxD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc;IAC9D,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO;IAC5D,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW;IAC9D,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB;IAChE,sBAAsB,EAAE,4BAA4B,EAAE,YAAY;IAClE,KAAK,EAAE,WAAW,EAAE,KAAK;CAC5B,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,qBAAqB,GAAG,CAAC,CAAC;AA4ChC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe;IACjD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,MAAM,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACnD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACvB,IAAI,UAAU,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS;QAC/B,CAAC,CAAC,MAAM,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC;QACtD,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC;IAEhF,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,kBAAkB,CAAC,EAAE,CAAC;QACzH,MAAM,GAAG,MAAM,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACnB,UAAU,GAAG,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9F,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK;QAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI;QACpB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KACjC,CAAC,CAAC,CAAC;IAEJ,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC;IACnD,MAAM,eAAe,GACjB,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,GAAG;QAC1D,CAAC,CAAC,GAAG,YAAY,IAAI,SAAS,CAAC,MAAM,qIAAqI;QAC1K,CAAC,CAAC,SAAS,CAAC;IAEpB,OAAO;QACH,QAAQ;QACR,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QACzD,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3B,gBAAgB;QAChB,WAAW,EAAE,SAAS,CAAC,MAAM;QAC7B,gBAAgB,EAAE,UAAU;QAC5B,kBAAkB,EAAE,YAAY;QAChC,UAAU;QACV,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACN,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,UAAoB;IAChD,IAAI,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC1C,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAChC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,2KAA2K,CAAC;IAC7L,MAAM,OAAO,GAAG,iGAAiG,CAAC;IAElH,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC;gBACR,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBACZ,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE;gBAChB,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;aACxB,CAAC,CAAC;YACH,SAAS;QACb,CAAC;QACD,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC;YACJ,MAAM,CAAC,IAAI,CAAC;gBACR,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;gBACZ,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE;gBAChB,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC;aACxB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACpC,MAAM,KAAK,GAAe,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC3G,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IACtE,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1G,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;WAChF,OAAO,CAAC,KAAK,CAAC,yEAAyE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7G,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE;WACxG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IACvE,IAAI,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;QAAE,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;SAC3D,IAAI,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;QAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;SAC5D,IAAI,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC;QAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IAE/D,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAE/F,MAAM,OAAO,GAAG,uEAAuE,CAAC;IACxF,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG;YACV,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YAC3D,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YAClE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;SACzE,CAAC;QACF,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,sBAAsB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChE,sBAAsB,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAE1F,KAAK,MAAM,WAAW,IAAI,CAAC,2BAA2B,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,oBAAoB,CAAC,EAAE,CAAC;QACrH,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,YAAY,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC7C,IAAI,CAAC;gBAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxD,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,UAA8B,EAAE,KAAiB;IAC3F,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO;IACpD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO;IAC1G,IAAI,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC;QAAE,OAAO;IAC1G,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,2EAA2E,CAAC,CAAC;IAC/G,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC;gBAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC1C,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,IAAI,CAAC,EAAE,CAAC;gBAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC1C,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,IAAI,CAAC,EAAE,CAAC;gBAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC1C,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,IAAI,CAAC;gBAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CACpB,MAAqB,EACrB,IAA4D,EAC5D,KAAiB,EACjB,gBAA0B;IAE1B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;IAEhD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,MAAc,EAAE,KAAmB,EAAE,OAAgB,EAAE,IAAoB,EAAE,MAAM,GAAG,UAAU,EAAE,EAAE;QAC5H,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO;QAC9C,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;YAC/B,KAAK;YACL,OAAO;YACP,IAAI,EAAE,IAAI,IAAI,IAAI;YAClB,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,EAAE;YACR,MAAM;YACN,OAAO,EAAE,EAAE;SACd,CAAC;QACF,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC;YAAE,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;QAC1E,IAAI,IAAI;YAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;QACzE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,KAAK,EAAE,CAAC;YACR,CAAC,CAAC,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;gBAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxE,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzE,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,GAAG,EAAE,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACnG,SAAS;QACb,CAAC;QACD,IAAI,KAAK,CAAC,KAAK;YAAE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACxG,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,QAAQ;YAAE,GAAG,CAAC,QAAQ,EAAE,gCAAgC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7F,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrD,IAAI,YAAY;gBAAE,GAAG,CAAC,YAAY,EAAE,kCAAkC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/G,CAAC;IACL,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACzC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,0CAA0C,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAC9G,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,QAAQ;YAAE,GAAG,CAAC,QAAQ,EAAE,kCAAkC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACvG,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,gCAAgC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9F,IAAI,GAAG,CAAC,UAAU;YAAE,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,6BAA6B,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACrH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,SAAS;YAAE,GAAG,CAAC,SAAS,EAAE,qCAAqC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACrH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;SAC1F,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChI,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,UAAuB,EAAE,MAAqB,EAAE,KAAiB;IAChG,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC/J,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzI,MAAM,OAAO,GAAoB,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACxF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC;YAC7B,IAAI,OAAO;gBAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,EAAE,EAAE;gBAC9C,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB;gBACvD,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;gBAC1C,MAAM,EAAE,OAAO,EAAE,EAAE;aACtB,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;YAChD,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpK,OAAO,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;YAClH,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC1B,OAAO,CAAC,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;IACL,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAe,EAAE,SAAoB,EAAE,KAAiB;IACjF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAC/B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI;aACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;aACzE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1E,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,MAAc,EAAE,SAAoB,EAAE,KAAiB;IACrF,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvG,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1G,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACnF,OAAO,CAAC,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,SAAoB,EAAE,KAAiB;IAC3E,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,OAAsB,EAAE,KAAiB;IAC7D,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IACpI,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAChI,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,CAAY;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,IAAI,IAAI,CAAC;IAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,mBAAmB;QAAE,KAAK,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,CAAC,MAAM,KAAK,YAAY;QAAE,KAAK,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;QAAE,KAAK,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK;QAAE,KAAK,IAAI,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,KAAK,cAAc;QAAE,KAAK,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,IAAI,EAAE,CAAC;IACxC,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACtE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAC9B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAChC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB;IACrC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/I,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACrC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IACzC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACnJ,CAAC;AAED,SAAS,QAAQ,CAAC,GAAgB,EAAE,KAAa;IAC7C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC7B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAkB,EAAE,MAAe;IACrE,MAAM,OAAO,GAAG,MAAM,WAAW,EAAE,CAAC;IAEpC,gEAAgE;IAChE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzD,0DAA0D;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9B,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAChE,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IAIH,MAAM,OAAO,GAMR,EAAE,CAAC;IACR,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,IAAI,GAAe,EAAE,CAAC;QAC1B,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC;YAC7B,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,GAAG,EAAE,CAAC;QACd,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAS;YAClD,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC1B,SAAS,EAAE,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC;oBACT,UAAU,EAAE,GAAG,CAAC,KAAK;oBACrB,iBAAiB,EAAE,GAAG,CAAC,WAAW;oBAClC,QAAQ,EAAE,GAAG,CAAC,EAAE;oBAChB,YAAY,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;oBAChC,SAAS,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI;iBAClC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO;QACH,SAAS,EAAE,SAAS,IAAI,KAAK;QAC7B,MAAM,EAAE,MAAM,IAAI,KAAK;QACvB,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,OAAO;QACP,SAAS;QACT,WAAW,EAAE,OAAO,CAAC,MAAM;KAC9B,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/tools/ingest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/tools/ingest.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import { enqueueModEmbed } from "../embed-queue.js";
12
12
  import { buildModGraph, ensureGraphify } from "./graphify.js";
13
13
  import { findModByJarPath, findModByDupKey, findModBySha512, createMod, updateMod, findModById, listAllMods, countModClasses, createModClasses, findModByModId, deleteModById, listModsSlim, mcVersionWhere, } from "../repositories/mod.js";
14
14
  import { getDb } from "../db.js";
15
+ import { serializeArray } from "../db-backend.js";
15
16
  import { validateDbId } from "../validate.js";
16
17
  // ── Platform adapter registry ─────────────────────────────────────────────────
17
18
  const PLATFORM_ADAPTERS = [
@@ -156,7 +157,7 @@ export async function ingestMod(jarPath, skipSource = false, replace = false) {
156
157
  modId: mod.id,
157
158
  className: c.name,
158
159
  superClass: c.superName || null,
159
- interfaces: c.interfaces,
160
+ interfaces: serializeArray(c.interfaces),
160
161
  accessFlags: c.accessFlags,
161
162
  })));
162
163
  })
@@ -285,7 +286,7 @@ export async function reindexClasses(dbId) {
285
286
  modId: mod.id,
286
287
  className: c.name,
287
288
  superClass: c.superName || null,
288
- interfaces: c.interfaces,
289
+ interfaces: JSON.stringify(c.interfaces),
289
290
  accessFlags: c.accessFlags,
290
291
  })));
291
292
  indexed++;