UNPKG

typescript-transform-paths

Version:

Transforms module resolution paths using TypeScript path mapping and/or custom paths

37 lines 2.26 kB
import path from "node:path"; /* ****************************************************************************************************************** */ // region: TS Helpers /* ****************************************************************************************************************** */ /** Determine output file path for source file */ export function getOutputDirForSourceFile(context, sourceFile) { const { tsInstance, emitHost, outputFileNamesCache, compilerOptions, tsInstance: { getOwnEmitOutputFilePath, getOutputExtension }, } = context; if (outputFileNamesCache.has(sourceFile)) return outputFileNamesCache.get(sourceFile); // Note: In project references, resolved path is different from path. In that case, our output path is already // determined in resolvedPath const outputPath = sourceFile.path && sourceFile.resolvedPath && sourceFile.path !== sourceFile.resolvedPath ? sourceFile.resolvedPath : getOwnEmitOutputFilePath(sourceFile.fileName, emitHost, getOutputExtension(sourceFile.fileName, compilerOptions)); if (!outputPath) throw new Error(`Could not resolve output path for ${sourceFile.fileName}. Please report a GH issue at: ` + `https://github.com/LeDDGroup/typescript-transform-paths/issues`); const res = path.dirname(outputPath); outputFileNamesCache.set(sourceFile, res); return tsInstance.normalizePath(res); } /** Determine if moduleName matches config in paths */ export function isModulePathsMatch(context, moduleName) { const { pathsPatterns, tsInstance: { matchPatternOrExact }, } = context; return !!(pathsPatterns && matchPatternOrExact(pathsPatterns, moduleName)); } /** Create barebones EmitHost (for no-Program transform) */ export function createSyntheticEmitHost(compilerOptions, tsInstance, getCanonicalFileName, fileNames) { return { getCompilerOptions: () => compilerOptions, getCurrentDirectory: tsInstance.sys.getCurrentDirectory, getCommonSourceDirectory: () => tsInstance.getCommonSourceDirectoryOfConfig({ options: compilerOptions, fileNames: fileNames }, !tsInstance.sys.useCaseSensitiveFileNames), getCanonicalFileName, }; } // endregion //# sourceMappingURL=ts-helpers.js.map