Skip to content

Conversation

Murderlon
Copy link
Member

Do not merge before #710

POST_RECEIVE is called every time an upload finished writing to the store. This event is emitted whenever the request handling is completed (which is the same as onUploadFinish, almost the same as POST_FINISH), whereas the POST_RECEIVE_V2 event is emitted while the request is being handled.

POST_RECEIVE has been marked deprecated for a long time.

@Murderlon Murderlon added the Breaking change This requires a semver major release label Feb 12, 2025
@Murderlon Murderlon self-assigned this Feb 12, 2025
Copy link

changeset-bot bot commented Feb 12, 2025

🦋 Changeset detected

Latest commit: a885841

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 6 packages
Name Type
@tus/server Major
@tus/utils Minor
@tus/gcs-store Patch
@tus/azure-store Patch
@tus/file-store Patch
@tus/s3-store Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link

coderabbitai bot commented Feb 12, 2025

Walkthrough

This pull request introduces a major version update for the @tus/server package and a minor version update for the @tus/utils package. It renames the POST_RECEIVE_V2 constant to POST_RECEIVE, removes the deprecated POST_RECEIVE event, and updates related documentation. Changes include modifications to event emissions in handlers, updates to event listener tests, and the removal of a specific event emission in the PATCH handler along with its test case. Additionally, deprecated comments and constants have been eliminated.

Changes

File(s) Change Summary
.changeset/spicy-garlics-look.md, packages/utils/src/constants.ts, packages/server/.../BaseHandler.ts, packages/server/.../server.ts, packages/server/.../types.ts, packages/server/.../Server.test.ts Renamed POST_RECEIVE_V2 to POST_RECEIVE, removed deprecated comments/constants, updated event emissions and listener references, and applied package version updates.
packages/server/README.md Updated documentation by removing the deprecated POST_RECEIVE event section and revising examples to use POST_RECEIVE.
packages/server/.../PatchHandler.ts, packages/server/.../PatchHandler.test.ts Removed the emission of the POST_RECEIVE event in the PATCH handler and deleted the corresponding test case and import.

🪧 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 generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai plan to trigger planning for file edits and PR creation.
  • @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.

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.

@mitjap
Copy link
Collaborator

mitjap commented Feb 12, 2025

It would be nice to use a different event name for all who are still using deprecated event name. Or is it OK for user to silently transition to use new event?

@Murderlon
Copy link
Member Author

Murderlon commented Feb 12, 2025

POST_RECEIVE was a mistake from me when I implemented all events at the same time. The only reason is to do something on progress instead of on finish (but the implementation was in fact on finish). If some people never got the deprecation warning and blindly update to the next major version without checking any release notes, then it will still work as expected as long as you wrote the code with the assumption it fires on progress (idempotent and where a lost event doesn't matter).

I think the best way forward is to rename. Otherwise it means removing two events and introducing a new one.

Base automatically changed from request-runtimes to main March 25, 2025 08:32
* main:
  Refactor server to run in all (Node.js compatible) runtimes and meta frameworks (#710)
  [ci] release (#721)
  @tus/s3-store: fix unhandled promise rejection (#728)
  Bump @aws-sdk/client-s3 from 3.717.0 to 3.758.0 (#733)
  Bump @types/node from 22.10.1 to 22.13.7 (#734)
  Bump typescript from 5.6.2 to 5.8.2 (#731)
  @tus/azure-store: fix non-ASCII characters error on metadata (#725)
  Fix package-lock.json
  @tus/s3-store: add missing docs for `maxMultipartParts` (#720)
  [ci] release (#719)
  @tus/server: don't use AbortSignal.any to fix memory leak (#718)
  [ci] release (#713)
  Add .coderabbit.yml
  @tus/s3-store: add `maxMultipartParts` option (#712)
  [ci] release (#701)
  @tus/s3-store: add `minPartSize` option (#703)
Copy link

socket-security bot commented Mar 25, 2025

Copy link

@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

🧹 Nitpick comments (1)
packages/server/README.md (1)

82-86: Update the Event Reference in the Options Documentation

The description for options.postReceiveInterval still points to POST_RECEIVE_V2, whereas this PR renames that event to POST_RECEIVE. Updating the link reference and text here will ensure consistency in the documentation.

-Interval in milliseconds for sending progress of an upload over [`POST_RECEIVE_V2`](#eventspost_receive_v2) (`number`).
+Interval in milliseconds for sending progress of an upload over [`POST_RECEIVE`](#eventspost_receive) (`number`).
🧰 Tools
🪛 LanguageTool

[uncategorized] ~84-~84: A punctuation mark might be missing here.
Context: ... for sending progress of an upload over [POST_RECEIVE_V2](#eventspost_receive_v...

(AI_EN_LECTOR_MISSING_PUNCTUATION)

🪛 markdownlint-cli2 (0.17.2)

85-85: Link fragments should be valid
null

(MD051, link-fragments)

📜 Review details

Configuration used: .coderabbit.yml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 51419da and 60ec6eb.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (9)
  • .changeset/spicy-garlics-look.md (1 hunks)
  • packages/server/README.md (1 hunks)
  • packages/server/src/handlers/BaseHandler.ts (1 hunks)
  • packages/server/src/handlers/PatchHandler.ts (0 hunks)
  • packages/server/src/server.ts (0 hunks)
  • packages/server/src/types.ts (1 hunks)
  • packages/server/test/PatchHandler.test.ts (1 hunks)
  • packages/server/test/Server.test.ts (1 hunks)
  • packages/utils/src/constants.ts (0 hunks)
💤 Files with no reviewable changes (3)
  • packages/server/src/server.ts
  • packages/utils/src/constants.ts
  • packages/server/src/handlers/PatchHandler.ts
🧰 Additional context used
🧬 Code Definitions (1)
packages/server/test/Server.test.ts (1)
packages/utils/src/constants.ts (1)
  • EVENTS (106-111)
🔇 Additional comments (6)
packages/server/src/types.ts (1)

43-46: Documentation Update for postReceiveInterval
The documentation comment has been updated to reference EVENTS.POST_RECEIVE instead of the deprecated EVENTS.POST_RECEIVE_V2. This change accurately reflects the renamed event per the PR objectives and helps maintain consistency between the documentation and event handling in the codebase.

.changeset/spicy-garlics-look.md (1)

1-7: LGTM! Version changes and deprecation notice properly documented.

The changeset correctly documents the major version update to @tus/server and minor version update to @tus/utils, along with the renaming of POST_RECEIVE_V2 to POST_RECEIVE and removal of the deprecated version.

packages/server/src/handlers/BaseHandler.ts (1)

164-164: Event name updated correctly per PR objectives.

The event emission has been properly updated from POST_RECEIVE_V2 to POST_RECEIVE, which aligns with the PR goal of standardizing the event naming and resolving the long-standing deprecation.

packages/server/test/Server.test.ts (1)

460-460: Test updated to use the renamed event.

The event listener has been correctly updated to use EVENTS.POST_RECEIVE instead of the previous EVENTS.POST_RECEIVE_V2, keeping the test aligned with the implementation changes.

packages/server/test/PatchHandler.test.ts (1)

9-9: Import statement updated after event emission removal.

The removal of the EVENTS import from the import statement aligns with the broader changes in the PR where the deprecated POST_RECEIVE event emission in the PATCH handler was removed. The test file no longer needs to verify this event emission.

packages/server/README.md (1)

271-272:

✅ Verification successful

Correct the Callback Arrow Function Syntax in the Example

The updated code snippet correctly uses the new event constant (POST_RECEIVE); however, the arrow function syntax in the example appears to be incorrect. It should properly wrap both parameters in parentheses.

- server.on(EVENTS.POST_RECEIVE, (req, upload => {})
+ server.on(EVENTS.POST_RECEIVE, (req, upload) => {})

Fix Callback Arrow Function Parentheses Syntax

  • The callback function for the POST_RECEIVE event is missing proper wrapping of its parameters.
  • Update the snippet to enclose both parameters in parentheses to comply with valid arrow function syntax.
- server.on(EVENTS.POST_RECEIVE, (req, upload => {})
+ server.on(EVENTS.POST_RECEIVE, (req, upload) => {})

Copy link

@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

🧹 Nitpick comments (2)
packages/server/README.md (2)

84-86: Fix the link fragment for the POST_RECEIVE event.

The current link [#eventspost_receiveinterval] does not appear to match any valid header in the document. Consider updating it to reference the correct anchor for the POST_RECEIVE event section—for example, using [#post_receive] or the appropriate fragment generated for the header.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

85-85: Link fragments should be valid
null

(MD051, link-fragments)


269-272: Correct the arrow function syntax in the event listener snippet.

The example code currently uses (req, upload => {}), which is syntactically incorrect. It should be updated to (req, upload) => {} so that users copying the example won’t encounter issues.

📜 Review details

Configuration used: .coderabbit.yml
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 60ec6eb and a885841.

📒 Files selected for processing (1)
  • packages/server/README.md (2 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
packages/server/README.md

85-85: Link fragments should be valid
null

(MD051, link-fragments)

@Murderlon Murderlon merged commit f190875 into main Mar 25, 2025
4 checks passed
@Murderlon Murderlon deleted the post-receive branch March 25, 2025 08:43
Murderlon added a commit that referenced this pull request Mar 25, 2025
* main:
  @tus/gcs-store: require @google-cloud/storage ^7 (#735)
  Rename POST_RECEIVE_V2 to POST_RECEIVE (#724)
  Refactor server to run in all (Node.js compatible) runtimes and meta frameworks (#710)
Murderlon added a commit that referenced this pull request Mar 25, 2025
* main:
  Bump required Node.js version from 16 to 20 (#723)
  @tus/gcs-store: require @google-cloud/storage ^7 (#735)
  Rename POST_RECEIVE_V2 to POST_RECEIVE (#724)
  Refactor server to run in all (Node.js compatible) runtimes and meta frameworks (#710)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Breaking change This requires a semver major release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants