npm-check-extras
Version:
CLI app to check for outdated and unused dependencies, and run update/delete action over selected ones
63 lines (62 loc) • 2.96 kB
JavaScript
import * as R from 'ramda';
import { v4 as uuidv4 } from 'uuid';
import { focusableItemsManager } from './store/focusable-items.js';
import { colors } from './defaults.js';
const getId = () => {
return uuidv4();
};
const isAvailableChar = (value) => {
if (value === '')
return false;
const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
const numbers = '123456789';
const otherChars = '\\/\'"-+=_!@#$%^&*()<?>.,:;{[]}';
const availableChars = `${alphabet}${numbers}${otherChars}`;
return availableChars.includes(value);
};
const getNextIndex = (current, size) => {
return R.ifElse(R.gt(size), R.identity, R.subtract(size))(R.inc(current));
};
const getPreviousIndex = (current, size) => {
return R.ifElse(R.lte(0), R.identity, R.add(size))(R.dec(current));
};
const getCommandFromSentence = (sentence) => {
if (sentence.includes(' to go')) {
return R.compose(R.head, R.split)(' to go', sentence);
}
if (sentence.includes('age:')) {
return R.compose(R.last, R.split)('kage: ', sentence);
}
return '';
};
const removeUrl = (source) => {
/* eslint-disable unicorn/prefer-string-replace-all */
return R.trim(source.replace(/(?:https?|ftp):\/\/[\n\S]+/g, ''));
/* eslint-enable unicorn/prefer-string-replace-all */
};
const selectify = R.set(R.lensProp('isSelected'), true);
const unselectify = R.set(R.lensProp('isSelected'), false);
const activate = R.set(R.lensProp('isActive'), true);
const deactivate = R.set(R.lensProp('isActive'), false);
const activatePackage = R.set(R.lensProp('isActive'), true);
const deactivatePackage = R.set(R.lensProp('isActive'), false);
const activateOptionItem = R.set(R.lensProp('isActive'), true);
const deactivateOptionItem = R.set(R.lensProp('isActive'), false);
const toggleActionItem = R.over(R.lensProp('isSelected'), R.not);
const selectAction = R.set(R.lensProp('isSelected'), true);
const unselectAction = R.set(R.lensProp('isSelected'), false);
const getSelected = R.filter(value => R.equals(true, value));
const markInView = R.set(R.lensProp('inView'), true);
const unmarkInView = R.set(R.lensProp('inView'), false);
const getButtonColor = (name) => focusableItemsManager.isActive(name)
? colors.activeButton.color
: colors.button.color;
const getButtonBgColor = (name) => focusableItemsManager.isActive(name)
? colors.activeButton.bg
: colors.button.bg;
const getPanelColor = (result) => (result ? 'green' : 'grey');
const operationCountsMapping = {
update: 'Updated',
delete: 'Deleted',
};
export { getId, isAvailableChar, getCommandFromSentence, removeUrl, selectify, unselectify, activate, deactivate, activateOptionItem, deactivateOptionItem, toggleActionItem, getSelected, getButtonColor, getButtonBgColor, activatePackage, deactivatePackage, getNextIndex, getPreviousIndex, selectAction, unselectAction, getPanelColor, markInView, unmarkInView, operationCountsMapping, };