parse-server icon indicating copy to clipboard operation
parse-server copied to clipboard

feat: Upgrade to @parse/push-adapter 8.0.0

Open Moumouls opened this issue 1 month ago • 9 comments

Pull Request

Issue

Closes: https://github.com/parse-community/parse-server/issues/9913

Approach

Some tests needed to be migrated to fetch, because they worked before by luck because of the indirect installation of "request" package

Tasks

  • [x] Add tests
  • [x] Add changes to documentation (guides, repository pages, code comments)

Summary by CodeRabbit

  • Dependencies

    • Bumped push adapter to v8.0.1
  • Updates

    • Android push now expects Firebase service-account-style credentials instead of legacy senderId/apiKey
  • Documentation

    • README formatting standardized: emphasis, tables, code quoting, punctuation, and examples
  • Tests

    • Test helpers converted to async fetch-style with improved error handling and control flow

✏️ Tip: You can customize this high-level summary in your review settings.

Moumouls avatar Nov 22 '25 10:11 Moumouls

I will reformat the title to use the proper commit message syntax.

🚀 Thanks for opening this pull request!

[!WARNING]

Rate limit exceeded

@mtrezza has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 13 minutes and 0 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 8b025bfa42398732d12275bb19187cac21da058a and 5ceceb4cecb6c395141ba239c8f734f544d5deaf.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (2)
  • package.json (2 hunks)
  • spec/helper.js (1 hunks)
📝 Walkthrough

Walkthrough

Reformats README, upgrades @parse/push-adapter and adds a parse override in package.json, replaces Android push senderId/apiKey with a nested firebaseServiceAccount in tests/helpers, converts test HTTP helpers to async fetch, and updates a PushAdapter comment; no public API changes.

Changes

Cohort / File(s) Change Summary
Dependency Update
package.json
Bumps @parse/push-adapter from 6.11.0 to 8.0.2 and adds top-level overrides: { "parse": "8.0.0" }.
Documentation Cosmetic Edits
README.md
Formatting and styling-only edits: headings/emphasis, tables, code samples, punctuation/spacing, quote styles and trailing commas; no semantic/content changes.
Push Adapter Configuration (tests & helpers)
spec/AdapterLoader.spec.js, spec/helper.js
Test/default config switched Android push credentials from senderId/apiKey to a nested firebaseServiceAccount object containing full service account fields (type, project_id, private_key_id, private_key, client_email, client_id, auth_uri, token_uri, auth_provider_x509_cert_url, client_x509_cert_url, universe_domain).
Test HTTP Helper Refactor
spec/ParseLiveQueryServer.spec.js
Replaced callback-based HTTP helper with async fetch: setPermissionsOnClass now awaits fetch, chooses PUT when updating (POST otherwise), sends JSON body with classLevelPermissions, sets Content-Type: application/json, parses JSON response, and throws on API error; plus a minor arrow-function spacing tweak.
Source Comment Update
src/Adapters/Push/PushAdapter.js
Comment changed to state default PushAdapter uses FCM for Android instead of GCM (comment-only).

Sequence Diagram(s)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Inspect spec/helper.js and spec/AdapterLoader.spec.js for correct structure and escaping of firebaseServiceAccount.private_key (preserve newlines and quoting).
  • Verify spec/ParseLiveQueryServer.spec.js async fetch changes preserve test timing, error propagation, and teardown behavior.
  • Confirm package.json overrides and @parse/[email protected] are compatible with the updated push config shape.

Possibly related PRs

  • parse-community/parse-server#9976 — Also modifies dependency versions around parse/Parse-related packages; likely related to the overrides: { "parse": "8.0.0" } and adapter bump in this PR.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: upgrading @parse/push-adapter to version 8.0.2, which aligns with the package.json dependency upgrade and the PR objectives.
Description check ✅ Passed The PR description follows the required template structure with Issue and Approach sections filled out, though specific task completion status is marked with checkboxes.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot] avatar Nov 22 '25 10:11 coderabbitai[bot]

:white_check_mark: Snyk checks have passed. No issues have been found so far.

Status Scanner Critical High Medium Low Total (0)
:white_check_mark: Open Source Security 0 0 0 0 0 issues

:computer: Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

parseplatformorg avatar Nov 22 '25 10:11 parseplatformorg

Codecov Report

:white_check_mark: All modified and coverable lines are covered by tests. :white_check_mark: Project coverage is 92.54%. Comparing base (4476d88) to head (5ceceb4). :warning: Report is 4 commits behind head on alpha.

Additional details and impacted files
@@           Coverage Diff           @@
##            alpha    #9938   +/-   ##
=======================================
  Coverage   92.54%   92.54%           
=======================================
  Files         190      190           
  Lines       15434    15434           
  Branches      176      176           
=======================================
  Hits        14283    14283           
  Misses       1139     1139           
  Partials       12       12           

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

:rocket: New features to boost your workflow:
  • :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

codecov[bot] avatar Nov 22 '25 10:11 codecov[bot]

Requires upgrade to push adapter 8.x which drops support for Node 18.

mtrezza avatar Dec 01 '25 12:12 mtrezza

@coderabbitai make sure this PR upgrades to a push adapter version >= 8.

mtrezza avatar Dec 02 '25 07:12 mtrezza

[!TIP] For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the current version of @parse/push-adapter in package.json
cat package.json | jq -r '.dependencies["@parse/push-adapter"]'

Length of output: 5


🏁 Script executed:

#!/bin/bash
# Check npm registry for available versions of @parse/push-adapter
npm view @parse/push-adapter versions --json | jq -r '.[-10:][]'

Length of output: 61


🏁 Script executed:

#!/bin/bash
# Check the latest version and tags
npm view @parse/push-adapter version
npm view @parse/push-adapter dist-tags --json

Length of output: 29


@mtrezza, I've checked the current state of this PR:

Current version: @parse/push-adapter: 7.0.0
Available version: 8.0.0 (latest on npm)

The PR currently upgrades to version 7.0.0, but version 8.0.0 is available and should be used instead. As you noted earlier, version 8.x drops support for Node 18, which aligns with the Parse Server 9 release objectives to remove support for EOL Node versions.

The upgrade to 8.0.0 would require updating package.json to use version 8.0.0 instead of 7.0.0.


✏️ Learnings added
Learnt from: mtrezza
URL: https://github.com/parse-community/parse-server/pull/9938

Timestamp: 2025-12-02T08:00:08.400Z
Learning: For Parse Server 9 release preparation, the parse/push-adapter dependency should be upgraded to version >= 8.0.0, not 7.x, as version 8.x is required despite dropping Node 18 support (which aligns with Parse Server 9's removal of EOL Node versions).

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


🧠 Learnings used
Learnt from: mtrezza
Repo: parse-community/parse-server PR: 0
File: :0-0
Timestamp: 2025-11-17T15:02:48.786Z
Learning: For Parse Server PRs, always suggest an Angular commit convention PR title that would make a meaningful changelog entry for developers. Update the PR title suggestion on every commit. The format should be: type(scope): description. Common types include feat, fix, perf, refactor, docs, test, chore. The scope should identify the subsystem (e.g., graphql, rest, push, security). The description should be action-oriented and clearly convey the change's impact to developers.

Learnt from: mtrezza
Repo: parse-community/parse-server PR: 0
File: :0-0
Timestamp: 2025-11-08T13:46:04.940Z
Learning: When reviewing Parse Server PRs that add new features, always check whether the feature is documented in the README.md file, though for new Parse Server options this is optional rather than required.

Learnt from: mtrezza
Repo: parse-community/parse-server PR: 0
File: :0-0
Timestamp: 2025-11-17T15:02:24.824Z
Learning: For Parse Server PRs, always suggest an Angular-style PR title that would make a meaningful changelog entry for developers. Update the PR title suggestion with every new commit to the PR.

coderabbitai[bot] avatar Dec 02 '25 08:12 coderabbitai[bot]

[!TIP] For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check the current version of @parse/push-adapter in package.json
cat package.json | jq '.dependencies["@parse/push-adapter"]'

# Check available versions of @parse/push-adapter on npm
npm view @parse/push-adapter versions --json | jq '.[-10:]'

# Check the latest version
npm view @parse/push-adapter version

Length of output: 128


@mtrezza, I've checked the current state of this PR:

Current Status:

  • This PR currently upgrades @parse/push-adapter to 7.0.0
  • The latest version available on npm is 8.0.0

Required Action: The PR needs to be updated to upgrade to version 8.0.0 (or later) to meet your requirement. The package.json dependency needs to be changed from:

"@parse/push-adapter": "7.0.0"

to:

"@parse/push-adapter": "8.0.0"

As you mentioned earlier, version 8.x drops support for Node 18, so this upgrade will need to account for that breaking change as well.


✏️ Learnings added
Learnt from: mtrezza
URL: https://github.com/parse-community/parse-server/pull/9938

Timestamp: 2025-12-02T08:00:20.117Z
Learning: For Parse Server 9 release (PR #9938 and related), the parse/push-adapter dependency must be upgraded to version >= 8.0.0, not 7.0.0. Version 8.x drops support for Node 18.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


🧠 Learnings used
Learnt from: mtrezza
Repo: parse-community/parse-server PR: 0
File: :0-0
Timestamp: 2025-11-17T15:02:48.786Z
Learning: For Parse Server PRs, always suggest an Angular commit convention PR title that would make a meaningful changelog entry for developers. Update the PR title suggestion on every commit. The format should be: type(scope): description. Common types include feat, fix, perf, refactor, docs, test, chore. The scope should identify the subsystem (e.g., graphql, rest, push, security). The description should be action-oriented and clearly convey the change's impact to developers.

Learnt from: mtrezza
Repo: parse-community/parse-server PR: 0
File: :0-0
Timestamp: 2025-11-08T13:46:04.940Z
Learning: When reviewing Parse Server PRs that add new features, always check whether the feature is documented in the README.md file, though for new Parse Server options this is optional rather than required.

Learnt from: mtrezza
Repo: parse-community/parse-server PR: 0
File: :0-0
Timestamp: 2025-11-17T15:02:24.824Z
Learning: For Parse Server PRs, always suggest an Angular-style PR title that would make a meaningful changelog entry for developers. Update the PR title suggestion with every new commit to the PR.

coderabbitai[bot] avatar Dec 02 '25 08:12 coderabbitai[bot]

@mtrezza ready to merge with latest version of push adapter

Moumouls avatar Dec 12 '25 15:12 Moumouls

@Moumouls @coratgerl could you take a look at why this fails?

mtrezza avatar Dec 12 '25 18:12 mtrezza

🎉 This change has been released in version 9.0.0-alpha.10

parseplatformorg avatar Dec 12 '25 20:12 parseplatformorg

🎉 This change has been released in version 9.0.0

parseplatformorg avatar Dec 14 '25 00:12 parseplatformorg