UNPKG

@mui/internal-docs-infra

Version:

MUI Infra - internal documentation creation tools.

72 lines (71 loc) 2.66 kB
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray"; import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _createForOfIteratorHelper from "@babel/runtime/helpers/esm/createForOfIteratorHelper"; /** * Merges multiple externals objects into a single object, combining imports from the same module. * Deduplicates imports by name and type within each module. * * @param externalsArray Array of externals objects to merge * @returns Merged externals object * * @example * ```typescript * const externals1 = { * 'react': [{ name: 'React', type: 'default' }], * 'lodash': [{ name: 'map', type: 'named' }] * }; * * const externals2 = { * 'react': [{ name: 'useState', type: 'named' }], * 'lodash': [{ name: 'map', type: 'named' }] // duplicate - will be removed * }; * * const merged = mergeExternals([externals1, externals2]); * // Result: * // { * // 'react': [ * // { name: 'React', type: 'default' }, * // { name: 'useState', type: 'named' } * // ], * // 'lodash': [{ name: 'map', type: 'named' }] * // } * ``` */ export function mergeExternals(externalsArray) { var merged = {}; var _iterator = _createForOfIteratorHelper(externalsArray), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var externals = _step.value; var _loop = function _loop() { var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), modulePath = _Object$entries$_i[0], imports = _Object$entries$_i[1]; if (!merged[modulePath]) { // First time seeing this module, copy all imports merged[modulePath] = _toConsumableArray(imports); } else { // Module already exists, merge imports and deduplicate var existingImports = merged[modulePath]; var newImports = imports.filter(function (newImport) { // Check if this import already exists (same name, type, and isType) return !existingImports.some(function (existingImport) { return existingImport.name === newImport.name && existingImport.type === newImport.type && existingImport.isType === newImport.isType; }); }); // Add only the new imports that don't already exist merged[modulePath] = [].concat(_toConsumableArray(existingImports), _toConsumableArray(newImports)); } }; for (var _i = 0, _Object$entries = Object.entries(externals); _i < _Object$entries.length; _i++) { _loop(); } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return merged; }