aureooms/rejuvenate

View on GitHub
src/lib/pkg.js

Summary

Maintainability
A
0 mins
Test Coverage
const keySet = (object) => new Set(Object.keys(object));

const replaceEntry = (object, oldKey, newKey, newValue) =>
    Object.fromEntries(
        Object.entries(object).map(([k, v]) =>
            k === oldKey ? [newKey, newValue] : [k, v],
        ),
    );

export function deps(object) {
    return keySet(object.dependencies);
}

export function devDeps(object) {
    return keySet(object.devDependencies);
}

const DEFAULT_VERSION = '0.0.0';

export function replaceDep(object, oldKey, newKey, version = DEFAULT_VERSION) {
    object.dependencies &&= replaceEntry(
        object.dependencies,
        oldKey,
        newKey,
        version,
    );
    object.devDependencies &&= replaceEntry(
        object.devDependencies,
        oldKey,
        newKey,
        version,
    );
}

export function addDep(object, dep, version = DEFAULT_VERSION) {
    object.dependencies ||= {};
    object.dependencies[dep] ||= version;
}

export function addDevDep(object, dep, version = DEFAULT_VERSION) {
    object.devDependencies ||= {};
    object.devDependencies[dep] ||= version;
}

export const removeDevDep = (object, dep) => {
    delete object.devDependencies[dep];
};