typescript-is
typescript-is copied to clipboard
feat: support symlinked packages
When using package managers like pnpm
or yarn v3
with the pnpm
linker, the current check for methods that come from this library doesn't work. The reason is that path.resolve(signature.declaration.getSourceFile().fileName
is a path like node_modules/typescript-is/index.d.ts
, but path.resolve(path.join(__dirname, '..', '..', 'index.d.ts'))
looks like this node_modules/.store/typescript-is-virtual-6354fcdb88/node_modules/typescript-is/index.d.ts
. The former folder is a symlink to the latter.
Using fs.realpathSync
we can resolve the symlinked path to the real one and make sure the transformer works in these contexts.
I threw in some caching for the lookup via PartialVisitorContext.canonicalPaths
, if this isn't desired, it also works using fs
directly.