Skip to content

Commit 7e88cb5

Browse files
authored
build: Release (#9628)
2 parents 2cebb88 + 34867b7 commit 7e88cb5

File tree

93 files changed

+3766
-2525
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

93 files changed

+3766
-2525
lines changed

.babelrc

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"plugins": [
3-
"@babel/plugin-transform-flow-strip-types",
4-
"@babel/plugin-proposal-object-rest-spread"
3+
"@babel/plugin-transform-flow-strip-types"
54
],
65
"presets": [
6+
"@babel/preset-typescript",
77
["@babel/preset-env", {
88
"targets": {
9-
"node": "14",
9+
"node": "18"
1010
},
1111
"exclude": ["proposal-dynamic-import"]
1212
}]

.eslintignore

-3
This file was deleted.

.eslintrc.json

-35
This file was deleted.

.github/workflows/ci.yml

+30-45
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
paths-ignore:
99
- '**/**.md'
1010
env:
11-
NODE_VERSION: 22.4.1
11+
NODE_VERSION: 22.12.0
1212
PARSE_SERVER_TEST_TIMEOUT: 20000
1313
permissions:
1414
actions: write
@@ -138,45 +138,42 @@ jobs:
138138
uses: mansona/npm-lockfile-version@v1
139139
with:
140140
version: 2
141+
check-types:
142+
name: Check Types
143+
timeout-minutes: 5
144+
runs-on: ubuntu-latest
145+
steps:
146+
- uses: actions/checkout@v3
147+
- run: npm ci
148+
- name: Build types
149+
run: npm run build:types
141150
check-mongo:
142151
strategy:
143152
matrix:
144153
include:
145-
- name: MongoDB 4.2, ReplicaSet
146-
MONGODB_VERSION: 4.2.25
147-
MONGODB_TOPOLOGY: replset
148-
NODE_VERSION: 22.4.1
149-
- name: MongoDB 4.4, ReplicaSet
150-
MONGODB_VERSION: 4.4.29
151-
MONGODB_TOPOLOGY: replset
152-
NODE_VERSION: 22.4.1
153-
- name: MongoDB 5, ReplicaSet
154-
MONGODB_VERSION: 5.0.26
155-
MONGODB_TOPOLOGY: replset
156-
NODE_VERSION: 22.4.1
157154
- name: MongoDB 6, ReplicaSet
158-
MONGODB_VERSION: 6.0.14
155+
MONGODB_VERSION: 6.0.19
159156
MONGODB_TOPOLOGY: replset
160-
NODE_VERSION: 22.4.1
157+
NODE_VERSION: 22.12.0
161158
- name: MongoDB 7, ReplicaSet
162-
MONGODB_VERSION: 7.0.8
159+
MONGODB_VERSION: 7.0.16
163160
MONGODB_TOPOLOGY: replset
164-
NODE_VERSION: 22.4.1
161+
NODE_VERSION: 22.12.0
165162
- name: MongoDB 8, ReplicaSet
166-
MONGODB_VERSION: 8.0.0
163+
MONGODB_VERSION: 8.0.4
167164
MONGODB_TOPOLOGY: replset
168-
NODE_VERSION: 22.4.1
165+
NODE_VERSION: 22.12.0
169166
- name: Redis Cache
170167
PARSE_SERVER_TEST_CACHE: redis
171-
MONGODB_VERSION: 8.0.0
168+
MONGODB_VERSION: 8.0.4
172169
MONGODB_TOPOLOGY: standalone
173-
NODE_VERSION: 22.4.1
170+
NODE_VERSION: 22.12.0
174171
- name: Node 20
175-
MONGODB_VERSION: 8.0.0
172+
MONGODB_VERSION: 8.0.4
176173
MONGODB_TOPOLOGY: standalone
177-
NODE_VERSION: 20.15.1
174+
NODE_VERSION: 20.18.0
178175
- name: Node 18
179-
MONGODB_VERSION: 8.0.0
176+
MONGODB_VERSION: 8.0.4
180177
MONGODB_TOPOLOGY: standalone
181178
NODE_VERSION: 18.20.4
182179
fail-fast: false
@@ -225,33 +222,21 @@ jobs:
225222
strategy:
226223
matrix:
227224
include:
228-
- name: PostgreSQL 13, PostGIS 3.1
229-
POSTGRES_IMAGE: postgis/postgis:13-3.1
230-
NODE_VERSION: 22.4.1
231-
- name: PostgreSQL 13, PostGIS 3.2
232-
POSTGRES_IMAGE: postgis/postgis:13-3.2
233-
NODE_VERSION: 22.4.1
234-
- name: PostgreSQL 13, PostGIS 3.3
235-
POSTGRES_IMAGE: postgis/postgis:13-3.3
236-
NODE_VERSION: 22.4.1
237-
- name: PostgreSQL 13, PostGIS 3.4
238-
POSTGRES_IMAGE: postgis/postgis:13-3.4
239-
NODE_VERSION: 22.4.1
240-
- name: PostgreSQL 13, PostGIS 3.5
241-
POSTGRES_IMAGE: postgis/postgis:13-3.5
242-
NODE_VERSION: 22.4.1
243-
- name: PostgreSQL 14, PostGIS 3.5
244-
POSTGRES_IMAGE: postgis/postgis:14-3.5
245-
NODE_VERSION: 22.4.1
225+
- name: PostgreSQL 15, PostGIS 3.3
226+
POSTGRES_IMAGE: postgis/postgis:15-3.3
227+
NODE_VERSION: 22.12.0
228+
- name: PostgreSQL 15, PostGIS 3.4
229+
POSTGRES_IMAGE: postgis/postgis:15-3.4
230+
NODE_VERSION: 22.12.0
246231
- name: PostgreSQL 15, PostGIS 3.5
247232
POSTGRES_IMAGE: postgis/postgis:15-3.5
248-
NODE_VERSION: 22.4.1
233+
NODE_VERSION: 22.12.0
249234
- name: PostgreSQL 16, PostGIS 3.5
250235
POSTGRES_IMAGE: postgis/postgis:16-3.5
251-
NODE_VERSION: 22.4.1
236+
NODE_VERSION: 22.12.0
252237
- name: PostgreSQL 17, PostGIS 3.5
253238
POSTGRES_IMAGE: postgis/postgis:17-3.5
254-
NODE_VERSION: 22.4.1
239+
NODE_VERSION: 22.12.0
255240
fail-fast: false
256241
name: ${{ matrix.name }}
257242
timeout-minutes: 20

.github/workflows/release-automated.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ jobs:
9393
- name: Use Node.js
9494
uses: actions/setup-node@v4
9595
with:
96-
node-version: 18.20.0
96+
node-version: 18.20.4
9797
- name: Cache Node.js modules
9898
uses: actions/cache@v4
9999
with:

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ node_modules
4646

4747
# Babel.js
4848
lib/
49+
# types/* once we have full typescript support, we can generate types from the typescript files
50+
!types/tsconfig.json
4951

5052
# cache folder
5153
.cache

.releaserc.js

+11-8
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@ async function config() {
3030

3131
// Get branch
3232
const branch = ref?.split('/')?.pop()?.split('-')[0] || '(current branch could not be determined)';
33+
// eslint-disable-next-line no-console
3334
console.log(`Running on branch: ${branch}`);
3435

3536
// Set changelog file
3637
const changelogFile = `./changelogs/CHANGELOG_${branch}.md`;
38+
// eslint-disable-next-line no-console
3739
console.log(`Changelog file output to: ${changelogFile}`);
3840

3941
// Load template file contents
@@ -43,10 +45,10 @@ async function config() {
4345
branches: [
4446
'release',
4547
{ name: 'alpha', prerelease: true },
46-
{ name: 'beta', prerelease: true },
48+
// { name: 'beta', prerelease: true },
4749
'next-major',
48-
// Long-Term-Support branch of previous major version
49-
'release-6.x.x',
50+
// Long-Term-Support branch
51+
'release-8.x.x',
5052
],
5153
dryRun: false,
5254
debug: true,
@@ -60,13 +62,13 @@ async function config() {
6062
{ scope: 'no-release', release: false },
6163
],
6264
parserOpts: {
63-
noteKeywords: [ 'BREAKING CHANGE', 'BREAKING CHANGES', 'BREAKING' ],
65+
noteKeywords: ['BREAKING CHANGE'],
6466
},
6567
}],
6668
['@semantic-release/release-notes-generator', {
6769
preset: 'angular',
6870
parserOpts: {
69-
noteKeywords: ['BREAKING CHANGE', 'BREAKING CHANGES', 'BREAKING']
71+
noteKeywords: ['BREAKING CHANGE']
7072
},
7173
writerOpts: {
7274
commitsSort: ['subject', 'scope'],
@@ -95,8 +97,9 @@ async function config() {
9597
"@saithodev/semantic-release-backmerge",
9698
{
9799
"backmergeBranches": [
98-
{ from: "beta", to: "alpha" },
99-
{ from: "release", to: "beta" },
100+
// { from: 'beta', to: 'alpha' },
101+
// { from: 'release', to: 'beta' },
102+
{ from: 'release', to: 'alpha' },
100103
]
101104
}
102105
],
@@ -108,7 +111,7 @@ async function config() {
108111

109112
async function loadTemplates() {
110113
for (const template of Object.keys(templates)) {
111-
114+
112115
// For ES6 modules use:
113116
// const fileUrl = import.meta.url;
114117
// const __dirname = dirname(fileURLToPath(fileUrl));

8.0.0.md

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Parse Server 8 Migration Guide <!-- omit in toc -->
2+
3+
This document only highlights specific changes that require a longer explanation. For a full list of changes in Parse Server 8 please refer to the [changelog](https://github.com/parse-community/parse-server/blob/alpha/CHANGELOG.md).
4+
5+
---
6+
7+
- [Email Verification](#email-verification)
8+
9+
---
10+
11+
## Email Verification
12+
13+
In order to remove sensitive information (PII) from technical logs, the `Parse.User.username` field has been removed from the email verification process. This means the username will no longer be used and the already existing verification token, that is internal to Parse Server and associated with the user, will be used instead. This makes use of the fact that an expired verification token is not deleted from the database by Parse Server, despite being expired, and can therefore be used to identify a user.
14+
15+
This change affects how verification emails with expired tokens are handled. When opening a verification link that contains an expired token, the page that the user is redirected to will no longer provide the `username` as a URL query parameter. Instead, the URL query parameter `token` will be provided.
16+
17+
The request to re-send a verification email changed to sending a `POST` request to the endpoint `/resend_verification_email` with `token` in the body, instead of `username`. If you have customized the HTML pages for email verification either for the `PagesRouter` in `/public/` or the deprecated `PublicAPIRouter` in `/public_html/`, you need to adapt the form request in your custom pages. See the example pages in these aforementioned directories for how the forms must be set up.
18+
19+
> [!WARNING]
20+
> An expired verification token is not automatically deleted from the database by Parse Server even though it has expired. If you have implemented a custom clean-up logic that removes expired tokens, this will break the form request to re-send a verification email as the expired token won't be found and cannot be associated with any user. In that case you'll have to implement your custom process to re-send a verification email.
21+
22+
> [!IMPORTANT]
23+
> Parse Server does not keep a history of verification tokens but only stores the most recently generated verification token in the database. Every time Parse Server generates a new verification token, the currently stored token is replaced. If a user opens a link with an expired token, and that token has already been replaced in the database, Parse Server cannot associate the expired token with any user. In this case, another way has to be offered to the user to re-send a verification email. To mitigate this issue, set the Parse Server option `emailVerifyTokenReuseIfValid: true` and set `emailVerifyTokenValidityDuration` to a longer duration, which ensures that the currently stored verification token is not replaced too soon.
24+
25+
Related pull requests:
26+
27+
- https://github.com/parse-community/parse-server/pull/8488

CHANGELOG.md

-13
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,6 @@ Details:
1515
- Purpose: official release
1616
- Suitable environment: production
1717

18-
## ⚠️ [Beta Releases][log_beta]
19-
20-
> ### “Please try out, we’d love your feedback!”
21-
22-
These are releases that are pretty stable, but may have still some bugs to be fixed before official release.
23-
24-
Details:
25-
- Stability: *pretty stable*
26-
- NPM channel: `@beta`
27-
- Branch: [beta][branch_beta]
28-
- Purpose: feature maturation
29-
- Suitable environment: development
30-
3118
## 🔥 [Alpha Releases][log_alpha]
3219

3320
> ### “If you are curious to see what's next!”

DEPRECATIONS.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ The following is a list of deprecations, according to the [Deprecation Policy](h
1313
| DEPPS7 | Remove file trigger syntax `Parse.Cloud.beforeSaveFile((request) => {})` | [#7966](https://github.com/parse-community/parse-server/pull/7966) | 5.3.0 (2022) | 7.0.0 (2024) | removed | - |
1414
| DEPPS8 | Login with expired 3rd party authentication token defaults to `false` | [#7079](https://github.com/parse-community/parse-server/pull/7079) | 5.3.0 (2022) | 7.0.0 (2024) | removed | - |
1515
| DEPPS9 | Rename LiveQuery `fields` option to `keys` | [#8389](https://github.com/parse-community/parse-server/issues/8389) | 6.0.0 (2023) | 7.0.0 (2024) | removed | - |
16-
| DEPPS10 | Config option `encodeParseObjectInCloudFunction` defaults to `true` | [#8634](https://github.com/parse-community/parse-server/issues/8634) | 6.2.0 (2023) | 8.0.0 (2025) | deprecated | - |
16+
| DEPPS10 | Encode `Parse.Object` in Cloud Function and remove option `encodeParseObjectInCloudFunction` | [#8634](https://github.com/parse-community/parse-server/issues/8634) | 6.2.0 (2023) | 9.0.0 (2026) | deprecated | - |
17+
| DEPPS11 | Replace `PublicAPIRouter` with `PagesRouter` | [#7625](https://github.com/parse-community/parse-server/issues/7625) | 8.0.0 (2025) | 9.0.0 (2026) | deprecated | - |
1718

1819
[i_deprecation]: ## "The version and date of the deprecation."
1920
[i_removal]: ## "The version and date of the planned removal."

Dockerfile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
############################################################
22
# Build stage
33
############################################################
4-
FROM node:20.17.0-alpine3.20 AS build
4+
FROM node:20.18.2-alpine3.20 AS build
55

66
RUN apk --no-cache add \
77
build-base \
@@ -28,7 +28,7 @@ RUN npm ci --omit=dev --ignore-scripts \
2828
############################################################
2929
# Release stage
3030
############################################################
31-
FROM node:20.17.0-alpine3.20 AS release
31+
FROM node:20.18.2-alpine3.20 AS release
3232

3333
VOLUME /parse-server/cloud /parse-server/config
3434

0 commit comments

Comments
 (0)