Fix overwritten of non-object in CONFIG (#279)

This commit is contained in:
2021-05-31 20:12:19 +08:00 committed by GitHub
parent 0d84de6513
commit f03b7ce306
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -36,20 +36,31 @@ if (!window.NexT) window.NexT = {};
existing = variableConfig[name]; existing = variableConfig[name];
} }
let override = overrideConfig[name]; // For unset override and mixable existing
if (override === undefined && typeof existing === 'object') { if (!(name in overrideConfig) && typeof existing === 'object') {
override = {}; // Get ready to mix.
overrideConfig[name] = override; overrideConfig[name] = {};
} }
if (typeof override === 'object') { if (name in overrideConfig) {
const override = overrideConfig[name];
// When mixable
if (typeof override === 'object' && typeof existing === 'object') {
// Mix, proxy changes to the override.
return new Proxy({...existing, ...override}, { return new Proxy({...existing, ...override}, {
set(target, prop, value) { set(target, prop, value) {
target[prop] = value;
override[prop] = value; override[prop] = value;
return true; return true;
} }
}); });
} }
return override;
}
// Only when not mixable and override hasn't been set.
return existing; return existing;
} }
}); });