Hey folks, I’ve been experimenting with the native-preview JS API for TS-go API mode, and I’m getting a lot of value from the virtual filesystem callbacks, especially overriding readFile for typechecking.
I’m curious whether there are plans to expose declaration emit through this API as well.
Today, as far as I can tell, the JS API can ask for declaration diagnostics, and the CLI can emit .d.ts files, but there does not seem to be an API-mode equivalent that lets a JS caller capture emitted .d.ts contents while still using the virtual filesystem callbacks.
The use case is an orchestration layer that already supplies source contents through readFile callbacks. I want to extend this system to capture generated declaration text for storage/caching without writing to the real filesystem.
Concretely, I’m wondering whether an API roughly like this would be in scope:
const emittedFiles = new Map<string, string>();
const api = new API({
fs: {
readFile: (filePath) => {
// Optionally provide source contents from a virtual FS.
},
writeFile: (filePath, content) => {
emittedFiles.set(filePath, content);
},
},
});
await api.emit({
project: "/path/to/tsconfig.json",
fileName: "foo.ts", // optional: omit for whole project
emitOnly: "dts",
compilerOptions: {
declaration: true,
emitDeclarationOnly: true,
noCheck: true,
declarationMap: false,
},
});
Hey folks, I’ve been experimenting with the native-preview JS API for TS-go API mode, and I’m getting a lot of value from the virtual filesystem callbacks, especially overriding
readFilefor typechecking.I’m curious whether there are plans to expose declaration emit through this API as well.
Today, as far as I can tell, the JS API can ask for declaration diagnostics, and the CLI can emit
.d.tsfiles, but there does not seem to be an API-mode equivalent that lets a JS caller capture emitted.d.tscontents while still using the virtual filesystem callbacks.The use case is an orchestration layer that already supplies source contents through
readFilecallbacks. I want to extend this system to capture generated declaration text for storage/caching without writing to the real filesystem.Concretely, I’m wondering whether an API roughly like this would be in scope: