refactor(release-cleanup): 將清理邏輯由 bash 改寫為 Node.js #6
+7
-2
@@ -18,9 +18,14 @@ export function selectReleasesToDelete(releases, keepCount) {
|
|||||||
return Number.isNaN(time) ? 0 : time
|
return Number.isNaN(time) ? 0 : time
|
||||||
}
|
}
|
||||||
// 先一次性計算每筆的時間戳,避免在排序比較中重複呼叫 Date.parse。
|
// 先一次性計算每筆的時間戳,避免在排序比較中重複呼叫 Date.parse。
|
||||||
|
// 時間相同時以 id(數值,大者為新)作為次要鍵,確保排序結果具決定性。
|
||||||
|
Ghost marked this conversation as resolved
Outdated
|
|||||||
return releases
|
return releases
|
||||||
.map((release) => ({ release, time: createdTime(release) }))
|
.map((release) => ({
|
||||||
.sort((a, b) => b.time - a.time)
|
release,
|
||||||
|
time: createdTime(release),
|
||||||
|
id: Number(release?.id) || 0,
|
||||||
|
}))
|
||||||
|
.sort((a, b) => b.time - a.time || b.id - a.id)
|
||||||
.map((entry) => entry.release)
|
.map((entry) => entry.release)
|
||||||
.slice(keepCount)
|
.slice(keepCount)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user
嚴重等級:🟡 警告
審查員:Mage
問題:在 selectReleasesToDelete 函式中,若 releases 陣列為空,雖不拋錯但邏輯上應考慮空值邊界。且雖然處理了 Date.parse 的 NaN,但對空物件或缺失 created_at 屬性的項目的處理依賴屬性存取鏈,可能在特定結構下產生非預期行為。
建議:建議增加對釋出項目結構的預防性檢查,確保 created_at 存在且有效。