Skip to content

Commit d717e91

Browse files
authored
Merge branch 'alpha' into feat/decimal128-support
2 parents 6ca6eba + 8a581e9 commit d717e91

131 files changed

Lines changed: 39429 additions & 16942 deletions

File tree

Some content is hidden

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

.github/pull_request_template.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
- Any contribution is under this [license](https://github.com/parse-community/parse-server/blob/alpha/LICENSE).
55

66
## Issue
7-
<!-- Describe the issue. -->
8-
9-
Closes: FILL_THIS_OUT
7+
<!-- Describe or link the issue that this PR closes. -->
108

119
## Approach
1210
<!-- Describe the changes in this PR. -->

.github/workflows/ci-performance.yml

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ jobs:
6868
env:
6969
NODE_ENV: production
7070
run: |
71+
set -o pipefail
7172
echo "Running baseline benchmarks..."
7273
if [ ! -f "benchmark/performance.js" ]; then
7374
echo "⚠️ Benchmark script not found - this is expected for new features"
@@ -76,17 +77,9 @@ jobs:
7677
echo "Baseline: N/A (no benchmark script)" > baseline-output.txt
7778
exit 0
7879
fi
79-
taskset -c 0 npm run benchmark > baseline-output.txt 2>&1 || npm run benchmark > baseline-output.txt 2>&1 || true
80-
echo "Benchmark command completed with exit code: $?"
81-
echo "Output file size: $(wc -c < baseline-output.txt) bytes"
82-
echo "--- Begin baseline-output.txt ---"
83-
cat baseline-output.txt
84-
echo "--- End baseline-output.txt ---"
80+
taskset -c 0 npm run benchmark 2>&1 | tee baseline-output.txt || npm run benchmark 2>&1 | tee baseline-output.txt || true
8581
# Extract JSON from output (everything between first [ and last ])
8682
sed -n '/^\[/,/^\]/p' baseline-output.txt > baseline.json || echo '[]' > baseline.json
87-
echo "Extracted JSON size: $(wc -c < baseline.json) bytes"
88-
echo "Baseline benchmark results:"
89-
cat baseline.json
9083
continue-on-error: true
9184

9285
- name: Save baseline results to temp location
@@ -133,18 +126,11 @@ jobs:
133126
env:
134127
NODE_ENV: production
135128
run: |
129+
set -o pipefail
136130
echo "Running PR benchmarks..."
137-
taskset -c 0 npm run benchmark > pr-output.txt 2>&1 || npm run benchmark > pr-output.txt 2>&1 || true
138-
echo "Benchmark command completed with exit code: $?"
139-
echo "Output file size: $(wc -c < pr-output.txt) bytes"
140-
echo "--- Begin pr-output.txt ---"
141-
cat pr-output.txt
142-
echo "--- End pr-output.txt ---"
131+
taskset -c 0 npm run benchmark 2>&1 | tee pr-output.txt || npm run benchmark 2>&1 | tee pr-output.txt || true
143132
# Extract JSON from output (everything between first [ and last ])
144133
sed -n '/^\[/,/^\]/p' pr-output.txt > pr.json || echo '[]' > pr.json
145-
echo "Extracted JSON size: $(wc -c < pr.json) bytes"
146-
echo "PR benchmark results:"
147-
cat pr.json
148134
continue-on-error: true
149135

150136
- name: Upload PR results
@@ -173,6 +159,7 @@ jobs:
173159
- name: Compare benchmark results
174160
id: compare
175161
run: |
162+
set -o pipefail
176163
node -e "
177164
const fs = require('fs');
178165
@@ -245,6 +232,7 @@ jobs:
245232
console.log('');
246233
if (hasRegression) {
247234
console.log('⚠️ **Performance regressions detected.** Please review the changes.');
235+
process.exitCode = 1;
248236
} else if (hasImprovement) {
249237
console.log('🚀 **Performance improvements detected!** Great work!');
250238
} else {

.github/workflows/release-automated.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
persist-credentials: false
1818
- uses: actions/setup-node@v4
1919
with:
20-
node-version: 20
20+
node-version: 22
2121
registry-url: https://registry.npmjs.org/
2222
- name: Cache Node.js modules
2323
uses: actions/cache@v4

DEPRECATIONS.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ The following is a list of deprecations, according to the [Deprecation Policy](h
1818
| DEPPS12 | Database option `allowPublicExplain` defaults to `false` | [#7519](https://github.com/parse-community/parse-server/issues/7519) | 8.5.0 (2025) | 9.0.0 (2026) | changed | - |
1919
| DEPPS13 | Config option `enableInsecureAuthAdapters` defaults to `false` | [#9667](https://github.com/parse-community/parse-server/pull/9667) | 8.0.0 (2025) | 9.0.0 (2026) | changed | - |
2020
| DEPPS14 | Config option `pages.encodePageParamHeaders` defaults to `true` | [#10063](https://github.com/parse-community/parse-server/issues/10063) | 9.4.0 (2026) | 10.0.0 (2027) | deprecated | - |
21+
| DEPPS15 | Config option `readOnlyMasterKeyIps` defaults to `['127.0.0.1', '::1']` | [#10115](https://github.com/parse-community/parse-server/pull/10115) | 9.5.0 (2026) | 10.0.0 (2027) | deprecated | - |
22+
| DEPPS16 | Remove config option `mountPlayground` | [#10110](https://github.com/parse-community/parse-server/issues/10110) | 9.5.0 (2026) | 10.0.0 (2027) | deprecated | - |
23+
| DEPPS17 | Remove config option `playgroundPath` | [#10110](https://github.com/parse-community/parse-server/issues/10110) | 9.5.0 (2026) | 10.0.0 (2027) | deprecated | - |
24+
| DEPPS18 | Config option `requestComplexity` limits enabled by default | [#10207](https://github.com/parse-community/parse-server/pull/10207) | 9.6.0 (2026) | 10.0.0 (2027) | deprecated | - |
25+
| DEPPS19 | Remove config option `enableProductPurchaseLegacyApi` | [#10228](https://github.com/parse-community/parse-server/pull/10228) | 9.6.0 (2026) | 10.0.0 (2027) | deprecated | - |
26+
| DEPPS20 | Remove config option `allowExpiredAuthDataToken` | | 9.6.0 (2026) | 10.0.0 (2027) | deprecated | - |
27+
| DEPPS21 | Config option `protectedFieldsOwnerExempt` defaults to `false` | | 9.6.0 (2026) | 10.0.0 (2027) | deprecated | - |
28+
| DEPPS22 | Config option `protectedFieldsTriggerExempt` defaults to `true` | | 9.6.0 (2026) | 10.0.0 (2027) | deprecated | - |
29+
| DEPPS23 | Config option `protectedFieldsSaveResponseExempt` defaults to `false` | | 9.7.0 (2026) | 10.0.0 (2027) | deprecated | - |
2130

2231
[i_deprecation]: ## "The version and date of the deprecation."
2332
[i_change]: ## "The version and date of the planned change."

Dockerfile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ COPY package*.json ./
1616
# Copy src to have config files for install
1717
COPY . .
1818

19+
# Increase npm network timeout and retries for slow platforms (e.g. arm64 via QEMU)
20+
ENV npm_config_fetch_retries=5
21+
ENV npm_config_fetch_retry_mintimeout=60000
22+
ENV npm_config_fetch_retry_maxtimeout=300000
23+
1924
# Install without scripts
2025
RUN npm ci --omit=dev --ignore-scripts \
2126
# Copy production node_modules aside for later

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,9 @@ The client keys used with Parse are no longer necessary with Parse Server. If yo
305305

306306
<sub>(1) `Parse.Object.createdAt`, `Parse.Object.updatedAt`.</sub>
307307

308+
> [!NOTE]
309+
> In Cloud Code, both `masterKey` and `readOnlyMasterKey` set `request.master` to `true`. To distinguish between them, check `request.isReadOnly`. For example, use `request.master && !request.isReadOnly` to ensure full master key access.
310+
308311
## Email Verification and Password Reset
309312

310313
Verifying user email addresses and enabling password reset via email requires an email adapter. There are many email adapters provided and maintained by the community. The following is an example configuration with an example email adapter. See the [Parse Server Options][server-options] for more details and a full list of available options.
@@ -819,7 +822,7 @@ $ parse-server --appId APPLICATION_ID --masterKey MASTER_KEY --databaseURI mongo
819822
820823
After starting the server, you can visit http://localhost:1337/playground in your browser to start playing with your GraphQL API.
821824
822-
**_Note:_** Do **_NOT_** use --mountPlayground option in production. [Parse Dashboard](https://github.com/parse-community/parse-dashboard) has a built-in GraphQL Playground and it is the recommended option for production apps.
825+
**_Note:_** Do **_NOT_** use --mountPlayground option in production. The GraphQL Playground exposes the master key in the browser page. [Parse Dashboard](https://github.com/parse-community/parse-dashboard) has a built-in GraphQL Playground and is the recommended option for production apps.
823826
824827
### Using Docker
825828
@@ -842,7 +845,7 @@ $ docker run --name my-parse-server --link my-mongo:mongo -v config-vol:/parse-s
842845
843846
After starting the server, you can visit http://localhost:1337/playground in your browser to start playing with your GraphQL API.
844847
845-
**_Note:_** Do **_NOT_** use --mountPlayground option in production. [Parse Dashboard](https://github.com/parse-community/parse-dashboard) has a built-in GraphQL Playground and it is the recommended option for production apps.
848+
**_Note:_** Do **_NOT_** use --mountPlayground option in production. The GraphQL Playground exposes the master key in the browser page. [Parse Dashboard](https://github.com/parse-community/parse-dashboard) has a built-in GraphQL Playground and is the recommended option for production apps.
846849
847850
### Using Express.js
848851
@@ -896,7 +899,7 @@ $ node index.js
896899
897900
After starting the app, you can visit http://localhost:1337/playground in your browser to start playing with your GraphQL API.
898901
899-
**_Note:_** Do **_NOT_** mount the GraphQL Playground in production. [Parse Dashboard](https://github.com/parse-community/parse-dashboard) has a built-in GraphQL Playground and it is the recommended option for production apps.
902+
**_Note:_** Do **_NOT_** mount the GraphQL Playground in production. The GraphQL Playground exposes the master key in the browser page. [Parse Dashboard](https://github.com/parse-community/parse-dashboard) has a built-in GraphQL Playground and is the recommended option for production apps.
900903
901904
## Checking the API health
902905

0 commit comments

Comments
 (0)