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 @@ Join the conversation Snyk badge Node.js 12,14,15 - MongoDB 3.6,4.0,4.2,4.4 - PostgreSQL 10,11,12,13 + MongoDB 4.0,4.2,4.4 + PostgreSQL 11,12,13

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(); }