Skip to content
This repository was archived by the owner on Sep 14, 2023. It is now read-only.

Commit 0f82c63

Browse files
committed
fix: resolves nets ts diagnostic error handling
1 parent d0878c8 commit 0f82c63

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

cli/resolveNets.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,40 @@ import { NetSpec } from "../nets/mod.ts"
55

66
const $nets = $.record($.instance(NetSpec as new() => NetSpec, $.tuple(), (_: NetSpec) => []))
77

8+
const $tsDiagnostics = $.field("diagnosticCodes", $.array($.u32))
9+
810
export async function resolveNets(maybeNetsPath?: string): Promise<Record<string, NetSpec>> {
911
const resolvedNetsPath = await resolveNetsPath(maybeNetsPath)
1012
if (resolvedNetsPath.endsWith(".ts")) {
1113
await register()
1214
}
1315
// shimmed by dnt
14-
let nets = await _import(resolvedNetsPath)
16+
let nets = await (async () => {
17+
try {
18+
return await _import(resolvedNetsPath)
19+
} catch (err) {
20+
let errorMessage = `Failed to import nets file ${resolvedNetsPath}`
21+
if ($.is($tsDiagnostics, err)) {
22+
for (const code of new Set(err.diagnosticCodes)) {
23+
errorMessage += `: Typescript compiler error TS${code}`
24+
switch (code) {
25+
case 2305:
26+
errorMessage += ": Did you forget to import from \"capi/nets\"?"
27+
break
28+
case 2307:
29+
errorMessage +=
30+
": Did you set your tsconfig module to \"ESNext\" and moduleResolution to \"node16\"?"
31+
break
32+
default:
33+
break
34+
}
35+
}
36+
} else {
37+
console.error(err)
38+
}
39+
throw new Error(errorMessage)
40+
}
41+
})()
1542
if ("default" in nets) nets = nets.default
1643
$.assert($nets, nets)
1744
for (const key in nets) nets[key]!.name = key

0 commit comments

Comments
 (0)