diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 70abb020ee..232a49557e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -7,8 +7,7 @@ on:
branches:
- '**'
env:
- COVERAGE_OPTION: ./node_modules/.bin/nyc
- NODE_VERSION: 14.16.0
+ NODE_VERSION: 14.16.1
PARSE_SERVER_TEST_TIMEOUT: 20000
jobs:
check-ci:
@@ -56,42 +55,42 @@ jobs:
strategy:
matrix:
include:
- - name: Mongo 4.4, ReplicaSet, WiredTiger
+ - name: MongoDB 4.4, ReplicaSet, WiredTiger
MONGODB_VERSION: 4.4.4
MONGODB_TOPOLOGY: replicaset
MONGODB_STORAGE_ENGINE: wiredTiger
- NODE_VERSION: 14.16.0
- - name: Mongo 4.2, ReplicaSet, WiredTiger
+ NODE_VERSION: 14.16.1
+ - name: MongoDB 4.2, ReplicaSet, WiredTiger
MONGODB_VERSION: 4.2.13
MONGODB_TOPOLOGY: replicaset
MONGODB_STORAGE_ENGINE: wiredTiger
- NODE_VERSION: 14.16.0
- - name: Mongo 4.0, ReplicaSet, WiredTiger
+ NODE_VERSION: 14.16.1
+ - name: MongoDB 4.0, ReplicaSet, WiredTiger
MONGODB_VERSION: 4.0.23
MONGODB_TOPOLOGY: replicaset
MONGODB_STORAGE_ENGINE: wiredTiger
- NODE_VERSION: 14.16.0
- - name: Mongo 3.6, Standalone, MMAPv1
- MONGODB_VERSION: 3.6.23
+ NODE_VERSION: 14.16.1
+ - name: MongoDB 4.0, Standalone, MMAPv1
+ MONGODB_VERSION: 4.0.23
MONGODB_TOPOLOGY: standalone
MONGODB_STORAGE_ENGINE: mmapv1
- NODE_VERSION: 14.16.0
+ NODE_VERSION: 14.16.1
- name: Redis Cache
PARSE_SERVER_TEST_CACHE: redis
MONGODB_VERSION: 4.4.4
MONGODB_TOPOLOGY: standalone
MONGODB_STORAGE_ENGINE: wiredTiger
- NODE_VERSION: 14.16.0
+ NODE_VERSION: 14.16.1
- name: Node 12
MONGODB_VERSION: 4.4.4
MONGODB_TOPOLOGY: standalone
MONGODB_STORAGE_ENGINE: wiredTiger
- NODE_VERSION: 12.22.0
+ NODE_VERSION: 12.22.1
- name: Node 15
MONGODB_VERSION: 4.4.4
MONGODB_TOPOLOGY: standalone
MONGODB_STORAGE_ENGINE: wiredTiger
- NODE_VERSION: 15.13.0
+ NODE_VERSION: 15.14.0
fail-fast: false
name: ${{ matrix.name }}
timeout-minutes: 15
@@ -131,15 +130,13 @@ jobs:
strategy:
matrix:
include:
- - name: Postgres 10, Postgis 3.1
- POSTGRES_IMAGE: postgis/postgis:10-3.1
- - name: Postgres 11, Postgis 3.1
+ - name: PostgreSQL 11, PostGIS 3.0
+ POSTGRES_IMAGE: postgis/postgis:11-3.0
+ - name: PostgreSQL 11, PostGIS 3.1
POSTGRES_IMAGE: postgis/postgis:11-3.1
- - name: Postgres 12, Postgis 3.1
+ - name: PostgreSQL 12, PostGIS 3.1
POSTGRES_IMAGE: postgis/postgis:12-3.1
- - name: Postgres 12, Postgis 3.0
- POSTGRES_IMAGE: postgis/postgis:12-3.0
- - name: Postgres 13, Postgis 3.1
+ - name: PostgreSQL 13, PostGIS 3.1
POSTGRES_IMAGE: postgis/postgis:13-3.1
fail-fast: false
name: ${{ matrix.name }}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 394be9864a..141bd94a86 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -92,6 +92,7 @@ ___
- Improved schema caching through database real-time hooks. Reduces DB queries, decreases Parse Query execution time and fixes a potential schema memory leak. If multiple Parse Server instances connect to the same DB (for example behind a load balancer), set the [Parse Server Option](https://parseplatform.org/parse-server/api/master/ParseServerOptions.html) `databaseOptions.enableSchemaHooks: true` to enable this feature and keep the schema in sync across all instances. Failing to do so will cause a schema change to not propagate to other instances and re-syncing will only happen when these instances restart. The options `enableSingleSchemaCache` and `schemaCacheTTL` have been removed. To use this feature with MongoDB, a replica set cluster with [change stream](https://docs.mongodb.com/manual/changeStreams/#availability) support is required. (Diamond Lewis, SebC) [#7214](https://github.com/parse-community/parse-server/issues/7214)
- Added file upload restriction. File upload is now only allowed for authenticated users by default for improved security. To allow file upload also for Anonymous Users or Public, set the `fileUpload` parameter in the [Parse Server Options](https://parseplatform.org/parse-server/api/master/ParseServerOptions.html) (dblythy, Manuel Trezza) [#7071](https://github.com/parse-community/parse-server/pull/7071)
- Removed [parse-server-simple-mailgun-adapter](https://github.com/parse-community/parse-server-simple-mailgun-adapter) dependency; to continue using the adapter it has to be explicitly installed (Manuel Trezza) [#7321](https://github.com/parse-community/parse-server/pull/7321)
+- Remove support for MongoDB 3.6 which has reached its End-of-Life support date and PostgreSQL 10 (Manuel Trezza) [#7315](https://github.com/parse-community/parse-server/pull/7315)
### Notable Changes
- Added Parse Server Security Check to report weak security settings (Manuel Trezza, dblythy) [#7247](https://github.com/parse-community/parse-server/issues/7247)
- EXPERIMENTAL: Added new page router with placeholder rendering and localization of custom and feature pages such as password reset and email verification (Manuel Trezza) [#6891](https://github.com/parse-community/parse-server/issues/6891)
diff --git a/README.md b/README.md
index da727e4e05..d52ea5c869 100644
--- a/README.md
+++ b/README.md
@@ -18,8 +18,8 @@
-
-
+
+
Our Sponsors
@@ -112,31 +112,29 @@ Before you start make sure you have installed:
#### Node.js
Parse Server is continuously tested with the most recent releases of Node.js to ensure compatibility. We follow the [Node.js Long Term Support plan](https://github.com/nodejs/Release) and only test against versions that are officially supported and have not reached their end-of-life date.
-| Version | Latest Patch Version | End-of-Life Date | Compatibility |
-|------------|----------------------|------------------|--------------------|
-| Node.js 12 | 12.22.0 | April 2022 | ✅ Fully compatible |
-| Node.js 14 | 14.16.0 | April 2023 | ✅ Fully compatible |
-| Node.js 15 | 15.13.0 | June 2021 | ✅ Fully compatible |
+| Version | Latest Version | End-of-Life Date | Compatibility |
+|------------|----------------|------------------|--------------------|
+| Node.js 12 | 12.22.1 | April 2022 | ✅ Fully compatible |
+| Node.js 14 | 14.16.1 | April 2023 | ✅ Fully compatible |
+| Node.js 15 | 15.14.0 | June 2021 | ✅ Fully compatible |
#### 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.
-| Version | Latest Patch Version | End-of-Life Date | Compatibility |
-|-------------|----------------------|------------------|--------------------|
-| MongoDB 3.6 | 3.6.23 | April 2021 | ✅ Fully compatible |
-| MongoDB 4.0 | 4.0.23 | January 2022 | ✅ Fully compatible |
-| MongoDB 4.2 | 4.2.13 | TBD | ✅ Fully compatible |
-| MongoDB 4.4 | 4.4.4 | TBD | ✅ Fully compatible |
+| Version | Latest Version | End-of-Life Date | Compatibility |
+|-------------|----------------|------------------|--------------------|
+| MongoDB 4.0 | 4.0.23 | January 2022 | ✅ Fully compatible |
+| MongoDB 4.2 | 4.2.13 | TBD | ✅ Fully compatible |
+| MongoDB 4.4 | 4.4.4 | TBD | ✅ Fully compatible |
#### PostgreSQL
-Parse Server is continuously tested with the most recent releases of PostgreSQL and PostGIS to ensure compatibility. We follow the [PostGIS docker tags](https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&ordering=last_updated) and only test against versions that are officially supported and have not reached their end-of-life date.
-
-| Version | PostGIS Version | End-of-Life Date | Compatibility |
-|---------------|-----------------|------------------|--------------------|
-| Postgres 10.x | 3.0.x, 3.1.x | November 2022 | ✅ Fully compatible |
-| Postgres 11.x | 3.0.x, 3.1.x | November 2023 | ✅ Fully compatible |
-| Postgres 12.x | 3.0.x, 3.1.x | November 2024 | ✅ Fully compatible |
-| Postgres 13.x | 3.0.x, 3.1.x | November 2025 | ✅ Fully compatible |
+Parse Server is continuously tested with the most recent releases of PostgreSQL and PostGIS to ensure compatibility, using [PostGIS docker images](https://registry.hub.docker.com/r/postgis/postgis/tags?page=1&ordering=last_updated). We follow the [PostgreSQL support schedule](https://www.postgresql.org/support/versioning) and [PostGIS support schedule](https://www.postgis.net/eol_policy/) and only test against versions that are officially supported and have not reached their end-of-life date. Due to the extensive PostgreSQL support duration of 5 years, Parse Server drops support if a version is older than 3.5 years and a newer version has been available for at least 2.5 years.
+
+| Version | PostGIS Version | End-of-Life Date | Parse Server Support End | Compatibility |
+|-------------|-----------------|------------------|--------------------------|--------------------|
+| Postgres 11 | 3.0, 3.1 | November 2023 | April 2022 | ✅ Fully compatible |
+| Postgres 12 | 3.1 | November 2024 | April 2023 | ✅ Fully compatible |
+| Postgres 13 | 3.1 | November 2025 | April 2024 | ✅ Fully compatible |
### Locally
```bash
diff --git a/package-lock.json b/package-lock.json
index f3237a2a06..f5c7cb55b8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,9 +11,9 @@
"dev": true
},
"@apollo/client": {
- "version": "3.3.13",
- "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.3.13.tgz",
- "integrity": "sha512-usiVmXiOq0J/GpyIOIhlF8ItHpiPJObC7zoxLYPoOYj3G3OB0hCIcUKs3aTJ3ATW7u8QxvYgRaJg72NN7E1WOg==",
+ "version": "3.3.14",
+ "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.3.14.tgz",
+ "integrity": "sha512-z7YwMvF9grmpWUG+26e3gPcBAOA/r/Ci5gwK7JVm3bGYG9kKqG8MF6sMXEbuwTsFseE4duSp0icJ6tdzxJhhlA==",
"requires": {
"@graphql-typed-document-node/core": "^3.0.0",
"@types/zen-observable": "^0.8.0",
@@ -39,9 +39,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
}
}
},
@@ -54,9 +54,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
}
}
},
@@ -1546,9 +1546,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
"optional": true
}
}
@@ -2055,9 +2055,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
}
}
},
@@ -2085,9 +2085,9 @@
},
"dependencies": {
"tslib": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz",
- "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
+ "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w=="
}
}
},
@@ -2935,9 +2935,9 @@
}
},
"balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"base": {
@@ -3997,14 +3997,14 @@
"optional": true
},
"core-js": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.10.0.tgz",
- "integrity": "sha512-MQx/7TLgmmDVamSyfE+O+5BHvG1aUGj/gHhLn1wVtm2B5u1eVIPvh7vkfjwWKNCjrTJB8+He99IntSQ1qP+vYQ=="
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.10.1.tgz",
+ "integrity": "sha512-pwCxEXnj27XG47mu7SXAwhLP3L5CrlvCB91ANUkIz40P27kUcvNfSdvyZJ9CLHiVoKSp+TTChMQMSKQEH/IQxA=="
},
"core-js-compat": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.0.tgz",
- "integrity": "sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==",
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.10.1.tgz",
+ "integrity": "sha512-ZHQTdTPkqvw2CeHiZC970NNJcnwzT6YIueDMASKt+p3WbZsLXOcoD392SkcWhkC0wBBHhlfhqGKKsNCQUozYtg==",
"dev": true,
"requires": {
"browserslist": "^4.16.3",
@@ -4020,9 +4020,9 @@
}
},
"core-js-pure": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.10.0.tgz",
- "integrity": "sha512-CC582enhrFZStO4F8lGI7QL3SYx7/AIRc+IdSi3btrQGrVsTawo5K/crmKbRrQ+MOMhNX4v+PATn0k2NN6wI7A=="
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.10.1.tgz",
+ "integrity": "sha512-PeyJH2SE0KuxY5eCGNWA+W+CeDpB6M1PN3S7Am7jSv/Ttuxz2SnWbIiVQOn/TDaGaGtxo8CRWHkXwJscbUHtVw=="
},
"core-util-is": {
"version": "1.0.2",
@@ -4685,9 +4685,9 @@
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"electron-to-chromium": {
- "version": "1.3.707",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.707.tgz",
- "integrity": "sha512-BqddgxNPrcWnbDdJw7SzXVzPmp+oiyjVrc7tkQVaznPGSS9SKZatw6qxoP857M+HbOyyqJQwYQtsuFIMSTNSZA==",
+ "version": "1.3.710",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.710.tgz",
+ "integrity": "sha512-b3r0E2o4yc7mNmBeJviejF1rEx49PUBi+2NPa7jHEX3arkAXnVgLhR0YmV8oi6/Qf3HH2a8xzQmCjHNH0IpXWQ==",
"dev": true
},
"elegant-spinner": {
@@ -5441,9 +5441,9 @@
}
},
"fecha": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.0.tgz",
- "integrity": "sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg=="
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.1.tgz",
+ "integrity": "sha512-MMMQ0ludy/nBs1/o0zVOiKTpG7qMbonKUzjJgQFEuvq6INZ1OraKPRAWkBq5vlKLOUMpmNYG1JoN3oDPUQ9m3Q=="
},
"fetch-node-website": {
"version": "5.0.3",
@@ -5592,9 +5592,9 @@
}
},
"filter-obj": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.1.tgz",
- "integrity": "sha512-yDEp513p7+iLdFHWBVdZFnRiOYwg8ZqmpaAiZCMjzqsbo7tCS4Qm4ulXOht337NGzkukKa9u3W4wqQ9tQPm3Ug==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz",
+ "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==",
"dev": true
},
"finalhandler": {
@@ -11707,9 +11707,9 @@
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
"yallist": {
diff --git a/resources/ci/CiVersionCheck.js b/resources/ci/CiVersionCheck.js
index 763d907355..098dee59d3 100644
--- a/resources/ci/CiVersionCheck.js
+++ b/resources/ci/CiVersionCheck.js
@@ -193,6 +193,13 @@ class CiVersionCheck {
? '^'
: '~'
const latest = semver.maxSatisfying(versions, `${operator}${version}`);
+
+ // If the version should be ignored, skip it
+ if (this.ignoreReleasedVersions.length > 0 && semver.satisfies(latest, this.ignoreReleasedVersions.join(' || '))) {
+ return undefined;
+ }
+
+ // Return the latest version if it is newer than any currently used version
return semver.gt(latest, version) ? latest : undefined;
}
diff --git a/resources/ci/ciCheck.js b/resources/ci/ciCheck.js
index 0686931833..f0f6e8ded1 100644
--- a/resources/ci/ciCheck.js
+++ b/resources/ci/ciCheck.js
@@ -33,11 +33,12 @@ async function checkMongoDbVersions() {
releasedVersions,
latestComponent: CiVersionCheck.versionComponents.path,
ignoreReleasedVersions: [
- '<3.6.0', // These versions have reached their MongoDB end-of-life support date
- '~3.7.0', // This is a development release according to MongoDB support
- '~4.1.0', // This is a development release according to MongoDB support
- '~4.3.0', // This is a development release according to MongoDB support
- '~4.7.0', // This is a development release according to MongoDB support
+ '<4.0.0', // Versions reached their MongoDB end-of-life support date
+ '~4.1.0', // Development release according to MongoDB support
+ '~4.3.0', // Development release according to MongoDB support
+ '~4.7.0', // Development release according to MongoDB support
+
+ '4.4.5', // Temporarily disabled because not yet available for download via mongodb-runner
],
}).check();
}