unbag
Version:
一个专门用来开发npm工具的包
39 lines (38 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useConfigHelper = void 0;
var _lodash = _interopRequireDefault(require("lodash"));
var _deepFreezeStrict = _interopRequireDefault(require("deep-freeze-strict"));
var _common = require("./common.cjs");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
const mergeConfig = (defaults, overrides) => {
const customize = (objValue, srcValue) => {
if (_lodash.default.isArray(objValue) || _lodash.default.isArray(srcValue)) {
return (0, _common.filterNullable)([...(0, _common.arraify)(objValue), ...(0, _common.arraify)(srcValue)]);
}
};
return _lodash.default.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 (0, _deepFreezeStrict.default)(finalConfig);
};
return {
defineConfig,
fillConfig,
defaultConfig
};
};
exports.useConfigHelper = useConfigHelper;