UNPKG

npm-check-extras

Version:

CLI app to check for outdated and unused dependencies, and run update/delete action over selected ones

99 lines (98 loc) 4.23 kB
import * as R from 'ramda'; import { action, computed } from 'nanostores'; import { $allItems } from '../store/packages.js'; import { activatePackage, deactivatePackage, getNextIndex, getPreviousIndex, selectify, unselectify, } from '../helpers.js'; import RU from '../ramda-utils.js'; export const filterPackages = action($allItems, 'filter', (store, input) => { store.set(store.get().filter(item => item.name.includes(input))); return store.get(); }); export const removeSelectedPackagesFromList = action($allItems, 'removeSelectedPackagesFromList', store => { store.set(R.reject(RU.isSelected, store.get())); return store.get(); }); const activateFirstPackage = action($allItems, 'activateFirstPackage', store => { store.set(R.adjust(0, activatePackage, store.get())); }); const activePackageIndex = computed($allItems, allItems => R.findIndex((item) => RU.isActive(item), allItems)); const activateNextPackage = action($allItems, ' ', store => { const allItems = store.get(); const currentIndex = activePackageIndex.get(); const targetIndex = getNextIndex(currentIndex, allItems.length); let newValue = R.adjust(targetIndex, activatePackage, allItems); if (currentIndex !== targetIndex) newValue = R.adjust(currentIndex, deactivatePackage, newValue); store.set(newValue); return store.get(); }); const activatePreviousPackage = action($allItems, 'activatePreviousPackage', store => { const allItems = store.get(); const currentIndex = activePackageIndex.get(); const targetIndex = getPreviousIndex(currentIndex, allItems.length); let newValue = R.adjust(targetIndex, activatePackage, allItems); if (currentIndex !== targetIndex) newValue = R.adjust(currentIndex, deactivatePackage, newValue); store.set(newValue); return store.get(); }); const selectPackagesByFilter = action($allItems, 'selectPackagesByFilter', (store, input) => { if (R.isEmpty(input)) store.set(R.map(R.nAry(1, selectify), store.get())); else { const newValue = R.map(R.ifElse(R.propSatisfies(R.includes(input), 'name'), selectify, unselectify), store.get()); store.set(newValue); } return store.get(); }); const addToSelected = action($allItems, 'addToSelected', (store, packageName) => { const foundIndex = R.findIndex(R.propEq(packageName, 'name'), store.get()); if (foundIndex > -1) { store.set(R.adjust(foundIndex, selectify, store.get())); } return store.get(); }); const removeFromSelected = action($allItems, 'removeFromSelected', (store, packageName) => { const foundIndex = R.findIndex(R.propEq(packageName, 'name'), store.get()); if (foundIndex > -1) { store.set(R.adjust(foundIndex, (value) => R.set(R.lensProp('isSelected'), true, value), store.get())); } return store.get(); }); const toggle = action($allItems, 'toggle', (store, packageName) => { const foundIndex = R.findIndex(R.propEq(packageName, 'name'), store.get()); if (foundIndex > -1) { store.set(R.adjust(foundIndex, (value) => R.over(R.lensProp('isSelected'), R.not, value), store.get())); } return store.get(); }); const toggleActive = action($allItems, 'toggle', store => { const foundIndex = activePackageIndex.get(); if (foundIndex === -1) { return; } store.set(R.adjust(foundIndex, (value) => R.over(R.lensProp('isSelected'), R.not, value), store.get())); return store.get(); }); const setActive = action($allItems, 'setActive', (store, packageName) => { const foundIndex = R.findIndex(R.propEq(packageName, 'name'), store.get()); if (foundIndex > -1) { let previousPackages = store.get(); previousPackages = R.map(R.set(R.lensProp('isActive'), false), previousPackages); store.set(R.adjust(foundIndex, R.set(R.lensProp('isActive'), true), previousPackages)); } return store.get(); }); export const packagesActions = { addToSelected, filterPackages, removeSelectedPackagesFromList, selectPackagesByFilter, removeFromSelected, toggle, toggleActive, setActive, activateFirstPackage, activateNextPackage, activatePreviousPackage, isSelected: RU.isSelected, };