sverweij/upem

View on GitHub
dist/update-manifest.js

Summary

Maintainability
A
0 mins
Test Coverage
function isUpAbleDependencyKey(pSkipDependencyTypes) {
    return (pManifestKey) =>
        pManifestKey.includes("ependencies") &&
        !pSkipDependencyTypes.includes(pManifestKey);
}
function getRangePrefix(pVersionRangeString) {
    return (
        pVersionRangeString.match(/^(?<prefix>[^0-9]{0,2}).+/)?.groups?.prefix ?? ""
    );
}
export function determineSavePrefix(pVersionRangeString, pOptions) {
    const lIndividualRangePrefix = getRangePrefix(pVersionRangeString);
    if (pOptions?.saveExact && lIndividualRangePrefix) {
        return lIndividualRangePrefix;
    }
    return pOptions?.saveExact ? "" : pOptions?.savePrefix ?? "^";
}
export function updateDependencyKey(
    pDependencyObject,
    pOutdatedList,
    pOptions,
) {
    return {
        ...pDependencyObject,
        ...Object.keys(pDependencyObject)
            .filter((pDependency) =>
                pOutdatedList.some(
                    (pOutdatedEntry) => pOutdatedEntry.package === pDependency,
                ),
            )
            .reduce((pAll, pPackageName) => {
                pAll[pPackageName] =
                    `${determineSavePrefix(pDependencyObject[pPackageName], pOptions)}${pOutdatedList.find((pOutdatedEntry) => pOutdatedEntry.package === pPackageName)?.target}`;
                return pAll;
            }, {}),
    };
}
export function updateManifest(pManifestObject, pOutdatedPackages, pOptions) {
    return {
        ...pManifestObject,
        ...Object.keys(pManifestObject)
            .filter(isUpAbleDependencyKey(pOptions?.skipDependencyTypes ?? []))
            .reduce((pAll, pDependencyKey) => {
                pAll[pDependencyKey] = updateDependencyKey(
                    pManifestObject[pDependencyKey],
                    pOutdatedPackages,
                    pOptions,
                );
                return pAll;
            }, {}),
    };
}