Skip to content

feat: bump required node engine to >=12.22.10 #7847

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

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
b6a6676
docs: enable badge and changelog for beta release
mtrezza Nov 1, 2021
69fd494
docs: add bronze sponsor and add sponsor widgets to README
mtrezza Nov 3, 2021
31960b5
docs: fix sponsor links in readme
mtrezza Nov 3, 2021
611bd9b
docs: add FS storage to docs (#7681)
cbaker6 Nov 8, 2021
b64640c
revert: refactor: allow ES import for cloud string if package type is…
mtrezza Nov 10, 2021
d35eeb8
chore(release): 5.0.0-alpha.6 [skip ci]
semantic-release-bot Nov 10, 2021
573558d
fix: node engine range has no upper limit to exclude incompatible nod…
mtrezza Nov 12, 2021
d72717d
chore(release): 5.0.0-alpha.7 [skip ci]
semantic-release-bot Nov 12, 2021
e4aa1cb
refactor: upgrade follow-redirects from 1.14.2 to 1.14.4 (#7694)
snyk-bot Nov 12, 2021
3d7ed8d
refactor: upgrade @parse/fs-files-adapter from 1.2.0 to 1.2.1 (#7695)
snyk-bot Nov 13, 2021
a2fefde
refactor: upgrade pg-promise from 10.11.0 to 10.11.1 (#7697)
snyk-bot Nov 14, 2021
426ccdc
refactor: upgrade ws from 8.2.2 to 8.2.3 (#7698)
snyk-bot Nov 14, 2021
251ff0e
refactor: upgrade graphql from 15.6.0 to 15.6.1 (#7696)
snyk-bot Nov 14, 2021
ae99b92
refactor: upgrade graphql from 15.6.1 to 15.7.0 (#7704)
snyk-bot Nov 17, 2021
45cc58c
feat: add support for Node 16 (#7707)
marvinroger Nov 18, 2021
fea308a
chore(release): 5.0.0-alpha.8 [skip ci]
semantic-release-bot Nov 18, 2021
899da8d
docs: remove node 15 from badge; add node 17 to compatibility table (…
mtrezza Nov 18, 2021
2602904
refactor: upgrade follow-redirects from 1.14.4 to 1.14.5 (#7712)
snyk-bot Nov 21, 2021
c789f6c
refactor: test moved to correct test group (#7717)
cbaker6 Nov 25, 2021
ed86c80
fix: unable to use objectId size higher than 19 on GraphQL API (#7627)
Moumouls Nov 27, 2021
1b4d932
chore(release): 5.0.0-alpha.9 [skip ci]
semantic-release-bot Nov 27, 2021
35ac4c3
refactor: upgrade subscriptions-transport-ws from 0.10.0 to 0.11.0 (#…
snyk-bot Nov 28, 2021
7dad413
refactor: upgrade graphql-tag from 2.12.5 to 2.12.6 (#7726)
snyk-bot Nov 29, 2021
d4c1f47
fix: upgrade parse from 3.3.1 to 3.4.0 (#7723)
snyk-bot Nov 29, 2021
37ac29d
chore(release): 5.0.0-alpha.10 [skip ci]
semantic-release-bot Nov 29, 2021
f5ef98b
fix: upgrade mime from 2.5.2 to 3.0.0 (#7725)
snyk-bot Nov 29, 2021
e7c7f44
chore(release): 5.0.0-alpha.11 [skip ci]
semantic-release-bot Nov 29, 2021
6a6248b
fix: adding or modifying a nested property requires addField permissi…
bdevore17 Dec 6, 2021
ac789c8
chore(release): 5.0.0-alpha.12 [skip ci]
semantic-release-bot Dec 6, 2021
ea7c014
fix: node engine compatibility did not include node 16 (#7739)
mtrezza Dec 8, 2021
191d80b
chore(release): 5.0.0-alpha.13 [skip ci]
semantic-release-bot Dec 8, 2021
9e47759
refactor: upgrade follow-redirects from 1.14.5 to 1.14.6 (#7755)
snyk-bot Dec 30, 2021
7448521
refactor: upgrade body-parser from 1.19.0 to 1.19.1 (#7756)
snyk-bot Jan 1, 2022
16b1b2a
feat: support relativeTime query constraint on Postgres (#7747)
cbaker6 Jan 2, 2022
acfdc54
chore(release): 5.0.0-alpha.14 [skip ci]
semantic-release-bot Jan 2, 2022
b106ffc
ci: test server with PostGIS 3.2 (#7752)
cbaker6 Jan 2, 2022
912edac
test: make GraphQL server test more reliable (#7758)
cbaker6 Jan 2, 2022
caf4a23
feat: support `postgresql` protocol in database URI (#7757)
cbaker6 Jan 2, 2022
75b9a56
chore(release): 5.0.0-alpha.15 [skip ci]
semantic-release-bot Jan 2, 2022
7af5de4
test: improve PushController tests (#7760)
cbaker6 Jan 2, 2022
5e363ea
refactor: remove unnecessary error checking in PostgresAdapter (#7761)
cbaker6 Jan 2, 2022
0c3feaa
feat: add Idempotency to Postgres (#7750)
cbaker6 Jan 2, 2022
410a1c7
chore(release): 5.0.0-alpha.16 [skip ci]
semantic-release-bot Jan 2, 2022
d05fb9f
refactor: upgrade graphql from 15.7.0 to 15.7.1 (#7706)
snyk-bot Jan 3, 2022
a43638f
test: improve transaction tests to use async/await (#7759)
cbaker6 Jan 3, 2022
a5ffb95
refactor: remove deprecated `url.parse()` method (#7751)
cbaker6 Jan 6, 2022
5af6e5d
fix: schema cache not cleared in some cases (#7678)
ThornWu Jan 13, 2022
98abd71
chore(release): 5.0.0-alpha.17 [skip ci]
semantic-release-bot Jan 13, 2022
8f5a861
fix: security upgrade follow-redirects from 1.14.6 to 1.14.7 (#7769)
snyk-bot Jan 13, 2022
c720fbb
chore(release): 5.0.0-alpha.18 [skip ci]
semantic-release-bot Jan 13, 2022
826aa79
refactor: upgrade express from 4.17.1 to 4.17.2 (#7776)
snyk-bot Jan 14, 2022
f5f63bf
fix: bump nanoid from 3.1.25 to 3.2.0 (#7781)
dependabot[bot] Jan 22, 2022
f105d7a
chore(release): 5.0.0-alpha.19 [skip ci]
semantic-release-bot Jan 22, 2022
9082351
fix: bump node-fetch from 2.6.1 to 3.1.1 (#7782)
dependabot[bot] Jan 22, 2022
350b59a
chore(release): 5.0.0-alpha.20 [skip ci]
semantic-release-bot Jan 22, 2022
433e82f
refactor: upgrade parse from 3.4.0 to 3.4.1 (#7783)
snyk-bot Jan 25, 2022
315290d
feat: add Cloud Code context to `ParseObject.fetch` (#7779)
yog27ray Jan 25, 2022
1299f06
chore(release): 5.0.0-alpha.21 [skip ci]
semantic-release-bot Jan 25, 2022
f88aa2a
feat: upgrade to MongoDB Node.js driver 4.x for MongoDB 5.0 support (…
Moumouls Feb 6, 2022
1e05309
chore(release): 5.0.0-alpha.22 [skip ci]
semantic-release-bot Feb 6, 2022
08089d6
fix: server crash using GraphQL due to missing @apollo/client peer de…
Moumouls Feb 6, 2022
43cc97d
chore(release): 5.0.0-alpha.23 [skip ci]
semantic-release-bot Feb 6, 2022
c6b2032
refactor: upgrade @apollo/client from 3.4.17 to 3.5.7 (#7797)
snyk-bot Feb 8, 2022
fc9d77f
refactor: upgrade jwks-rsa from 1.12.3 to 2.0.5 (#7800)
snyk-bot Feb 9, 2022
70088a9
fix: security upgrade follow-redirects from 1.14.7 to 1.14.8 (#7801)
snyk-bot Feb 10, 2022
d678a43
chore(release): 5.0.0-alpha.24 [skip ci]
semantic-release-bot Feb 10, 2022
82c3015
refactor: upgrade @parse/push-adapter from 3.4.1 to 4.1.0 (#7810)
snyk-bot Feb 13, 2022
b6a20d9
refactor: upgrade winston from 3.3.3 to 3.4.0 (#7812)
snyk-bot Feb 14, 2022
7a30d7c
refactor: upgrade lru-cache from 5.1.1 to 6.0.0 (#7813)
snyk-bot Feb 15, 2022
8cece4a
refactor: upgrade @apollo/client from 3.5.7 to 3.5.8 (#7814)
snyk-bot Feb 16, 2022
c701201
refactor: upgrade winston-daily-rotate-file from 4.5.5 to 4.6.0 (#7816)
snyk-bot Feb 18, 2022
2a6cec1
refactor: upgrade winston from 3.4.0 to 3.5.0 (#7817)
snyk-bot Feb 20, 2022
4af253d
fix: upgrade winston from 3.5.0 to 3.5.1 (#7820)
snyk-bot Feb 23, 2022
9806912
chore(release): 5.0.0-alpha.25 [skip ci]
semantic-release-bot Feb 23, 2022
5ca2288
fix: package.json & package-lock.json to reduce vulnerabilities (#7823)
snyk-bot Feb 25, 2022
ad5d179
chore(release): 5.0.0-alpha.26 [skip ci]
semantic-release-bot Feb 25, 2022
8a126fc
Update node engine to 2.22.0 (#7827)
davimacedo Feb 25, 2022
f235412
revert: update node engine to 2.22.0 (#7827)
mtrezza Mar 12, 2022
6bc021e
chore(release): 5.0.0-alpha.27 [skip ci]
semantic-release-bot Mar 12, 2022
972b800
docs: add revert commit instructions to CONTRIBUTING guide (#7845)
mtrezza Mar 12, 2022
e569f40
fix: security vulnerability that allows remote code execution (GHSA-p…
mtrezza Mar 12, 2022
9b344da
chore(release): 5.0.0-alpha.28 [skip ci]
semantic-release-bot Mar 12, 2022
b2f0632
bump min node engine to 12.22.10
mtrezza Mar 12, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .babelrc
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
["@babel/preset-env", {
"targets": {
"node": "12"
},
"exclude": ["proposal-dynamic-import"]
}
}]
],
"sourceMaps": "inline"
Expand Down
43 changes: 23 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
branches:
- '**'
env:
NODE_VERSION: 14.18.1
NODE_VERSION: 16.13.0
PARSE_SERVER_TEST_TIMEOUT: 20000
jobs:
check-ci:
Expand Down Expand Up @@ -105,43 +105,43 @@ jobs:
MONGODB_VERSION: 5.0.3
MONGODB_TOPOLOGY: replicaset
MONGODB_STORAGE_ENGINE: wiredTiger
NODE_VERSION: 14.18.1
NODE_VERSION: 16.13.0
- name: MongoDB 4.4, ReplicaSet, WiredTiger
MONGODB_VERSION: 4.4.10
MONGODB_TOPOLOGY: replicaset
MONGODB_STORAGE_ENGINE: wiredTiger
NODE_VERSION: 14.18.1
NODE_VERSION: 16.13.0
- name: MongoDB 4.2, ReplicaSet, WiredTiger
MONGODB_VERSION: 4.2.17
MONGODB_TOPOLOGY: replicaset
MONGODB_STORAGE_ENGINE: wiredTiger
NODE_VERSION: 14.18.1
NODE_VERSION: 16.13.0
- name: MongoDB 4.0, ReplicaSet, WiredTiger
MONGODB_VERSION: 4.0.27
MONGODB_TOPOLOGY: replicaset
MONGODB_STORAGE_ENGINE: wiredTiger
NODE_VERSION: 14.18.1
NODE_VERSION: 16.13.0
- name: MongoDB 4.0, Standalone, MMAPv1
MONGODB_VERSION: 4.0.27
MONGODB_TOPOLOGY: standalone
MONGODB_STORAGE_ENGINE: mmapv1
NODE_VERSION: 14.18.1
NODE_VERSION: 16.13.0
- name: Redis Cache
PARSE_SERVER_TEST_CACHE: redis
MONGODB_VERSION: 4.4.10
MONGODB_TOPOLOGY: standalone
MONGODB_STORAGE_ENGINE: wiredTiger
NODE_VERSION: 14.18.1
NODE_VERSION: 16.13.0
- name: Node 12
MONGODB_VERSION: 4.4.10
MONGODB_TOPOLOGY: standalone
MONGODB_STORAGE_ENGINE: wiredTiger
NODE_VERSION: 12.22.7
- name: Node 15
- name: Node 14
MONGODB_VERSION: 4.4.10
MONGODB_TOPOLOGY: standalone
MONGODB_STORAGE_ENGINE: wiredTiger
NODE_VERSION: 15.14.0
NODE_VERSION: 14.18.1
fail-fast: false
name: ${{ matrix.name }}
timeout-minutes: 15
Expand Down Expand Up @@ -183,19 +183,22 @@ jobs:
include:
- name: PostgreSQL 11, PostGIS 3.0
POSTGRES_IMAGE: postgis/postgis:11-3.0
NODE_VERSION: 14.18.1
NODE_VERSION: 16.13.0
- name: PostgreSQL 11, PostGIS 3.1
POSTGRES_IMAGE: postgis/postgis:11-3.1
NODE_VERSION: 14.18.1
- name: PostgreSQL 12, PostGIS 3.1
POSTGRES_IMAGE: postgis/postgis:12-3.1
NODE_VERSION: 14.18.1
- name: PostgreSQL 13, PostGIS 3.1
POSTGRES_IMAGE: postgis/postgis:13-3.1
NODE_VERSION: 14.18.1
- name: PostgreSQL 14, PostGIS 3.1
POSTGRES_IMAGE: postgis/postgis:14-3.1
NODE_VERSION: 14.18.1
NODE_VERSION: 16.13.0
- name: PostgreSQL 11, PostGIS 3.2
POSTGRES_IMAGE: postgis/postgis:11-3.2
NODE_VERSION: 16.13.0
- name: PostgreSQL 12, PostGIS 3.2
POSTGRES_IMAGE: postgis/postgis:12-3.2
NODE_VERSION: 16.13.0
- name: PostgreSQL 13, PostGIS 3.2
POSTGRES_IMAGE: postgis/postgis:13-3.2
NODE_VERSION: 16.13.0
- name: PostgreSQL 14, PostGIS 3.2
POSTGRES_IMAGE: postgis/postgis:14-3.2
NODE_VERSION: 16.13.0
fail-fast: false
name: ${{ matrix.name }}
timeout-minutes: 15
Expand Down
10 changes: 10 additions & 0 deletions .madgerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"detectiveOptions": {
"ts": {
"skipTypeImports": true
},
"es6": {
"skipTypeImports": true
}
}
}
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Details:
- Purpose: official release
- Suitable environment: production

<!--## ⚠️ [Beta Releases][log_beta]
## ⚠️ [Beta Releases][log_beta]

> ### “Please try out, we’d love your feedback!”

Expand All @@ -26,7 +26,7 @@ Details:
- NPM channel: `@beta`
- Branch: [beta][branch_beta]
- Purpose: feature maturation
- Suitable environment: development -->
- Suitable environment: development

## 🔥 [Alpha Releases][log_alpha]

Expand Down
27 changes: 21 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
- [Pull Request](#pull-request)
- [Breaking Change](#breaking-change)
- [Merging](#merging)
- [Breaking Change](#breaking-change-1)
- [Reverting](#reverting)
- [Versioning](#versioning)
- [Code of Conduct](#code-of-conduct)

Expand Down Expand Up @@ -154,15 +156,15 @@ If your pull request introduces a change that may affect the storage or retrieva
[PostGIS images (select one with v2.2 or higher) on docker dashboard](https://hub.docker.com/r/postgis/postgis) is based off of the official [postgres](https://registry.hub.docker.com/_/postgres/) image and will work out-of-the-box (as long as you create a user with the necessary extensions for each of your Parse databases; see below). To launch the compatible Postgres instance, copy and paste the following line into your shell:

```
docker run -d --name parse-postgres -p 5432:5432 -e POSTGRES_PASSWORD=password --rm postgis/postgis:13-3.1-alpine && sleep 20 && docker exec -it parse-postgres psql -U postgres -c 'CREATE DATABASE parse_server_postgres_adapter_test_database;' && docker exec -it parse-postgres psql -U postgres -c 'CREATE EXTENSION pgcrypto; CREATE EXTENSION postgis;' -d parse_server_postgres_adapter_test_database && docker exec -it parse-postgres psql -U postgres -c 'CREATE EXTENSION postgis_topology;' -d parse_server_postgres_adapter_test_database
docker run -d --name parse-postgres -p 5432:5432 -e POSTGRES_PASSWORD=password --rm postgis/postgis:13-3.2-alpine && sleep 20 && docker exec -it parse-postgres psql -U postgres -c 'CREATE DATABASE parse_server_postgres_adapter_test_database;' && docker exec -it parse-postgres psql -U postgres -c 'CREATE EXTENSION pgcrypto; CREATE EXTENSION postgis;' -d parse_server_postgres_adapter_test_database && docker exec -it parse-postgres psql -U postgres -c 'CREATE EXTENSION postgis_topology;' -d parse_server_postgres_adapter_test_database
```
To stop the Postgres instance:

```
docker stop parse-postgres
```

You can also use the [postgis/postgis:13-3.1-alpine](https://hub.docker.com/r/postgis/postgis) image in a Dockerfile and copy this [script](https://github.com/parse-community/parse-server/blob/master/scripts/before_script_postgres.sh) to the image by adding the following lines:
You can also use the [postgis/postgis:13-3.2-alpine](https://hub.docker.com/r/postgis/postgis) image in a Dockerfile and copy this [script](https://github.com/parse-community/parse-server/blob/master/scripts/before_script_postgres.sh) to the image by adding the following lines:

```
#Install additional scripts. These are run in abc order during initial start
Expand Down Expand Up @@ -335,17 +337,30 @@ If a pull request contains a braking change, the description of the pull request

The following guide is for anyone who merges a contributor pull request into the working branch, the working branch into a release branch, a release branch into another release branch, or any other direct commits such as hotfixes into release branches or the working branch.

- For changelog generation, only the commit message set when merging the pull request is relevant. The title and description of the GitHub pull request as authored by the contributor have no influence on the changelog generation. However, the title of the GitHub pull request should be used as the commit message.
- If the pull request contains a breaking change, the commit message must contain the phrase `BREAKING CHANGE`, capitalized and without any formatting, followed by a short description of the breaking change and ideally how the developer should address it, all in a single line. This line should contain more details focusing on the "breaking” aspect of the change and is intended to assist the developer in adapting. Keep it concise, as it will become part of the changelog entry, for example:
- A contributor pull request must be merged into the working branch using `Squash and Merge`, to create a single commit message that describes the change.
- A release branch or the default branch must be merged into another release branch using `Merge Commit`, to preserve each individual commit message that describes its respective change.
- For changelog generation, only the commit message set when merging the pull request is relevant. The title and description of the GitHub pull request as authored by the contributor have no influence on the changelog generation. However, the title of the GitHub pull request should be used as the commit message. See the following chapters for considerations in special scenarios, e.g. merging a breaking change or reverting a commit.

### Breaking Change

If the pull request contains a breaking change, the commit message must contain the phrase `BREAKING CHANGE`, capitalized and without any formatting, followed by a short description of the breaking change and ideally how the developer should address it, all in a single line. This line should contain more details focusing on the "breaking” aspect of the change and is intended to assist the developer in adapting. Keep it concise, as it will become part of the changelog entry, for example:

```
fix: remove handle from door

BREAKING CHANGE: You cannot open the door anymore by using a handle. See the [#migration guide](http://example.com) for more details.
```
Keep in mind that in a repository with release automation, merging such a commit message will trigger a release with a major version increment.
- A contributor pull request must be merged into the working branch using `Squash and Merge`, to create a single commit message that describes the change.
- A release branch or the default branch must be merged into another release branch using `Merge Commit`, to preserve each individual commit message that describes its respective change.

### Reverting

If the commit reverts a previous commit, use the prefix `revert:`, followed by the header of the reverted commit. In the body of the commit message add `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted. For example:

```
revert: fix: remove handle from door

This reverts commit 1234567890abcdef.
```

## Versioning

Expand Down
60 changes: 41 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@
[![Build Status](https://github.com/parse-community/parse-server/workflows/ci/badge.svg?branch=alpha)](https://github.com/parse-community/parse-server/actions?query=workflow%3Aci+branch%3Aalpha)
[![Snyk Badge](https://snyk.io/test/github/parse-community/parse-server/badge.svg)](https://snyk.io/test/github/parse-community/parse-server)
[![Coverage](https://img.shields.io/codecov/c/github/parse-community/parse-server/alpha.svg)](https://codecov.io/github/parse-community/parse-server?branch=alpha)
[![auto-release](https://img.shields.io/badge/%F0%9F%9A%80-auto--release-9e34eb.svg)](https://github.com/parse-community/parse-dashboard/releases)

[![Node Version](https://img.shields.io/badge/nodejs-12,_14,_15-green.svg?logo=node.js&style=flat)](https://nodejs.org)
[![Node Version](https://img.shields.io/badge/nodejs-12,_14,_16-green.svg?logo=node.js&style=flat)](https://nodejs.org)
[![MongoDB Version](https://img.shields.io/badge/mongodb-4.0,_4.2,_4.4,_5.0-green.svg?logo=mongodb&style=flat)](https://www.mongodb.com)
[![Postgres Version](https://img.shields.io/badge/postgresql-11,_12,_13,_14-green.svg?logo=postgresql&style=flat)](https://www.postgresql.org)
[![auto-release](https://img.shields.io/badge/%F0%9F%9A%80-auto--release-9e34eb.svg)](https://github.com/parse-community/parse-dashboard/releases)

[![npm latest version](https://img.shields.io/npm/v/parse-server/latest.svg)](https://www.npmjs.com/package/parse-server)
[![npm beta version](https://img.shields.io/npm/v/parse-server/beta.svg)](https://www.npmjs.com/package/parse-server)
[![npm alpha version](https://img.shields.io/npm/v/parse-server/alpha.svg)](https://www.npmjs.com/package/parse-server)
<!-- [![npm beta version](https://img.shields.io/npm/v/parse-server/beta.svg)](https://www.npmjs.com/package/parse-server) -->

[![Backers on Open Collective](https://opencollective.com/parse-server/backers/badge.svg)][open-collective-link]
[![Sponsors on Open Collective](https://opencollective.com/parse-server/sponsors/badge.svg)][open-collective-link]
Expand All @@ -29,11 +29,15 @@ The full documentation for Parse Server is available in the [wiki](https://githu

---

A big *thank you* to all our backers and sponsors who support the development of Parse Platform!
A big *thank you* 🙏 to our [sponsors](#sponsors) and [backers](#backers) who support the development of Parse Platform!

### 💎 Diamond Sponsors

[![Sponsor](https://opencollective.com/parse-server/sponsor/0/avatar.svg)](https://opencollective.com/parse-server/sponsor/0/website)
### Diamond Sponsors

[![Diamond Sponsors](https://opencollective.com/parse-server/tiers/diamond-sponsor.svg?avatarHeight=70&button=false)](https://opencollective.com/parse-server/contribute/diamond-sponsor-10560)

#### Bronze Sponsors

[![Bronze Sponsors](https://opencollective.com/parse-server/tiers/bronze-sponsor.svg?avatarHeight=36&button=false)](https://opencollective.com/parse-server/contribute/bronze-sponsor-10559)

---

Expand Down Expand Up @@ -112,8 +116,8 @@ Parse Server is continuously tested with the most recent releases of Node.js to
|------------|----------------|-------------|---------------|
| Node.js 12 | 12.22.7 | April 2022 | ✅ Yes |
| Node.js 14 | 14.18.1 | April 2023 | ✅ Yes |
| Node.js 15 | 15.14.0 | June 2021 | ✅ Yes |
| Node.js 16 | 16.x.x | April 2024 | ❌ Not tested |
| Node.js 16 | 16.13.0 | April 2024 | ✅ Yes |
| Node.js 17 | 17.x | June 2022 | ❌ Not tested |

#### MongoDB
Parse Server is continuously tested with the most recent releases of MongoDB to ensure compatibility. We follow the [MongoDB support schedule](https://www.mongodb.com/support-policy) and only test against versions that are officially supported and have not reached their end-of-life date.
Expand All @@ -130,10 +134,10 @@ Parse Server is continuously tested with the most recent releases of PostgreSQL

| Version | PostGIS Version | End-of-Life | Parse Server Support End | Compatible |
|-------------|-----------------|---------------|--------------------------|------------|
| Postgres 11 | 3.0, 3.1 | November 2023 | April 2022 | ✅ Yes |
| Postgres 12 | 3.1 | November 2024 | April 2023 | ✅ Yes |
| Postgres 13 | 3.1 | November 2025 | April 2024 | ✅ Yes |
| Postgres 14 | 3.1 | November 2026 | April 2025 | ✅ Yes |
| Postgres 11 | 3.0, 3.1, 3.2 | November 2023 | April 2022 | ✅ Yes |
| Postgres 12 | 3.2 | November 2024 | April 2023 | ✅ Yes |
| Postgres 13 | 3.2 | November 2025 | April 2024 | ✅ Yes |
| Postgres 14 | 3.2 | November 2026 | April 2025 | ✅ Yes |

### Locally
```bash
Expand Down Expand Up @@ -485,11 +489,12 @@ You can also find more adapters maintained by the community by searching on [npm

Parse Server allows developers to choose from several options when hosting files:

* `GridFSBucketAdapter`, which is backed by MongoDB;
* `S3Adapter`, which is backed by [Amazon S3](https://aws.amazon.com/s3/); or
* `GCSAdapter`, which is backed by [Google Cloud Storage](https://cloud.google.com/storage/)
* `GridFSBucketAdapter` - which is backed by MongoDB
* `S3Adapter` - which is backed by [Amazon S3](https://aws.amazon.com/s3/)
* `GCSAdapter` - which is backed by [Google Cloud Storage](https://cloud.google.com/storage/)
* `FSAdapter` - local file storage

`GridFSBucketAdapter` is used by default and requires no setup, but if you're interested in using S3 or Google Cloud Storage, additional configuration information is available in the [Parse Server guide](http://docs.parseplatform.org/parse-server/guide/#configuring-file-adapters).
`GridFSBucketAdapter` is used by default and requires no setup, but if you're interested in using Amazon S3, Google Cloud Storage, or local file storage, additional configuration information is available in the [Parse Server guide](http://docs.parseplatform.org/parse-server/guide/#configuring-file-adapters).

## Idempotency Enforcement

Expand Down Expand Up @@ -520,9 +525,26 @@ let api = new ParseServer({
| `idempotencyOptions.paths` | yes | `Array<String>` | `[]` | `.*` (all paths, includes the examples below), <br>`functions/.*` (all functions), <br>`jobs/.*` (all jobs), <br>`classes/.*` (all classes), <br>`functions/.*` (all functions), <br>`users` (user creation / update), <br>`installations` (installation creation / update) | PARSE_SERVER_EXPERIMENTAL_IDEMPOTENCY_PATHS | An array of path patterns that have to match the request path for request deduplication to be enabled. The mount path must not be included, for example to match the request path `/parse/functions/myFunction` specify the path pattern `functions/myFunction`. A trailing slash of the request path is ignored, for example the path pattern `functions/myFunction` matches both `/parse/functions/myFunction` and `/parse/functions/myFunction/`. |
| `idempotencyOptions.ttl` | yes | `Integer` | `300` | `60` (60 seconds) | PARSE_SERVER_EXPERIMENTAL_IDEMPOTENCY_TTL | The duration in seconds after which a request record is discarded from the database. Duplicate requests due to network issues can be expected to arrive within milliseconds up to several seconds. This value must be greater than `0`. |

### Notes <!-- omit in toc -->
### Postgres <!-- omit in toc -->

To use this feature in Postgres, you will need to create a cron job using [pgAdmin](https://www.pgadmin.org/docs/pgadmin4/development/pgagent_jobs.html) or similar to call the Postgres function `idempotency_delete_expired_records()` that deletes expired idempotency records. You can find an example script below. Make sure the script has the same privileges to log into Postgres as Parse Server.

- This feature is currently only available for MongoDB and not for Postgres.
```bash
#!/bin/bash

set -e
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
SELECT idempotency_delete_expired_records();
EOSQL

exec "$@"
```

Assuming the script above is named, `parse_idempotency_delete_expired_records.sh`, a cron job that runs the script every 2 minutes may look like:

```bash
2 * * * * /root/parse_idempotency_delete_expired_records.sh >/dev/null 2>&1
```

## Localization

Expand Down
Loading