首頁 >web前端 >js教程 >恢復過時的項目

恢復過時的項目

Linda Hamilton
Linda Hamilton原創
2025-01-22 06:30:16122瀏覽

這週,我對 Starchart 做了一些維護工作。該專案已經有一段時間沒有工作了,所以我們正在嘗試更新它的依賴項。

GitHub logo 發展空間 / 澱粉藝術

用於管理自訂網域和憑證的自助服務工具

星圖License: MIT

Starchart 讓 Seneca 開發者社群可以輕鬆建立和管理自己的自訂子網域和 SSL 證書,無需付費或無需提供個人資訊。

有關運行 Starchart 的信息,請參閱我們的部署指南。有關開發訊息,請參閱我們的貢獻指南。有關更多技術背景、規劃和初始設計,請參閱 wiki。

簡介

網路不斷發展,曾經困難的事情變得簡單。例如,託管自己的網站過去需要伺服器管理、作業系統、網路等方面的知識。如今,許多開發人員託管他們的個人和專案網站而無需接觸遠端伺服器,而是選擇(免費)雲端服務,例如 GitHub Pages、 Vercel、Netlify 或 AWS。

網路的安全模型也不斷發展。例如,瀏覽器供應商已在各地採用 HTTPS。這對於安全性很有好處,因為它可以在客戶端和伺服器之間實現基於憑證的加密。然而,就像…

在 GitHub 上查看

計劃是修復 CI 工作流程,我們上週發現該工作流程已被破壞:

Image description

但在我找到解決方案之前,之前的開發人員之一 Eakam 解決了這個問題 - 事實證明這只是因為 Playwright 已經過時了。

恢復過時的項目 將劇作家提升至 1.49.1 第772章

恢復過時的項目
埃卡姆1007 發佈於

Playwright 安裝在 CI(E2E 測試)中失敗。修改劇作家版本應該可以解決這個問題。

參考: Installation error log

在 GitHub 上查看

我覺得我應該透過尋找更多的東西來彌補它,並認為更新更多的依賴項將是一個很好的起點。

由於該專案已經兩年沒有投入使用,因此存在大量由過時的軟體包引起的安全漏洞。我能夠透過 npm 審核修復修復大部分問題。

還有一些修復導致了 @remix-run/eslint-config 和 @remix-run/react 中的重大更改,所以我手動修改了它們。

其中一個更新(我同時更新了它們,所以我不能肯定地說,但我的賭注是/react)導致了類型檢查錯誤,因為[@remix-run/react].useNavigation( ).formData 現在可能是未定義的類型。我用可選鏈修復了它。

// Before
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData.get('id')) === dnsRecord.id;

// After
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData?.get('id')) === dnsRecord.id;

我所做的其他更改與彈出的一些lint 錯誤有關(此時我意識到我已經關閉了ESLint 擴展,但我確信這些警告會隨更新一起出現,因為它在CI 中從未發生過)過去)。

  1. 在一個檔案中多次匯入相同模組的實例:
// Before
import { getCertificateByUsername } from '~/models/certificate.server';
import { deleteCertificateById } from '~/models/certificate.server';
import { isAdmin } from '~/models/user.server';
import { getUserByUsername } from '~/models/user.server';

// After
import { getCertificateByUsername, deleteCertificateById } from '~/models/certificate.server';
import { isAdmin, getUserByUsername } from '~/models/user.server';
  1. 當首選 const 時使用 let:
// Before
let date = val.toLocaleDateString('en-US', {

// After
const date = val.toLocaleDateString('en-US', {

很驚訝它之前沒有捕捉到這些。

此外,當我打開 ESLint 擴充功能時,我有點吃驚,因為有大約 900 個 linter 錯誤。事實證明,這是因為 ESLint 對 Playwright 產生的輸出進行了 linting。所以我將 /playwright-report 加入到 .eslintignore。

這就是我這次衝刺的維護工作的總和。最終修復了 30 個嚴重的安全問題,所以還不錯。

恢復過時的項目 更新依賴項 第775章

恢復過時的項目
烏代拉納 發佈於

應該要修復一堆安全漏洞。

變化

  • [x] 凹凸​​依賴項
  • [x] 將 /playwright-report 加入 .eslintignore
  • [x] 修正類型檢查和 linter 錯誤
在 GitHub 上查看

我還重新啟動了 Dependabot,它更新了幾個小版本。如果不必手動調查和修補安全漏洞,那就太好了。

在其他新聞中,我向 Mattermost 發出的一個拉取請求終於被合併了!

恢復過時的項目 [GH-29548] 避免在 `tokens_store.go` 中使用 SELECT * #29558

恢復過時的項目
烏代拉納 發佈於

總結

此公關:

  • 將 token_store.go 中的 SQL 查詢切換為使用 SQLBuilder
  • 在 TokenStore 的 SELECT 查詢中明確定義列。
  • 將常見查詢分解到建構函式中。

門票連結

修補#29548

截圖

發行說明

// Before
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData.get('id')) === dnsRecord.id;

// After
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData?.get('id')) === dnsRecord.id;
在 GitHub 上查看

不久前就已獲得批准,但花了幾週時間才合併到 main 中。

與此同時,我一直在致力於我的其他公關工作。我被要求進行一些更改,正在等待重新審核。

恢復過時的項目 [MM-53650] 為 webapp 新增禁用表情渲染設定 #29414

恢復過時的項目
烏代拉納 發佈於

總結

此拉取請求向 Web 應用程式新增了一個使用者設置,以將渲染表情符號 (:D) 切換為表情符號 (?)。

該設定會作為元件加入 Components/user_settings/display/render_emoticons_as_emoji/ 中,並在 Components/user_settings/display/user_settings_display.tsx 中匯入。

我在 user_settings_display.tsx 中新增了一個 renderOnOffLabel() 函數,該函數從 Components/user_settings/advanced/user_settings_advanced.tsx 中提取,以幫助渲染新元件。

使用 savePreferences() 操作將設定儲存為使用者首選項。

我已經為 utils/constants.tsx 和 webapp/channels/src/packages/mattermost-redux/src/constants/preferences.ts 增加了偏好常數。

為了實際使用該設置,我修改了 Components/post_markdown 以接收它的值作為道具,為此我使用了 getBool() 並向配置添加了預設值。 post_markdown 將此值傳遞給選項物件上的 Markdown,然後將其傳遞給 utils/text_formatting.tsx,最後將該值作為新新增的參數傳遞給 emoticons.tsx。 emoticons.tsx 檢查該值是否為 true,如果是,則將表情符號轉換為表情符號。

我已經更新了受影響的測試並為新組件建立了單元測試。我還更新了英文翻譯文件。

QA 測試步驟
  1. 導航至使用者設定。
  2. 轉到顯示類別。
  3. 找到標示為「自動將表情符號渲染為表情符號」的部分,然後按一下「編輯」。
  4. 切換設定並點選「儲存」。
  5. 應使用該設定在客戶端切換當前使用者和其他使用者發送的訊息上的表情符號渲染。

門票連結

修復(部分)https://github.com/mattermost/mattermost/issues/26504 Jira https://mattermost.atlassian.net/browse/MM-53650

注意問題和票證也描述了將此功能添加到行動應用程式中,但此 PR 沒有。

截圖

before after
恢復過時的項目 恢復過時的項目

發行說明

// Before
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData.get('id')) === dnsRecord.id;

// After
const isLoading =
  navigation.state === 'submitting' &&
  Number(navigation.formData?.get('id')) === dnsRecord.id;
在 GitHub 上查看

處理這個 PR 很有趣,因為當我第一次提交它時,我什至不完全理解我的更改。離開很長一段時間後重新回到它並得到評論的反饋幫助我從一個新的角度看待它並更好地理解它。

Mattermost 應用程式從「首選項」和「設定」取得使用者設定狀態。我將我的設置添加到兩者中,模仿建議我參考的現有設置之一,但事實證明“配置”用於伺服器級設置,而這個新設置旨在成為客戶端選項。這些評論幫助我了解了我哪裡出錯了,而且實際上最終的改變比我認為必要的要小。

總的來說,我想說這是相當有成效的一周。

以上是恢復過時的項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn