Server : nginx/1.18.0 System : Linux localhost 6.14.3-x86_64-linode168 #1 SMP PREEMPT_DYNAMIC Mon Apr 21 19:47:55 EDT 2025 x86_64 User : www-data ( 33) PHP Version : 8.0.16 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/ecommerce/node_modules/babel-merge/src/ |
import omit from 'object.omit';
import merge from 'deepmerge';
import { resolvePlugin, resolvePreset } from '@babel/core';
function arrayMerge(source = [], overrides = []) {
return [...new Set([...source, ...overrides])];
}
function mergeArray(source = [], overrides = [], resolve, deepmergeOpts) {
return [...source, ...overrides].reduce((reduction, override) => {
const overrideName = resolve(Array.isArray(override) ? override[0] : override);
const overrideOptions = Array.isArray(override) ? override[1] : {};
const base = reduction.find((base) => {
const baseName = resolve(Array.isArray(base) ? base[0] : base);
return baseName === overrideName || baseName.includes(overrideName);
});
const index = reduction.includes(base) ? reduction.indexOf(base) : reduction.length;
const baseName = base ? resolve(Array.isArray(base) ? base[0] : base) : overrideName;
const baseOptions = Array.isArray(base) ? base[1] : {};
const options = merge(baseOptions, overrideOptions, {
arrayMerge,
isMergeableObject: value => Array.isArray(value),
...deepmergeOpts
});
reduction[index] = Object.keys(options).length ? [baseName, options] : baseName;
return reduction;
}, []);
}
function babelMerge(source = {}, overrides = {}, deepmergeOpts) {
const plugins = mergeArray(source.plugins, overrides.plugins, resolvePlugin, deepmergeOpts);
const presets = mergeArray(source.presets, overrides.presets, resolvePreset, deepmergeOpts);
const sourceEnv = source.env || {};
const overridesEnv = overrides.env || {};
return Object.assign(
presets.length ? { presets } : {},
plugins.length ? { plugins } : {},
merge.all([
omit(source, ['plugins', 'presets', 'env']),
omit(overrides, ['plugins', 'presets', 'env']),
...[...new Set([
...Object.keys(sourceEnv),
...Object.keys(overridesEnv)
])].map(name => ({
env: {
[name]: babelMerge(sourceEnv[name], overridesEnv[name], deepmergeOpts)
}
}))
], { arrayMerge, ...deepmergeOpts })
);
}
Object.defineProperty(babelMerge, 'all', {
value: (values = [], deepmergeOpts) =>
values.reduce((acc, value) => {
if (value) {
Object.assign(acc, babelMerge(acc, value, deepmergeOpts));
}
return acc;
}, {})
});
module.exports = babelMerge;