aureooms/rejuvenate

View on GitHub
src/lib/ava.js

Summary

Maintainability
A
0 mins
Test Coverage
import {isSorted} from '@comparison-sorting/is-sorted';
import {inverse, toObject} from '@iterable-iterator/mapping';
import {enumerate} from '@iterable-iterator/zip';

import {fixedOrder} from './order.js';

export const order = fixedOrder(
    toObject(
        inverse(enumerate(['files', 'nodeArguments', 'require', 'timeout'])),
    ),
    ([k]) => k,
);

export const sortKeys = (object) => {
    return Object.fromEntries(Object.entries(object).sort(order));
};

export const areKeysSorted = (object) => {
    const keys = Object.entries(object);
    return isSorted(order, keys, 0, keys.length);
};

export const replaceInArray = (object, key, oldValue, newValue) => {
    object[key] = object[key].map((value) =>
        value === oldValue ? newValue : value,
    );
};