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:
co-authored by
Claude Opus 4.8
parent
7082fd7311
commit
7e6f9ef3f6
+17
-6
@@ -1,9 +1,15 @@
|
||||
// 與 Gitea API 溝通的 HTTP 客戶端,封裝認證標頭、分頁讀取與刪除請求。
|
||||
// 對應原本 entrypoint.sh 的 fetch_all_pages 與 curl DELETE 呼叫。
|
||||
|
||||
/**
|
||||
* 與 Gitea REST API 溝通的輕量 HTTP 客戶端,負責帶上認證標頭、分頁讀取清單與發出刪除請求。
|
||||
* 取代原 bash 版本以 `curl`/`jq` 進行的 API 操作。
|
||||
*/
|
||||
export class GiteaClient {
|
||||
/**
|
||||
* @param {{ token?: string | null }} options 認證設定;有 token 時帶上 Authorization 標頭
|
||||
* 建立客戶端;有 token 時於後續所有請求帶上 `Authorization: token <token>` 標頭,
|
||||
* 無 token(或為 `null`)時以匿名方式呼叫。
|
||||
* @param {{ token?: string | null }} [options] 認證設定
|
||||
*/
|
||||
constructor({ token = null } = {}) {
|
||||
this.headers = {}
|
||||
@@ -13,9 +19,14 @@ export class GiteaClient {
|
||||
}
|
||||
|
||||
/**
|
||||
* 逐頁讀取分頁式清單 API,直到回傳空陣列為止,合併成單一陣列。
|
||||
* @param {string} baseUrl 不含 query string 的 API 位址
|
||||
* @returns {Promise<any[]>} 所有頁面合併後的項目
|
||||
* 逐頁讀取分頁式清單 API(每頁以 `?page=N` 由 1 遞增),直到某頁回傳空陣列(或非陣列)為止,
|
||||
* 將所有頁面項目合併成單一陣列回傳。
|
||||
*
|
||||
* 注意:終止條件依賴「空陣列代表最後一頁」的假設;若 API 不以空陣列結尾則迴圈不會自然停止。
|
||||
*
|
||||
* @param {string} baseUrl 不含 query string 的 API 位址(本方法會自行附加 `?page=N`)
|
||||
* @returns {Promise<any[]>} 所有頁面合併後的項目陣列;無資料時為空陣列
|
||||
* @throws {Error} 任一頁回應 HTTP 非 2xx(`!res.ok`)時拋出,訊息含 URL 與狀態碼
|
||||
*/
|
||||
async fetchAllPages(baseUrl) {
|
||||
const all = []
|
||||
@@ -42,9 +53,9 @@ export class GiteaClient {
|
||||
}
|
||||
|
||||
/**
|
||||
* 對指定資源發出 DELETE 請求。
|
||||
* 對指定資源發出 DELETE 請求,僅回傳 HTTP 狀態碼供呼叫端判斷成敗(不檢查 ok、不解析回應內容)。
|
||||
* @param {string} url 目標資源位址
|
||||
* @returns {Promise<number>} HTTP 狀態碼
|
||||
* @returns {Promise<number>} 回應的 HTTP 狀態碼(成功刪除通常為 204)
|
||||
*/
|
||||
async deleteResource(url) {
|
||||
const res = await fetch(url, { method: 'DELETE', headers: this.headers })
|
||||
|
||||
Reference in New Issue
Block a user