首页 >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