import { isPlainObject, mapValues } from 'lodash';
import u from 'updeep';

export function buildInitial(initial, subduxes = {}) {
    if (!isPlainObject(initial) && Object.keys(subduxes).length > 0)
        throw new Error(
            "can't have subduxes on a dux which state is not an object"
        );

    if (Object.keys(subduxes).length === 1 && subduxes['*']) return initial;

    const subInitial = mapValues(subduxes, ({ initial }, key) =>
        key === '*' ? [] : initial
    );

    return u(initial, subInitial);
}
