unbag
Version:
一个专门用来开发npm工具的包
32 lines • 910 B
JavaScript
import _ from "lodash";
import deepFreezeStrict from "deep-freeze-strict";
import { arraify, filterNullable } from "./common.mjs";
const mergeConfig = (defaults, overrides) => {
const customize = (objValue, srcValue) => {
if (_.isArray(objValue) || _.isArray(srcValue)) {
return filterNullable([...arraify(objValue), ...arraify(srcValue)]);
}
};
return _.mergeWith({}, defaults, overrides, customize);
};
const useConfigHelper = params => {
const {
defaultConfig,
disabledFreeze,
merge
} = params;
const defineConfig = config => config;
const fillConfig = config => {
const finalConfig = merge ? merge(defaultConfig, config) : mergeConfig(defaultConfig, config);
if (disabledFreeze) {
return finalConfig;
}
return deepFreezeStrict(finalConfig);
};
return {
defineConfig,
fillConfig,
defaultConfig
};
};
export { useConfigHelper };