From 7aa3ca07b8e5996ca5c61d4f32795187719dc02b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dudak?= Date: Wed, 1 Sep 2021 15:50:00 +0200 Subject: [PATCH] Include TS modules in rollup import resolution --- packages/material-ui/scripts/rollup.config.js | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/packages/material-ui/scripts/rollup.config.js b/packages/material-ui/scripts/rollup.config.js index 37dc9654ae4baa..f18215b3a20869 100644 --- a/packages/material-ui/scripts/rollup.config.js +++ b/packages/material-ui/scripts/rollup.config.js @@ -1,4 +1,4 @@ -import { promises as fs } from 'fs'; +import fs from 'fs'; import path from 'path'; import zlib from 'zlib'; import { promisify } from 'util'; @@ -74,44 +74,40 @@ function sizeSnapshot(options) { }; } +function resolveNestedImport(packageFolder, importee) { + const folder = importee.split('/')[2]; + const resolvedPrefix = path.resolve( + __dirname, + `../../../packages/${packageFolder}/src/${folder}/index`, + ); + + const resolvedTs = `${resolvedPrefix}.ts`; + + if (fs.existsSync(resolvedTs)) { + return resolvedTs; + } + + return `${resolvedPrefix}.js`; +} + // Resolve imports like: // import Portal from '@mui/core/Portal'; const nestedFolder = { resolveId: (importee) => { if (importee.indexOf('@mui/core/') === 0) { - const folder = importee.split('/')[2]; - const resolved = path.resolve( - __dirname, - `../../../packages/material-ui-unstyled/src/${folder}/index.js`, - ); - return resolved; + return resolveNestedImport('material-ui-unstyled', importee); } if (importee.indexOf('@mui/private-theming/') === 0) { - const folder = importee.split('/')[2]; - const resolved = path.resolve( - __dirname, - `../../../packages/material-ui-private-theming/src/${folder}/index.js`, - ); - return resolved; + return resolveNestedImport('material-ui-private-theming', importee); } if (importee.indexOf('@mui/styled-engine/') === 0) { - const folder = importee.split('/')[2]; - const resolved = path.resolve( - __dirname, - `../../../packages/material-ui-styled-engine/src/${folder}/index.js`, - ); - return resolved; + return resolveNestedImport('material-ui-styled-engine', importee); } if (importee.indexOf('@mui/system/') === 0) { - const folder = importee.split('/')[2]; - const resolved = path.resolve( - __dirname, - `../../../packages/material-ui-system/src/${folder}/index.js`, - ); - return resolved; + return resolveNestedImport('material-ui-system', importee); } return undefined;