From 20259d944da684cfac1713ede23f30814c47e02e Mon Sep 17 00:00:00 2001 From: Convly Date: Tue, 2 Aug 2022 10:52:10 +0200 Subject: [PATCH] Fix ts utils' getConfigPath returning false positive due to ancestors lookup --- .../utils/typescript/lib/utils/get-config-path.js | 12 ++++++++++-- .../typescript/lib/utils/is-using-typescript-sync.js | 2 +- .../typescript/lib/utils/is-using-typescript.js | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/utils/typescript/lib/utils/get-config-path.js b/packages/utils/typescript/lib/utils/get-config-path.js index ae4687bee2..45e65a09d1 100644 --- a/packages/utils/typescript/lib/utils/get-config-path.js +++ b/packages/utils/typescript/lib/utils/get-config-path.js @@ -1,9 +1,17 @@ 'use strict'; +const path = require('path'); const ts = require('typescript'); const DEFAULT_TS_CONFIG_FILENAME = 'tsconfig.json'; -module.exports = (dir, filename = DEFAULT_TS_CONFIG_FILENAME) => { - return ts.findConfigFile(dir, ts.sys.fileExists, filename); +module.exports = (dir, { filename = DEFAULT_TS_CONFIG_FILENAME, ancestorsLookup = false } = {}) => { + const dirAbsolutePath = path.resolve(dir); + const configFilePath = ts.findConfigFile(dirAbsolutePath, ts.sys.fileExists, filename); + + if (!configFilePath || ancestorsLookup) { + return configFilePath; + } + + return configFilePath.startsWith(dirAbsolutePath); }; diff --git a/packages/utils/typescript/lib/utils/is-using-typescript-sync.js b/packages/utils/typescript/lib/utils/is-using-typescript-sync.js index 31b1b49d1e..d5f0c3f025 100644 --- a/packages/utils/typescript/lib/utils/is-using-typescript-sync.js +++ b/packages/utils/typescript/lib/utils/is-using-typescript-sync.js @@ -11,7 +11,7 @@ const getConfigPath = require('./get-config-path'); * @returns {boolean} */ module.exports = (dir, filename = undefined) => { - const filePath = getConfigPath(dir, filename); + const filePath = getConfigPath(dir, { filename }); return fse.pathExistsSync(filePath); }; diff --git a/packages/utils/typescript/lib/utils/is-using-typescript.js b/packages/utils/typescript/lib/utils/is-using-typescript.js index cbabb6b374..a830b54d32 100644 --- a/packages/utils/typescript/lib/utils/is-using-typescript.js +++ b/packages/utils/typescript/lib/utils/is-using-typescript.js @@ -11,7 +11,7 @@ const getConfigPath = require('./get-config-path'); * @returns {Promise} */ module.exports = (dir, filename = undefined) => { - const filePath = getConfigPath(dir, filename); + const filePath = getConfigPath(dir, { filename }); return fse.pathExists(filePath); };