docs(release-cleanup): 補齊 config/gitea-client/releases/tags 的 JSDoc

為 loadConfig、GiteaClient(含 fetchAllPages/deleteResource)、
selectReleasesToDelete/cleanupReleases、categorizeTags/cleanupOrphanTags
補上完整 JSDoc(參數、回傳、例外、行為說明)。僅註解變更。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jeffery
2026-06-26 10:46:20 +08:00
co-authored by Claude Opus 4.8
parent 7082fd7311
commit 7e6f9ef3f6
4 changed files with 59 additions and 26 deletions
+14 -8
View File
@@ -5,11 +5,11 @@ import { section, info, success, fail, warn } from './logger.js'
import { isEmptyOrNull } from './validate.js'
/**
* 依建立時間由新到舊排序,保留最新的 keepCount 筆,回傳其餘待刪除的成品。
* 純函式,方便單元測試。
* @param {any[]} releases 成品清單
* @param {number} keepCount 要保留的筆數
* @returns {any[]} 需要刪除的成品(較舊者)
* 依 `created_at` 建立時間由新到舊排序,保留最新的 `keepCount` 筆,回傳其餘(較舊)待刪除的成品。
* 以展開運算子複製陣列後再排序,不會改動傳入的原陣列。為純函式,方便單元測試。
* @param {any[]} releases 成品清單,每個元素預期含有 `created_at` 欄位
* @param {number} keepCount 要保留的最新筆數;為 0 時代表全部刪除
* @returns {any[]} 需要刪除的成品陣列(較舊者),依新到舊排序
*/
export function selectReleasesToDelete(releases, keepCount) {
const sorted = [...releases].sort(
@@ -19,9 +19,15 @@ export function selectReleasesToDelete(releases, keepCount) {
}
/**
* 讀取成品清單,刪除超出保留數量的舊版本成品。
* @param {import('./gitea-client.js').GiteaClient} client
* @param {ReturnType<import('./config.js').loadConfig>} config
* 讀取全部成品清單,刪除超出保留數量的舊版本成品。
*
* 流程:取得所有 release → 若總數不超過 `keepCount` 則直接結束(無需清理)→
* 否則以 [[selectReleasesToDelete]] 取出待刪除清單,逐筆刪除(略過沒有 `id` 的項目),
* 依回應狀態碼 204 判定成功與否並輸出結果。
*
* @param {import('./gitea-client.js').GiteaClient} client 用於讀取與刪除的 Gitea 客戶端
* @param {ReturnType<import('./config.js').loadConfig>} config 設定物件,使用其 `releaseApiUrl` 與 `keepCount`
* @returns {Promise<void>}
*/
export async function cleanupReleases(client, config) {
section('取得成品資訊')