refactor: consolidate chatgpt.config cleanup logic
Merged duplicate try-catch blocks that handle invalid chatgpt.config values. Now handles all edge cases (scalar values, arrays, empty objects) in a single unified check, reducing code duplication and improving performance by parsing JSON only once.
This commit is contained in:
@@ -68,16 +68,26 @@ export function removeManagedKeys(content: string): string {
|
|||||||
// 忽略删除失败
|
// 忽略删除失败
|
||||||
}
|
}
|
||||||
|
|
||||||
// 若 chatgpt.config 变为空对象,顺便移除(不影响其他 chatgpt* 键)
|
// 清理 chatgpt.config 的异常情况:
|
||||||
|
// 1. 早期遗留的标量值(字符串/数字/null等)
|
||||||
|
// 2. 空对象
|
||||||
|
// 3. 数组类型
|
||||||
try {
|
try {
|
||||||
const data = parse(out) as any;
|
const data = parse(out) as any;
|
||||||
const cfg = data?.["chatgpt.config"];
|
const cfg = data?.["chatgpt.config"];
|
||||||
if (
|
|
||||||
cfg &&
|
// 需要清理的情况:
|
||||||
typeof cfg === "object" &&
|
// - 标量值(null、字符串、数字等)
|
||||||
!Array.isArray(cfg) &&
|
// - 数组
|
||||||
Object.keys(cfg).length === 0
|
// - 空对象
|
||||||
) {
|
const shouldRemove = cfg !== undefined && (
|
||||||
|
cfg === null ||
|
||||||
|
typeof cfg !== "object" ||
|
||||||
|
Array.isArray(cfg) ||
|
||||||
|
(typeof cfg === "object" && Object.keys(cfg).length === 0)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (shouldRemove) {
|
||||||
out = applyEdits(
|
out = applyEdits(
|
||||||
out,
|
out,
|
||||||
modify(out, ["chatgpt.config"], undefined, { formattingOptions: fmt }),
|
modify(out, ["chatgpt.config"], undefined, { formattingOptions: fmt }),
|
||||||
|
|||||||
Reference in New Issue
Block a user