Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: use async in watch file changes #4026

Merged
merged 14 commits into from
Sep 23, 2024
Merged

feat: use async in watch file changes #4026

merged 14 commits into from
Sep 23, 2024

Conversation

bytemain
Copy link
Member

@bytemain bytemain commented Sep 18, 2024

Types

  • 🐛 Bug Fixes

Background or solution

Changelog

Summary by CodeRabbit

  • 新功能
    • 文件路径解析方法现支持异步处理,提升了文件操作的性能和响应性。
    • 调整了应用程序的工作区目录传递方式,从哈希路径改为查询参数格式。
  • 性能改进
    • 文件系统操作已转换为异步,增强了文件监视器的响应能力。
    • 改进了文件更改事件的处理逻辑,确保只传播相关更改。
  • 代码重构
    • 简化了临时文件检测逻辑,改用新导入的 shouldIgnorePath 函数。
    • 改进了错误处理和日志记录,提升了文件监视器的可维护性。

Copy link
Contributor

coderabbitai bot commented Sep 18, 2024

Walkthrough

该拉取请求主要涉及对文件系统监视器功能的重构和增强。对 file-service-watcher.ts 文件中的 FileSystemWatcherServer 类进行了全面重构,增强了资源管理和代码可读性,同时引入了异步处理的能力。更新了事件处理逻辑和错误处理机制,以提高系统在负载下的响应能力。此外,tools/playwright/src/app.ts 文件中对 URL 处理方式的修改也反映了代码的一致性和兼容性提升。

Changes

文件路径 更改摘要
packages/file-service/src/node/recursive/file-service-watcher.ts 重构 FileSystemWatcherServer 类,增强资源管理,更新 dispose 方法,修改 resolvePath 为异步方法,优化事件处理逻辑。
tools/playwright/src/app.ts 修改 loadOrReload 方法中的 URL 格式,将工作空间目录的传递方式从哈希路径改为查询参数。

Possibly related PRs


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    -- I pushed a fix in commit <commit_id>, please review it.
    -- Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    -- @coderabbitai generate unit testing code for this file.
    -- @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    -- @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    -- @coderabbitai read src/utils.ts and generate unit testing code.
    -- @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    -- @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

railway-app bot commented Sep 18, 2024

🚅 Previously deployed to Railway in the core project. Environment has been deleted.

@opensumi opensumi bot added the 🐞 bug Something isn't working label Sep 18, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Outside diff range and nitpick comments (2)
packages/file-service/src/node/recursive/file-service-watcher.ts (2)

61-61: 重命名变量需注意命名规范

toDispose 重命名为 _disposeables,但应注意单词拼写正确,_disposeables 应为 _disposables

建议修改变量名以纠正拼写错误:

-protected readonly _disposeables = new DisposableCollection();
+protected readonly _disposables = new DisposableCollection();

420-429: 优化 resolvePath 方法的异常处理

在异常处理中,连续捕获了两次异常,可能需要合并或更有针对性地处理异常。

建议优化异常处理逻辑:

 try {
   return await fs.realpath.native(path);
 } catch (_e) {
-  try {
-    return paths.join(await fs.realpath.native(directory), file);
-  } catch (_e) {
-    return path;
-  }
+  // 如果文件不存在,则返回原始路径
+  return path;
 }
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 36491e3 and 36c1bac.

Files selected for processing (3)
  • packages/file-service/src/node/recursive/file-service-watcher.ts (10 hunks)
  • packages/file-service/src/node/shared/index.ts (1 hunks)
  • packages/file-service/src/node/un-recursive/file-service-watcher.ts (2 hunks)
Additional comments not posted (8)
packages/file-service/src/node/un-recursive/file-service-watcher.ts (2)

102-102: 在监听器中处理临时文件

在文件变化监听器中加入了对临时文件的过滤,符合预期。但需要确保 filename 始终为字符串类型,以避免类型错误。

请确认 filename 在所有情况下均为字符串类型,否则需要添加类型检查或转换。


19-20: 缺少 isTempFile 的导入

代码中使用了 isTempFile,但未看到相应的导入语句,可能导致运行时错误。

建议添加导入语句:

+import { isTempFile } from '../shared';

Likely invalid or redundant comment.

packages/file-service/src/node/recursive/file-service-watcher.ts (6)

155-155: 确保在 watchFileChanges 中正确处理异步逻辑

在调用 this._disposables.push 时,需要确保传入的 toDisposeWatcher 已正确初始化,且异步操作已完成。

请检查在异步操作完成前,是否可能发生资源竞争,必要时考虑使用 await 等方式保证顺序。


308-308: 检查 _disposables 的拼写

同之前意见,_disposeables 应更正为 _disposables,以保持代码一致性。


315-316: 更新注释以反映最新状态

注释中提到由于 parcel/watcher 在 Linux 下的问题,选择使用 nsfw。然而在代码中仍然使用了 ParcelWatcher。需要确认当前策略,并更新注释以避免混淆。

请确认在 Linux 下是否仍需使用 nsfw,或者应更新注释以反映实际使用的模块。


341-341: handleNSFWEvents 方法中过滤临时文件

在处理事件时,使用了 isTempFile 来过滤临时文件,符合预期。但需确保 event.file 始终有值,以避免潜在的空引用错误。

请检查 event.file 是否可能为空,必要时添加空值检查。


356-356: handleNSFWEvents 方法中处理异步操作

在循环中调用了 await this.resolvePath,可能导致性能问题。考虑使用批量处理或其他优化手段。

[performance]

建议优化异步调用,减少不必要的等待时间,提高方法执行效率。


25-25: 缺少 isTempFile 的导入

代码中使用了 isTempFile,但未看到相应的导入语句,可能导致运行时错误。

建议添加导入语句:

+import { isTempFile } from '../shared';

Likely invalid or redundant comment.

Copy link

codecov bot commented Sep 18, 2024

Codecov Report

Attention: Patch coverage is 74.19355% with 16 lines in your changes missing coverage. Please review.

Project coverage is 54.41%. Comparing base (36491e3) to head (7093502).
Report is 7 commits behind head on main.

Files with missing lines Patch % Lines
...service/src/node/recursive/file-service-watcher.ts 75.51% 11 Missing and 1 partial ⚠️
...rowser/vscode/api/main.thread.file-system-event.ts 0.00% 3 Missing ⚠️
packages/file-service/src/node/shared/index.ts 83.33% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4026      +/-   ##
==========================================
- Coverage   54.47%   54.41%   -0.06%     
==========================================
  Files        1583     1584       +1     
  Lines       96840    97001     +161     
  Branches    19832    19858      +26     
==========================================
+ Hits        52752    52786      +34     
- Misses      36617    36724     +107     
- Partials     7471     7491      +20     
Flag Coverage Δ
jsdom 49.94% <72.58%> (-0.05%) ⬇️
node 15.58% <27.41%> (-0.03%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

Outside diff range and nitpick comments (1)
packages/file-service/__tests__/node/file-node-watcher.test.ts (1)

12-13: 考虑移除注释的代码

注释掉了 jest.retryTimes(3, { logErrorsBeforeRetry: true });。如果不再需要重复测试,建议删除该注释代码以保持代码整洁。

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 36c1bac and e7e145f.

Files selected for processing (4)
  • packages/extension/src/browser/vscode/api/main.thread.file-system-event.ts (2 hunks)
  • packages/file-service/tests/node/file-node-watcher.test.ts (26 hunks)
  • packages/file-service/src/node/recursive/file-service-watcher.ts (10 hunks)
  • packages/file-service/src/node/un-recursive/file-service-watcher.ts (6 hunks)
Files skipped from review as they are similar to previous changes (2)
  • packages/file-service/src/node/recursive/file-service-watcher.ts
  • packages/file-service/src/node/un-recursive/file-service-watcher.ts
Additional comments not posted (5)
packages/extension/src/browser/vscode/api/main.thread.file-system-event.ts (2)

12-12: 引入 Uri 模块

在导入中添加了 Uri 模块,以替换之前的 URI 模块,确保与代码中使用的 Uri 类一致。


81-81: 统一 URI 解析方式

在文件系统事件处理中,将 new URI(change.uri).codeUri 替换为 Uri.parse(change.uri),统一了 URI 的解析方式。这提高了代码的一致性和可读性。

Also applies to: 85-85, 89-89

packages/file-service/__tests__/node/file-node-watcher.test.ts (3)

4-4: 引入 Deferred 以改进异步测试

在导入中添加了 Deferred,用于在测试中管理异步操作,提高了测试的可靠性。


Line range hint 35-48: 优化测试异步处理,使用 Deferred

在测试中引入了 triggered 对象,通过 Deferred 来管理异步操作,确保在预期的文件系统事件发生后再继续执行测试。这增强了测试的可靠性。


60-61: 移除不必要的等待

在引入 await triggered.promise; 后,await sleep(sleepTime); 可能不再需要。建议移除 sleep 调用以提高测试效率。

应用以下差异以移除不必要的 sleep 调用:

 await fse.renameSync(FileUri.fsPath(root.resolve('for_rename')), FileUri.fsPath(root.resolve('for_rename_renamed')));
-        await sleep(sleepTime);
         await triggered.promise;

Likely invalid or redundant comment.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Outside diff range and nitpick comments (1)
packages/utils/src/async.ts (1)

11-12: 考虑添加常量的注释说明,提高代码可读性。

虽然常量命名已经比较清晰,但还是建议添加一些注释说明,阐明这些常量的具体含义和用途。这样可以进一步提高代码的可读性和可维护性,特别是对于新接触这部分代码的开发者来说。

建议添加如下注释:

// 浏览器渲染4帧的时间
export const FRAME_FOUR = FRAME_ONE * 4;
// 浏览器渲染5帧的时间 
export const FRAME_FIVE = FRAME_ONE * 5;
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between b5a0a91 and e2a17ac.

Files selected for processing (2)
  • packages/file-service/src/node/recursive/file-service-watcher.ts (12 hunks)
  • packages/utils/src/async.ts (1 hunks)
Files skipped from review as they are similar to previous changes (1)
  • packages/file-service/src/node/recursive/file-service-watcher.ts
Additional comments not posted (1)
packages/utils/src/async.ts (1)

11-12: 新增的常量命名清晰,易于理解。

新增的 FRAME_FOURFRAME_FIVE 常量命名清晰,易于理解其含义。它们的值是基于已有的 FRAME_ONE 常量计算得出的,保持了命名和计算方式的一致性。

packages/utils/src/async.ts Show resolved Hide resolved
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Outside diff range and nitpick comments (1)
packages/file-service/src/node/recursive/file-service-watcher.ts (1)

Line range hint 1-453: 进一步改进的建议

FileSystemWatcherServer 类已经有了显著的改进,但仍有一些潜在的优化空间:

  1. 性能监控:考虑添加性能监控机制,以便更好地了解文件监视和事件处理的效率。这可能包括记录处理时间、事件频率等指标。

  2. 配置选项:可以考虑增加更多的配置选项,允许用户根据特定需求调整文件监视器的行为,如自定义忽略规则、调整节流时间等。

  3. 测试覆盖:确保为新添加和修改的方法编写全面的单元测试和集成测试,特别是异步方法和错误处理逻辑。

  4. 文档更新:考虑更新或添加详细的 API 文档,解释类的用法、配置选项和注意事项。

  5. 性能优化:对于大型项目或频繁文件变更的场景,可能需要进一步优化事件合并和处理逻辑。

  6. 跨平台兼容性:继续关注和改进在不同操作系统上的表现,特别是在文件路径处理方面。

这些建议可以在未来的迭代中考虑实施,以进一步提高 FileSystemWatcherServer 类的功能性和可用性。

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between bdb5bbd and 623db5e.

Files selected for processing (2)
  • packages/extension/src/browser/vscode/api/main.thread.file-system-event.ts (2 hunks)
  • packages/file-service/src/node/recursive/file-service-watcher.ts (12 hunks)
Files skipped from review as they are similar to previous changes (1)
  • packages/extension/src/browser/vscode/api/main.thread.file-system-event.ts
Additional comments not posted (9)
packages/file-service/src/node/recursive/file-service-watcher.ts (9)

5-5: 导入和类声明的改进

这些更改增强了文件监视器的功能:

  1. 引入 throttle 函数有助于优化事件处理。
  2. 导入 FRAME_FIVE 常量可能用于定义一致的时间间隔。
  3. 继承 Disposable 类改进了资源管理。

这些修改都是积极的改进,有助于提高代码的性能和可维护性。

Also applies to: 12-12, 50-50


70-77: 构造函数和资源管理的改进

构造函数和资源管理的修改提高了代码质量:

  1. 调用 super() 确保正确初始化基类。
  2. 使用 addDispose 替代 toDispose 简化了资源管理,使代码更加清晰和易于维护。

这些更改符合最佳实践,有助于防止资源泄漏和提高代码可读性。


248-249: NSFW 错误回调的改进

在 NSFW 错误回调中添加错误日志是一个很好的改进:

  1. 增加了错误日志,有助于更好地进行调试和问题诊断。
  2. 保留了原有的 unwatchFileChanges 调用,确保在错误发生时停止监视。

建议:考虑在日志中包含 watcherId,以便更容易追踪特定监视器的问题。

例如:

this.logger.error(`NSFW watcher (ID: ${watcherId}) encountered an error and will stop watching.`, err);

这将使调试过程更加精确和高效。


299-302: setClient 方法的改进

setClient 方法中添加对 this.disposed 的检查是一个很好的改进:

  1. 防止在已释放的实例上设置客户端,避免潜在的错误。
  2. 提高了代码的健壮性和安全性。

这种防御性编程的做法有助于预防难以调试的问题,值得赞赏。


306-307: isEnableNSFW 方法的注释改进

添加解释在 Linux 上使用 NSFW 的原因的注释是很有价值的:

  1. 提供了实现选择的上下文,有助于其他开发者理解代码。
  2. 引用了相关的社区 issue,便于进一步查询。

建议:考虑在注释中添加一个 TODO 或 FIXME,提醒在 parcel/watcher 的 Linux 问题解决后重新评估此决定。这将有助于未来的维护。

例如:

/**
 * 由于 parcel/watcher 在 Linux 下存在内存越界访问问题触发了 sigsegv 导致 crash,所以在 Linux 下仍旧使用 nsfw
 * 社区相关 issue: https://github.com/parcel-bundler/watcher/issues/49
 * TODO: 当 parcel/watcher 的 Linux 问题解决后,重新评估此实现
 */

Line range hint 332-396: handleNSFWEvents 方法的重大改进

handleNSFWEvents 方法的重构带来了显著的改进:

  1. 使用 async/await 提高了代码的可读性和错误处理能力。
  2. 采用 shouldIgnorePath 进行事件过滤,可能提供了更健壮的路径过滤机制。
  3. 使用 Promise.all 进行并发事件处理,提高了大量事件处理时的性能。

这些更改大大提升了代码质量和性能。建议考虑添加错误处理:

await Promise.all(
  mergedEvents.map(async (event) => {
    try {
      // 现有的事件处理逻辑
    } catch (error) {
      this.logger.error(`Error processing NSFW event: ${error.message}`, error);
    }
  })
);

这将确保单个事件的处理错误不会影响其他事件的处理。


Line range hint 422-438: resolvePath 方法的异步化和优化

resolvePath 方法的更改带来了几个重要的改进:

  1. 方法现在是异步的,返回 Promise,这允许非阻塞的文件系统操作。
  2. 在 Linux 系统上使用 fs.realpath.native,可能提供更好的性能。
  3. 增加了错误处理逻辑,提高了代码的健壮性。

这些更改不仅提高了性能,还增强了跨平台兼容性和错误处理能力。异步实现特别有助于提高在处理大量文件或复杂文件系统结构时的效率。


445-445: fireDidFilesChanged 方法的节流优化

fireDidFilesChanged 方法的更改是一个很好的优化:

  1. 使用 throttle 函数进行节流处理,可以有效防止在短时间内触发过多事件,避免客户端被大量事件淹没。
  2. 采用 FRAME_FIVE 常量作为节流延迟时间,确保了整个应用中使用一致的时间间隔。

这种优化可以显著提高性能,特别是在处理大量文件变更时。它有助于平衡实时性和系统资源使用,提供更流畅的用户体验。


Line range hint 1-453: FileSystemWatcherServer 类的整体改进

FileSystemWatcherServer 类的重构带来了全面的改进:

  1. 广泛采用 async/await 模式,提高了代码的可读性和错误处理能力。
  2. 增强了错误处理和日志记录,使得类更加健壮,更易于调试。
  3. 通过继承 Disposable 和使用 addDispose 方法,改进了资源管理。
  4. 优化了事件处理逻辑,包括使用节流和并发处理,提高了性能。
  5. 改进了跨平台兼容性,特别是在处理 Linux 系统上的文件路径时。

这些改进使得类的结构更加一致,遵循了现代 JavaScript/TypeScript 的最佳实践。整体而言,这次重构显著提高了代码质量、可维护性和性能。

@bytemain bytemain changed the title fix: use async in watch file changes feat: use async in watch file changes Sep 23, 2024
@opensumi opensumi bot added the 🎨 feature feature required label Sep 23, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Outside diff range and nitpick comments (2)
packages/file-service/src/node/recursive/file-service-watcher.ts (2)

Line range hint 331-395: handleNSFWEvents 方法的重构

方法重构为使用 async/await 语法,提高了代码的可读性和潜在的性能。事件处理逻辑的更新也使得代码更加清晰和高效。

建议:考虑将重复的 if (isIgnored(watcherId, path)) { return; } 逻辑提取到一个单独的函数中,以进一步提高代码的可读性和可维护性。

考虑添加一个辅助函数来处理重复的忽略逻辑:

private async handleEventPath(watcherId: number, path: string, action: () => void): Promise<void> {
  if (isIgnored(watcherId, path)) {
    return;
  }
  action();
}

然后在事件处理中使用它:

await this.handleEventPath(watcherId, path, () => this.pushAdded(path));

这将使主要的事件处理逻辑更加简洁和易于理解。


Line range hint 1-465: 整体代码质量显著提升

本次重构显著提高了 FileSystemWatcherServer 类的代码质量。主要改进包括:

  1. 通过继承 Disposable 类改进了资源管理。
  2. 引入异步操作,提高了文件系统操作的效率。
  3. 增强了错误处理和日志记录,有利于问题诊断。
  4. 重构了事件处理逻辑,提高了代码的可读性和可维护性。
  5. 统一了路径忽略逻辑,确保了一致性。

这些改进大大增强了代码的健壮性和可维护性。

建议进一步改进的方向:

  1. 考虑添加单元测试,特别是针对新的异步方法和错误处理逻辑。
  2. 可以考虑使用更现代的 JavaScript 特性,如可选链操作符,进一步简化代码。
  3. 对于一些复杂的方法(如 handleNSFWEvents),可以考虑进一步拆分为更小的函数,以提高可读性。
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 1943ef1 and 7093502.

Files selected for processing (1)
  • packages/file-service/src/node/recursive/file-service-watcher.ts (10 hunks)
Additional comments not posted (6)
packages/file-service/src/node/recursive/file-service-watcher.ts (6)

49-49: 类继承和构造函数的改进

这些更改通过继承 Disposable 类和使用 this.addDispose() 方法,显著提高了资源管理能力。这种方法确保了资源的正确释放,有助于防止内存泄漏。

Also applies to: 69-76


247-248: NSFW 监视器错误处理的改进

errorCallback 中添加了错误日志记录,这大大提高了错误的可见性和调试能力。这是一个重要的改进,有助于快速识别和解决问题。


298-301: setClient 方法的改进

setClient 方法中添加了对 this.disposed 的检查,这是一个重要的防御性编程措施。它可以防止在对象已被销毁的情况下设置客户端,从而避免潜在的错误和意外行为。


305-306: isEnableNSFW 方法的注释改进

添加的注释清晰地解释了为什么在 Linux 系统上仍然使用 NSFW。这种详细的解释对于代码的可维护性和未来的开发者理解实现选择非常重要。


Line range hint 421-437: resolvePath 方法的异步化和错误处理改进

resolvePath 方法改为异步方法是一个很好的改进,它可以更好地处理文件系统操作。对 Linux 系统的错误处理增强也提高了代码的健壮性。这些变更使得方法能够更好地处理各种边缘情况,特别是在处理符号链接时。


184-185: 使用 shouldIgnorePath 函数优化事件过滤

引入 shouldIgnorePath 函数来集中处理路径忽略逻辑是一个很好的改进。这不仅提高了代码的可维护性,还确保了在整个文件中一致地应用忽略规则。

Also applies to: 331-333

Copy link
Member

@Ricbet Ricbet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bytemain bytemain merged commit acc8715 into main Sep 23, 2024
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐞 bug Something isn't working 🎨 feature feature required
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants