Skip to content

Commit

Permalink
[code-infra] a few fixes uncovered during ESM updates (#45031)
Browse files Browse the repository at this point in the history
  • Loading branch information
Janpot authored Jan 23, 2025
1 parent 44ba5f7 commit 137c02f
Show file tree
Hide file tree
Showing 23 changed files with 77 additions and 66 deletions.
2 changes: 1 addition & 1 deletion babel.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ module.exports = function getBabelConfig(api) {
'@babel/preset-env',
{
bugfixes: true,
browserslistEnv: process.env.BABEL_ENV || process.env.NODE_ENV,
browserslistEnv: api.env() || process.env.NODE_ENV,
debug: process.env.MUI_BUILD_VERBOSE === 'true',
modules: useESModules ? false : 'commonjs',
shippedProposals: api.env('modern'),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from 'react';
import type {} from '@mui/x-date-pickers/themeAugmentation';
import type {} from '@mui/x-charts/themeAugmentation';
import type {} from '@mui/x-data-grid/themeAugmentation';
import type {} from '@mui/x-data-grid-pro/themeAugmentation';
import type {} from '@mui/x-tree-view/themeAugmentation';
import { alpha } from '@mui/material/styles';
import CssBaseline from '@mui/material/CssBaseline';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { paperClasses } from '@mui/material/Paper';
import { alpha, Theme } from '@mui/material/styles';
import type { DataGridProComponents } from '@mui/x-data-grid-pro/themeAugmentation';
import type { DataGridComponents } from '@mui/x-data-grid/themeAugmentation';
import { menuItemClasses } from '@mui/material/MenuItem';
import { listItemIconClasses } from '@mui/material/ListItemIcon';
import { iconButtonClasses } from '@mui/material/IconButton';
Expand All @@ -12,7 +11,7 @@ import { tablePaginationClasses } from '@mui/material/TablePagination';
import { gray } from '../../../shared-theme/themePrimitives';

/* eslint-disable import/prefer-default-export */
export const dataGridCustomizations: DataGridProComponents<Theme> & DataGridComponents<Theme> = {
export const dataGridCustomizations: DataGridProComponents<Theme> & DataGridProComponents<Theme> = {
MuiDataGrid: {
styleOverrides: {
root: ({ theme }) => ({
Expand Down
118 changes: 63 additions & 55 deletions packages-internal/babel-plugin-resolve-imports/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,74 +41,82 @@ module.exports = function plugin({ types: t }, { outExtension }) {
const cache = new Map();
const extensions = ['.ts', '.tsx', '.js', '.jsx'];
const extensionsSet = new Set(extensions);
return {
visitor: {
ImportOrExportDeclaration(path, state) {
if (path.isExportDefaultDeclaration()) {
// Can't export default from an import specifier
return;
}

if (
(path.isExportDeclaration() && path.node.exportKind === 'type') ||
(path.isImportDeclaration() && path.node.importKind === 'type')
) {
// Ignore type imports, they will get compiled away anyway
return;
}
/**
*
* @param {babel.NodePath<babel.types.StringLiteral>} importSource
* @param {babel.PluginPass} state
*/
function doResolve(importSource, state) {
const importedPath = importSource.node.value;

const source =
/** @type {babel.NodePath<babel.types.StringLiteral | null | undefined> } */ (
path.get('source')
);
if (!importedPath.startsWith('.')) {
// Only handle relative imports
return;
}

if (!source.node) {
// Ignore import without source
return;
}
if (!state.filename) {
throw new Error('filename is not defined');
}

const importedPath = source.node.value;
const importerPath = state.filename;
const importerDir = nodePath.dirname(importerPath);
// start from fully resolved import path
const absoluteImportPath = nodePath.resolve(importerDir, importedPath);

if (!importedPath.startsWith('.')) {
// Only handle relative imports
return;
}
let resolvedPath = cache.get(absoluteImportPath);

if (!state.filename) {
throw new Error('filename is not defined');
}
if (!resolvedPath) {
// resolve to actual file
resolvedPath = resolve(absoluteImportPath, { extensions });

const importerPath = state.filename;
const importerDir = nodePath.dirname(importerPath);
// start from fully resolved import path
const absoluteImportPath = nodePath.resolve(importerDir, importedPath);
if (!resolvedPath) {
throw new Error(`could not resolve "${importedPath}" from "${state.filename}"`);
}

let resolvedPath = cache.get(absoluteImportPath);
const resolvedExtension = nodePath.extname(resolvedPath);
if (outExtension && extensionsSet.has(resolvedExtension)) {
// replace extension
resolvedPath = nodePath.resolve(
nodePath.dirname(resolvedPath),
nodePath.basename(resolvedPath, resolvedExtension) + outExtension,
);
}

if (!resolvedPath) {
// resolve to actual file
resolvedPath = resolve(absoluteImportPath, { extensions });
cache.set(absoluteImportPath, resolvedPath);
}

if (!resolvedPath) {
throw new Error(`could not resolve "${importedPath}" from "${state.filename}"`);
}
const relativeResolvedPath = nodePath.relative(importerDir, resolvedPath);
const importSpecifier = pathToNodeImportSpecifier(relativeResolvedPath);

const resolvedExtension = nodePath.extname(resolvedPath);
if (outExtension && extensionsSet.has(resolvedExtension)) {
// replace extension
resolvedPath = nodePath.resolve(
nodePath.dirname(resolvedPath),
nodePath.basename(resolvedPath, resolvedExtension) + outExtension,
);
}
importSource.replaceWith(t.stringLiteral(importSpecifier));
}

cache.set(absoluteImportPath, resolvedPath);
return {
visitor: {
TSImportType(path, state) {
const source = path.get('argument');
doResolve(source, state);
},
ImportExpression(path, state) {
const source = path.get('source');
if (source.isStringLiteral()) {
doResolve(source, state);
}

const relativeResolvedPath = nodePath.relative(importerDir, resolvedPath);
const importSpecifier = pathToNodeImportSpecifier(relativeResolvedPath);

source.replaceWith(t.stringLiteral(importSpecifier));
},
ImportDeclaration(path, state) {
const source = path.get('source');
doResolve(source, state);
},
ExportNamedDeclaration(path, state) {
const source = path.get('source');
if (source.isStringLiteral()) {
doResolve(source, state);
}
},
ExportAllDeclaration(path, state) {
const source = path.get('source');
doResolve(source, state);
},
},
};
Expand Down
File renamed without changes.
4 changes: 4 additions & 0 deletions packages/mui-lab/src/LoadingButton/LoadingButton.d.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,6 @@
export { default } from '@mui/material/Button';
export * from '@mui/material/Button';
export {
ButtonProps as LoadingButtonProps,
ButtonClassKey as LoadingButtonClassKey,
} from '@mui/material/Button';
2 changes: 1 addition & 1 deletion packages/mui-material/src/AppBar/AppBar.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SxProps } from '@mui/system';
import { OverridableStringUnion } from '@mui/types';
import { OverridableComponent, OverrideProps } from '@mui/material/OverridableComponent';
import { OverridableComponent, OverrideProps } from '../OverridableComponent';
import { PropTypes, Theme } from '..';
import { AppBarClasses } from './appBarClasses';
import { ExtendPaperTypeMap } from '../Paper/Paper';
Expand Down
2 changes: 1 addition & 1 deletion packages/mui-material/src/Card/Card.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from 'react';
import { SxProps } from '@mui/system';
import { DistributiveOmit } from '@mui/types';
import { OverridableComponent, OverrideProps } from '@mui/material/OverridableComponent';
import { OverridableComponent, OverrideProps } from '../OverridableComponent';
import { Theme } from '..';
import { PaperOwnProps } from '../Paper';
import { CardClasses } from './cardClasses';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as React from 'react';
import { DistributiveOmit } from '@mui/types';
import { StyledComponentProps } from './styles';
import { StyledComponentProps } from '../styles';

/**
* A component whose root component can be controlled via a `component` prop.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as React from 'react';
import { OverridableStringUnion } from '@mui/types';
import { SxProps } from '@mui/system';
import { OverridableComponent, OverrideProps } from '@mui/material/OverridableComponent';
import { OverridableComponent, OverrideProps } from '../OverridableComponent';
import { Theme } from '../styles';
import { UsePaginationItem } from '../usePagination/usePagination';
import { PaginationItemClasses } from './paginationItemClasses';
Expand Down
2 changes: 1 addition & 1 deletion packages/mui-material/src/styles/createThemeNoVars.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ export interface ThemeOptions extends Omit<SystemThemeOptions, 'zIndex'>, CssVar
unstable_sxConfig?: SxConfig;
}

interface BaseTheme extends SystemTheme {
export interface BaseTheme extends SystemTheme {
mixins: Mixins;
palette: Palette & (CssThemeVariables extends { enabled: true } ? CssVarsPalette : {});
shadows: Shadows;
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Breakpoints, Breakpoint } from '../createBreakpoints/createBreakpoints';

interface ContainerQueries {
export interface ContainerQueries {
up: Breakpoints['up'];
down: Breakpoints['down'];
between: Breakpoints['between'];
Expand Down
2 changes: 1 addition & 1 deletion scripts/buidApiDocs/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"paths": {
"@mui/base": ["../../packages/mui-base/src"],
"@mui/base/*": ["../../packages/mui-base/src/*"],
"@mui/types": ["../../packages/mui-types/src"],
"@mui/types": ["../../packages/mui-types"],
"@mui/utils": ["../../packages/mui-utils/src"],
"@mui/utils/*": ["../../packages/mui-utils/src/*"]
}
Expand Down

0 comments on commit 137c02f

Please sign in to comment.