diff --git a/lib/internal/DependencyTree.js b/lib/internal/DependencyTree.js new file mode 100644 index 0000000..eb58039 --- /dev/null +++ b/lib/internal/DependencyTree.js @@ -0,0 +1,282 @@ +"use strict"; + +const fs = require("fs"); +const path = require("path"); +const assert = require("assert"); +const NodeModule = require("./NodeModule"); + +class Dependency { + /** + * @param {string} filename + * @param {string} id + * @param {string} [internalID] + */ + constructor(filename, id, internalID = id) { + this.id = id; + this.filename = filename; + this.internalID = internalID; + } + + /** + * @param {string} id + * @returns {Dependency} + */ + setID(id) { + return new Dependency(this.filename, id, this.internalID); + } + + get source() { + const chunks = this.filename.split(path.sep); + return chunks.slice(chunks.lastIndexOf("node_modules") + 1).join("/"); + } +} + +/** @type {Map} */ +const cache = new Map(); + +class DependencyTree { + /** + * @param {import('./NodeModule')} nodeModule + * @param {import('@babel/core')} babel + * @returns {DependencyTree} + */ + static create(nodeModule, babel) { + let tree = cache.get(nodeModule.id); + if (!tree) { + tree = new DependencyTree(nodeModule, babel); + cache.set(nodeModule.id, tree); + } + return tree; + } + + /** + * @param {import('./NodeModule')} nodeModule + * @param {import('@babel/core')} babel + */ + constructor(nodeModule, babel) { + /** + * @readonly + * @protected + */ + this.babel = babel; + + /** + * @readonly + * @protected + */ + this.nodeModule = nodeModule; + + /** + * @type {Map} + * @readonly + * @protected + */ + this.items = new Map(); + + /** + * @type {Map>} + * @readonly + * @protected + */ + this.fileCache = new Map(); + } + + /** + * @param {string} filename + * @returns {Array} + */ + visitFile(filename) { + let statements = this.fileCache.get(filename); + + if (!statements) { + const content = fs.readFileSync(filename, "utf-8"); + const ast = this.babel.parse(content, { + filename, + ast: true, + babelrc: false, + configFile: false, + sourceType: "module", + }); + assert.ok(this.babel.types.isFile(ast)); + statements = ast.program.body; + this.fileCache.set(filename, statements); + } + + return statements; + } + + /** + * @param {string} filename + * @param {import('@babel/types').ExportAllDeclaration} node + * @returns {Generator} + */ + *visitExportAllDeclaration(filename, node) { + const dir = path.dirname(filename); + const sourcePath = NodeModule.resolve(node.source.value, dir); + + assert.ok( + sourcePath, + `failed to resolve '${node.source.value}' from '${dir}'` + ); + + for (const dependency of this.collectDependencies(sourcePath)) { + if (dependency.id !== "default") yield dependency; + } + } + + /** + * @param {import('@babel/types').VariableDeclaration} node + * @returns {Generator} + */ + *visitVariableDeclaration(node) { + const { types: t } = this.babel; + + for (const declaration of node.declarations) { + if (t.isIdentifier(declaration.id)) { + yield declaration.id.name; + } + } + } + + /** + * @param {string} filename + * @param {import('@babel/types').ImportDeclaration} node + * @returns {Generator<*, void, *>} + */ + *visitImportDeclaration(filename, node) { + if (!node.source.value.startsWith(".")) return; + + const { types: t } = this.babel; + const dir = path.dirname(filename); + const sourcePath = NodeModule.resolve(node.source.value, dir); + + assert.ok( + sourcePath, + `failed to resolve '${node.source.value}' from '${dir}'` + ); + + for (const specifier of node.specifiers) { + if (t.isImportNamespaceSpecifier(specifier)) { + yield new Dependency(sourcePath, specifier.local.name, "*"); + break; + } + + if (t.isImportDefaultSpecifier(specifier)) { + yield new Dependency(sourcePath, specifier.local.name, "default"); + } else { + assert.ok(t.isIdentifier(specifier.imported)); + yield new Dependency( + sourcePath, + specifier.local.name, + specifier.imported.name + ); + } + } + } + + /** + * @param {string} filename + * @param {import('@babel/types').ExportNamedDeclaration} node + * @param {Map} imports + * @returns {Generator} + */ + *visitExportNamedDeclaration(filename, node, imports) { + const { types: t } = this.babel; + + if (node.source) { + const dir = path.dirname(filename); + const sourcePath = NodeModule.resolve(node.source.value, dir); + + assert.ok( + sourcePath, + `failed to resolve '${node.source.value}' from '${dir}'` + ); + + const specifiers = new Map( + node.specifiers.map((specifier) => { + assert.ok(t.isExportSpecifier(specifier)); + return [specifier.local.name, specifier]; + }) + ); + + for (const dependency of this.collectDependencies(sourcePath)) { + const specifier = specifiers.get(dependency.id); + + if (specifier) { + specifiers.delete(dependency.id); + assert.ok(t.isIdentifier(specifier.exported)); + yield dependency.setID(specifier.exported.name); + } + } + + assert.ok(!specifiers.size); + } else if (node.specifiers.length) { + for (const specifier of node.specifiers) { + assert.ok(t.isExportSpecifier(specifier)); + assert.ok(t.isIdentifier(specifier.exported)); + + const importedDependency = imports.get(specifier.local.name); + + if (importedDependency) { + yield importedDependency.setID(specifier.exported.name); + } else { + yield new Dependency( + filename, + specifier.exported.name, + specifier.local.name + ); + } + } + } + + if (node.declaration) { + if (t.isVariableDeclaration(node.declaration)) { + for (const id of this.visitVariableDeclaration(node.declaration)) { + yield new Dependency(filename, id); + } + } else if (t.isFunctionDeclaration(node.declaration)) { + assert.ok(node.declaration.id); + yield new Dependency(filename, node.declaration.id.name); + } + } + } + + /** + * @param {string} filename + * @returns {Generator} + * @protected + */ + *collectDependencies(filename = this.nodeModule.entry) { + const { types: t } = this.babel; + + /** @type {Map} */ + const imports = new Map(); + + for (const node of this.visitFile(filename)) { + if (t.isImportDeclaration(node)) { + for (const dependency of this.visitImportDeclaration(filename, node)) { + imports.set(dependency.id, dependency); + } + } else if (t.isExportDefaultDeclaration(node)) { + yield new Dependency(filename, "default"); + } else if (t.isExportAllDeclaration(node)) { + yield* this.visitExportAllDeclaration(filename, node); + } else if (t.isExportNamedDeclaration(node)) { + yield* this.visitExportNamedDeclaration(filename, node, imports); + } + } + } + + /** @returns {Map} */ + get dependencies() { + if (!this.items.size) { + for (const dependency of this.collectDependencies()) { + this.items.set(dependency.id, dependency); + } + } + + return this.items; + } +} + +module.exports = DependencyTree; diff --git a/lib/internal/getModuleExports.js b/lib/internal/getModuleExports.js deleted file mode 100644 index b2a09e6..0000000 --- a/lib/internal/getModuleExports.js +++ /dev/null @@ -1,167 +0,0 @@ -"use strict"; - -const fs = require("fs"); -const path = require("path"); -const assert = require("assert"); -const NodeModule = require("./NodeModule"); - -/** - * @typedef {object} ModuleExport - * @property {string} source - * @property {string} external - * @property {string} internal - */ - -/** - * @param {string} source - * @returns {string} - */ -function makeRelativeSource(source) { - const chunks = source.split(path.sep); - return chunks.slice(chunks.lastIndexOf("node_modules") + 1).join("/"); -} - -/** - * @param {string} filename - * @param {import('@babel/core')} babel - * @returns {Generator} - */ -function* traverseDeep(filename, babel) { - const { types: t } = babel; - const content = fs.readFileSync(filename, "utf-8"); - const ast = babel.parse(content, { - filename, - ast: true, - babelrc: false, - configFile: false, - sourceType: "module", - }); - - assert.ok(t.isFile(ast)); - - const dir = path.dirname(filename); - - /** @type {Map} */ - const imports = new Map(); - - /** @type {Set} */ - const exportedNames = new Set(); - - /** @type {Set} */ - const reexportedModules = new Set(); - - for (const node of ast.program.body) { - if (t.isImportDeclaration(node)) { - const sourcePath = NodeModule.resolve(node.source.value, dir); - - if (sourcePath) { - for (const specifier of node.specifiers) { - imports.set(specifier.local.name, { - source: makeRelativeSource(sourcePath), - name: t.isImportNamespaceSpecifier(specifier) - ? "*" - : t.isImportDefaultSpecifier(specifier) - ? "default" - : t.isIdentifier(specifier.imported) - ? specifier.imported.name - : specifier.imported.value, - }); - } - } - } else if (t.isExportNamedDeclaration(node)) { - if (t.isVariableDeclaration(node.declaration)) { - for (const declaration of node.declaration.declarations) { - if ( - t.isIdentifier(declaration.id) && - t.isIdentifier(declaration.init) - ) { - const internal = declaration.init.name; - const imported = imports.get(internal); - - if (imported) { - const external = declaration.id.name; - - exportedNames.add(external); - - yield { - external, - source: imported.source, - internal: imported.name, - }; - } - } - } - } - - const sourcePath = - node.source && NodeModule.resolve(node.source.value, dir); - - for (const specifier of node.specifiers) { - if (t.isExportSpecifier(specifier)) { - const internal = specifier.local.name; - const external = t.isIdentifier(specifier.exported) - ? specifier.exported.name - : specifier.exported.value; - - exportedNames.add(external); - - if (sourcePath) { - yield { - internal, - external, - source: makeRelativeSource(sourcePath), - }; - } else { - const imported = imports.get(internal); - - if (imported) { - yield { - external, - source: imported.source, - internal: imported.name, - }; - } - } - } - } - } else if (t.isExportAllDeclaration(node)) { - const sourcePath = NodeModule.resolve(node.source.value, dir); - - assert.ok( - sourcePath, - `failed to resolve '${node.source.value}' from '${dir}'` - ); - - reexportedModules.add(sourcePath); - } - } - - for (const reexportedModule of reexportedModules) { - // https://262.ecma-international.org/6.0/#sec-getexportednames - for (const entry of traverseDeep(reexportedModule, babel)) { - if ( - // https://exploringjs.com/es6/leanpub-endnotes.html#fn-modules_2 - entry.external !== "default" && - !exportedNames.has(entry.external) - ) { - yield entry; - } - } - } -} - -/** - * @param {NodeModule} nodeModule - * @param {import('@babel/core')} babel - * @returns {Map} - */ -module.exports = function getModuleExports(nodeModule, babel) { - /** @type {Map} */ - const exports = new Map(); - - for (const entry of traverseDeep(nodeModule.entry, babel)) { - exports.set(entry.external, entry); - } - - return exports; -}; diff --git a/lib/plugin.js b/lib/plugin.js index a3bcae9..68e8fbf 100644 --- a/lib/plugin.js +++ b/lib/plugin.js @@ -1,7 +1,7 @@ "use strict"; const PluginOptions = require("./internal/PluginOptions"); -const getModuleExports = require("./internal/getModuleExports"); +const DependencyTree = require("./internal/DependencyTree"); /** * @param {string} localName @@ -23,33 +23,6 @@ See plugin limitations https://git.io/vFDOO for more details. module.exports = function plugin(babel) { const { types: t } = babel; - /** - * @type {Map< - * string, - * Map - * >} - */ - const moduleExportsCache = new Map(); - - /** - * @param {string} name - * @param {import('./internal/NodeModule')} nodeModule - * @returns {Map< - * string, - * import("./internal/getModuleExports").ModuleExport - * >} - */ - function getCachedModuleExports(name, nodeModule) { - let moduleExports = moduleExportsCache.get(name); - - if (!moduleExports) { - moduleExports = getModuleExports(nodeModule, babel); - moduleExportsCache.set(name, moduleExports); - } - - return moduleExports; - } - return { name: "babel-plugin-direct-import", visitor: { @@ -60,8 +33,7 @@ module.exports = function plugin(babel) { const pluginOptions = PluginOptions.parse(opts); const nodeModule = pluginOptions.modules.get(source.value); if (!nodeModule) return; - - const moduleExports = getCachedModuleExports(source.value, nodeModule); + const tree = DependencyTree.create(nodeModule, babel); for (const specifier of specifiers) { if (t.isImportNamespaceSpecifier(specifier)) { @@ -74,9 +46,9 @@ module.exports = function plugin(babel) { : t.isIdentifier(specifier.imported) ? specifier.imported.name : specifier.imported.value; - const exports = moduleExports.get(moduleName); + const dependency = tree.dependencies.get(moduleName); - if (exports) { + if (dependency) { declaration.node.specifiers = declaration.node.specifiers.filter( (x) => x !== specifier ); @@ -86,16 +58,16 @@ module.exports = function plugin(babel) { declaration.insertBefore( t.importDeclaration( [ - exports.internal === "*" + dependency.internalID === "*" ? t.importNamespaceSpecifier(localName) - : exports.internal === "default" + : dependency.internalID === "default" ? t.importDefaultSpecifier(localName) : t.importSpecifier( localName, - t.identifier(exports.internal) + t.identifier(dependency.internalID) ), ], - t.stringLiteral(exports.source) + t.stringLiteral(dependency.source) ) ); } diff --git a/test/@material-ui/core/exports.spec.js b/test/@material-ui/core/exports.spec.js index 5353487..c97559a 100644 --- a/test/@material-ui/core/exports.spec.js +++ b/test/@material-ui/core/exports.spec.js @@ -4,792 +4,862 @@ const testExports = require("../../testExports"); test("exports", () => { expect(testExports("@material-ui/core")).toMatchInlineSnapshot(` - Map { - "Accordion" => Object { - "external": "Accordion", - "internal": "default", - "source": "@material-ui/core/esm/Accordion/index.js", - }, - "AccordionActions" => Object { - "external": "AccordionActions", - "internal": "default", - "source": "@material-ui/core/esm/AccordionActions/index.js", - }, - "AccordionDetails" => Object { - "external": "AccordionDetails", - "internal": "default", - "source": "@material-ui/core/esm/AccordionDetails/index.js", - }, - "AccordionSummary" => Object { - "external": "AccordionSummary", - "internal": "default", - "source": "@material-ui/core/esm/AccordionSummary/index.js", - }, - "AppBar" => Object { - "external": "AppBar", - "internal": "default", - "source": "@material-ui/core/esm/AppBar/index.js", - }, - "Avatar" => Object { - "external": "Avatar", - "internal": "default", - "source": "@material-ui/core/esm/Avatar/index.js", - }, - "Backdrop" => Object { - "external": "Backdrop", - "internal": "default", - "source": "@material-ui/core/esm/Backdrop/index.js", - }, - "Badge" => Object { - "external": "Badge", - "internal": "default", - "source": "@material-ui/core/esm/Badge/index.js", - }, - "BottomNavigation" => Object { - "external": "BottomNavigation", - "internal": "default", - "source": "@material-ui/core/esm/BottomNavigation/index.js", - }, - "BottomNavigationAction" => Object { - "external": "BottomNavigationAction", - "internal": "default", - "source": "@material-ui/core/esm/BottomNavigationAction/index.js", - }, - "Box" => Object { - "external": "Box", - "internal": "default", - "source": "@material-ui/core/esm/Box/index.js", - }, - "Breadcrumbs" => Object { - "external": "Breadcrumbs", - "internal": "default", - "source": "@material-ui/core/esm/Breadcrumbs/index.js", - }, - "Button" => Object { - "external": "Button", - "internal": "default", - "source": "@material-ui/core/esm/Button/index.js", - }, - "ButtonBase" => Object { - "external": "ButtonBase", - "internal": "default", - "source": "@material-ui/core/esm/ButtonBase/index.js", - }, - "ButtonGroup" => Object { - "external": "ButtonGroup", - "internal": "default", - "source": "@material-ui/core/esm/ButtonGroup/index.js", - }, - "capitalize" => Object { - "external": "capitalize", - "internal": "default", - "source": "@material-ui/core/esm/utils/capitalize.js", - }, - "Card" => Object { - "external": "Card", - "internal": "default", - "source": "@material-ui/core/esm/Card/index.js", - }, - "CardActionArea" => Object { - "external": "CardActionArea", - "internal": "default", - "source": "@material-ui/core/esm/CardActionArea/index.js", - }, - "CardActions" => Object { - "external": "CardActions", - "internal": "default", - "source": "@material-ui/core/esm/CardActions/index.js", - }, - "CardContent" => Object { - "external": "CardContent", - "internal": "default", - "source": "@material-ui/core/esm/CardContent/index.js", - }, - "CardHeader" => Object { - "external": "CardHeader", - "internal": "default", - "source": "@material-ui/core/esm/CardHeader/index.js", - }, - "CardMedia" => Object { - "external": "CardMedia", - "internal": "default", - "source": "@material-ui/core/esm/CardMedia/index.js", - }, - "Checkbox" => Object { - "external": "Checkbox", - "internal": "default", - "source": "@material-ui/core/esm/Checkbox/index.js", - }, - "Chip" => Object { - "external": "Chip", - "internal": "default", - "source": "@material-ui/core/esm/Chip/index.js", - }, - "CircularProgress" => Object { - "external": "CircularProgress", - "internal": "default", - "source": "@material-ui/core/esm/CircularProgress/index.js", - }, - "ClickAwayListener" => Object { - "external": "ClickAwayListener", - "internal": "default", - "source": "@material-ui/core/esm/ClickAwayListener/index.js", - }, - "Collapse" => Object { - "external": "Collapse", - "internal": "default", - "source": "@material-ui/core/esm/Collapse/index.js", - }, - "colors" => Object { - "external": "colors", - "internal": "*", - "source": "@material-ui/core/esm/colors/index.js", - }, - "Container" => Object { - "external": "Container", - "internal": "default", - "source": "@material-ui/core/esm/Container/index.js", - }, - "createChainedFunction" => Object { - "external": "createChainedFunction", - "internal": "default", - "source": "@material-ui/core/esm/utils/createChainedFunction.js", - }, - "createGenerateClassName" => Object { - "external": "createGenerateClassName", - "internal": "createGenerateClassName", - "source": "@material-ui/styles/esm/index.js", - }, - "createMuiTheme" => Object { - "external": "createMuiTheme", - "internal": "default", - "source": "@material-ui/core/esm/styles/createMuiTheme.js", - }, - "createStyles" => Object { - "external": "createStyles", - "internal": "default", - "source": "@material-ui/core/esm/styles/createStyles.js", - }, - "createSvgIcon" => Object { - "external": "createSvgIcon", - "internal": "default", - "source": "@material-ui/core/esm/utils/createSvgIcon.js", - }, - "CssBaseline" => Object { - "external": "CssBaseline", - "internal": "default", - "source": "@material-ui/core/esm/CssBaseline/index.js", - }, - "debounce" => Object { - "external": "debounce", - "internal": "default", - "source": "@material-ui/core/esm/utils/debounce.js", - }, - "deprecatedPropType" => Object { - "external": "deprecatedPropType", - "internal": "default", - "source": "@material-ui/core/esm/utils/deprecatedPropType.js", - }, - "Dialog" => Object { - "external": "Dialog", - "internal": "default", - "source": "@material-ui/core/esm/Dialog/index.js", - }, - "DialogActions" => Object { - "external": "DialogActions", - "internal": "default", - "source": "@material-ui/core/esm/DialogActions/index.js", - }, - "DialogContent" => Object { - "external": "DialogContent", - "internal": "default", - "source": "@material-ui/core/esm/DialogContent/index.js", - }, - "DialogContentText" => Object { - "external": "DialogContentText", - "internal": "default", - "source": "@material-ui/core/esm/DialogContentText/index.js", - }, - "DialogTitle" => Object { - "external": "DialogTitle", - "internal": "default", - "source": "@material-ui/core/esm/DialogTitle/index.js", - }, - "Divider" => Object { - "external": "Divider", - "internal": "default", - "source": "@material-ui/core/esm/Divider/index.js", - }, - "Drawer" => Object { - "external": "Drawer", - "internal": "default", - "source": "@material-ui/core/esm/Drawer/index.js", - }, - "ExpansionPanel" => Object { - "external": "ExpansionPanel", - "internal": "default", - "source": "@material-ui/core/esm/ExpansionPanel/index.js", - }, - "ExpansionPanelActions" => Object { - "external": "ExpansionPanelActions", - "internal": "default", - "source": "@material-ui/core/esm/ExpansionPanelActions/index.js", - }, - "ExpansionPanelDetails" => Object { - "external": "ExpansionPanelDetails", - "internal": "default", - "source": "@material-ui/core/esm/ExpansionPanelDetails/index.js", - }, - "ExpansionPanelSummary" => Object { - "external": "ExpansionPanelSummary", - "internal": "default", - "source": "@material-ui/core/esm/ExpansionPanelSummary/index.js", - }, - "Fab" => Object { - "external": "Fab", - "internal": "default", - "source": "@material-ui/core/esm/Fab/index.js", - }, - "Fade" => Object { - "external": "Fade", - "internal": "default", - "source": "@material-ui/core/esm/Fade/index.js", - }, - "FilledInput" => Object { - "external": "FilledInput", - "internal": "default", - "source": "@material-ui/core/esm/FilledInput/index.js", - }, - "FormControl" => Object { - "external": "FormControl", - "internal": "default", - "source": "@material-ui/core/esm/FormControl/index.js", - }, - "FormControlLabel" => Object { - "external": "FormControlLabel", - "internal": "default", - "source": "@material-ui/core/esm/FormControlLabel/index.js", - }, - "FormGroup" => Object { - "external": "FormGroup", - "internal": "default", - "source": "@material-ui/core/esm/FormGroup/index.js", - }, - "FormHelperText" => Object { - "external": "FormHelperText", - "internal": "default", - "source": "@material-ui/core/esm/FormHelperText/index.js", - }, - "FormLabel" => Object { - "external": "FormLabel", - "internal": "default", - "source": "@material-ui/core/esm/FormLabel/index.js", - }, - "Grid" => Object { - "external": "Grid", - "internal": "default", - "source": "@material-ui/core/esm/Grid/index.js", - }, - "GridList" => Object { - "external": "GridList", - "internal": "default", - "source": "@material-ui/core/esm/GridList/index.js", - }, - "GridListTile" => Object { - "external": "GridListTile", - "internal": "default", - "source": "@material-ui/core/esm/GridListTile/index.js", - }, - "GridListTileBar" => Object { - "external": "GridListTileBar", - "internal": "default", - "source": "@material-ui/core/esm/GridListTileBar/index.js", - }, - "Grow" => Object { - "external": "Grow", - "internal": "default", - "source": "@material-ui/core/esm/Grow/index.js", - }, - "Hidden" => Object { - "external": "Hidden", - "internal": "default", - "source": "@material-ui/core/esm/Hidden/index.js", - }, - "Icon" => Object { - "external": "Icon", - "internal": "default", - "source": "@material-ui/core/esm/Icon/index.js", - }, - "IconButton" => Object { - "external": "IconButton", - "internal": "default", - "source": "@material-ui/core/esm/IconButton/index.js", - }, - "Input" => Object { - "external": "Input", - "internal": "default", - "source": "@material-ui/core/esm/Input/index.js", - }, - "InputAdornment" => Object { - "external": "InputAdornment", - "internal": "default", - "source": "@material-ui/core/esm/InputAdornment/index.js", - }, - "InputBase" => Object { - "external": "InputBase", - "internal": "default", - "source": "@material-ui/core/esm/InputBase/index.js", - }, - "InputLabel" => Object { - "external": "InputLabel", - "internal": "default", - "source": "@material-ui/core/esm/InputLabel/index.js", - }, - "isMuiElement" => Object { - "external": "isMuiElement", - "internal": "default", - "source": "@material-ui/core/esm/utils/isMuiElement.js", - }, - "jssPreset" => Object { - "external": "jssPreset", - "internal": "jssPreset", - "source": "@material-ui/styles/esm/index.js", - }, - "LinearProgress" => Object { - "external": "LinearProgress", - "internal": "default", - "source": "@material-ui/core/esm/LinearProgress/index.js", - }, - "Link" => Object { - "external": "Link", - "internal": "default", - "source": "@material-ui/core/esm/Link/index.js", - }, - "List" => Object { - "external": "List", - "internal": "default", - "source": "@material-ui/core/esm/List/index.js", - }, - "ListItem" => Object { - "external": "ListItem", - "internal": "default", - "source": "@material-ui/core/esm/ListItem/index.js", - }, - "ListItemAvatar" => Object { - "external": "ListItemAvatar", - "internal": "default", - "source": "@material-ui/core/esm/ListItemAvatar/index.js", - }, - "ListItemIcon" => Object { - "external": "ListItemIcon", - "internal": "default", - "source": "@material-ui/core/esm/ListItemIcon/index.js", - }, - "ListItemSecondaryAction" => Object { - "external": "ListItemSecondaryAction", - "internal": "default", - "source": "@material-ui/core/esm/ListItemSecondaryAction/index.js", - }, - "ListItemText" => Object { - "external": "ListItemText", - "internal": "default", - "source": "@material-ui/core/esm/ListItemText/index.js", - }, - "ListSubheader" => Object { - "external": "ListSubheader", - "internal": "default", - "source": "@material-ui/core/esm/ListSubheader/index.js", - }, - "makeStyles" => Object { - "external": "makeStyles", - "internal": "default", - "source": "@material-ui/core/esm/styles/makeStyles.js", - }, - "Menu" => Object { - "external": "Menu", - "internal": "default", - "source": "@material-ui/core/esm/Menu/index.js", - }, - "MenuItem" => Object { - "external": "MenuItem", - "internal": "default", - "source": "@material-ui/core/esm/MenuItem/index.js", - }, - "MenuList" => Object { - "external": "MenuList", - "internal": "default", - "source": "@material-ui/core/esm/MenuList/index.js", - }, - "MobileStepper" => Object { - "external": "MobileStepper", - "internal": "default", - "source": "@material-ui/core/esm/MobileStepper/index.js", - }, - "Modal" => Object { - "external": "Modal", - "internal": "default", - "source": "@material-ui/core/esm/Modal/index.js", - }, - "ModalManager" => Object { - "external": "ModalManager", - "internal": "default", - "source": "@material-ui/core/esm/Modal/ModalManager.js", - }, - "MuiThemeProvider" => Object { - "external": "MuiThemeProvider", - "internal": "ThemeProvider", - "source": "@material-ui/styles/esm/index.js", - }, - "NativeSelect" => Object { - "external": "NativeSelect", - "internal": "default", - "source": "@material-ui/core/esm/NativeSelect/index.js", - }, - "NoSsr" => Object { - "external": "NoSsr", - "internal": "default", - "source": "@material-ui/core/esm/NoSsr/index.js", - }, - "OutlinedInput" => Object { - "external": "OutlinedInput", - "internal": "default", - "source": "@material-ui/core/esm/OutlinedInput/index.js", - }, - "ownerDocument" => Object { - "external": "ownerDocument", - "internal": "default", - "source": "@material-ui/core/esm/utils/ownerDocument.js", - }, - "ownerWindow" => Object { - "external": "ownerWindow", - "internal": "default", - "source": "@material-ui/core/esm/utils/ownerWindow.js", - }, - "Paper" => Object { - "external": "Paper", - "internal": "default", - "source": "@material-ui/core/esm/Paper/index.js", - }, - "Popover" => Object { - "external": "Popover", - "internal": "default", - "source": "@material-ui/core/esm/Popover/index.js", - }, - "Popper" => Object { - "external": "Popper", - "internal": "default", - "source": "@material-ui/core/esm/Popper/index.js", - }, - "Portal" => Object { - "external": "Portal", - "internal": "default", - "source": "@material-ui/core/esm/Portal/index.js", - }, - "Radio" => Object { - "external": "Radio", - "internal": "default", - "source": "@material-ui/core/esm/Radio/index.js", - }, - "RadioGroup" => Object { - "external": "RadioGroup", - "internal": "default", - "source": "@material-ui/core/esm/RadioGroup/index.js", - }, - "requirePropFactory" => Object { - "external": "requirePropFactory", - "internal": "default", - "source": "@material-ui/core/esm/utils/requirePropFactory.js", - }, - "responsiveFontSizes" => Object { - "external": "responsiveFontSizes", - "internal": "default", - "source": "@material-ui/core/esm/styles/responsiveFontSizes.js", - }, - "RootRef" => Object { - "external": "RootRef", - "internal": "default", - "source": "@material-ui/core/esm/RootRef/index.js", - }, - "Select" => Object { - "external": "Select", - "internal": "default", - "source": "@material-ui/core/esm/Select/index.js", - }, - "ServerStyleSheets" => Object { - "external": "ServerStyleSheets", - "internal": "ServerStyleSheets", - "source": "@material-ui/styles/esm/index.js", - }, - "setRef" => Object { - "external": "setRef", - "internal": "default", - "source": "@material-ui/core/esm/utils/setRef.js", - }, - "Slide" => Object { - "external": "Slide", - "internal": "default", - "source": "@material-ui/core/esm/Slide/index.js", - }, - "Slider" => Object { - "external": "Slider", - "internal": "default", - "source": "@material-ui/core/esm/Slider/index.js", - }, - "Snackbar" => Object { - "external": "Snackbar", - "internal": "default", - "source": "@material-ui/core/esm/Snackbar/index.js", - }, - "SnackbarContent" => Object { - "external": "SnackbarContent", - "internal": "default", - "source": "@material-ui/core/esm/SnackbarContent/index.js", - }, - "Step" => Object { - "external": "Step", - "internal": "default", - "source": "@material-ui/core/esm/Step/index.js", - }, - "StepButton" => Object { - "external": "StepButton", - "internal": "default", - "source": "@material-ui/core/esm/StepButton/index.js", - }, - "StepConnector" => Object { - "external": "StepConnector", - "internal": "default", - "source": "@material-ui/core/esm/StepConnector/index.js", - }, - "StepContent" => Object { - "external": "StepContent", - "internal": "default", - "source": "@material-ui/core/esm/StepContent/index.js", - }, - "StepIcon" => Object { - "external": "StepIcon", - "internal": "default", - "source": "@material-ui/core/esm/StepIcon/index.js", - }, - "StepLabel" => Object { - "external": "StepLabel", - "internal": "default", - "source": "@material-ui/core/esm/StepLabel/index.js", - }, - "Stepper" => Object { - "external": "Stepper", - "internal": "default", - "source": "@material-ui/core/esm/Stepper/index.js", - }, - "styled" => Object { - "external": "styled", - "internal": "default", - "source": "@material-ui/core/esm/styles/styled.js", - }, - "styleFunction" => Object { - "external": "styleFunction", - "internal": "styleFunction", - "source": "@material-ui/core/esm/Box/Box.js", - }, - "StylesProvider" => Object { - "external": "StylesProvider", - "internal": "StylesProvider", - "source": "@material-ui/styles/esm/index.js", - }, - "SvgIcon" => Object { - "external": "SvgIcon", - "internal": "default", - "source": "@material-ui/core/esm/SvgIcon/index.js", - }, - "SwipeableDrawer" => Object { - "external": "SwipeableDrawer", - "internal": "default", - "source": "@material-ui/core/esm/SwipeableDrawer/index.js", - }, - "Switch" => Object { - "external": "Switch", - "internal": "default", - "source": "@material-ui/core/esm/Switch/index.js", - }, - "Tab" => Object { - "external": "Tab", - "internal": "default", - "source": "@material-ui/core/esm/Tab/index.js", - }, - "Table" => Object { - "external": "Table", - "internal": "default", - "source": "@material-ui/core/esm/Table/index.js", - }, - "TableBody" => Object { - "external": "TableBody", - "internal": "default", - "source": "@material-ui/core/esm/TableBody/index.js", - }, - "TableCell" => Object { - "external": "TableCell", - "internal": "default", - "source": "@material-ui/core/esm/TableCell/index.js", - }, - "TableContainer" => Object { - "external": "TableContainer", - "internal": "default", - "source": "@material-ui/core/esm/TableContainer/index.js", - }, - "TableFooter" => Object { - "external": "TableFooter", - "internal": "default", - "source": "@material-ui/core/esm/TableFooter/index.js", - }, - "TableHead" => Object { - "external": "TableHead", - "internal": "default", - "source": "@material-ui/core/esm/TableHead/index.js", - }, - "TablePagination" => Object { - "external": "TablePagination", - "internal": "default", - "source": "@material-ui/core/esm/TablePagination/index.js", - }, - "TableRow" => Object { - "external": "TableRow", - "internal": "default", - "source": "@material-ui/core/esm/TableRow/index.js", - }, - "TableSortLabel" => Object { - "external": "TableSortLabel", - "internal": "default", - "source": "@material-ui/core/esm/TableSortLabel/index.js", - }, - "Tabs" => Object { - "external": "Tabs", - "internal": "default", - "source": "@material-ui/core/esm/Tabs/index.js", - }, - "TabScrollButton" => Object { - "external": "TabScrollButton", - "internal": "default", - "source": "@material-ui/core/esm/TabScrollButton/index.js", - }, - "TextareaAutosize" => Object { - "external": "TextareaAutosize", - "internal": "default", - "source": "@material-ui/core/esm/TextareaAutosize/index.js", - }, - "TextField" => Object { - "external": "TextField", - "internal": "default", - "source": "@material-ui/core/esm/TextField/index.js", - }, - "ThemeProvider" => Object { - "external": "ThemeProvider", - "internal": "ThemeProvider", - "source": "@material-ui/styles/esm/index.js", - }, - "Toolbar" => Object { - "external": "Toolbar", - "internal": "default", - "source": "@material-ui/core/esm/Toolbar/index.js", - }, - "Tooltip" => Object { - "external": "Tooltip", - "internal": "default", - "source": "@material-ui/core/esm/Tooltip/index.js", - }, - "Typography" => Object { - "external": "Typography", - "internal": "default", - "source": "@material-ui/core/esm/Typography/index.js", - }, - "unstable_createMuiStrictModeTheme" => Object { - "external": "unstable_createMuiStrictModeTheme", - "internal": "default", - "source": "@material-ui/core/esm/styles/createMuiStrictModeTheme.js", - }, - "Unstable_TrapFocus" => Object { - "external": "Unstable_TrapFocus", - "internal": "default", - "source": "@material-ui/core/esm/Unstable_TrapFocus/index.js", - }, - "unstable_useId" => Object { - "external": "unstable_useId", - "internal": "default", - "source": "@material-ui/core/esm/utils/unstable_useId.js", - }, - "unsupportedProp" => Object { - "external": "unsupportedProp", - "internal": "default", - "source": "@material-ui/core/esm/utils/unsupportedProp.js", - }, - "useControlled" => Object { - "external": "useControlled", - "internal": "default", - "source": "@material-ui/core/esm/utils/useControlled.js", - }, - "useEventCallback" => Object { - "external": "useEventCallback", - "internal": "default", - "source": "@material-ui/core/esm/utils/useEventCallback.js", - }, - "useForkRef" => Object { - "external": "useForkRef", - "internal": "default", - "source": "@material-ui/core/esm/utils/useForkRef.js", - }, - "useFormControl" => Object { - "external": "useFormControl", - "internal": "default", - "source": "@material-ui/core/esm/FormControl/useFormControl.js", - }, - "useIsFocusVisible" => Object { - "external": "useIsFocusVisible", - "internal": "default", - "source": "@material-ui/core/esm/utils/useIsFocusVisible.js", - }, - "useMediaQuery" => Object { - "external": "useMediaQuery", - "internal": "default", - "source": "@material-ui/core/esm/useMediaQuery/index.js", - }, - "useRadioGroup" => Object { - "external": "useRadioGroup", - "internal": "default", - "source": "@material-ui/core/esm/RadioGroup/useRadioGroup.js", - }, - "useScrollTrigger" => Object { - "external": "useScrollTrigger", - "internal": "default", - "source": "@material-ui/core/esm/useScrollTrigger/index.js", - }, - "useTheme" => Object { - "external": "useTheme", - "internal": "default", - "source": "@material-ui/core/esm/styles/useTheme.js", - }, - "withMobileDialog" => Object { - "external": "withMobileDialog", - "internal": "default", - "source": "@material-ui/core/esm/withMobileDialog/index.js", - }, - "withStyles" => Object { - "external": "withStyles", - "internal": "default", - "source": "@material-ui/core/esm/styles/withStyles.js", - }, - "withTheme" => Object { - "external": "withTheme", - "internal": "default", - "source": "@material-ui/core/esm/styles/withTheme.js", - }, - "withWidth" => Object { - "external": "withWidth", - "internal": "default", - "source": "@material-ui/core/esm/withWidth/index.js", - }, - "Zoom" => Object { - "external": "Zoom", - "internal": "default", - "source": "@material-ui/core/esm/Zoom/index.js", - }, - } + Array [ + Array [ + "Accordion", + "default", + "@material-ui/core/esm/Accordion/Accordion.js", + ], + Array [ + "AccordionActions", + "default", + "@material-ui/core/esm/AccordionActions/AccordionActions.js", + ], + Array [ + "AccordionDetails", + "default", + "@material-ui/core/esm/AccordionDetails/AccordionDetails.js", + ], + Array [ + "AccordionSummary", + "default", + "@material-ui/core/esm/AccordionSummary/AccordionSummary.js", + ], + Array [ + "AppBar", + "default", + "@material-ui/core/esm/AppBar/AppBar.js", + ], + Array [ + "Avatar", + "default", + "@material-ui/core/esm/Avatar/Avatar.js", + ], + Array [ + "Backdrop", + "default", + "@material-ui/core/esm/Backdrop/Backdrop.js", + ], + Array [ + "Badge", + "default", + "@material-ui/core/esm/Badge/Badge.js", + ], + Array [ + "BottomNavigation", + "default", + "@material-ui/core/esm/BottomNavigation/BottomNavigation.js", + ], + Array [ + "BottomNavigationAction", + "default", + "@material-ui/core/esm/BottomNavigationAction/BottomNavigationAction.js", + ], + Array [ + "Box", + "default", + "@material-ui/core/esm/Box/Box.js", + ], + Array [ + "styleFunction", + "styleFunction", + "@material-ui/core/esm/Box/Box.js", + ], + Array [ + "Breadcrumbs", + "default", + "@material-ui/core/esm/Breadcrumbs/Breadcrumbs.js", + ], + Array [ + "Button", + "default", + "@material-ui/core/esm/Button/Button.js", + ], + Array [ + "ButtonBase", + "default", + "@material-ui/core/esm/ButtonBase/ButtonBase.js", + ], + Array [ + "ButtonGroup", + "default", + "@material-ui/core/esm/ButtonGroup/ButtonGroup.js", + ], + Array [ + "Card", + "default", + "@material-ui/core/esm/Card/Card.js", + ], + Array [ + "CardActionArea", + "default", + "@material-ui/core/esm/CardActionArea/CardActionArea.js", + ], + Array [ + "CardActions", + "default", + "@material-ui/core/esm/CardActions/CardActions.js", + ], + Array [ + "CardContent", + "default", + "@material-ui/core/esm/CardContent/CardContent.js", + ], + Array [ + "CardHeader", + "default", + "@material-ui/core/esm/CardHeader/CardHeader.js", + ], + Array [ + "CardMedia", + "default", + "@material-ui/core/esm/CardMedia/CardMedia.js", + ], + Array [ + "Checkbox", + "default", + "@material-ui/core/esm/Checkbox/Checkbox.js", + ], + Array [ + "Chip", + "default", + "@material-ui/core/esm/Chip/Chip.js", + ], + Array [ + "CircularProgress", + "default", + "@material-ui/core/esm/CircularProgress/CircularProgress.js", + ], + Array [ + "ClickAwayListener", + "default", + "@material-ui/core/esm/ClickAwayListener/ClickAwayListener.js", + ], + Array [ + "Collapse", + "default", + "@material-ui/core/esm/Collapse/Collapse.js", + ], + Array [ + "colors", + "*", + "@material-ui/core/esm/colors/index.js", + ], + Array [ + "Container", + "default", + "@material-ui/core/esm/Container/Container.js", + ], + Array [ + "CssBaseline", + "default", + "@material-ui/core/esm/CssBaseline/CssBaseline.js", + ], + Array [ + "Dialog", + "default", + "@material-ui/core/esm/Dialog/Dialog.js", + ], + Array [ + "DialogActions", + "default", + "@material-ui/core/esm/DialogActions/DialogActions.js", + ], + Array [ + "DialogContent", + "default", + "@material-ui/core/esm/DialogContent/DialogContent.js", + ], + Array [ + "DialogContentText", + "default", + "@material-ui/core/esm/DialogContentText/DialogContentText.js", + ], + Array [ + "DialogTitle", + "default", + "@material-ui/core/esm/DialogTitle/DialogTitle.js", + ], + Array [ + "Divider", + "default", + "@material-ui/core/esm/Divider/Divider.js", + ], + Array [ + "Drawer", + "default", + "@material-ui/core/esm/Drawer/Drawer.js", + ], + Array [ + "ExpansionPanel", + "default", + "@material-ui/core/esm/ExpansionPanel/ExpansionPanel.js", + ], + Array [ + "ExpansionPanelActions", + "default", + "@material-ui/core/esm/ExpansionPanelActions/ExpansionPanelActions.js", + ], + Array [ + "ExpansionPanelDetails", + "default", + "@material-ui/core/esm/ExpansionPanelDetails/ExpansionPanelDetails.js", + ], + Array [ + "ExpansionPanelSummary", + "default", + "@material-ui/core/esm/ExpansionPanelSummary/ExpansionPanelSummary.js", + ], + Array [ + "Fab", + "default", + "@material-ui/core/esm/Fab/Fab.js", + ], + Array [ + "Fade", + "default", + "@material-ui/core/esm/Fade/Fade.js", + ], + Array [ + "FilledInput", + "default", + "@material-ui/core/esm/FilledInput/FilledInput.js", + ], + Array [ + "FormControl", + "default", + "@material-ui/core/esm/FormControl/FormControl.js", + ], + Array [ + "useFormControl", + "default", + "@material-ui/core/esm/FormControl/useFormControl.js", + ], + Array [ + "FormControlLabel", + "default", + "@material-ui/core/esm/FormControlLabel/FormControlLabel.js", + ], + Array [ + "FormGroup", + "default", + "@material-ui/core/esm/FormGroup/FormGroup.js", + ], + Array [ + "FormHelperText", + "default", + "@material-ui/core/esm/FormHelperText/FormHelperText.js", + ], + Array [ + "FormLabel", + "default", + "@material-ui/core/esm/FormLabel/FormLabel.js", + ], + Array [ + "Grid", + "default", + "@material-ui/core/esm/Grid/Grid.js", + ], + Array [ + "GridList", + "default", + "@material-ui/core/esm/GridList/GridList.js", + ], + Array [ + "GridListTile", + "default", + "@material-ui/core/esm/GridListTile/GridListTile.js", + ], + Array [ + "GridListTileBar", + "default", + "@material-ui/core/esm/GridListTileBar/GridListTileBar.js", + ], + Array [ + "Grow", + "default", + "@material-ui/core/esm/Grow/Grow.js", + ], + Array [ + "Hidden", + "default", + "@material-ui/core/esm/Hidden/Hidden.js", + ], + Array [ + "Icon", + "default", + "@material-ui/core/esm/Icon/Icon.js", + ], + Array [ + "IconButton", + "default", + "@material-ui/core/esm/IconButton/IconButton.js", + ], + Array [ + "Input", + "default", + "@material-ui/core/esm/Input/Input.js", + ], + Array [ + "InputAdornment", + "default", + "@material-ui/core/esm/InputAdornment/InputAdornment.js", + ], + Array [ + "InputBase", + "default", + "@material-ui/core/esm/InputBase/InputBase.js", + ], + Array [ + "InputLabel", + "default", + "@material-ui/core/esm/InputLabel/InputLabel.js", + ], + Array [ + "LinearProgress", + "default", + "@material-ui/core/esm/LinearProgress/LinearProgress.js", + ], + Array [ + "Link", + "default", + "@material-ui/core/esm/Link/Link.js", + ], + Array [ + "List", + "default", + "@material-ui/core/esm/List/List.js", + ], + Array [ + "ListItem", + "default", + "@material-ui/core/esm/ListItem/ListItem.js", + ], + Array [ + "ListItemAvatar", + "default", + "@material-ui/core/esm/ListItemAvatar/ListItemAvatar.js", + ], + Array [ + "ListItemIcon", + "default", + "@material-ui/core/esm/ListItemIcon/ListItemIcon.js", + ], + Array [ + "ListItemSecondaryAction", + "default", + "@material-ui/core/esm/ListItemSecondaryAction/ListItemSecondaryAction.js", + ], + Array [ + "ListItemText", + "default", + "@material-ui/core/esm/ListItemText/ListItemText.js", + ], + Array [ + "ListSubheader", + "default", + "@material-ui/core/esm/ListSubheader/ListSubheader.js", + ], + Array [ + "Menu", + "default", + "@material-ui/core/esm/Menu/Menu.js", + ], + Array [ + "MenuItem", + "default", + "@material-ui/core/esm/MenuItem/MenuItem.js", + ], + Array [ + "MenuList", + "default", + "@material-ui/core/esm/MenuList/MenuList.js", + ], + Array [ + "MobileStepper", + "default", + "@material-ui/core/esm/MobileStepper/MobileStepper.js", + ], + Array [ + "Modal", + "default", + "@material-ui/core/esm/Modal/Modal.js", + ], + Array [ + "ModalManager", + "ModalManager", + "@material-ui/core/esm/Modal/ModalManager.js", + ], + Array [ + "NativeSelect", + "default", + "@material-ui/core/esm/NativeSelect/NativeSelect.js", + ], + Array [ + "NoSsr", + "default", + "@material-ui/core/esm/NoSsr/NoSsr.js", + ], + Array [ + "OutlinedInput", + "default", + "@material-ui/core/esm/OutlinedInput/OutlinedInput.js", + ], + Array [ + "Paper", + "default", + "@material-ui/core/esm/Paper/Paper.js", + ], + Array [ + "Popover", + "default", + "@material-ui/core/esm/Popover/Popover.js", + ], + Array [ + "Popper", + "default", + "@material-ui/core/esm/Popper/Popper.js", + ], + Array [ + "Portal", + "default", + "@material-ui/core/esm/Portal/Portal.js", + ], + Array [ + "Radio", + "default", + "@material-ui/core/esm/Radio/Radio.js", + ], + Array [ + "RadioGroup", + "default", + "@material-ui/core/esm/RadioGroup/RadioGroup.js", + ], + Array [ + "useRadioGroup", + "default", + "@material-ui/core/esm/RadioGroup/useRadioGroup.js", + ], + Array [ + "RootRef", + "default", + "@material-ui/core/esm/RootRef/RootRef.js", + ], + Array [ + "Select", + "default", + "@material-ui/core/esm/Select/Select.js", + ], + Array [ + "Slide", + "default", + "@material-ui/core/esm/Slide/Slide.js", + ], + Array [ + "Slider", + "default", + "@material-ui/core/esm/Slider/Slider.js", + ], + Array [ + "Snackbar", + "default", + "@material-ui/core/esm/Snackbar/Snackbar.js", + ], + Array [ + "SnackbarContent", + "default", + "@material-ui/core/esm/SnackbarContent/SnackbarContent.js", + ], + Array [ + "Step", + "default", + "@material-ui/core/esm/Step/Step.js", + ], + Array [ + "StepButton", + "default", + "@material-ui/core/esm/StepButton/StepButton.js", + ], + Array [ + "StepConnector", + "default", + "@material-ui/core/esm/StepConnector/StepConnector.js", + ], + Array [ + "StepContent", + "default", + "@material-ui/core/esm/StepContent/StepContent.js", + ], + Array [ + "StepIcon", + "default", + "@material-ui/core/esm/StepIcon/StepIcon.js", + ], + Array [ + "StepLabel", + "default", + "@material-ui/core/esm/StepLabel/StepLabel.js", + ], + Array [ + "Stepper", + "default", + "@material-ui/core/esm/Stepper/Stepper.js", + ], + Array [ + "hexToRgb", + "hexToRgb", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "rgbToHex", + "rgbToHex", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "hslToRgb", + "hslToRgb", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "decomposeColor", + "decomposeColor", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "recomposeColor", + "recomposeColor", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "getContrastRatio", + "getContrastRatio", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "getLuminance", + "getLuminance", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "emphasize", + "emphasize", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "fade", + "fade", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "darken", + "darken", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "lighten", + "lighten", + "@material-ui/core/esm/styles/colorManipulator.js", + ], + Array [ + "unstable_createMuiStrictModeTheme", + "default", + "@material-ui/core/esm/styles/createMuiStrictModeTheme.js", + ], + Array [ + "createMuiTheme", + "default", + "@material-ui/core/esm/styles/createMuiTheme.js", + ], + Array [ + "createStyles", + "default", + "@material-ui/core/esm/styles/createStyles.js", + ], + Array [ + "makeStyles", + "default", + "@material-ui/core/esm/styles/makeStyles.js", + ], + Array [ + "responsiveFontSizes", + "default", + "@material-ui/core/esm/styles/responsiveFontSizes.js", + ], + Array [ + "styled", + "default", + "@material-ui/core/esm/styles/styled.js", + ], + Array [ + "easing", + "easing", + "@material-ui/core/esm/styles/transitions.js", + ], + Array [ + "duration", + "duration", + "@material-ui/core/esm/styles/transitions.js", + ], + Array [ + "useTheme", + "default", + "@material-ui/core/esm/styles/useTheme.js", + ], + Array [ + "withStyles", + "default", + "@material-ui/core/esm/styles/withStyles.js", + ], + Array [ + "withTheme", + "default", + "@material-ui/core/esm/styles/withTheme.js", + ], + Array [ + "SvgIcon", + "default", + "@material-ui/core/esm/SvgIcon/SvgIcon.js", + ], + Array [ + "SwipeableDrawer", + "default", + "@material-ui/core/esm/SwipeableDrawer/SwipeableDrawer.js", + ], + Array [ + "Switch", + "default", + "@material-ui/core/esm/Switch/Switch.js", + ], + Array [ + "Tab", + "default", + "@material-ui/core/esm/Tab/Tab.js", + ], + Array [ + "Table", + "default", + "@material-ui/core/esm/Table/Table.js", + ], + Array [ + "TableBody", + "default", + "@material-ui/core/esm/TableBody/TableBody.js", + ], + Array [ + "TableCell", + "default", + "@material-ui/core/esm/TableCell/TableCell.js", + ], + Array [ + "TableContainer", + "default", + "@material-ui/core/esm/TableContainer/TableContainer.js", + ], + Array [ + "TableFooter", + "default", + "@material-ui/core/esm/TableFooter/TableFooter.js", + ], + Array [ + "TableHead", + "default", + "@material-ui/core/esm/TableHead/TableHead.js", + ], + Array [ + "TablePagination", + "default", + "@material-ui/core/esm/TablePagination/TablePagination.js", + ], + Array [ + "TableRow", + "default", + "@material-ui/core/esm/TableRow/TableRow.js", + ], + Array [ + "TableSortLabel", + "default", + "@material-ui/core/esm/TableSortLabel/TableSortLabel.js", + ], + Array [ + "Tabs", + "default", + "@material-ui/core/esm/Tabs/Tabs.js", + ], + Array [ + "TabScrollButton", + "default", + "@material-ui/core/esm/TabScrollButton/TabScrollButton.js", + ], + Array [ + "TextareaAutosize", + "default", + "@material-ui/core/esm/TextareaAutosize/TextareaAutosize.js", + ], + Array [ + "TextField", + "default", + "@material-ui/core/esm/TextField/TextField.js", + ], + Array [ + "Toolbar", + "default", + "@material-ui/core/esm/Toolbar/Toolbar.js", + ], + Array [ + "Tooltip", + "default", + "@material-ui/core/esm/Tooltip/Tooltip.js", + ], + Array [ + "Typography", + "default", + "@material-ui/core/esm/Typography/Typography.js", + ], + Array [ + "Unstable_TrapFocus", + "default", + "@material-ui/core/esm/Unstable_TrapFocus/Unstable_TrapFocus.js", + ], + Array [ + "useMediaQuery", + "default", + "@material-ui/core/esm/useMediaQuery/useMediaQuery.js", + ], + Array [ + "useScrollTrigger", + "default", + "@material-ui/core/esm/useScrollTrigger/useScrollTrigger.js", + ], + Array [ + "capitalize", + "default", + "@material-ui/core/esm/utils/capitalize.js", + ], + Array [ + "createChainedFunction", + "default", + "@material-ui/core/esm/utils/createChainedFunction.js", + ], + Array [ + "createSvgIcon", + "default", + "@material-ui/core/esm/utils/createSvgIcon.js", + ], + Array [ + "debounce", + "default", + "@material-ui/core/esm/utils/debounce.js", + ], + Array [ + "deprecatedPropType", + "default", + "@material-ui/core/esm/utils/deprecatedPropType.js", + ], + Array [ + "isMuiElement", + "default", + "@material-ui/core/esm/utils/isMuiElement.js", + ], + Array [ + "ownerDocument", + "default", + "@material-ui/core/esm/utils/ownerDocument.js", + ], + Array [ + "ownerWindow", + "default", + "@material-ui/core/esm/utils/ownerWindow.js", + ], + Array [ + "requirePropFactory", + "default", + "@material-ui/core/esm/utils/requirePropFactory.js", + ], + Array [ + "setRef", + "default", + "@material-ui/core/esm/utils/setRef.js", + ], + Array [ + "unstable_useId", + "default", + "@material-ui/core/esm/utils/unstable_useId.js", + ], + Array [ + "unsupportedProp", + "default", + "@material-ui/core/esm/utils/unsupportedProp.js", + ], + Array [ + "useControlled", + "default", + "@material-ui/core/esm/utils/useControlled.js", + ], + Array [ + "useEventCallback", + "default", + "@material-ui/core/esm/utils/useEventCallback.js", + ], + Array [ + "useForkRef", + "default", + "@material-ui/core/esm/utils/useForkRef.js", + ], + Array [ + "useIsFocusVisible", + "default", + "@material-ui/core/esm/utils/useIsFocusVisible.js", + ], + Array [ + "withMobileDialog", + "default", + "@material-ui/core/esm/withMobileDialog/withMobileDialog.js", + ], + Array [ + "withWidth", + "default", + "@material-ui/core/esm/withWidth/withWidth.js", + ], + Array [ + "isWidthUp", + "isWidthUp", + "@material-ui/core/esm/withWidth/withWidth.js", + ], + Array [ + "isWidthDown", + "isWidthDown", + "@material-ui/core/esm/withWidth/withWidth.js", + ], + Array [ + "Zoom", + "default", + "@material-ui/core/esm/Zoom/Zoom.js", + ], + Array [ + "createGenerateClassName", + "default", + "@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js", + ], + Array [ + "jssPreset", + "default", + "@material-ui/styles/esm/jssPreset/jssPreset.js", + ], + Array [ + "ServerStyleSheets", + "ServerStyleSheets", + "@material-ui/styles/esm/ServerStyleSheets/ServerStyleSheets.js", + ], + Array [ + "StylesProvider", + "default", + "@material-ui/styles/esm/StylesProvider/StylesProvider.js", + ], + Array [ + "ThemeProvider", + "default", + "@material-ui/styles/esm/ThemeProvider/ThemeProvider.js", + ], + ] `); }); diff --git a/test/@material-ui/core/plugin.spec.js b/test/@material-ui/core/plugin.spec.js index 1b0add1..d34007b 100644 --- a/test/@material-ui/core/plugin.spec.js +++ b/test/@material-ui/core/plugin.spec.js @@ -5,13 +5,16 @@ const runPlugin = require("../../runPlugin"); test("transformation", () => { expect( runPlugin( - 'import { Button, colors, makeStyles, ServerStyleSheets } from "@material-ui/core"', - ["@material-ui/core"] + [ + 'import Button from "@material-ui/core/Button"', + 'import { colors, makeStyles, ServerStyleSheets } from "@material-ui/core"', + ].join("\n"), + ["@material-ui/core", "@material-ui/core/Button"] ) ).toMatchInlineSnapshot(` - import Button from "@material-ui/core/esm/Button/index.js"; - import * as colors from "@material-ui/core/esm/colors/index.js"; - import makeStyles from "@material-ui/core/esm/styles/makeStyles.js"; - import { ServerStyleSheets } from "@material-ui/styles/esm/index.js"; - `); + import Button from "@material-ui/core/esm/Button/Button.js"; + import * as colors from "@material-ui/core/esm/colors/index.js"; + import makeStyles from "@material-ui/core/esm/styles/makeStyles.js"; + import { ServerStyleSheets } from "@material-ui/styles/esm/ServerStyleSheets/ServerStyleSheets.js"; + `); }); diff --git a/test/@material-ui/lab/exports.spec.js b/test/@material-ui/lab/exports.spec.js index 8601e0e..0ef2a11 100644 --- a/test/@material-ui/lab/exports.spec.js +++ b/test/@material-ui/lab/exports.spec.js @@ -4,147 +4,162 @@ const testExports = require("../../testExports"); test("exports", () => { expect(testExports("@material-ui/lab")).toMatchInlineSnapshot(` - Map { - "Alert" => Object { - "external": "Alert", - "internal": "default", - "source": "@material-ui/lab/esm/Alert/index.js", - }, - "AlertTitle" => Object { - "external": "AlertTitle", - "internal": "default", - "source": "@material-ui/lab/esm/AlertTitle/index.js", - }, - "Autocomplete" => Object { - "external": "Autocomplete", - "internal": "default", - "source": "@material-ui/lab/esm/Autocomplete/index.js", - }, - "AvatarGroup" => Object { - "external": "AvatarGroup", - "internal": "default", - "source": "@material-ui/lab/esm/AvatarGroup/index.js", - }, - "createFilterOptions" => Object { - "external": "createFilterOptions", - "internal": "createFilterOptions", - "source": "@material-ui/lab/esm/Autocomplete/Autocomplete.js", - }, - "Pagination" => Object { - "external": "Pagination", - "internal": "default", - "source": "@material-ui/lab/esm/Pagination/index.js", - }, - "PaginationItem" => Object { - "external": "PaginationItem", - "internal": "default", - "source": "@material-ui/lab/esm/PaginationItem/index.js", - }, - "Rating" => Object { - "external": "Rating", - "internal": "default", - "source": "@material-ui/lab/esm/Rating/index.js", - }, - "Skeleton" => Object { - "external": "Skeleton", - "internal": "default", - "source": "@material-ui/lab/esm/Skeleton/index.js", - }, - "SpeedDial" => Object { - "external": "SpeedDial", - "internal": "default", - "source": "@material-ui/lab/esm/SpeedDial/index.js", - }, - "SpeedDialAction" => Object { - "external": "SpeedDialAction", - "internal": "default", - "source": "@material-ui/lab/esm/SpeedDialAction/index.js", - }, - "SpeedDialIcon" => Object { - "external": "SpeedDialIcon", - "internal": "default", - "source": "@material-ui/lab/esm/SpeedDialIcon/index.js", - }, - "TabContext" => Object { - "external": "TabContext", - "internal": "default", - "source": "@material-ui/lab/esm/TabContext/index.js", - }, - "TabList" => Object { - "external": "TabList", - "internal": "default", - "source": "@material-ui/lab/esm/TabList/index.js", - }, - "TabPanel" => Object { - "external": "TabPanel", - "internal": "default", - "source": "@material-ui/lab/esm/TabPanel/index.js", - }, - "Timeline" => Object { - "external": "Timeline", - "internal": "default", - "source": "@material-ui/lab/esm/Timeline/index.js", - }, - "TimelineConnector" => Object { - "external": "TimelineConnector", - "internal": "default", - "source": "@material-ui/lab/esm/TimelineConnector/index.js", - }, - "TimelineContent" => Object { - "external": "TimelineContent", - "internal": "default", - "source": "@material-ui/lab/esm/TimelineContent/index.js", - }, - "TimelineDot" => Object { - "external": "TimelineDot", - "internal": "default", - "source": "@material-ui/lab/esm/TimelineDot/index.js", - }, - "TimelineItem" => Object { - "external": "TimelineItem", - "internal": "default", - "source": "@material-ui/lab/esm/TimelineItem/index.js", - }, - "TimelineOppositeContent" => Object { - "external": "TimelineOppositeContent", - "internal": "default", - "source": "@material-ui/lab/esm/TimelineOppositeContent/index.js", - }, - "TimelineSeparator" => Object { - "external": "TimelineSeparator", - "internal": "default", - "source": "@material-ui/lab/esm/TimelineSeparator/index.js", - }, - "ToggleButton" => Object { - "external": "ToggleButton", - "internal": "default", - "source": "@material-ui/lab/esm/ToggleButton/index.js", - }, - "ToggleButtonGroup" => Object { - "external": "ToggleButtonGroup", - "internal": "default", - "source": "@material-ui/lab/esm/ToggleButtonGroup/index.js", - }, - "TreeItem" => Object { - "external": "TreeItem", - "internal": "default", - "source": "@material-ui/lab/esm/TreeItem/index.js", - }, - "TreeView" => Object { - "external": "TreeView", - "internal": "default", - "source": "@material-ui/lab/esm/TreeView/index.js", - }, - "useAutocomplete" => Object { - "external": "useAutocomplete", - "internal": "default", - "source": "@material-ui/lab/esm/useAutocomplete/index.js", - }, - "usePagination" => Object { - "external": "usePagination", - "internal": "default", - "source": "@material-ui/lab/esm/Pagination/usePagination.js", - }, - } + Array [ + Array [ + "Alert", + "default", + "@material-ui/lab/esm/Alert/Alert.js", + ], + Array [ + "AlertTitle", + "default", + "@material-ui/lab/esm/AlertTitle/AlertTitle.js", + ], + Array [ + "Autocomplete", + "default", + "@material-ui/lab/esm/Autocomplete/Autocomplete.js", + ], + Array [ + "AvatarGroup", + "default", + "@material-ui/lab/esm/AvatarGroup/AvatarGroup.js", + ], + Array [ + "Pagination", + "default", + "@material-ui/lab/esm/Pagination/Pagination.js", + ], + Array [ + "usePagination", + "default", + "@material-ui/lab/esm/Pagination/usePagination.js", + ], + Array [ + "PaginationItem", + "default", + "@material-ui/lab/esm/PaginationItem/PaginationItem.js", + ], + Array [ + "Rating", + "default", + "@material-ui/lab/esm/Rating/Rating.js", + ], + Array [ + "Skeleton", + "default", + "@material-ui/lab/esm/Skeleton/Skeleton.js", + ], + Array [ + "SpeedDial", + "default", + "@material-ui/lab/esm/SpeedDial/SpeedDial.js", + ], + Array [ + "SpeedDialAction", + "default", + "@material-ui/lab/esm/SpeedDialAction/SpeedDialAction.js", + ], + Array [ + "SpeedDialIcon", + "default", + "@material-ui/lab/esm/SpeedDialIcon/SpeedDialIcon.js", + ], + Array [ + "TabContext", + "default", + "@material-ui/lab/esm/TabContext/TabContext.js", + ], + Array [ + "useTabContext", + "useTabContext", + "@material-ui/lab/esm/TabContext/TabContext.js", + ], + Array [ + "getPanelId", + "getPanelId", + "@material-ui/lab/esm/TabContext/TabContext.js", + ], + Array [ + "getTabId", + "getTabId", + "@material-ui/lab/esm/TabContext/TabContext.js", + ], + Array [ + "TabList", + "default", + "@material-ui/lab/esm/TabList/TabList.js", + ], + Array [ + "TabPanel", + "default", + "@material-ui/lab/esm/TabPanel/TabPanel.js", + ], + Array [ + "Timeline", + "default", + "@material-ui/lab/esm/Timeline/Timeline.js", + ], + Array [ + "TimelineConnector", + "default", + "@material-ui/lab/esm/TimelineConnector/TimelineConnector.js", + ], + Array [ + "TimelineContent", + "default", + "@material-ui/lab/esm/TimelineContent/TimelineContent.js", + ], + Array [ + "TimelineDot", + "default", + "@material-ui/lab/esm/TimelineDot/TimelineDot.js", + ], + Array [ + "TimelineItem", + "default", + "@material-ui/lab/esm/TimelineItem/TimelineItem.js", + ], + Array [ + "TimelineOppositeContent", + "default", + "@material-ui/lab/esm/TimelineOppositeContent/TimelineOppositeContent.js", + ], + Array [ + "TimelineSeparator", + "default", + "@material-ui/lab/esm/TimelineSeparator/TimelineSeparator.js", + ], + Array [ + "ToggleButton", + "default", + "@material-ui/lab/esm/ToggleButton/ToggleButton.js", + ], + Array [ + "ToggleButtonGroup", + "default", + "@material-ui/lab/esm/ToggleButtonGroup/ToggleButtonGroup.js", + ], + Array [ + "TreeItem", + "default", + "@material-ui/lab/esm/TreeItem/TreeItem.js", + ], + Array [ + "TreeView", + "default", + "@material-ui/lab/esm/TreeView/TreeView.js", + ], + Array [ + "createFilterOptions", + "createFilterOptions", + "@material-ui/lab/esm/useAutocomplete/index.js", + ], + Array [ + "useAutocomplete", + "default", + "@material-ui/lab/esm/useAutocomplete/useAutocomplete.js", + ], + ] `); }); diff --git a/test/@material-ui/lab/plugin.spec.js b/test/@material-ui/lab/plugin.spec.js index 9582c07..068bd0c 100644 --- a/test/@material-ui/lab/plugin.spec.js +++ b/test/@material-ui/lab/plugin.spec.js @@ -8,7 +8,7 @@ test("transformation", () => { "@material-ui/lab", ]) ).toMatchInlineSnapshot(` - import Alert from "@material-ui/lab/esm/Alert/index.js"; - import AlertTitle from "@material-ui/lab/esm/AlertTitle/index.js"; + import Alert from "@material-ui/lab/esm/Alert/Alert.js"; + import AlertTitle from "@material-ui/lab/esm/AlertTitle/AlertTitle.js"; `); }); diff --git a/test/@material-ui/styles/exports.spec.js b/test/@material-ui/styles/exports.spec.js index 1ae5a71..51add2a 100644 --- a/test/@material-ui/styles/exports.spec.js +++ b/test/@material-ui/styles/exports.spec.js @@ -4,72 +4,87 @@ const testExports = require("../../testExports"); test("exports", () => { expect(testExports("@material-ui/styles")).toMatchInlineSnapshot(` - Map { - "createGenerateClassName" => Object { - "external": "createGenerateClassName", - "internal": "default", - "source": "@material-ui/styles/esm/createGenerateClassName/index.js", - }, - "createStyles" => Object { - "external": "createStyles", - "internal": "default", - "source": "@material-ui/styles/esm/createStyles/index.js", - }, - "getThemeProps" => Object { - "external": "getThemeProps", - "internal": "default", - "source": "@material-ui/styles/esm/getThemeProps/index.js", - }, - "jssPreset" => Object { - "external": "jssPreset", - "internal": "default", - "source": "@material-ui/styles/esm/jssPreset/index.js", - }, - "makeStyles" => Object { - "external": "makeStyles", - "internal": "default", - "source": "@material-ui/styles/esm/makeStyles/index.js", - }, - "mergeClasses" => Object { - "external": "mergeClasses", - "internal": "default", - "source": "@material-ui/styles/esm/mergeClasses/index.js", - }, - "ServerStyleSheets" => Object { - "external": "ServerStyleSheets", - "internal": "default", - "source": "@material-ui/styles/esm/ServerStyleSheets/index.js", - }, - "styled" => Object { - "external": "styled", - "internal": "default", - "source": "@material-ui/styles/esm/styled/index.js", - }, - "StylesProvider" => Object { - "external": "StylesProvider", - "internal": "default", - "source": "@material-ui/styles/esm/StylesProvider/index.js", - }, - "ThemeProvider" => Object { - "external": "ThemeProvider", - "internal": "default", - "source": "@material-ui/styles/esm/ThemeProvider/index.js", - }, - "useTheme" => Object { - "external": "useTheme", - "internal": "default", - "source": "@material-ui/styles/esm/useTheme/index.js", - }, - "withStyles" => Object { - "external": "withStyles", - "internal": "default", - "source": "@material-ui/styles/esm/withStyles/index.js", - }, - "withTheme" => Object { - "external": "withTheme", - "internal": "default", - "source": "@material-ui/styles/esm/withTheme/index.js", - }, - } + Array [ + Array [ + "createGenerateClassName", + "default", + "@material-ui/styles/esm/createGenerateClassName/createGenerateClassName.js", + ], + Array [ + "createStyles", + "default", + "@material-ui/styles/esm/createStyles/createStyles.js", + ], + Array [ + "getThemeProps", + "default", + "@material-ui/styles/esm/getThemeProps/getThemeProps.js", + ], + Array [ + "jssPreset", + "default", + "@material-ui/styles/esm/jssPreset/jssPreset.js", + ], + Array [ + "makeStyles", + "default", + "@material-ui/styles/esm/makeStyles/makeStyles.js", + ], + Array [ + "mergeClasses", + "default", + "@material-ui/styles/esm/mergeClasses/mergeClasses.js", + ], + Array [ + "ServerStyleSheets", + "ServerStyleSheets", + "@material-ui/styles/esm/ServerStyleSheets/ServerStyleSheets.js", + ], + Array [ + "styled", + "default", + "@material-ui/styles/esm/styled/styled.js", + ], + Array [ + "StylesProvider", + "default", + "@material-ui/styles/esm/StylesProvider/StylesProvider.js", + ], + Array [ + "sheetsManager", + "sheetsManager", + "@material-ui/styles/esm/StylesProvider/StylesProvider.js", + ], + Array [ + "StylesContext", + "StylesContext", + "@material-ui/styles/esm/StylesProvider/StylesProvider.js", + ], + Array [ + "ThemeProvider", + "default", + "@material-ui/styles/esm/ThemeProvider/ThemeProvider.js", + ], + Array [ + "useTheme", + "default", + "@material-ui/styles/esm/useTheme/useTheme.js", + ], + Array [ + "withStyles", + "default", + "@material-ui/styles/esm/withStyles/withStyles.js", + ], + Array [ + "withTheme", + "default", + "@material-ui/styles/esm/withTheme/withTheme.js", + ], + Array [ + "withThemeCreator", + "withThemeCreator", + "@material-ui/styles/esm/withTheme/withTheme.js", + ], + ] `); }); diff --git a/test/@material-ui/styles/plugin.spec.js b/test/@material-ui/styles/plugin.spec.js index 74f2b3c..fa26b14 100644 --- a/test/@material-ui/styles/plugin.spec.js +++ b/test/@material-ui/styles/plugin.spec.js @@ -9,7 +9,7 @@ test("transformation", () => { ["@material-ui/styles"] ) ).toMatchInlineSnapshot(` - import makeStyles from "@material-ui/styles/esm/makeStyles/index.js"; + import makeStyles from "@material-ui/styles/esm/makeStyles/makeStyles.js"; import { ClassNameMap } from "@material-ui/styles"; `); }); diff --git a/test/luxon/exports.spec.js b/test/luxon/exports.spec.js index 318e7a9..56f00b3 100644 --- a/test/luxon/exports.spec.js +++ b/test/luxon/exports.spec.js @@ -4,57 +4,62 @@ const testExports = require("../testExports"); test("exports", () => { expect(testExports("luxon")).toMatchInlineSnapshot(` - Map { - "DateTime" => Object { - "external": "DateTime", - "internal": "default", - "source": "luxon/src/datetime.js", - }, - "Duration" => Object { - "external": "Duration", - "internal": "default", - "source": "luxon/src/duration.js", - }, - "FixedOffsetZone" => Object { - "external": "FixedOffsetZone", - "internal": "default", - "source": "luxon/src/zones/fixedOffsetZone.js", - }, - "IANAZone" => Object { - "external": "IANAZone", - "internal": "default", - "source": "luxon/src/zones/IANAZone.js", - }, - "Info" => Object { - "external": "Info", - "internal": "default", - "source": "luxon/src/info.js", - }, - "Interval" => Object { - "external": "Interval", - "internal": "default", - "source": "luxon/src/interval.js", - }, - "InvalidZone" => Object { - "external": "InvalidZone", - "internal": "default", - "source": "luxon/src/zones/invalidZone.js", - }, - "LocalZone" => Object { - "external": "LocalZone", - "internal": "default", - "source": "luxon/src/zones/localZone.js", - }, - "Settings" => Object { - "external": "Settings", - "internal": "default", - "source": "luxon/src/settings.js", - }, - "Zone" => Object { - "external": "Zone", - "internal": "default", - "source": "luxon/src/zone.js", - }, - } + Array [ + Array [ + "DateTime", + "default", + "luxon/src/datetime.js", + ], + Array [ + "Duration", + "default", + "luxon/src/duration.js", + ], + Array [ + "Info", + "default", + "luxon/src/info.js", + ], + Array [ + "Interval", + "default", + "luxon/src/interval.js", + ], + Array [ + "VERSION", + "VERSION", + "luxon/src/luxon.js", + ], + Array [ + "Settings", + "default", + "luxon/src/settings.js", + ], + Array [ + "Zone", + "default", + "luxon/src/zone.js", + ], + Array [ + "FixedOffsetZone", + "default", + "luxon/src/zones/fixedOffsetZone.js", + ], + Array [ + "IANAZone", + "default", + "luxon/src/zones/IANAZone.js", + ], + Array [ + "InvalidZone", + "default", + "luxon/src/zones/invalidZone.js", + ], + Array [ + "LocalZone", + "default", + "luxon/src/zones/localZone.js", + ], + ] `); }); diff --git a/test/testExports.js b/test/testExports.js index a61416c..ce6b065 100644 --- a/test/testExports.js +++ b/test/testExports.js @@ -3,16 +3,18 @@ const babel = require("@babel/core"); const NodeModule = require("../lib/internal/NodeModule"); -const getModuleExports = require("../lib/internal/getModuleExports"); +const DependencyTree = require("../lib/internal/DependencyTree"); /** * @param {string} id - * @returns {Map} + * @returns {unknown[]} */ module.exports = function testExports(id) { - return new Map( - Array.from(getModuleExports(NodeModule.get(id), babel)).sort(([a], [b]) => - a.localeCompare(b) - ) - ); + const { dependencies } = DependencyTree.create(NodeModule.get(id), babel); + + return Array.from(dependencies.values(), (dependency) => [ + dependency.id, + dependency.internalID, + dependency.source, + ]).sort(([, , a], [, , b]) => a.localeCompare(b)); }; diff --git a/test/yup/exports.spec.js b/test/yup/exports.spec.js index bb7680a..600ce09 100644 --- a/test/yup/exports.spec.js +++ b/test/yup/exports.spec.js @@ -4,117 +4,122 @@ const testExports = require("../testExports"); test("exports", () => { expect(testExports("yup")).toMatchInlineSnapshot(` - Map { - "array" => Object { - "external": "array", - "internal": "create", - "source": "yup/es/array.js", - }, - "ArraySchema" => Object { - "external": "ArraySchema", - "internal": "default", - "source": "yup/es/array.js", - }, - "BaseSchema" => Object { - "external": "BaseSchema", - "internal": "default", - "source": "yup/es/schema.js", - }, - "bool" => Object { - "external": "bool", - "internal": "create", - "source": "yup/es/boolean.js", - }, - "boolean" => Object { - "external": "boolean", - "internal": "create", - "source": "yup/es/boolean.js", - }, - "BooleanSchema" => Object { - "external": "BooleanSchema", - "internal": "default", - "source": "yup/es/boolean.js", - }, - "date" => Object { - "external": "date", - "internal": "create", - "source": "yup/es/date.js", - }, - "DateSchema" => Object { - "external": "DateSchema", - "internal": "default", - "source": "yup/es/date.js", - }, - "isSchema" => Object { - "external": "isSchema", - "internal": "default", - "source": "yup/es/util/isSchema.js", - }, - "lazy" => Object { - "external": "lazy", - "internal": "create", - "source": "yup/es/Lazy.js", - }, - "mixed" => Object { - "external": "mixed", - "internal": "create", - "source": "yup/es/mixed.js", - }, - "MixedSchema" => Object { - "external": "MixedSchema", - "internal": "default", - "source": "yup/es/mixed.js", - }, - "number" => Object { - "external": "number", - "internal": "create", - "source": "yup/es/number.js", - }, - "NumberSchema" => Object { - "external": "NumberSchema", - "internal": "default", - "source": "yup/es/number.js", - }, - "object" => Object { - "external": "object", - "internal": "create", - "source": "yup/es/object.js", - }, - "ObjectSchema" => Object { - "external": "ObjectSchema", - "internal": "default", - "source": "yup/es/object.js", - }, - "reach" => Object { - "external": "reach", - "internal": "default", - "source": "yup/es/util/reach.js", - }, - "ref" => Object { - "external": "ref", - "internal": "create", - "source": "yup/es/Reference.js", - }, - "setLocale" => Object { - "external": "setLocale", - "internal": "default", - "source": "yup/es/setLocale.js", - }, - "string" => Object { - "external": "string", - "internal": "create", - "source": "yup/es/string.js", - }, - "StringSchema" => Object { - "external": "StringSchema", - "internal": "default", - "source": "yup/es/string.js", - }, - "ValidationError" => Object { - "external": "ValidationError", - "internal": "default", - "source": "yup/es/ValidationError.js", - }, - } + Array [ + Array [ + "array", + "create", + "yup/es/array.js", + ], + Array [ + "ArraySchema", + "default", + "yup/es/array.js", + ], + Array [ + "bool", + "create", + "yup/es/boolean.js", + ], + Array [ + "boolean", + "create", + "yup/es/boolean.js", + ], + Array [ + "BooleanSchema", + "default", + "yup/es/boolean.js", + ], + Array [ + "date", + "create", + "yup/es/date.js", + ], + Array [ + "DateSchema", + "default", + "yup/es/date.js", + ], + Array [ + "addMethod", + "addMethod", + "yup/es/index.js", + ], + Array [ + "lazy", + "create", + "yup/es/Lazy.js", + ], + Array [ + "mixed", + "create", + "yup/es/mixed.js", + ], + Array [ + "MixedSchema", + "default", + "yup/es/mixed.js", + ], + Array [ + "number", + "create", + "yup/es/number.js", + ], + Array [ + "NumberSchema", + "default", + "yup/es/number.js", + ], + Array [ + "object", + "create", + "yup/es/object.js", + ], + Array [ + "ObjectSchema", + "default", + "yup/es/object.js", + ], + Array [ + "ref", + "create", + "yup/es/Reference.js", + ], + Array [ + "BaseSchema", + "default", + "yup/es/schema.js", + ], + Array [ + "setLocale", + "default", + "yup/es/setLocale.js", + ], + Array [ + "string", + "create", + "yup/es/string.js", + ], + Array [ + "StringSchema", + "default", + "yup/es/string.js", + ], + Array [ + "isSchema", + "default", + "yup/es/util/isSchema.js", + ], + Array [ + "reach", + "default", + "yup/es/util/reach.js", + ], + Array [ + "ValidationError", + "default", + "yup/es/ValidationError.js", + ], + ] `); }); diff --git a/test/yup/plugin.spec.js b/test/yup/plugin.spec.js index c6dc22c..9a02d8f 100644 --- a/test/yup/plugin.spec.js +++ b/test/yup/plugin.spec.js @@ -11,7 +11,7 @@ test("transformation", () => { ).toMatchInlineSnapshot(` import { create as object } from "yup/es/object.js"; import setLocale from "yup/es/setLocale.js"; + import { addMethod } from "yup/es/index.js"; import StringSchema from "yup/es/string.js"; - import { addMethod } from "yup"; `); });