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];
}
let override = overrideConfig[name];
if (override === undefined && typeof existing === 'object') {
override = {};
overrideConfig[name] = override;
// For unset override and mixable existing
if (!(name in overrideConfig) && typeof existing === 'object') {
// Get ready to mix.
overrideConfig[name] = {};
}
if (typeof override === 'object') {
return new Proxy({...existing, ...override}, {
set(target, prop, value) {
override[prop] = value;
return true;
}
});
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}, {
set(target, prop, value) {
target[prop] = value;
override[prop] = value;
return true;
}
});
}
return override;
}
// Only when not mixable and override hasn't been set.
return existing;
}
});