diff --git a/.circleci/config.yml b/.circleci/config.yml index 4fe9eff968bf30..e52d49619d63a7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -423,12 +423,6 @@ jobs: - run: name: pnpm test:e2e command: pnpm test:e2e - - run: - name: Can we generate the @mui/material umd build? - command: pnpm --filter @mui/material build:umd - - run: - name: Test umd release - command: pnpm test:umd test_e2e_website: # NOTE: This workflow runs after successful docs deploy. See /test/e2e-website/README.md#ci <<: *default-job diff --git a/babel.config.js b/babel.config.js index 6b373018b036be..dd9917d435f3a7 100644 --- a/babel.config.js +++ b/babel.config.js @@ -13,7 +13,7 @@ const productionPlugins = [ ]; module.exports = function getBabelConfig(api) { - const useESModules = api.env(['regressions', 'modern', 'stable', 'rollup']); + const useESModules = api.env(['regressions', 'modern', 'stable']); const defaultAlias = { '@mui/material': resolveAliasPath('./packages/mui-material/src'), @@ -142,16 +142,6 @@ module.exports = function getBabelConfig(api) { ], ], }, - rollup: { - plugins: [ - [ - 'babel-plugin-module-resolver', - { - alias: defaultAlias, - }, - ], - ], - }, test: { sourceMaps: 'both', plugins: [ diff --git a/docs/data/material/getting-started/installation/installation.md b/docs/data/material/getting-started/installation/installation.md index b740437dafa801..6c342b75c5313d 100644 --- a/docs/data/material/getting-started/installation/installation.md +++ b/docs/data/material/getting-started/installation/installation.md @@ -159,20 +159,12 @@ For instance, via Google Web Fonts: ## CDN You can start using Material UI right away with minimal front-end infrastructure by installing it via CDN, which is a great option for rapid prototyping. -Follow [this CDN example](https://github.com/mui/material-ui/tree/master/examples/material-ui-via-cdn) to get started. + + + +Follow [this CDN example](https://github.com/mui/material-ui/tree/next/examples/material-ui-via-cdn) to get started. :::error We do _not_ recommend using this approach in production. It requires the client to download the entire library—regardless of which components are actually used—which negatively impacts performance and bandwidth utilization. ::: - -Two Universal Module Definition (UMD) files are provided: - -- one for development: https://unpkg.com/@mui/material@latest/umd/material-ui.development.js -- one for production: https://unpkg.com/@mui/material@latest/umd/material-ui.production.min.js - -:::warning -The UMD links use the `latest` tag to point to the latest version of the library. -This pointer is _unstable_ and subject to change as we release new versions. -You should consider pointing to a specific version, such as [v5.0.0](https://unpkg.com/@mui/material@5.0.0/umd/material-ui.development.js). -::: diff --git a/docs/data/material/migration/migration-v5/migration-v5.md b/docs/data/material/migration/migration-v5/migration-v5.md index 4042fa86648dc2..de104758f04fc5 100644 --- a/docs/data/material/migration/migration-v5/migration-v5.md +++ b/docs/data/material/migration/migration-v5/migration-v5.md @@ -23,3 +23,9 @@ The steps you need to take to migrate from Material UI v5 to v6 are described This list is a work in progress. Expect updates as new breaking changes are introduced. ::: + +### UMD bundle was removed + + + +The UMD bundle is no longer provided. This was replaced in favor of [ESM CDNs](https://esm.sh/). Please refer to the [CDN docs](https://next.mui.com/material-ui/getting-started/installation/#cdn) for alternatives. diff --git a/examples/material-ui-via-cdn/README.md b/examples/material-ui-via-cdn/README.md index fea6b75a3cce21..ae7543e2eee7ee 100644 --- a/examples/material-ui-via-cdn/README.md +++ b/examples/material-ui-via-cdn/README.md @@ -19,7 +19,7 @@ open index.html ## The idea behind the example -You can start using Material UI with minimal front-end infrastructure, which is great for prototyping. +You can start using Material UI with minimal front-end infrastructure, which is great for prototyping. It uses [ESM CDNs](https://esm.sh/). We discourage using this approach in production, though. The client has to download the entire library, regardless of which components are used, affecting performance and bandwidth usage. @@ -27,15 +27,6 @@ The client has to download the entire library, regardless of which components ar [The live preview.](https://rawcdn.githack.com/mui/material-ui/next/examples/material-ui-via-cdn/index.html) -## UMD releases - -We are providing two Universal Module Definition (UMD) files: - -- one for development: https://unpkg.com/@mui/material@latest/umd/material-ui.development.js -- one for production: https://unpkg.com/@mui/material@latest/umd/material-ui.production.min.js - - - ## What's next? You now have a working example project. diff --git a/examples/material-ui-via-cdn/index.html b/examples/material-ui-via-cdn/index.html index 5eec9b06b61bd3..253082f973bc5b 100644 --- a/examples/material-ui-via-cdn/index.html +++ b/examples/material-ui-via-cdn/index.html @@ -4,19 +4,6 @@ My page - - - - @@ -26,91 +13,32 @@ /> +
- + + diff --git a/package.json b/package.json index 415e179266eed6..78891f29556539 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,6 @@ "test:regressions:dev": "concurrently \"pnpm test:regressions:build --watch\" \"pnpm test:regressions:server\"", "test:regressions:run": "mocha --config test/regressions/.mocharc.js --delay 'test/regressions/**/*.test.js'", "test:regressions:server": "serve test/regressions -p 5001", - "test:umd": "node packages/mui-material/test/umd/run.js", "test:unit": "cross-env NODE_ENV=test mocha 'packages/**/*.test.{js,ts,tsx}' 'docs/**/*.test.{js,ts,tsx}'", "test:argos": "node ./scripts/pushArgos.mjs", "typescript": "lerna run --no-bail --parallel typescript", diff --git a/packages/mui-material/package.json b/packages/mui-material/package.json index 725790fc3f4537..f3fc1e8752c4cb 100644 --- a/packages/mui-material/package.json +++ b/packages/mui-material/package.json @@ -27,11 +27,10 @@ "url": "https://opencollective.com/mui-org" }, "scripts": { - "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:umd && pnpm build:types && pnpm build:copy-files", + "build": "pnpm build:modern && pnpm build:node && pnpm build:stable && pnpm build:types && pnpm build:copy-files", "build:modern": "node ../../scripts/build.mjs modern", "build:node": "node ../../scripts/build.mjs node", "build:stable": "node ../../scripts/build.mjs stable", - "build:umd": "cross-env BABEL_ENV=rollup rollup -c scripts/rollup.config.mjs", "build:copy-files": "node ../../scripts/copyFiles.mjs", "build:types": "node ../../scripts/buildTypes.mjs", "prebuild": "rimraf build tsconfig.build.tsbuildinfo", @@ -58,7 +57,6 @@ "@mui-internal/test-utils": "workspace:^", "@mui/internal-babel-macros": "workspace:^", "@popperjs/core": "^2.11.8", - "@rollup/plugin-replace": "^5.0.5", "@testing-library/dom": "^9.3.4", "@testing-library/user-event": "^14.5.2", "@types/chai": "^4.3.16", @@ -68,7 +66,6 @@ "@types/sinon": "^10.0.20", "chai": "^4.4.1", "css-mediaquery": "^0.1.2", - "express": "^4.19.2", "fast-glob": "^3.3.2", "fs-extra": "^11.2.0", "lodash": "^4.17.21", @@ -76,12 +73,6 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.23.1", - "rollup": "^3.29.4", - "rollup-plugin-babel": "^4.4.0", - "rollup-plugin-commonjs": "^10.1.0", - "rollup-plugin-node-globals": "^1.4.0", - "rollup-plugin-node-resolve": "^5.2.0", - "rollup-plugin-terser": "^7.0.2", "sinon": "^15.2.0" }, "peerDependencies": { diff --git a/packages/mui-material/scripts/rollup.config.mjs b/packages/mui-material/scripts/rollup.config.mjs deleted file mode 100644 index 4ead7695d564cf..00000000000000 --- a/packages/mui-material/scripts/rollup.config.mjs +++ /dev/null @@ -1,227 +0,0 @@ -import { promises as fs, existsSync } from 'fs'; -import * as url from 'url'; -import path from 'path'; -import zlib from 'zlib'; -import { promisify } from 'util'; -import nodeResolve from 'rollup-plugin-node-resolve'; -import commonjs from 'rollup-plugin-commonjs'; -import babel from 'rollup-plugin-babel'; -import replace from '@rollup/plugin-replace'; -import nodeGlobals from 'rollup-plugin-node-globals'; -import { terser } from 'rollup-plugin-terser'; - -const currentDirectory = url.fileURLToPath(new URL('.', import.meta.url)); - -const gzip = promisify(zlib.gzip); - -/** - * @param {{snapshotPath: string}} options - * @returns {import('rollup').Plugin} - */ -function sizeSnapshot(options) { - const snapshotPath = path.resolve(options.snapshotPath); - - /** - * @param {number} size - */ - function formatSize(size) { - return size.toLocaleString(undefined, { style: 'unit', unit: 'byte', unitDisplay: 'short' }); - } - async function computeGzipSize(string) { - const gzipped = await gzip(string); - return gzipped.length; - } - - return { - name: 'size-snapshot', - async renderChunk(rawCode, chunk, outputOptions) { - const code = rawCode.replace(/\r/g, ''); - const gzippedSize = await computeGzipSize(code); - - const sizes = { - minified: code.length, - gzipped: gzippedSize, - }; - - const prettyMinified = formatSize(sizes.minified); - const prettyGzipped = formatSize(sizes.gzipped); - const infoString = - '\n' + - `Computed sizes of "${chunk.fileName}" with "${outputOptions.format}" format\n` + - ` browser parsing size: ${prettyMinified}\n` + - ` download size (gzipped): ${prettyGzipped}\n`; - - // eslint-disable-next-line no-console -- purpose of this plugin - console.info(infoString); - // TODO: Should lock `snapshotPath` since something else might write to `snapshotPath` between read and write - const snapshotContent = await fs.readFile(snapshotPath, { encoding: 'utf8' }).then( - (json) => { - return JSON.parse(json); - }, - () => { - return {}; - }, - ); - await fs.writeFile( - snapshotPath, - JSON.stringify( - { - ...snapshotContent, - [chunk.fileName]: sizes, - }, - null, - 2, - ), - ); - }, - }; -} - -function resolveNestedImport(packageFolder, importee) { - const folder = importee.split('/')[2]; - const resolvedFilename = path.resolve( - currentDirectory, - `../../../packages/${packageFolder}/src/${folder}/index`, - ); - - const resolvedTs = `${resolvedFilename}.ts`; - - if (existsSync(resolvedTs)) { - return resolvedTs; - } - - return `${resolvedFilename}.js`; -} - -// Resolve imports like: -// import { Portal } from '@mui/base/Portal'; -const nestedFolder = { - resolveId: (importee) => { - if (importee.indexOf('@mui/base/') === 0) { - return resolveNestedImport('mui-base', importee); - } - - if (importee.indexOf('@mui/utils/') === 0) { - return resolveNestedImport('mui-utils', importee); - } - - if (importee.indexOf('@mui/private-theming/') === 0) { - return resolveNestedImport('mui-private-theming', importee); - } - - if (importee.indexOf('@mui/styled-engine/') === 0) { - return resolveNestedImport('mui-styled-engine', importee); - } - - if (importee.indexOf('@mui/system/') === 0) { - return resolveNestedImport('mui-system', importee); - } - - return undefined; - }, -}; - -const input = './src/index.js'; -const globals = { - react: 'React', - 'react-dom': 'ReactDOM', -}; -const babelOptions = { - exclude: /node_modules/, - // We are using @babel/plugin-transform-runtime - runtimeHelpers: true, - extensions: ['.js', '.ts', '.tsx'], - configFile: path.resolve(currentDirectory, '../../../babel.config.js'), -}; -const commonjsOptions = { - ignoreGlobal: true, - include: /node_modules/, - namedExports: { - 'node_modules/prop-types/index.js': [ - 'elementType', - 'bool', - 'func', - 'object', - 'oneOfType', - 'element', - ], - 'node_modules/react/jsx-runtime.js': ['jsx', 'jsxs'], - 'node_modules/react-is/index.js': [ - 'ForwardRef', - 'isFragment', - 'isLazy', - 'isMemo', - 'Memo', - 'isValidElementType', - ], - }, -}; -const nodeOptions = { - extensions: ['.js', '.tsx', '.ts'], -}; - -function onwarn(warning) { - if (warning.code === 'MODULE_LEVEL_DIRECTIVE') { - return; - } - if ( - warning.code === 'UNUSED_EXTERNAL_IMPORT' && - warning.source === 'react' && - warning.names.filter((identifier) => identifier !== 'useDebugValue').length === 0 - ) { - // only warn for - // import * as React from 'react' - // if (__DEV__) React.useDebugValue() - // React.useDebug not fully dce'd from prod bundle - // in the sense that it's still imported but unused. Downgrading - // it to a warning as a reminder to fix at some point - console.warn(warning.message); - } else { - throw Error(warning.message); - } -} - -export default [ - { - input, - onwarn, - output: { - file: 'build/umd/material-ui.development.js', - format: 'umd', - name: 'MaterialUI', - globals, - intro: "'use client';", - }, - external: Object.keys(globals), - plugins: [ - nodeResolve(nodeOptions), - nestedFolder, - babel(babelOptions), - commonjs(commonjsOptions), - nodeGlobals(), // Wait for https://github.com/cssinjs/jss/pull/893 - replace({ preventAssignment: true, 'process.env.NODE_ENV': JSON.stringify('development') }), - ], - }, - { - input, - onwarn, - output: { - file: 'build/umd/material-ui.production.min.js', - format: 'umd', - name: 'MaterialUI', - globals, - intro: "'use client';", - }, - external: Object.keys(globals), - plugins: [ - nodeResolve(nodeOptions), - nestedFolder, - babel(babelOptions), - commonjs(commonjsOptions), - nodeGlobals(), // Wait for https://github.com/cssinjs/jss/pull/893 - replace({ preventAssignment: true, 'process.env.NODE_ENV': JSON.stringify('production') }), - terser(), - sizeSnapshot({ snapshotPath: 'size-snapshot.json' }), - ], - }, -]; diff --git a/packages/mui-material/test/umd/run.js b/packages/mui-material/test/umd/run.js deleted file mode 100644 index c588fac3909c70..00000000000000 --- a/packages/mui-material/test/umd/run.js +++ /dev/null @@ -1,133 +0,0 @@ -const http = require('http'); -const path = require('path'); -const playwright = require('playwright'); -const fse = require('fs-extra'); -const express = require('express'); -const { expect } = require('chai'); - -const port = 3090; -const host = '0.0.0.0'; - -function startServer(app) { - const server = http.createServer(app); - - function close() { - // eslint-disable-next-line no-console - console.info('http: server is stopping'); - - return new Promise((resolve, reject) => { - server.close((error) => { - if (error) { - reject(error); - } else { - resolve(); - } - }); - }); - } - - return new Promise((resolve, reject) => { - server.listen(port, host, (error) => { - if (error) { - reject(error); - } else { - // eslint-disable-next-line no-console - console.info(`http: ready on http://${server.address().address}:${server.address().port}`); - - resolve({ close }); - } - }); - }); -} - -async function createApp() { - const app = express(); - const rootPath = path.join(__dirname, '../../../../'); - const umdPath = '/umd.js'; - - let index = await fse.readFile( - path.join(rootPath, 'examples/material-ui-via-cdn/index.html'), - 'utf8', - ); - index = index.replace( - 'https://unpkg.com/@mui/material@latest/umd/material-ui.development.js', - umdPath, - ); - index = index.replace( - 'function App() {', - ` -const { - Button, - Dialog, -} = MaterialUI; - -function App() { - const [open, setOpen] = React.useState(false); - - return ( - - - - 1-2-3-4-5 - - - ); - `, - ); - app.get('/', (req, res) => { - res.send(index); - }); - - const umd = await fse.readFile( - path.join(rootPath, 'packages/mui-material/build/umd/material-ui.development.js'), - 'utf8', - ); - app.get(umdPath, (req, res) => { - res.send(umd); - }); - - return app; -} - -async function startBrowser() { - // eslint-disable-next-line no-console - console.info('browser: start'); - const browser = await playwright.chromium.launch(); - const page = await browser.newPage(); - page.on('pageerror', (err) => { - throw err; - }); - - function close() { - // eslint-disable-next-line no-console - console.info('browser:server is stopping'); - return browser.close(); - } - - return { page, close }; -} - -async function run() { - let server = { close() {} }; - let closeBrowser = () => {}; - try { - const app = await createApp(); - server = await startServer(app); - - const { page, close } = await startBrowser(); - closeBrowser = close; - - await page.goto(`http://${host}:${port}`); - const button = await page.$('button'); - expect(await button.textContent()).to.equal('Super Secret Password'); - await button.click(); - expect(await page.textContent('body')).to.include('1-2-3-4-5'); - } finally { - await Promise.all([closeBrowser(), server.close()]); - } -} - -run().catch((error) => { - console.error('test: ', error); - process.exit(1); -}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53664223b63a37..3987c3fb334984 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1684,9 +1684,6 @@ importers: '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 - '@rollup/plugin-replace': - specifier: ^5.0.5 - version: 5.0.5(rollup@3.29.4) '@testing-library/dom': specifier: ^9.3.4 version: 9.3.4 @@ -1714,9 +1711,6 @@ importers: css-mediaquery: specifier: ^0.1.2 version: 0.1.2 - express: - specifier: ^4.19.2 - version: 4.19.2 fast-glob: specifier: ^3.3.2 version: 3.3.2 @@ -1738,24 +1732,6 @@ importers: react-router-dom: specifier: ^6.23.1 version: 6.23.1(react-dom@18.2.0)(react@18.2.0) - rollup: - specifier: ^3.29.4 - version: 3.29.4 - rollup-plugin-babel: - specifier: ^4.4.0 - version: 4.4.0(@babel/core@7.24.5)(rollup@3.29.4) - rollup-plugin-commonjs: - specifier: ^10.1.0 - version: 10.1.0(rollup@3.29.4) - rollup-plugin-node-globals: - specifier: ^1.4.0 - version: 1.4.0 - rollup-plugin-node-resolve: - specifier: ^5.2.0 - version: 5.2.0(rollup@3.29.4) - rollup-plugin-terser: - specifier: ^7.0.2 - version: 7.0.2(rollup@3.29.4) sinon: specifier: ^15.2.0 version: 15.2.0 @@ -7349,35 +7325,6 @@ packages: resolution: {integrity: sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==} engines: {node: '>=14.0.0'} - /@rollup/plugin-replace@5.0.5(rollup@3.29.4): - resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.29.4) - magic-string: 0.30.5 - rollup: 3.29.4 - dev: true - - /@rollup/pluginutils@5.0.2(rollup@3.29.4): - resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - rollup: 3.29.4 - dev: true - /@rollup/rollup-android-arm-eabi@4.13.0: resolution: {integrity: sha512-5ZYPOuaAqEH/W3gYsRkxQATBW3Ii1MfaT4EQstTnLKViLi2gLSQmlmtTpGucNP3sXEpOiI5tdGhjdE111ekyEg==} cpu: [arm] @@ -8309,12 +8256,6 @@ packages: '@types/scheduler': 0.16.8 csstype: 3.1.3 - /@types/resolve@0.0.8: - resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} - dependencies: - '@types/node': 18.19.33 - dev: true - /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: @@ -8806,12 +8747,6 @@ packages: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} - /acorn@5.7.4: - resolution: {integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} @@ -9137,6 +9072,7 @@ packages: /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: false /array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} @@ -9740,10 +9676,6 @@ packages: /buffer-equal-constant-time@1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - /buffer-es6@4.9.3: - resolution: {integrity: sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==} - dev: true - /buffer-from@0.1.2: resolution: {integrity: sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==} @@ -9781,11 +9713,6 @@ packages: engines: {node: '>=0.2.0'} dev: false - /builtin-modules@3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} - dev: true - /builtins@1.0.3: resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} dev: true @@ -10536,6 +10463,7 @@ packages: engines: {node: '>= 0.6'} dependencies: safe-buffer: 5.2.1 + dev: false /content-type@1.0.5: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} @@ -10635,6 +10563,7 @@ packages: /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: false /cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} @@ -10644,6 +10573,7 @@ packages: /cookie@0.6.0: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + dev: false /core-js-compat@3.36.1: resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} @@ -12253,18 +12183,6 @@ packages: - supports-color dev: false - /estree-walker@0.5.2: - resolution: {integrity: sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==} - dev: true - - /estree-walker@0.6.1: - resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - dev: true - - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -12272,6 +12190,7 @@ packages: /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + dev: false /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} @@ -12413,6 +12332,7 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color + dev: false /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} @@ -12584,6 +12504,7 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color + dev: false /find-babel-config@2.1.1: resolution: {integrity: sha512-5Ji+EAysHGe1OipH7GN4qDjok5Z1uw5KAwDCbicU/4wyTZY7CqOCzcWbG7J5ad9mazq67k89fXlbc1MuIfl9uA==} @@ -12741,6 +12662,7 @@ packages: /forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + dev: false /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -12755,6 +12677,7 @@ packages: /fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} + dev: false /from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} @@ -13821,6 +13744,7 @@ packages: /ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} + dev: false /is-alphabetical@1.0.4: resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} @@ -13996,10 +13920,6 @@ packages: /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - /is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: true - /is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -14057,12 +13977,6 @@ packages: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: false - /is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - dependencies: - '@types/estree': 1.0.5 - dev: true - /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -14415,15 +14329,6 @@ packages: pretty-format: 29.7.0 dev: false - /jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 18.19.33 - merge-stream: 2.0.0 - supports-color: 7.2.0 - dev: true - /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -15486,25 +15391,6 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - /magic-string@0.22.5: - resolution: {integrity: sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==} - dependencies: - vlq: 0.2.3 - dev: true - - /magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /make-dir@2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -15772,6 +15658,7 @@ packages: /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: false /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -15783,6 +15670,7 @@ packages: /methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + dev: false /metro-babel-transformer@0.80.7: resolution: {integrity: sha512-b773yA16DsDQiM4OOzCsr1gwEd+iio9au98o3bj7F/bxVyoz1LuYox06BIdsiLL1o4kV5VtzTu3UXSJ2X0ZGXg==} @@ -16035,6 +15923,7 @@ packages: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true + dev: false /mime@2.6.0: resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} @@ -17478,6 +17367,7 @@ packages: /path-to-regexp@0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: false /path-to-regexp@1.8.0: resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} @@ -17902,10 +17792,6 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dev: true - /process-es6@0.11.6: - resolution: {integrity: sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==} - dev: true - /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} requiresBuild: true @@ -17996,6 +17882,7 @@ packages: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + dev: false /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -19133,85 +19020,6 @@ packages: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} dev: false - /rollup-plugin-babel@4.4.0(@babel/core@7.24.5)(rollup@3.29.4): - resolution: {integrity: sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel. - peerDependencies: - '@babel/core': ^7.24.5 - rollup: '>=0.60.0 <3' - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - rollup: 3.29.4 - rollup-pluginutils: 2.8.2 - dev: true - - /rollup-plugin-commonjs@10.1.0(rollup@3.29.4): - resolution: {integrity: sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-commonjs. - peerDependencies: - rollup: '>=1.12.0' - dependencies: - estree-walker: 0.6.1 - is-reference: 1.2.1 - magic-string: 0.25.9 - resolve: 1.22.8 - rollup: 3.29.4 - rollup-pluginutils: 2.8.2 - dev: true - - /rollup-plugin-node-globals@1.4.0: - resolution: {integrity: sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g==} - dependencies: - acorn: 5.7.4 - buffer-es6: 4.9.3 - estree-walker: 0.5.2 - magic-string: 0.22.5 - process-es6: 0.11.6 - rollup-pluginutils: 2.8.2 - dev: true - - /rollup-plugin-node-resolve@5.2.0(rollup@3.29.4): - resolution: {integrity: sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve. - peerDependencies: - rollup: '>=1.11.0' - dependencies: - '@types/resolve': 0.0.8 - builtin-modules: 3.3.0 - is-module: 1.0.0 - resolve: 1.22.8 - rollup: 3.29.4 - rollup-pluginutils: 2.8.2 - dev: true - - /rollup-plugin-terser@7.0.2(rollup@3.29.4): - resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser - peerDependencies: - rollup: ^2.0.0 - dependencies: - '@babel/code-frame': 7.24.2 - jest-worker: 26.6.2 - rollup: 3.29.4 - serialize-javascript: 4.0.0 - terser: 5.29.2 - dev: true - - /rollup-pluginutils@2.8.2: - resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - dependencies: - estree-walker: 0.6.1 - dev: true - - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: true - /rollup@4.13.0: resolution: {integrity: sha512-3YegKemjoQnYKmsBlOHfMLVPPA5xLkQ8MHLLSw/fBrFaVkEayL51DilPpNNLq1exr98F2B1TzrV0FUlN3gWRPg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -19399,6 +19207,7 @@ packages: statuses: 2.0.1 transitivePeerDependencies: - supports-color + dev: false /sequential-promise-map@1.2.0: resolution: {integrity: sha512-C163WXhlrmenILjQ6T7UBEP1HiDsdEpTVNUwTxFpinzPoO296RD2XvGuXa69t0WE9puVTb4D7qTspabMaVshHA==} @@ -19409,12 +19218,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /serialize-javascript@4.0.0: - resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} - dependencies: - randombytes: 2.1.0 - dev: true - /serialize-javascript@6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: @@ -19447,6 +19250,7 @@ packages: send: 0.18.0 transitivePeerDependencies: - supports-color + dev: false /serve@14.2.3: resolution: {integrity: sha512-VqUFMC7K3LDGeGnJM9h56D3XGKb6KGgOw0cVNtA26yYXHCcpxf3xwCTUaQoWlVS7i8Jdh3GjQkOB23qsXyjoyQ==} @@ -19782,11 +19586,6 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true - /spawn-command@0.0.2: resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==} dev: true @@ -21215,10 +21014,6 @@ packages: fsevents: 2.3.3 dev: true - /vlq@0.2.3: - resolution: {integrity: sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==} - dev: true - /vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} dev: false diff --git a/scripts/copyFiles.mjs b/scripts/copyFiles.mjs index 6a22cb96604213..8ebf82814563b7 100644 --- a/scripts/copyFiles.mjs +++ b/scripts/copyFiles.mjs @@ -22,14 +22,7 @@ async function addLicense(packageData) { */ `; await Promise.all( - [ - './index.js', - './legacy/index.js', - './modern/index.js', - './node/index.js', - './umd/material-ui.development.js', - './umd/material-ui.production.min.js', - ].map(async (file) => { + ['./index.js', './modern/index.js', './node/index.js'].map(async (file) => { try { await prepend(path.resolve(buildPath, file), license); } catch (err) { diff --git a/scripts/sizeSnapshot/create.js b/scripts/sizeSnapshot/create.js index b8b68e60b49fb7..c8b4965dad245e 100644 --- a/scripts/sizeSnapshot/create.js +++ b/scripts/sizeSnapshot/create.js @@ -11,27 +11,6 @@ const MAX_CONCURRENCY = Math.min(8, os.cpus().length); const workspaceRoot = path.join(__dirname, '../../'); const snapshotDestPath = path.join(workspaceRoot, 'size-snapshot.json'); -/** - * @param {object} snapshot snapshot generated by rollup-plugin-size-snapshot - * @returns {object} size snapshot with the same format as a snapshot from size-limit - */ -function normalizeRollupSnapshot(snapshot) { - return { parsed: snapshot.minified, gzip: snapshot.gzipped }; -} - -async function getRollupSize(snapshotPath) { - const rollupSnapshot = await fse.readJSON(snapshotPath); - - return Object.entries(rollupSnapshot).map(([bundlePath, snapshot]) => [ - // path in the snapshot is relative the snapshot itself - path - .relative(workspaceRoot, path.join(path.dirname(snapshotPath), bundlePath)) - // Ensure original ID when the package was located in `packages/material-ui/` - .replace('mui-material', 'material-ui'), - normalizeRollupSnapshot(snapshot), - ]); -} - /** * creates size snapshot for every bundle that built with webpack */ @@ -56,11 +35,7 @@ async function getWebpackSizes(webpackEnvironment) { async function run(argv) { const { analyze, accurateBundles } = argv; - const rollupBundles = [path.join(workspaceRoot, 'packages/mui-material/size-snapshot.json')]; - const bundleSizes = lodash.fromPairs([ - ...(await getWebpackSizes({ analyze, accurateBundles })), - ...lodash.flatten(await Promise.all(rollupBundles.map(getRollupSize))), - ]); + const bundleSizes = lodash.fromPairs([...(await getWebpackSizes({ analyze, accurateBundles }))]); await fse.writeJSON(snapshotDestPath, bundleSizes, { spaces: 2 }); }