Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import { readPluginConfigFile } from './private/index.js'; import getYarnInfo from './getYarnInfo.js'; export default async function findOhifExtensionsToRemoveAfterRemovingMode(removedModeYarnInfo) { const pluginConfig = readPluginConfigFile(); if (!pluginConfig) { // No other modes or extensions, no action item. return []; } const { modes, extensions } = pluginConfig; const registeredExtensions = extensions.map(extension => extension.packageName); // TODO this is not a function const ohifExtensionsOfMode = Object.keys(removedModeYarnInfo.peerDependencies).filter( peerDependency => registeredExtensions.includes(peerDependency) ); const ohifExtensionsUsedInOtherModes = ohifExtensionsOfMode.map(packageName => { return { packageName, used: false, }; }); // Check if other modes use each extension used by this mode const otherModes = modes.filter(mode => mode.packageName !== removedModeYarnInfo.name); for (let i = 0; i < otherModes.length; i++) { const mode = otherModes[i]; const yarnInfo = await getYarnInfo(mode.packageName); const peerDependencies = yarnInfo.peerDependencies; if (!peerDependencies) { continue; } for (let j = 0; j < ohifExtensionsUsedInOtherModes.length; j++) { const ohifExtension = ohifExtensionsUsedInOtherModes[j]; if (ohifExtension.used) { // Already accounted that we can't delete this, so don't waste effort return; } if (Object.keys(peerDependencies).includes(ohifExtension.packageName)) { ohifExtension.used = true; } } } // Return list of now unused extensions const ohifExtensionsToRemove = ohifExtensionsUsedInOtherModes .filter(ohifExtension => !ohifExtension.used) .map(ohifExtension => ohifExtension.packageName); return ohifExtensionsToRemove; } |