fix(javascript): retain compiler-dependent module resolution facts

Compare import and require outcomes for static TypeScript references when compiler options are unknown. Preserve branch facts through worker IR and both graph projections; retain declaration fallbacks as candidates without changing explicitly selected paths.

Validation: 210 focused resolver and semantic tests; 21 production-boundary and source-extension tests. A bounded 2,000-reference probe adds about 16–17 ms wall time for dual resolution; full task token costs and real compiled application behavior remain unmeasured.
This commit is contained in:
morluto
2026-10-13 15:58:25 +08:00
parent ded199abcd
commit c923fb0dc9
18 changed files with 503 additions and 100 deletions
@@ -475,7 +475,9 @@ const origin = z
.strictObject({
specifier: z.string(),
importedPath: strings,
resolutionMode: z.enum(["import", "require"]).optional(),
resolutionMode: z
.enum(["import", "require", "compiler-dependent"])
.optional(),
})
.transform(({ resolutionMode, ...rest }) => ({
...rest,
@@ -530,7 +532,9 @@ const coverage = z
});
const moduleLink = z
.strictObject({
resolutionMode: z.enum(["import", "require"]).optional(),
resolutionMode: z
.enum(["import", "require", "compiler-dependent"])
.optional(),
kind: z.enum([
"import",
"type-import",