Files
flights_web_raw/ClientApp/node_modules/reduce-configs/dist/index.js
T
gnezim 0a5ab058a6 Initial commit: Aeroflot Flights Web - Angular 12 baseline
- Angular 12 application with PrimeNG components
- 5 existing Cypress e2e test suites
- SCSS styling with BEM naming convention
- i18n support (10 languages)
- Leaflet map integration
- Complete component hierarchy and routing structure

This baseline will be used for Angular → React migration.
2026-04-05 18:47:57 +03:00

56 lines
2.4 KiB
JavaScript

const isNil = (o)=>null == o;
const isFunction = (func)=>'function' == typeof func;
const isObject = (obj)=>null !== obj && 'object' == typeof obj;
const isPlainObject = (obj)=>isObject(obj) && '[object Object]' === Object.prototype.toString.call(obj);
function reduceConfigs({ initial, config, mergeFn = Object.assign }) {
if (isNil(config)) return initial;
if (isPlainObject(config)) return isPlainObject(initial) ? mergeFn(initial, config) : config;
if (isFunction(config)) return config(initial) ?? initial;
if (Array.isArray(config)) return config.reduce((initial, config)=>reduceConfigs({
initial,
config,
mergeFn
}), initial);
return config ?? initial;
}
function reduceConfigsWithContext({ initial, config, ctx, mergeFn = Object.assign }) {
if (isNil(config)) return initial;
if (isPlainObject(config)) return isPlainObject(initial) ? mergeFn(initial, config) : config;
if (isFunction(config)) return config(initial, ctx) ?? initial;
if (Array.isArray(config)) return config.reduce((initial, config)=>reduceConfigsWithContext({
initial,
config,
ctx,
mergeFn
}), initial);
return config ?? initial;
}
async function reduceConfigsAsyncWithContext({ initial, config, ctx, mergeFn = Object.assign }) {
if (isNil(config)) return initial;
if (isPlainObject(config)) return isPlainObject(initial) ? mergeFn(initial, config) : config;
if (isFunction(config)) return await config(initial, ctx) ?? initial;
if (Array.isArray(config)) return config.reduce((initial, config)=>reduceConfigsWithContext({
initial,
config,
ctx,
mergeFn
}), initial);
return config ?? initial;
}
function reduceConfigsMergeContext({ initial, config, ctx, mergeFn = Object.assign }) {
if (isNil(config)) return initial;
if (isPlainObject(config)) return isPlainObject(initial) ? mergeFn(initial, config) : config;
if (isFunction(config)) return config({
value: initial,
...ctx
}) ?? initial;
if (Array.isArray(config)) return config.reduce((initial, config)=>reduceConfigsMergeContext({
initial,
config,
ctx,
mergeFn
}), initial);
return config ?? initial;
}
export { reduceConfigs, reduceConfigsAsyncWithContext, reduceConfigsMergeContext, reduceConfigsWithContext };