@tevm/ts-plugin
Version:
A typescript plugin for tevm
25 lines (23 loc) • 849 B
text/typescript
import { createHostDecorator } from '../factories/index.js'
import { isRelativeSolidity, isSolidity } from '../utils/index.js'
/**
* Decorate `LangaugeServerHost.getScriptKind` to return TS type for `.sol` files
* This lets the ts-server expect `.sol` files to resolve to `.d.ts` files in `resolveModuleNameLiterals`
*/
export const getScriptKindDecorator = createHostDecorator((createInfo, ts, _logger, _config) => {
return {
getScriptKind: (fileName) => {
// TODO we should check if it is using ts baseUrl or paths in future
if (isRelativeSolidity(fileName)) {
return ts.ScriptKind.TS
}
if (isSolidity(fileName)) {
return ts.ScriptKind.External
}
if (!createInfo.languageServiceHost.getScriptKind) {
return ts.ScriptKind.Unknown
}
return createInfo.languageServiceHost.getScriptKind(fileName)
},
}
})