From 381b2b56597bfc45e2558d916ad78a7db055f691 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Sun, 7 Jun 2020 19:40:05 -0700 Subject: [PATCH] [Fix] TypeScript: `named`: avoid requiring `typescript` when not using TS Fixes #1805. --- src/ExportMap.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ExportMap.js b/src/ExportMap.js index dfd9ca155..c8f03cf4f 100644 --- a/src/ExportMap.js +++ b/src/ExportMap.js @@ -17,7 +17,7 @@ import { tsConfigLoader } from 'tsconfig-paths/lib/tsconfig-loader' import includes from 'array-includes' -import {parseConfigFileTextToJson} from 'typescript' +let parseConfigFileTextToJson const log = debug('eslint-plugin-import:ExportMap') @@ -459,6 +459,10 @@ ExportMap.parse = function (path, content, context) { try { if (tsConfigInfo.tsConfigPath !== undefined) { const jsonText = fs.readFileSync(tsConfigInfo.tsConfigPath).toString() + if (!parseConfigFileTextToJson) { + // this is because projects not using TypeScript won't have typescript installed + ({parseConfigFileTextToJson} = require('typescript')) + } const tsConfig = parseConfigFileTextToJson(tsConfigInfo.tsConfigPath, jsonText).config return tsConfig.compilerOptions.esModuleInterop } @@ -552,7 +556,9 @@ ExportMap.parse = function (path, content, context) { const isEsModuleInteropTrue = isEsModuleInterop() const exports = ['TSExportAssignment'] - isEsModuleInteropTrue && exports.push('TSNamespaceExportDeclaration') + if (isEsModuleInteropTrue) { + exports.push('TSNamespaceExportDeclaration') + } // This doesn't declare anything, but changes what's being exported. if (includes(exports, n.type)) {