refactor(release-cleanup): 將清理邏輯由 bash 改寫為 Node.js #6

Closed
jiantw83 wants to merge 60 commits from refactor/nodejs-rewrite-20260626-103443 into develop
Showing only changes of commit 87db9030d6 - Show all commits
+6 -2
View File
@@ -17,8 +17,12 @@ export function selectReleasesToDelete(releases, keepCount) {
const time = Date.parse(release?.created_at) const time = Date.parse(release?.created_at)
return Number.isNaN(time) ? 0 : time return Number.isNaN(time) ? 0 : time
} }
const sorted = [...releases].sort((a, b) => createdTime(b) - createdTime(a)) // 先一次性計算每筆的時間戳,避免在排序比較中重複呼叫 Date.parse。
return sorted.slice(keepCount) return releases
Ghost marked this conversation as resolved Outdated
Outdated
Review

嚴重等級🟡 警告
審查員:Mage
問題:在 selectReleasesToDelete 函式中,若 releases 陣列為空,雖不拋錯但邏輯上應考慮空值邊界。且雖然處理了 Date.parse 的 NaN,但對空物件或缺失 created_at 屬性的項目的處理依賴屬性存取鏈,可能在特定結構下產生非預期行為。
建議:建議增加對釋出項目結構的預防性檢查,確保 created_at 存在且有效。

**嚴重等級**:🟡 警告 **審查員**:Mage **問題**:在 selectReleasesToDelete 函式中,若 releases 陣列為空,雖不拋錯但邏輯上應考慮空值邊界。且雖然處理了 Date.parse 的 NaN,但對空物件或缺失 created_at 屬性的項目的處理依賴屬性存取鏈,可能在特定結構下產生非預期行為。 **建議**:建議增加對釋出項目結構的預防性檢查,確保 created_at 存在且有效。
.map((release) => ({ release, time: createdTime(release) }))
.sort((a, b) => b.time - a.time)
.map((entry) => entry.release)
.slice(keepCount)
} }
/** /**
4