npm-check-extras
Version:
CLI app to check for outdated and unused dependencies, and run update/delete action over selected ones
79 lines (78 loc) • 2.58 kB
JavaScript
import * as R from 'ramda';
import { map, action, computed } from 'nanostores';
import ramdaUtils from '../ramda-utils.js';
const statuses = {
fethcing: 'FETCHING',
waiting: 'WAITING',
done: 'DONE',
failed: 'FAILED',
info: 'INFO',
travel: 'TRAVEL',
};
export const statusToMessage = R.zipObj(Object.values(statuses), [
'Checking dependencies, please wait a little bit',
'Set up desired options',
'Packages were inspected, check out the results',
'Some error occured while checking dependencies',
'Displaying information',
'Reverting packages entries to specific point',
]);
export const $status = map({
status: statuses.waiting,
text: statusToMessage[statuses.waiting],
});
const setIfDiffers = (store, newValue) => {
if (store.get().status !== newValue) {
store.set({
status: newValue,
text: statusToMessage[newValue],
});
}
};
const isDoneStatus = computed($status, status => ramdaUtils.isDoneStatus(status));
const isFailedStatus = computed($status, status => ramdaUtils.isFailedStatus(status));
const isInfoStatus = computed($status, status => ramdaUtils.isInfoStatus(status));
const isTraveloStatus = computed($status, status => ramdaUtils.isTravelStatus(status));
const isWaitingStatus = computed($status, status => ramdaUtils.isWaitingStatus(status));
export const statusesManager = {
setFetching: action($status, 'setFetching', store => {
setIfDiffers(store, statuses.fethcing);
}),
isFetching() {
return ramdaUtils.isFetchingStatus($status.get());
},
isDone() {
return isDoneStatus.get();
},
isFailed() {
return isFailedStatus.get();
},
isInfo() {
return isInfoStatus.get();
},
isTravel() {
return isTraveloStatus.get();
},
isWaiting() {
return isWaitingStatus.get();
},
setWaiting: action($status, 'setWaiting', store => {
setIfDiffers(store, statuses.waiting);
}),
setInfo: action($status, 'setInfo', store => {
setIfDiffers(store, statuses.info);
}),
setTravel: action($status, 'setTravel', store => {
setIfDiffers(store, statuses.travel);
}),
setDone: action($status, 'setDone', store => {
setIfDiffers(store, statuses.done);
}),
setFailed: action($status, 'setFailed', store => {
setIfDiffers(store, statuses.failed);
}),
};
export const setStatusText = action($status, 'setStatusText', (store, newValue) => {
store.setKey('text', newValue);
return store.get();
});