@shayanthenerd/eslint-config
Version:
A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style
26 lines (25 loc) • 873 B
JavaScript
import { defaultOptions } from "./defaultOptions.mjs";
import { isEmptyString } from "../../utils/isEmptyString.mjs";
import { enableDetectedConfigs } from "./enableDetectedConfigs.mjs";
import { createDefu } from "defu";
//#region src/helpers/options/mergeWithDefaults.ts
const mergeOptions = createDefu((object, key, value) => {
if ([
"allowedRelativeFontUnits",
"blocksOrder",
"macrosOrder",
"attributesOrder"
].includes(key.toString())) {
object[key] = value;
return true;
}
const isValueTrue = value === true;
const isDefaultValueFalse = object[key] === false;
return isEmptyString(value) || isValueTrue && !isDefaultValueFalse;
});
function mergeWithDefaults(options) {
const optionsWithDetectedConfigs = enableDetectedConfigs(options);
return mergeOptions(optionsWithDetectedConfigs, defaultOptions);
}
//#endregion
export { mergeWithDefaults };