Skip to content

Latest commit

 

History

History
2265 lines (1787 loc) · 225 KB

CHANGELOG_release.md

File metadata and controls

2265 lines (1787 loc) · 225 KB

7.2.0 (2024-07-09)

Bug Fixes

  • Invalid push notification tokens are not cleaned up from database for FCM API v2 (#9173) (284da09)

Features

  • Add support for dot notation on array fields of Parse Object (#9115) (cf4c880)
  • Upgrade to @parse/push-adapter 6.4.0 (#9182) (ef1634b)
  • Upgrade to Parse JS SDK 5.3.0 (#9180) (dca187f)

7.1.0 (2024-06-30)

Bug Fixes

  • Parse.Cloud.startJob and Parse.Push.send not returning status ID when setting Parse Server option directAccess: true (#8766) (5b0efb2)
  • Required option not handled correctly for special fields (File, GeoPoint, Polygon) on GraphQL API mutations (#8915) (907ad42)
  • Facebook Limited Login not working due to incorrect domain in JWT validation (#9122) (9d0bd2b)
  • Live query throws error when constraint notEqualTo is set to null (#8835) (11d3e48)
  • Parse Server option extendSessionOnUse not working for session lengths < 24 hours (#9113) (0a054e6)
  • Rate limiting can fail when using Parse Server option rateLimit.redisUrl with clusters (#8632) (c277739)
  • SQL injection when using Parse Server with PostgreSQL; fixes security vulnerability GHSA-c2hr-cqg6-8j6r (#9167) (2edf1e4)

Features

  • Add silent log level for Cloud Code (#8803) (5f81efb)
  • Add server security check status security.enableCheck to Features Router (#8679) (b07ec15)
  • Prevent Parse Server start in case of unknown option in server configuration (#8987) (8758e6a)
  • Upgrade to @parse/push-adapter 6.0.0 (#9066) (18bdbf8)
  • Upgrade to @parse/push-adapter 6.2.0 (#9127) (ca20496)
  • Upgrade to Parse JS SDK 5.2.0 (#9128) (665b8d5)

7.0.0 (2024-03-19)

Bug Fixes

  • CacheAdapter does not connect when using a CacheAdapter with a JSON config (#8633) (720d24e)
  • Conditional email verification not working in some cases if verifyUserEmails, preventLoginWithUnverifiedEmail set to functions (#8838) (8e7a6b1)
  • Context not passed to Cloud Code Trigger beforeFind when using Parse.Query.include (#8765) (7d32d89)
  • Deny request if master key is not set in Parse Server option masterKeyIps regardless of ACL and CLP (#8957) (a7b5b38)
  • Docker image not published to Docker Hub on new release (#8905) (a2ac8d1)
  • Docker version releases by removing arm/v6 and arm/v7 support (#8976) (1f62dd0)
  • GraphQL file upload fails in case of use of pointer or relation (#8721) (1aba638)
  • Improve PostgreSQL injection detection; fixes security vulnerability GHSA-6927-3vr9-fxf2 which affects Parse Server deployments using a Postgres database (#8961) (cbefe77)
  • Incomplete user object in verifyEmail function if both username and email are changed (#8889) (1eb95ae)
  • Parse Server option emailVerifyTokenReuseIfValid: true generates new token on every email verification request (#8885) (0023ce4)
  • Parse Server option fileExtensions default value rejects file extensions that are less than 3 or more than 4 characters long (#8699) (2760381)
  • Parse Server option fileUpload.fileExtensions fails to determine file extension if filename contains multiple dots (#8754) (3d6d50e)
  • Security bump @babel/traverse from 7.20.5 to 7.23.2 (#8777) (2d6b3d1)
  • Security upgrade graphql from 16.6.0 to 16.8.1 (#8758) (71dfd8a)
  • Server crashes on invalid Cloud Function or Cloud Job name; fixes security vulnerability GHSA-6hh7-46r2-vf29 (#9024) (9f6e342)
  • Server crashes when receiving an array of Parse.Pointer in the request body (#8784) (66e3603)
  • Username is undefined in email verification link on email change (#8887) (e315c13)

Features

  • Add $setOnInsert operator to Parse.Server.database.update (#8791) (f630a45)
  • Add installationId to arguments for verifyUserEmails, preventLoginWithUnverifiedEmail (#8836) (a22dbe1)
  • Add installationId, ip, resendRequest to arguments passed to verifyUserEmails on verification email request (#8873) (8adcbee)
  • Add Parse.User as function parameter to Parse Server options verifyUserEmails, preventLoginWithUnverifiedEmail on login (#8850) (972f630)
  • Add compatibility for MongoDB Atlas Serverless and AWS Amazon DocumentDB with collation options enableCollationCaseComparison, transformEmailToLowercase, transformUsernameToLowercase (#8805) (09fbeeb)
  • Add context to Cloud Code Triggers beforeLogin and afterLogin (#8724) (a9c34ef)
  • Add password validation via POST request for user with unverified email using master key and option ignoreEmailVerification (#8895) (633a9d2)
  • Add support for MongoDB 7 (#8761) (3de8494)
  • Add support for MongoDB query comment (#8928) (2170962)
  • Add support for Node 20, drop support for Node 14, 16 (#8907) (ced4872)
  • Add support for Postgres 16 (#8898) (99489b2)
  • Allow Parse.Session.current on expired session token instead of throwing error (#8722) (f9dde4a)
  • Allow setting createdAt and updatedAt during Parse.Object creation with maintenance key (#8696) (77bbfb3)
  • Deprecation DEPPS5: Config option allowClientClassCreation defaults to false (#8849) (29624e0)
  • Deprecation DEPPS6: Authentication adapters disabled by default (#8858) (0cf58eb)
  • Deprecation DEPPS7: Remove deprecated Cloud Code file trigger syntax (#8855) (4e6a375)
  • Deprecation DEPPS8: Parse Server option allowExpiredAuthDataToken defaults to false (#8860) (e29845f)
  • Deprecation DEPPS9: LiveQuery fields option is renamed to keys (#8852) (38983e8)
  • Node process exits with error code 1 on uncaught exception to allow custom uncaught exception handling (#8894) (70c280c)
  • Switch GraphQL server from Yoga v2 to Apollo v4 (#8959) (105ae7c)
  • Upgrade Parse Server Push Adapter to 5.0.2 (#8813) (6ef1986)
  • Upgrade to Parse JS SDK 5 (#9022) (ad4aa83)

Performance Improvements

  • Improved IP validation performance for masterKeyIPs, maintenanceKeyIPs (#8510) (b87daba)

BREAKING CHANGES

  • The Parse Server option allowClientClassCreation defaults to false. (29624e0)
  • A request using the master key will now be rejected as unauthorized if the IP from which the request originates is not set in the Parse Server option masterKeyIps, even if the request does not require the master key permission, for example for a public object in a public class class. (a7b5b38)
  • Node process now exits with code 1 on uncaught exceptions, enabling custom handlers that were blocked by Parse Server's default behavior of re-throwing errors. This change may lead to automatic process restarts by the environment, unlike before. (70c280c)
  • Authentication adapters are disabled by default; to use an authentication adapter it needs to be explicitly enabled in the Parse Server authentication adapter option auth.<provider>.enabled: true (0cf58eb)
  • Parse Server option allowExpiredAuthDataToken defaults to false; a 3rd party authentication token will be validated every time the user tries to log in and the login will fail if the token has expired; the effect of this change may differ for different authentication adapters, depending on the token lifetime and the token refresh logic of the adapter (e29845f)
  • LiveQuery fields option is renamed to keys (38983e8)
  • Cloud Code file trigger syntax has been aligned with object trigger syntax, for example Parse.Cloud.beforeDeleteFile' has been changed to Parse.Cloud.beforeDelete(Parse.File, (request) => {})' (4e6a375)
  • Removes support for Node 14 and 16 (ced4872)
  • Removes support for Postgres 11 and 12 (99489b2)
  • The Parse.User passed as argument if verifyUserEmails is set to a function is renamed from user to object for consistency with invocations of verifyUserEmails on signup or login; the user object is not a plain JavaScript object anymore but an instance of Parse.User (8adcbee)
  • Parse.Session.current() no longer throws an error if the session token is expired, but instead returns the session token with its expiration date to allow checking its validity (f9dde4a)
  • Parse.Query no longer supports the BSON type code; although this feature was never officially documented, its removal is announced as a breaking change to protect deployments where it might be in use. (3de8494)

6.4.0 (2023-11-16)

Bug Fixes

  • Parse Server option fileUpload.fileExtensions does not work with an array of extensions (#8688) (6a4a00c)
  • Redis 4 does not reconnect after unhandled error (#8706) (2b3d4e5)
  • Remove config logging when launching Parse Server via CLI (#8710) (ae68f0c)
  • Server does not start via CLI when auth option is set (#8666) (4e2000b)

Features

  • Add conditional email verification via dynamic Parse Server options verifyUserEmails, sendUserEmailVerification that now accept functions (#8425) (44acd6d)
  • Add property Parse.Server.version to determine current version of Parse Server in Cloud Code (#8670) (a9d376b)
  • Add TOTP authentication adapter (#8457) (cc079a4)

Performance Improvements

  • Improve performance of recursive pointer iterations (#8741) (45a3ed0)

6.3.1 (2023-10-20)

Bug Fixes

6.3.0 (2023-09-16)

Bug Fixes

  • Cloud Code Trigger afterSave executes even if not set (#8520) (afd0515)
  • GridFS file storage doesn't work with certain enableSchemaHooks settings (#8467) (d4cda4b)
  • Inaccurate table total row count for PostgreSQL (#8511) (0823a02)
  • LiveQuery server is not shut down properly when handleShutdown is called (#8491) (967700b)
  • Rate limit feature is incompatible with Node 14 (#8578) (f911f2c)
  • Unnecessary log entries by extendSessionOnUse (#8562) (fd6a007)

Features

  • extendSessionOnUse to automatically renew Parse Sessions (#8505) (6f885d3)
  • Add new Parse Server option preventSignupWithUnverifiedEmail to prevent returning a user without session token on sign-up with unverified email address (#8451) (82da308)
  • Add option to change the log level of logs emitted by Cloud Functions (#8530) (2caea31)
  • Add support for $eq query constraint in LiveQuery (#8614) (656d673)
  • Add zones for rate limiting by ip, user, session, global (#8508) (03fba97)
  • Allow Parse.Object pointers in Cloud Code arguments (#8490) (28aeda3)

Reverts

  • fix: Inaccurate table total row count for PostgreSQL (6722110)

6.2.2 (2023-09-04)

Bug Fixes

  • Parse Pointer allows to access internal Parse Server classes and circumvent beforeFind query trigger; fixes security vulnerability GHSA-fcv6-fg5r-jm9q (be4c7e2)

6.2.1 (2023-06-28)

Bug Fixes

6.2.0 (2023-05-20)

Features

  • Add new Parse Server option fileUpload.fileExtensions to restrict file upload by file extension; this fixes a security vulnerability in which a phishing attack could be performed using an uploaded HTML file; by default the new option only allows file extensions matching the regex pattern ^[^hH][^tT][^mM][^lL]?$, which excludes HTML files; if your app currently depends on uploading files with HTML file extensions then this may be a breaking change and you could allow HTML file upload by setting the option to ['.*'] (#8538) (a318e7b)

6.1.0 (2023-05-01)

Bug Fixes

  • LiveQuery can return incorrectly formatted date (#8456) (4ce135a)
  • Nested date is incorrectly decoded as empty object {} when fetching a Parse Object (#8446) (22d2446)
  • Parameters missing in afterFind trigger of authentication adapters (#8458) (ce34747)
  • Rate limiting across multiple servers via Redis not working (#8469) (d9e347d)
  • Security upgrade jsonwebtoken to 9.0.0 (#8420) (f5bfe45)

Features

  • Add afterFind trigger to authentication adapters (#8444) (c793bb8)
  • Add option schemaCacheTtl for schema cache pulling as alternative to enableSchemaHooks (#8436) (b3b76de)
  • Add Parse Server option resetPasswordSuccessOnInvalidEmail to choose success or error response on password reset with invalid email (#7551) (e5d610e)
  • Add rate limiting across multiple servers via Redis (#8394) (34833e4)
  • Allow multiple origins for header Access-Control-Allow-Origin (#8517) (4f15539)
  • Deprecate LiveQuery fields option in favor of keys for semantic consistency (#8388) (a49e323)
  • Export AuthAdapter to make it available for extension with custom authentication adapters (#8443) (40c1961)

6.0.0 (2023-01-31)

Bug Fixes

  • ParseServer.verifyServerUrl may fail if server response headers are missing; remove unnecessary logging (#8391) (1c37a7c)
  • Cloud Code trigger beforeSave does not work with Parse.Role (#8320) (f29d972)
  • ES6 modules do not await the import of Cloud Code files (#8368) (a7bd180)
  • Nested objects are encoded incorrectly for MongoDB (#8209) (1412666)
  • Parse Server option masterKeyIps does not include localhost by default for IPv6 (#8322) (ab82635)
  • Rate limiter may reject requests that contain a session token (#8399) (c114dc8)
  • Remove Node 12 and Node 17 support (#8279) (2546cc8)
  • Schema without class level permissions may cause error (#8409) (aa2cd51)
  • The client IP address may be determined incorrectly in some cases; this fixes a security vulnerability in which the Parse Server option masterKeyIps may be circumvented, see GHSA-vm5r-c87r-pf6x (#8372) (892040d)
  • Throwing error in Cloud Code Triggers afterLogin, afterLogout crashes server (#8280) (130d290)

Features

  • Access the internal scope of Parse Server using the new maintenanceKey; the internal scope contains unofficial and undocumented fields (prefixed with underscore _) which are used internally by Parse Server; you may want to manipulate these fields for out-of-band changes such as data migration or correction tasks; changes within the internal scope of Parse Server may happen at any time without notice or changelog entry, it is therefore recommended to look at the source code of Parse Server to understand the effects of manipulating internal fields before using the key; it is discouraged to use the maintenanceKey for routine operations in a production environment; see access scopes (#8212) (f3bcc93)
  • Adapt verifyServerUrl for new asynchronous Parse Server start-up states (#8366) (ffa4974)
  • Add ParseQuery.watch to trigger LiveQuery only on update of specific fields (#8028) (fc92faa)
  • Add Node 19 support (#8363) (a4990dc)
  • Add option to change the log level of the logs emitted by triggers (#8328) (8f3b694)
  • Add request rate limiter based on IP address (#8174) (6c79f6a)
  • Asynchronous initialization of Parse Server (#8232) (99fcf45)
  • Improve authentication adapter interface to support multi-factor authentication (MFA), authentication challenges, and provide a more powerful interface for writing custom authentication adapters (#8156) (5bbf9ca)
  • Reduce Docker image size by improving stages (#8359) (40810b4)
  • Remove deprecation DEPPS1: Native MongoDB syntax in aggregation pipeline (#8362) (d0d30c4)
  • Remove deprecation DEPPS2: Config option directAccess defaults to true (#8284) (f535ee6)
  • Remove deprecation DEPPS3: Config option enforcePrivateUsers defaults to true (#8283) (ed499e3)
  • Remove deprecation DEPPS4: Remove convenience method for http request Parse.Cloud.httpRequest (#8287) (2d79c08)
  • Remove support for MongoDB 4.0 (#8292) (37245f6)
  • Restrict use of masterKey to localhost by default (#8281) (6c16021)
  • Upgrade Node Package Manager lock file package-lock.json to version 2 (#8285) (ee72467)
  • Upgrade Redis 3 to 4 (#8293) (7d622f0)
  • Upgrade Redis 3 to 4 for LiveQuery (#8333) (b2761fb)
  • Upgrade to Parse JavaScript SDK 4 (#8332) (9092874)
  • Write log entry when request with master key is rejected as outside of masterKeyIps (#8350) (e22b73d)

BREAKING CHANGES

  • The Docker image does not contain the git dependency anymore; if you have been using git as a transitive dependency it now needs to be explicitly installed in your Docker file, for example with RUN apk --no-cache add git (#8359) (40810b4)
  • Fields in the internal scope of Parse Server (prefixed with underscore _) are only returned using the new maintenanceKey; previously the masterKey allowed reading of internal fields; see access scopes for a comparison of the keys' access permissions (#8212) (f3bcc93)
  • The method ParseServer.verifyServerUrl now returns a promise instead of a callback. (ffa4974)
  • The MongoDB aggregation pipeline requires native MongoDB syntax instead of the custom Parse Server syntax; for example pipeline stage names require a leading dollar sign like $match and the MongoDB document ID is referenced using _id instead of objectId (#8362) (d0d30c4)
  • The mechanism to determine the client IP address has been rewritten; to correctly determine the IP address it is now required to set the Parse Server option trustProxy accordingly if Parse Server runs behind a proxy server, see the express framework's trust proxy setting (#8372) (892040d)
  • The Node Package Manager lock file package-lock.json is upgraded to version 2; while it is backwards with version 1 for the npm installer, consider this if you run any non-npm analysis tools that use the lock file (#8285) (ee72467)
  • This release introduces the asynchronous initialization of Parse Server to prevent mounting Parse Server before being ready to receive request; it changes how Parse Server is imported, initialized and started; it also removes the callback serverStartComplete; see the Parse Server 6 migration guide for more details (#8232) (99fcf45)
  • Nested objects are now properly stored in the database using JSON serialization; previously, due to a bug only top-level objects were serialized, but nested objects were saved as raw JSON; for example, a nested Date object was saved as a JSON object like { "__type": "Date", "iso": "2020-01-01T00:00:00.000Z" } instead of its serialized representation 2020-01-01T00:00:00.000Z (#8209) (1412666)
  • The Parse Server option enforcePrivateUsers is set to true by default; in previous releases this option defaults to false; this change improves the default security configuration of Parse Server (#8283) (ed499e3)
  • This release restricts the use of masterKey to localhost by default; if you are using Parse Dashboard on a different server to connect to Parse Server you need to add the IP address of the server that hosts Parse Dashboard to this option (#8281) (6c16021)
  • This release upgrades to Redis 4; if you are using the Redis cache adapter with Parse Server then this is a breaking change as the Redis client options have changed; see the Redis migration guide for more details (#8293) (7d622f0)
  • This release removes support for MongoDB 4.0; the new minimum supported MongoDB version is 4.2. which also removes support for the deprecated MongoDB MMAPv1 storage engine (37245f6)
  • Throwing an error in Cloud Code Triggers afterLogin, afterLogout returns a rejected promise; in previous releases it crashed the server if you did not handle the error on the Node.js process level; consider adapting your code if your app currently handles these errors on the Node.js process level with process.on('unhandledRejection', ...) (130d290)
  • Config option directAccess defaults to true; set this to false in environments where multiple Parse Server instances run behind a load balancer and Parse requests within the current Node.js environment should be routed via the load balancer and distributed as HTTP requests among all instances via the serverURL. (f535ee6)
  • The convenience method for HTTP requests Parse.Cloud.httpRequest is removed; use your preferred 3rd party library for making HTTP requests (2d79c08)
  • This release removes Node 12 and Node 17 support (2546cc8)

5.4.0 (2022-11-19)

Bug Fixes

  • graphQL query ignores condition equalTo with value false (#8032) (7f5a15d)
  • internal indices for classes _Idempotency and _Role are not protected in defined schema (#8121) (c16f529)
  • liveQuery with containedIn not working when object field is an array (#8128) (1d9605b)
  • push notifications badge doesn't update with Installation beforeSave trigger (#8162) (3c75c2b)
  • query aggregation pipeline cannot handle value of type Date when directAccess: true (#8167) (e424137)
  • relation constraints in compound queries Parse.Query.or, Parse.Query.and not working (#8203) (28f0d26)
  • security upgrade undici from 5.6.0 to 5.8.0 (#8108) (4aa016b)
  • sorting by non-existing value throws INVALID_SERVER_ERROR on Postgres (#8157) (3b775a1)
  • updating object includes unchanged keys in client response for certain key types (#8159) (37af1d7)

Features

  • add convenience access to Parse Server configuration in Cloud Code via Parse.Server (#8244) (9f11115)
  • add option to change the default value of the Parse.Query.limit() constraint (#8152) (0388956)
  • add support for MongoDB 6 (#8242) (aba0081)
  • add support for Postgres 15 (#8215) (2feb6c4)
  • liveQuery support for unsorted distance queries (#8221) (0f763da)

5.3.3 (2022-11-09)

Bug Fixes

5.3.2 (2022-11-09)

Bug Fixes

  • Parse Server option requestKeywordDenylist can be bypassed via Cloud Code Webhooks or Triggers; fixes security vulnerability GHSA-xprv-wvh7-qqqx (#8302) (6728da1)

5.3.1 (2022-11-07)

Bug Fixes

5.3.0 (2022-10-29)

Bug Fixes

  • afterSave trigger removes pointer in Parse object (#7913) (47d796e)
  • auto-release process may fail if optional back-merging task fails (#8051) (cf925e7)
  • custom database options are not passed to MongoDB GridFS (#7911) (b1e5565)
  • depreciate allowClientClassCreation defaulting to true (#7925) (38ed96a)
  • errors in GraphQL do not show the original error but a general Unexpected Error (#8045) (0d81887)
  • interrupted WebSocket connection not closed by LiveQuery server (#8012) (2d5221e)
  • live query role cache does not clear when a user is added to a role (#8026) (199dfc1)
  • peer dependency mismatch for GraphQL dependencies (#7934) (0a6faa8)
  • return correct response when revert is used in beforeSave (#7839) (19900fc)
  • security upgrade @parse/fs-files-adapter from 1.2.1 to 1.2.2 (#7948) (3a70fda)
  • security upgrade moment from 2.29.1 to 2.29.2 (#7931) (731c550)
  • security upgrade parse push adapter from 4.1.0 to 4.1.2 (#7893) (93667b4)
  • websocket connection of LiveQuery interrupts frequently (#8048) (03caae1)

Features

  • add MongoDB 5.1 compatibility (#7682) (022a856)
  • add MongoDB 5.2 support (#7894) (5bfa716)
  • add support for Node 17 and 18 (#7896) (3e9f292)
  • align file trigger syntax with class trigger; use the new syntax Parse.Cloud.beforeSave(Parse.File, (request) => {}), the old syntax Parse.Cloud.beforeSaveFile((request) => {}) has been deprecated (#7966) (c6dcad8)
  • replace GraphQL Apollo with GraphQL Yoga (#7967) (1aa2204)
  • selectively enable / disable default authentication adapters (#7953) (c1e808f)
  • upgrade mongodb from 4.4.1 to 4.5.0 (#7991) (e692b5d)

Performance Improvements

  • reduce database operations when using the constant parameter in Cloud Function validation (#7892) (041197f)

5.2.8 (2022-10-14)

Bug Fixes

  • server crashes when receiving file download request with invalid byte range; this fixes a security vulnerability that allows an attacker to impact the availability of the server instance; the fix improves parsing of the range parameter to properly handle invalid range requests (GHSA-h423-w6qv-2wj3) (#8235) (066f296)

5.2.7 (2022-09-20)

Bug Fixes

  • authentication adapter app ID validation may be circumvented; this fixes a vulnerability that affects configurations which allow users to authenticate using the Parse Server authentication adapter for Facebook or Spotify and where the server-side authentication adapter configuration appIds is set as a string (e.g. abc) instead of an array of strings (e.g. ["abc"]) (GHSA-r657-33vp-gp22) (#8185) (ecf0814)

5.2.6 (2022-09-20)

Bug Fixes

  • session object properties can be updated by foreign user; this fixes a security vulnerability in which a foreign user can write to the session object of another user if the session object ID is known; the fix prevents writing to foreign session objects (GHSA-6w4q-23cf-j9jp) (#8182) (6d0b2f5)

5.2.5 (2022-09-02)

Bug Fixes

  • brute force guessing of user sensitive data via search patterns; this fixes a security vulnerability in which internal and protected fields may be used as query constraints to guess the value of these fields and obtain sensitive data (GHSA-2m6g-crv8-p3c6) (#8144) (e39d51b)

5.2.4 (2022-06-30)

Bug Fixes

  • protected fields exposed via LiveQuery; this removes protected fields from the client response; this may be a breaking change if your app is currently expecting to receive these protected fields (GHSA-crrq-vr9j-fxxh) (#8074) (#8073) (309f64c)

5.2.3 (2022-06-17)

Bug Fixes

  • invalid file request not properly handled; this fixes a security vulnerability in which an invalid file request can crash the server (GHSA-xw6g-jjvf-wwf9) (#8060) (5be375d)

5.2.2 (2022-06-17)

Bug Fixes

  • certificate in Apple Game Center auth adapter not validated; this fixes a security vulnerability in which authentication could be bypassed using a fake certificate; if you are using the Apple Gamer Center auth adapter it is your responsibility to keep its root certificate up-to-date and we advice you read the security advisory (GHSA-rh9j-f5f8-rvgc) (ba2b0a9)

5.2.1 (2022-05-01)

Bug Fixes

  • authentication bypass and denial of service (DoS) vulnerabilities in Apple Game Center auth adapter (GHSA-qf8x-vqjv-92gr) (#7962) (af4a041)

5.2.0 (2022-03-24)

Bug Fixes

  • security bump minimist from 1.2.5 to 1.2.6 (#7884) (c5cf282)
  • sensitive keyword detection may produce false positives (#7881) (0d6f9e9)

Features

  • improved LiveQuery error logging with additional information (#7837) (443a509)

5.1.1 (2022-03-18)

Reverts

  • ci: temporarily disable breaking change detection (#7861) (effed92)

5.1.0 (2022-03-18)

Bug Fixes

  • adding or modifying a nested property requires addField permissions (#7679) (6a6248b)
  • bump nanoid from 3.1.25 to 3.2.0 (#7781) (f5f63bf)
  • bump node-fetch from 2.6.1 to 3.1.1 (#7782) (9082351)
  • node engine compatibility did not include node 16 (#7739) (ea7c014)
  • node engine range has no upper limit to exclude incompatible node versions (#7692) (573558d)
  • package.json & package-lock.json to reduce vulnerabilities (#7823) (5ca2288)
  • schema cache not cleared in some cases (#7678) (5af6e5d)
  • security upgrade follow-redirects from 1.14.6 to 1.14.7 (#7769) (8f5a861)
  • security upgrade follow-redirects from 1.14.7 to 1.14.8 (#7801) (70088a9)
  • security vulnerability that allows remote code execution (GHSA-p6h4-93qp-jhcm) (#7844) (e569f40)
  • server crash using GraphQL due to missing @apollo/client peer dependency (#7787) (08089d6)
  • unable to use objectId size higher than 19 on GraphQL API (#7627) (ed86c80)
  • upgrade mime from 2.5.2 to 3.0.0 (#7725) (f5ef98b)
  • upgrade parse from 3.3.1 to 3.4.0 (#7723) (d4c1f47)
  • upgrade winston from 3.5.0 to 3.5.1 (#7820) (4af253d)

Features

Reverts

  • refactor: allow ES import for cloud string if package type is module (b64640c)
  • update node engine to 2.22.0 (#7827) (f235412)

⚠️ NOTABLE CHANGES

The following changes would formally require a major version increment (Parse Server 6.0), but given their low relevance they are released as part of this minor version increment (Parse Server 5.1).

  • The MongoDB GridStore adapter has been removed. By default, Parse Server already uses GridFS, so if you do not manually use the GridStore adapter, you can ignore this change. Parse Server uses the GridFSBucket adapter instead of GridStore adapter by default since 2018. (f88aa2a)
  • Removes official Node 15 support which has already reached it End-of-Life date. (45cc58c)

5.0.0 (2022-03-14)

BREAKING CHANGES

  • 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 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 support is required. (Diamond Lewis, SebC) #7214
  • Fix security vulnerability that allows remote code execution; as part of the fix a new security feature scans for sensitive keywords in request data to prevent JavaScript prototype pollution. If such a keyword is found, the request is rejected with HTTP response code 400 and Parse Error 105 (INVALID_KEY_NAME). By default these keywords are: {_bsontype: "Code"}, constructor, __proto__. If you are using any of these keywords in your request data, you can override the default keywords by setting the new Parse Server option requestKeywordDenylist to [] and specify your own keywords as needed. (GHSA-p6h4-93qp-jhcm) (#7843) (971adb5)
  • 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 (dblythy, Manuel Trezza) #7071
  • Removed parse-server-simple-mailgun-adapter dependency; to continue using the adapter it has to be explicitly installed (Manuel Trezza) #7321
  • Remove support for MongoDB 3.6 which has reached its End-of-Life date and PostgreSQL 10 (Manuel Trezza) #7315
  • Remove support for Node 10 which has reached its End-of-Life date (Manuel Trezza) #7314
  • Bump required Node engine to >=12.22.10 (#7848) (23a3488)
  • Remove S3 Files Adapter from Parse Server, instead install separately as @parse/s3-files-adapter (Manuel Trezza) #7324
  • Remove Session field restricted; the field was a code artifact from a feature that never existed in Open Source Parse Server; if you have been using this field for custom purposes, consider that for new Parse Server installations the field does not exist anymore in the schema, and for existing installations the field default value false will not be set anymore when creating a new session (Manuel Trezza) #7543
  • To delete a field via the GraphQL API, the field value has to be set to null. Previously, setting a field value to null would save a null value in the database, which was not according to the GraphQL specs. To delete a file field use file: null, the previous way of using file: { file: null } has become obsolete. (626fad2)

Notable Changes

  • Alphabetical ordered GraphQL API, improved GraphQL Schema cache system and fix GraphQL input reassign issue (Moumouls) #7344
  • Added Parse Server Security Check to report weak security settings (Manuel Trezza, dblythy) #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) #7128
  • EXPERIMENTAL: Added custom routes to easily customize flows for password reset, email verification or build entirely new flows (Manuel Trezza) #7231
  • Added Deprecation Policy to govern the introduction of breaking changes in a phased pattern that is more predictable for developers (Manuel Trezza) #7199
  • Add REST API endpoint /loginAs to create session of any user with master key; allows to impersonate another user. (GormanFletcher) #7406
  • Add official support for MongoDB 5.0 (Manuel Trezza) #7469
  • Added Parse Server Configuration enforcePrivateUsers, which will remove public access by default on new Parse.Users (dblythy) #7319
  • add support for Postgres 14 (#7644) (090350a)
  • add user-defined schema and migrations (#7418) (25d5c30)
  • setting a field to null does not delete it via GraphQL API (#7649) (626fad2)
  • combined and query with relational query condition returns incorrect results (#7593) (174886e)
  • node engine range has no upper limit to exclude incompatible node versions (#7693) (6a54dac)
  • unable to use objectId size higher than 19 on GraphQL API (#7722) (8ee0445)
  • schema cache not cleared in some cases (#7771) (3b92fa1)

Other Changes

  • Support native mongodb syntax in aggregation pipelines (Raschid JF Rafeally) #7339
  • Fix error when a not yet inserted job is updated (Antonio Davi Macedo Coelho de Castro) #7196
  • request.context for afterFind triggers (dblythy) #7078
  • Winston Logger interpolating stdout to console (dplewis) #7114
  • Added convenience method Parse.Cloud.sendEmail(...) to send email via email adapter in Cloud Code (dblythy) #7089
  • LiveQuery support for $and, $nor, $containedBy, $geoWithin, $geoIntersects queries (dplewis) #7113
  • Supporting patterns in LiveQuery server's config parameter classNames (Nes-si) #7131
  • Added requireAnyUserRoles and requireAllUserRoles for Parse Cloud validator (dblythy) #7097
  • Support Facebook Limited Login (miguel-s) #7219
  • Removed Stage name check on aggregate pipelines (BRETT71) #7237
  • Retry transactions on MongoDB when it fails due to transient error (Antonio Davi Macedo Coelho de Castro) #7187
  • Bump tests to use Mongo 4.4.4 (Antonio Davi Macedo Coelho de Castro) #7184
  • Added new account lockout policy option accountLockout.unlockOnPasswordReset to automatically unlock account on password reset (Manuel Trezza) #7146
  • Test Parse Server continuously against all recent MongoDB versions that have not reached their end-of-life support date, added MongoDB compatibility table to Parse Server docs (Manuel Trezza) #7161
  • Test Parse Server continuously against all recent Node.js versions that have not reached their end-of-life support date, added Node.js compatibility table to Parse Server docs (Manuel Trezza) 7161
  • Throw error on invalid Cloud Function validation configuration (dblythy) #7154
  • Allow Cloud Validator options to be async (dblythy) #7155
  • Optimize queries on classes with pointer permissions (Pedro Diaz) #7061
  • Test Parse Server continuously against all relevant Postgres versions (minor versions), added Postgres compatibility table to Parse Server docs (Corey Baker) #7176
  • Randomize test suite (Diamond Lewis) #7265
  • LDAP: Properly unbind client on group search error (Diamond Lewis) #7265
  • Improve data consistency in Push and Job Status update (Diamond Lewis) #7267
  • Excluding keys that have trailing edges.node when performing GraphQL resolver (Chris Bland) #7273
  • Added centralized feature deprecation with standardized warning logs (Manuel Trezza) #7303
  • Use Node.js 15.13.0 in CI (Olle Jonsson) #7312
  • Fix file upload issue for S3 compatible storage (Linode, DigitalOcean) by avoiding empty tags property when creating a file (Ali Oguzhan Yildiz) #7300
  • Add building Docker image as CI check (Manuel Trezza) #7332
  • Add NPM package-lock version check to CI (Manuel Trezza) #7333
  • Fix incorrect LiveQuery events triggered for multiple subscriptions on the same class with different events #7341
  • Fix select and excludeKey queries to properly accept JSON string arrays. Also allow nested fields in exclude (Corey Baker) #7242
  • Fix LiveQuery server crash when using $all query operator on a missing object key (Jason Posthuma) #7421
  • Added runtime deprecation warnings (Manuel Trezza) #7451
  • Add ability to pass context of an object via a header, X-Parse-Cloud-Context, for Cloud Code triggers. The header addition allows client SDK's to add context without injecting _context in the body of JSON objects (Corey Baker) #7437
  • Add CI check to add changelog entry (Manuel Trezza) #7512
  • Refactor: uniform issue templates across repos (Manuel Trezza) #7528
  • ci: bump ci environment (Manuel Trezza) #7539
  • CI now pushes docker images to Docker Hub (Corey Baker) #7548
  • Allow afterFind and afterLiveQueryEvent to set unsaved pointers and keys (dblythy) #7310
  • Allow setting descending sort to full text queries (dblythy) #7496
  • Allow cloud string for ES modules (Daniel Blyth) #7560
  • docs: Introduce deprecation ID for reference in comments and online search (Manuel Trezza) #7562
  • refactor: deprecate Parse.Cloud.httpRequest; it is recommended to use a HTTP library instead. (Daniel Blyth) #7595
  • refactor: Modernize HTTPRequest tests (brandongregoryscott) #7604
  • Allow liveQuery on Session class (Daniel Blyth) #7554
  • security upgrade follow-redirects from 1.14.2 to 1.14.7 (#7772) (4bd34b1)
  • security upgrade follow-redirects from 1.14.7 to 1.14.8 (#7802) (7029b27)
  • Add node engine version check (Manuel Trezza) #7574

4.10.7 (2022-03-11)

Bug Fixes

  • security vulnerability that allows remote code execution (GHSA-p6h4-93qp-jhcm) (#7841) (886bfd7)

    Note that as part of the fix a new security feature scans for sensitive keywords in request data to prevent JavaScript prototype pollution. If such a keyword is found, the request is rejected with HTTP response code 400 and Parse Error 105 (INVALID_KEY_NAME). By default these keywords are: {_bsontype: "Code"}, constructor, __proto__. If you are using any of these keywords in your request data, you can override the default keywords by setting the new Parse Server option requestKeywordDenylist to [] and specify your own keywords as needed.

4.10.6 (2022-02-12)

Bug Fixes

  • update graphql dependencies to work with Parse Dashboard (#7658) (350ecde)

4.10.5 (2022-02-12)

Bug Fixes

  • security upgrade follow-redirects from 1.13.0 to 1.14.8 (#7803) (611332e)

Security Fixes

  • Strip out sessionToken when LiveQuery is used on Parse.User (Daniel Blyth) GHSA-7pr3-p5fm-8r9x

Security Fixes

Other Changes

  • Move graphql-tag from devDependencies to dependencies (Antonio Davi Macedo Coelho de Castro) #7183

Security Fixes

  • Updated to Parse JS SDK 3.3.0 and other security fixes (Manuel Trezza) #7508

⚠️ This includes a security fix of the Parse JS SDK where logIn will default to POST instead of GET method. This may require changes in your deployment before you upgrade to this release, see the Parse JS SDK 3.0.0 release notes.

Versions >4.5.2 and <4.10.0 are skipped.

⚠️ A security incident caused a number of incorrect version tags to be pushed to the Parse Server repository. These version tags linked to a personal fork of a contributor who had write access to the repository. The code to which these tags linked has not been reviewed or approved by Parse Platform. Even though no releases were published with these incorrect versions, it was possible to define a Parse Server dependency that pointed to these version tags, for example if you defined this dependency:

"parse-server": "git@github.com:parse-community/parse-server.git#4.9.3"

We have since deleted the incorrect version tags, but they may still show up if your personal fork on GitHub or locally. We do not know when these tags have been pushed to the Parse Server repository, but we first became aware of this issue on July 21, 2021. We are not aware of any malicious code or concerns related to privacy, security or legality (e.g. proprietary code). However, it has been reported that some functionality does not work as expected and the introduction of security vulnerabilities cannot be ruled out.

You may be also affected if you used the Bitnami image for Parse Server. Bitnami picked up the incorrect version tag 4.9.3 and published a new Bitnami image for Parse Server.

If you are using any of the affected versions, we urgently recommend to upgrade to version 4.10.0.

Security Fixes

  • SECURITY FIX: Fixes incorrect session property authProvider: password of anonymous users. When signing up an anonymous user, the session field createdWith indicates incorrectly that the session has been created using username and password with authProvider: password, instead of an anonymous sign-up with authProvider: anonymous. This fixes the issue by setting the correct authProvider: anonymous for future sign-ups of anonymous users. This fix does not fix incorrect authProvider: password for existing sessions of anonymous users. Consider this if your app logic depends on the authProvider field. (Corey Baker) GHSA-23r4-5mxp-c7g5

4.5.1

This version was published by mistake and has been removed.

Breaking Changes

  • FIX: Consistent casing for afterLiveQueryEvent. The afterLiveQueryEvent was introduced in 4.4.0 with inconsistent casing for the event names, which was fixed in 4.5.0. #7023. Thanks to dblythy.

Other Changes

  • FIX: Properly handle serverURL and publicServerUrl in Batch requests. #7049. Thanks to Zach Goldberg.
  • IMPROVE: Prevent invalid column names (className and length). #7053. Thanks to Diamond Lewis.
  • IMPROVE: GraphQL: Remove viewer from logout mutation. #7029. Thanks to Antoine Cormouls.
  • IMPROVE: GraphQL: Optimize on Relation. #7044. Thanks to Antoine Cormouls.
  • NEW: Include sessionToken in onLiveQueryEvent. #7043. Thanks to dblythy.
  • FIX: Definitions for accountLockout and passwordPolicy. #7040. Thanks to dblythy.
  • FIX: Fix typo in server definitions for emailVerifyTokenReuseIfValid. #7037. Thanks to dblythy.
  • SECURITY FIX: LDAP auth stores password in plain text. See GHSA-4w46-w44m-3jq3 for more details about the vulnerability and da905a3 for the fix. Thanks to Fabian Strachanski.
  • NEW: Reuse tokens if they haven't expired. #7017. Thanks to dblythy.
  • NEW: Add LDAPS-support to LDAP-Authcontroller. #7014. Thanks to Fabian Strachanski.
  • FIX: (beforeSave/afterSave): Return value instead of Parse.Op for nested fields. #7005. Thanks to Diamond Lewis.
  • FIX: (beforeSave): Skip Sanitizing Database results. #7003. Thanks to Diamond Lewis.
  • FIX: Fix includeAll for querying a Pointer and Pointer array. #7002. Thanks to Corey Baker.
  • FIX: Add encryptionKey to src/options/index.js. #6999. Thanks to dblythy.
  • IMPROVE: Update PostgresStorageAdapter.js. #6989. Thanks to Vitaly Tomilov.
  • PERFORMANCE: Optimizing pointer CLP query decoration done by DatabaseController#addPointerPermissions #6747. Thanks to mess-lelouch.
  • SECURITY: Fix security breach on GraphQL viewer 78239ac, security advisory. Thanks to Antoine Cormouls.
  • FIX: Save context not present if direct access enabled #6764. Thanks to Omair Vaiyani.
  • NEW: Before Connect + Before Subscribe #6793. Thanks to dblythy.
  • FIX: Add version to playground to fix CDN #6804. Thanks to Antoine Cormouls.
  • NEW (EXPERIMENTAL): Idempotency enforcement for client requests. This deduplicates requests where the client intends to send one request to Parse Server but due to network issues the server receives the request multiple times. Caution, this is an experimental feature that may not be appropriate for production. #6748. Thanks to Manuel Trezza.
  • FIX: Add production Google Auth Adapter instead of using the development url #6734. Thanks to SebC..
  • IMPROVE: Run Prettier JS Again Without requiring () on arrow functions #6796. Thanks to Diamond Lewis.
  • IMPROVE: Run Prettier JS #6795. Thanks to Diamond Lewis.
  • IMPROVE: Replace bcrypt with @node-rs/bcrypt #6794. Thanks to LongYinan.
  • IMPROVE: Make clear description of anonymous user #6655. Thanks to Jerome De Leon.
  • IMPROVE: Simplify GraphQL merge system to avoid js ref bugs #6791. Thanks to Antoine Cormouls.
  • NEW: Pass context in beforeDelete, afterDelete, beforeFind and Parse.Cloud.run #6666. Thanks to yog27ray.
  • NEW: Allow passing custom gql schema function to ParseServer#start options #6762. Thanks to Luca.
  • NEW: Allow custom cors origin header #6772. Thanks to Kevin Yao.
  • FIX: Fix context for cascade-saving and saving existing object #6735. Thanks to Manuel.
  • NEW: Add file bucket encryption using fileKey #6765. Thanks to Corey Baker.
  • FIX: Removed gaze from dev dependencies and removed not working dev script #6745. Thanks to Vincent Semrau.
  • IMPROVE: Upgrade graphql-tools to v6 #6701. Thanks to Yaacov Rydzinski.
  • NEW: Support Metadata in GridFSAdapter #6660. Thanks to Diamond Lewis.
  • NEW: Allow to unset file from graphql #6651. Thanks to Antoine Cormouls.
  • NEW: Handle shutdown for RedisCacheAdapter #6658. Thanks to promisenxu.
  • FIX: Fix explain on user class #6650. Thanks to Manuel.
  • FIX: Fix read preference for aggregate #6585. Thanks to Manuel.
  • NEW: Add context to Parse.Object.save #6626. Thanks to Manuel.
  • NEW: Adding ssl config params to Postgres URI #6580. Thanks to Corey Baker.
  • FIX: Travis postgres update: removing unnecessary start of mongo-runner #6594. Thanks to Corey Baker.
  • FIX: ObjectId size for Pointer in Postgres #6619. Thanks to Corey Baker.
  • IMPROVE: Improve a test case #6629. Thanks to Gordon Sun.
  • NEW: Allow to resolve automatically Parse Type fields from Custom Schema #6562. Thanks to Antoine Cormouls.
  • FIX: Remove wrong console log in test #6627. Thanks to Gordon Sun.
  • IMPROVE: Graphql tools v5 #6611. Thanks to Yaacov Rydzinski.
  • FIX: Catch JSON.parse and return 403 properly #6589. Thanks to Gordon Sun.
  • PERFORMANCE: Allow covering relation queries with minimal index #6581. Thanks to Noah Silas.
  • FIX: Fix Postgres group aggregation #6522. Thanks to Siddharth Ramesh.
  • NEW: Allow set user mapped from JWT directly on request #6411. Thanks to Gordon Sun.

Breaking Changes

  • CHANGE: The Sign-In with Apple authentication adapter parameter client_id has been changed to clientId. If using the Apple authentication adapter, this change requires to update the Parse Server configuration accordingly. See #6523 for details.

SECURITY RELEASE: see advisory for details

Breaking Changes

  1. Remove Support for Mongo 3.2 & 3.4. The new minimum supported version is Mongo 3.6.
  2. Change username and email validation to be case insensitive. This change should be transparent in most use cases. The validation behavior should now behave 'as expected'. See #5634 for details.

Special Note on Upgrading to Parse Server 4.0.0 and above

In addition to the breaking changes noted above, #5634 introduces a two new case insensitive indexes on the User collection. Special care should be taken when upgrading to this version to ensure that:

  1. The new indexes can be successfully created (see issue #6465 for details on a potential issue for your installation).

  2. Care is taken ensure that there is adequate compute capacity to create the index in the background while still servicing requests.

  • FIX: correct 'new' travis config to properly deploy. See #6452. Thanks to Arthur Cinader.
  • FIX: Better message on not allowed to protect default fields. See #6439.Thanks to Old Grandpa

Special Note on Upgrading to Parse Server 4.0.0 and above

In addition to the breaking changes noted below, #5634 introduces a two new case insensitive indexes on the User collection. Special care should be taken when upgrading to this version to ensure that:

  1. The new indexes can be successfully created (see issue #6465 for details on a potential issue for your installation).

  2. Care is taken ensure that there is adequate compute capacity to create the index in the background while still servicing requests.

Breaking Changes

  • If you are running Parse Server on top of a MongoDB deployment which does not fit the Retryable Writes Requirements, you will have to add retryWrites=false to your connection string in order to upgrade to Parse Server 3.8.
  • FIX: Live Query was failing on release 3.7.1

GraphQL Guide

Fix: Commit changes

Fix: Use changes in master to travis configuration to enable pushing to npm and gh_pages. See diff for details.

Fix: In my haste to get a Security Fix out, I added 8709daf to master instead of to 3.4.1. This commit fixes that. Arthur Cinader

Security Fix: see Advisory: GHSA-2479-qvv7-47q for details 8709daf. Big thanks to: Benjamin Simonsson for identifying the issue and promptly bringing it to the Parse Community's attention and also big thanks to the indefatigable Diamond Lewis for crafting a failing test and then a solution within an hour of the report.

  • Correct previous release with patch that is fully merged
  • Security fix to properly process userSensitiveFields when parse-server is started with ../lib/cli/parse-server #5463
  • Increment package.json version to match the deployment tag
  • NEW: Support accessing sensitive fields with an explicit ACL. Not documented yet, see tests for examples
  • Upgrade Parse SDK JS to 2.3.1 #5457
  • Hides token contents in logStartupOptions if they arrive as a buffer #6a9380
  • Support custom message for password requirements #5399
  • Support for Ajax password reset #5332
  • Postgres: Refuse to build unsafe JSON lists for contains #5337
  • Properly handle return values in beforeSave #5228
  • Fixes issue when querying user roles #5276
  • Fixes issue affecting update with CLP #5269
  • Postgres: Fixes support for global configuration
  • Postgres: Fixes support for numeric arrays
  • Postgres: Fixes issue affecting queries on empty arrays
  • LiveQuery: Adds support for transmitting the original object
  • Queries: Use estimated count if query is empty
  • Docker: Reduces the size of the docker image to 154Mb
  • Removes dev script, use TDD instead of server.
  • Removes nodemon and problematic dependencies.
  • Addressed event-stream security debacle.

Improvements:

  • Fixes issue that would prevent users with large number of roles to resolve all of them Antoine Cormouls (#5131, #5132)
  • Fixes distinct query on special fields (#5144)

Breaking Changes:

  • Return success on sendPasswordResetEmail even if email not found. (#7fe4030)

Security Fix:

  • Expire password reset tokens on email change (#5104)

Improvements:

  • Live Query CLPs (#4387)
  • Reduces number of calls to injectDefaultSchema (#5107)
  • Remove runtime dependency on request (#5076)

Bug fixes:

  • Fixes issue with vkontatke authentication (#4977)
  • Use the correct function when validating google auth tokens (#5018)
  • fix unexpected 'delete' trigger issue on LiveQuery (#5031)
  • Improves performance for roles and ACL's in live query server (#5126)

parse-server 3.0.0 comes with brand new handlers for cloud code. It now fully supports promises and async / await. For more informations, visit the v3.0.0 migration guide.

Breaking Changes:

  • Cloud Code handlers have a new interface based on promises.
  • response.success / response.error are removed in Cloud Code
  • Cloud Code runs with Parse-SDK 2.0
  • The aggregate now require aggregates to be passed in the form: {"pipeline": [...]} (REST Only)

Improvements:

  • Adds Pipeline Operator to Aggregate Router.
  • Adds documentations for parse-server's adapters, constructors and more.
  • Adds ability to pass a context object between beforeSave and afterSave affecting the same object.

Bug Fixes:

  • Fixes issue that would crash the server when mongo objects had undefined values #4966
  • Fixes issue that prevented ACL's from being used with select (see #571)

Dependency updates:

Development Dependencies Updates:

Improvements:

  • Adds ability to forward errors to express handler (#4697)
  • Adds ability to increment the push badge with an arbitrary value (#4889)
  • Adds ability to preserve the file names when uploading (#4915)
  • _User now follow regular ACL policy. Letting administrator lock user out. (#4860) and (#4898)
  • Ensure dates are properly handled in aggregates (#4743)
  • Aggregates: Improved support for stages sharing the same name
  • Add includeAll option
  • Added verify password to users router and tests. (#4747)
  • Ensure read preference is never overriden, so DB config prevails (#4833)
  • add support for geoWithin.centerSphere queries via withJSON (#4825)
  • Allow sorting an object field (#4806)
  • Postgres: Don't merge JSON fields after save() to keep same behaviour as MongoDB (#4808) (#4815)

Dependency updates

Development Dependencies Updates:

Improvements:

  • Adds support for JS SDK 2.0 job status header
  • Removes npm-git scripts as npm supports using git repositories that build, thanks to Florent Vilmart
Bug Fixes:
  • Ensure legacy users without ACL's are not locked out, thanks to Florent Vilmart

Improvements:

  • Use common HTTP agent to increase webhooks performance, thanks to Tyler Brock
  • Adds withinPolygon support for Polygon objects, thanks to Mads Bjerre

Dependency Updates:

Development Dependencies Updates:

Ensure all the files are properly exported to the final package.

New Features

Bug fixes:

  • Fixes issue when using afterFind with relations (#4752), thanks to Florent Vilmart
  • New query condition support to match all strings that starts with some other given strings (#3864), thanks to Eduard Bosch Bertran
  • Allow creation of indices on default fields (#4738), thanks to Claire Neveu
  • Purging empty class (#4676), thanks to Diamond Lewis
  • Postgres: Fixes issues comparing to zero or false (#4667), thanks to Diamond Lewis
  • Fix Aggregate Match Pointer (#4643), thanks to Diamond Lewis

Improvements:

  • Allow Parse.Error when returning from Cloud Code (#4695), thanks to Saulo Tauil
  • Fix typo: "requrest" -> "request" (#4761), thanks to Joseph Frazier
  • Send version for Vkontakte API (#4725), thanks to oleg
  • Ensure we respond with invalid password even if email is unverified (#4708), thanks to dblythy
  • Add _password_history to default sensitive data (#4699), thanks to Jong Eun Lee
  • Check for node version in postinstall script (#4657), thanks to Diamond Lewis
  • Remove FB Graph API version from URL to use the oldest non deprecated version, thanks to SebC

Dependency Updates:

Development Dependencies Updates:

Bug Fixes:

  • Fixes an issue affecting polygon queries, thanks to Diamond Lewis

Dependency Updates:

Development Dependencies Updates:

Improvements:

  • Improve documentation for LiveQuery options, thanks to Arthur Cinader
  • Improve documentation for using cloud code with docker, thanks to Stephen Tuso
  • Adds support for Facebook's AccountKit, thanks to 6thfdwp
  • Disable afterFind routines when running aggregates, thanks to Diamond Lewis
  • Improve support for distinct aggregations of nulls, thanks to Diamond Lewis
  • Regenreate the email verification token when requesting a new email, thanks to Benjamin Wilson Friedman

Bug Fixes:

  • Fix issue affecting readOnly masterKey and purge command, thanks to AreyouHappy
  • Fixes Issue unsetting in beforeSave doesn't allow object creation, thanks to Diamond Lewis
  • Fixes issue crashing server on invalid live query payload, thanks to fridays
  • Fixes issue affecting postgres storage adapter "undefined property '__op'", thanks to Tyson Andre

Dependency Updates:

Development Dependencies Updates:

Improvements:

  • Improved match aggregate
  • Do not mark the empty push as failed
  • Support pointer in aggregate query
  • Introduces flow types for storage
  • Postgres: Refactoring of Postgres Storage Adapter
  • Postgres: Support for multiple projection in aggregate
  • Postgres: performance optimizations
  • Adds infos about vulnerability disclosures
  • Adds ability to login with email when provided as username

Bug Fixes

  • Scrub Passwords with URL Encoded Characters
  • Fixes issue affecting using sorting in beforeFind

Dependency Updates:

Development Dependencies Updates:

⚠️ Fixes a security issue affecting Class Level Permissions

⚠️ This version contains an issue affecting Class Level Permissions on mongoDB. Please upgrade to 2.7.1.

Starting parse-server 2.7.0, the minimun nodejs version is 6.11.4, please update your engines before updating parse-server

New Features:

Bug fixes:

  • Fixes sessionTokens being overridden in 'find' (#4332), thanks to Benjamin Wilson Friedman
  • Proper handleShutdown() feature to close database connections (#4361), thanks to CHANG, TZU-YEN
  • Fixes issue affecting state of _PushStatus objects, thanks to Benjamin Wilson Friedman
  • Fixes issue affecting calling password reset password pages with wrong appid, thanks to Bryan de Leon
  • Fixes issue affecting duplicates _Sessions on successive logins, thanks to Florent Vilmart

Improvements:

Dependency Updates:

Development Dependencies Updates:

New Features:

  • Adds support for read-only masterKey, thanks to Florent Vilmart
  • Adds support for relative time queries (mongodb only), thanks to Marvel Mathew

Improvements:

Bug Fixes:

  • The REST API key was improperly inferred from environment when using the CLI, thanks to Florent Vilmart

Improvements:

Bug Fixes:

Dependency Updates:

Development Dependencies Updates:

Improvements:

  • Queries on Pointer fields with $in and $nin now supports list of objectId's, thanks to Florent Vilmart
  • LiveQueries on $in and $nin for pointer fields work as expected thanks to Florent Vilmart
  • Also remove device token when APNS error is BadDeviceToken, thanks to Mauricio Tollin
  • LRU cache is not available on the ParseServer object, thanks to Tyler Brock
  • Error messages are more expressive, thanks to Tyler Brock
  • Postgres: Properly handle undefined field values, thanks to Diamond Lewis
  • Updating with two GeoPoints fails correctly, thanks to Anthony Mosca

New Features:

  • Adds ability to set a maxLimit on server configuration for queries, thanks to Chris Norris

Bug fixes:

  • Fixes issue affecting reporting _PushStatus with misconfigured serverURL, thanks to Florent Vilmart
  • Fixes issue affecting deletion of class that doesn't exist, thanks to Diamond Lewis

Dependency Updates:

Development Dependencies Updates:

Improvements:

  • PushWorker/PushQueue channels are properly prefixed with the Parse applicationId, thanks to Marvel Mathew
  • You can use Parse.Cloud.afterSave hooks on _PushStatus
  • You can use Parse.Cloud.onLiveQueryEvent to track the number of clients and subscriptions
  • Adds support for more fields from the Audience class.

New Features:

  • Push: Adds ability to track sentPerUTC offset if your push scheduler supports it.
  • Push: Adds support for cleaning up invalid deviceTokens from _Installation (PARSE_SERVER_CLEANUP_INVALID_INSTALLATIONS=1).

Dependency Updates:

Development Dependencies Updates:

Improvements:

  • Improves overall performance of the server, more particularly with large query results.
  • Improves performance of InMemoryCacheAdapter by removing serialization.
  • Improves logging performance by skipping necessary log calls.
  • Refactors object routers to simplify logic.
  • Adds automatic indexing on $text indexes, thanks to Diamon Lewis

New Features:

  • Push: Adds ability to send localized pushes according to the _Installation localeIdentifier
  • Push: proper support for scheduling push in user's locale time, thanks to Marvel Mathew
  • LiveQuery: Adds ability to use LiveQuery with a masterKey, thanks to Jeremy May

Bug Fixes:

  • Fixes an issue that would duplicate Session objects per userId-installationId pair.
  • Fixes an issue affecting pointer permissions introduced in this release.
  • Fixes an issue that would prevent displaying audiences correctly in dashboard.
  • Fixes an issue affecting preventLoginWithUnverifiedEmail upon signups.

Dependency Updates:

Development Dependencies Updates:
Breaking Changes:

New Features

Improvements

  • Postgres: Adds support nested contains and containedIn, thanks to Diamond Lewis
  • Postgres: Adds support for null in containsAll queries, thanks to Diamond Lewis
  • Cloud Code: Request headers are passed to the cloud functions, thanks to miguel-s
  • Push: All push queries now filter only where deviceToken exists

Bug Fixes:

  • Fixes issue affecting updates of _User objects when authData was passed.
  • Push: Pushing to an empty audience should now properly report a failed _PushStatus
  • Linking Users: Fixes issue affecting linking users with sessionToken only

Dependency Updates:

Development Dependencies Updates:

New Features:

  • badge property on android installations will now be set as on iOS (#3970), thanks to Florent Vilmart

Bug Fixes:

  • Fixes incorrect number parser for cache options

Improvements:

  • Restores ability to run on node >= 4.6
  • Adds ability to configure cache from CLI
  • Removes runtime check for node >= 4.6

New Features:

  • Adds ability to set default objectId size (#3950), thanks to Steven Shipton

Improvements:

  • Uses LRU cache instead of InMemoryCache by default (#3979), thanks to Florent Vilmart
  • iOS pushes are now using HTTP/2.0 instead of binary API (#3983), thanks to Florent Vilmart

Dependency Updates:

New Features:

  • Adds ability to run full text search (#3904), thanks to Diamond Lewis
  • Adds ability to run $withinPolygon queries (#3889), thanks to Diamond Lewis
  • Adds ability to pass read preference per query with mongodb (#3865), thanks to davimacedo
  • beforeFind trigger now includes isGet for get queries (#3862), thanks to davimacedo
  • Adds endpoints for dashboard's audience API (#3861), thanks to davimacedo
  • Restores the job scheduling endpoints (#3927), thanks to Florent Vilmart

Improvements:

  • Removes unnecessary warning when using maxTimeMs with mongodb, thanks to Tyler Brock
  • Improves access control on system classes (#3916), thanks to Worathiti Manosroi
  • Adds bytes support in postgres (#3894), thanks to Diamond Lewis

Bug Fixes:

  • Fixes issue with vkontakte adapter that would hang the request, thanks to Denis Trofimov
  • Fixes issue affecting null relational data (#3924), thanks to davimacedo
  • Fixes issue affecting session token deletion (#3937), thanks to Florent Vilmart
  • Fixes issue affecting the serverInfo endpoint (#3933), thanks to Florent Vilmart
  • Fixes issue affecting beforeSave with dot-noted sub-documents (#3912), thanks to IlyaDiallo
  • Fixes issue affecting emails being sent when using a 3rd party auth (#3882), thanks to davimacedo

Dependency Updates:

Development dependencies

New Features:

Improvements:

Bug fixes:

Dependency Updates:

Bug fixes:

Dependency Updates:

Starting 2.4.0, parse-server is tested against node 6.10 and 7.10, mongodb 3.2 and 3.4. If you experience issues with older versions, please open a issue.

New Features:

Improvements

Bug Fixes:

Dependency Updates:

Development dependencies

New Features

  • Support for PG-Promise options, thanks to ren dong

Improvements

Bug Fixes

  • Fixes issue affecting GeoPoint __type with Postgres, thanks to zhoul-HS
  • Prevent user creation if username or password is empty, thanks to Wissam Abirached

Dependency Updates:

New Features

  • New endpoint to resend verification email, thanks to Xy Ziemba

Improvements

Bug Fixes

  • Add index on Role.name, fixes (#3579), thanks to Natan Rolnik
  • Fix default value of userSensitiveFields, fixes (#3593), thanks to Arthur Cinader

Dependency Updates:

Improvements

Bug Fixes

Dependencies updates:

Bug Fixes

  • Allow empty client key (#3497), thanks to Arthur Cinader
  • Fix LiveQuery unsafe user (#3525), thanks to David Starke
  • Use flushdb instead of flushall in RedisCacheAdapter (#3523), thanks to Jeremy Louie
  • Fix saving GeoPoints and Files in _GlobalConfig (Make sure we don't treat dot notation keys as topLevel atoms) (#3531), thanks to Florent Vilmart
Breaking Changes

Bug Fixes

  • Add logging on failure to create file (#3424), thanks to Arthur Cinader
  • Log Parse Errors so they are intelligible (#3431), thanks to Arthur Cinader
  • MongoDB $or Queries avoid SERVER-13732 bug (#3476), thanks to Jack Wearden
  • Mongo object to Parse object date serialization - avoid re-serialization of iso of type Date (#3389), thanks to nodechefMatt

Improvements

  • Ground preparations for push scalability (#3080), thanks to Florent Vilmart
  • Use uWS as optional dependency for ws server (#3231), thanks to Florent Vilmart

New features

  • Add parseFrameURL for masking user-facing pages (#3267), thanks to Lenart Rudel

Bug fixes

  • Fix Parse-Server to work with winston-daily-rotate-1.4.2 (#3335), thanks to Arthur Cinader

Improvements

  • Add support for regex string for password policy validatorPattern setting (#3331), thanks to Bhaskar Reddy Yasa
  • LiveQuery should match subobjects with dot notation (#3322), thanks to David Starke
  • Reduce time to process high number of installations for push (#3264), thanks to jeacott1
  • Fix trivial typo in error message (#3238), thanks to Arthur Cinader

A major issue was introduced when refactoring the authentication modules. This release addresses only that issue.

Breaking Changes

New Features

  • Adds ability to restrict access through Class Level Permissions to only authenticated users see docs
  • Adds ability to strip sensitive data from _User responses, strips emails by default, thanks to Arthur Cinader
  • Adds password history support for password policies, thanks to Bhaskar Reddy Yasa

Improvements

  • Bump parse-server-s3-adapter to 1.0.6, thanks to Arthur Cinader
  • Using PARSE_SERVER_ENABLE_EXPERIMENTAL_DIRECT_ACCESS let you create user sessions when passing {installationId: "xxx-xxx"} on signup in cloud code, thanks to Florent Vilmart
  • Add CLI option to pass host parameter when creating parse-server from CLI, thanks to Kulshekhar Kabra

Bug fixes

  • Ensure batch routes are only using posix paths, thanks to Steven Shipton
  • Ensure falsy options from CLI are properly taken into account, thanks to Steven Shipton
  • Fixes issues affecting calls to matchesKeyInQuery with pointers.
  • Ensure that select keys can be changed in triggers (beforeFind...), thanks to Arthur Cinader

Housekeeping

2.2.25

Postgres support requires v9.5

New Features

Improvements

Bug Fixes

  • Fixes issue when sending push to multiple installations, thanks to Florent Vilmart
  • Fixes issues with twitter authentication, thanks to jonas-db
  • Ignore createdAt fields update, thanks to Yuki Takeichi
  • Improve support for array equality with LiveQuery, thanks to David Poetzsch-Heffter
  • Improve support for batch endpoint when serverURL and publicServerURL have different paths, thanks to Florent Vilmart
  • Support saving relation objects, thanks to Yuki Takeichi

2.2.24

New Features

  • LiveQuery: Bring your own adapter (#2902), thanks to Florent Vilmart
  • LiveQuery: Adds "update" operator to update a query subscription (#2935), thanks to Florent Vilmart

Improvements

Bug Fixes

  • Better support for checking application and client keys, thanks to Steven Shipton
  • Google OAuth, better support for android and web logins, thanks to Florent Vilmart

2.2.23

Bug fixes

  • Fix error when updating installation with useMasterKey (#2888), thanks to Jeremy Louie
  • Fix bug affecting usage of multiple notEqualTo, thanks to Jeremy Louie
  • Improved support for null values in arrays, thanks to Florent Vilmart

2.2.22

  • Minimum nodejs engine is now 4.5

New Features

Bug fixes

  • Fix: Include with pointers are not conflicting with get CLP anymore, thanks to Florent Vilmart
  • Fix: Removes dependency on babel-polyfill, thanks to Florent Vilmart
  • Fix: Support nested select calls, thanks to Florent Vilmart
  • Fix: Use native column selection instead of runtime, thanks to Florent Vilmart
  • Fix: installationId header is properly used when updating _Installation objects, thanks to Florent Vilmart
  • Fix: don't crash parse-server on improperly formatted live-query messages, thanks to Florent Vilmart
  • Fix: Passwords are properly stripped out of logs, thanks to Arthur Cinader
  • Fix: Lookup for email in username if email is not set, thanks to Florent Vilmart

2.2.21

  • Fix: Reverts removal of babel-polyfill

2.2.20

  • New: Adds CloudCode handler for beforeFind, thanks to Florent Vilmart
  • New: RedisCacheAdapter for syncing schema, role and user caches across servers, thanks to Florent Vilmart
  • New: Latest master build available at ParsePlatform/parse-server#latest, thanks to Florent Vilmart
  • Fix: Better support for upgradeToRevocableSession with missing session token, thanks to Florent Vilmart
  • Fix: Removes babel-polyfill runtime dependency, thanks to Florent Vilmart
  • Fix: Cluster option now support a boolean value for automatically choosing the right number of processes, thanks to Florent Vilmart
  • Fix: Filenames now appear correctly, thanks to Lama Chandrasena
  • Fix: _acl is properly updated, thanks to Steven Shipton

Other fixes by Mathias Rangel Wulff

2.2.19

  • New: support for upgrading to revocable sessions, thanks to Florent Vilmart
  • New: NullCacheAdapter for disabling caching, thanks to Yuki Takeichi
  • New: Account lockout policy #2601, thanks to Diwakar Cherukumilli
  • New: Jobs endpoint for defining and run jobs (no scheduling), thanks to Florent Vilmart
  • New: Add --cluster option to the CLI, thanks to Florent Vilmart
  • New: Support for login with vk.com, thanks to Nurdaulet Bolatov
  • New: experimental support for postgres databases, thanks to Florent Vilmart
  • Fix: parse-server doesn't call next() after successful responses, thanks to Florent Vilmart
  • Fix: Nested objects are properly includeed with Pointer Permissions on, thanks to Florent Vilmart
  • Fix: null values in include calls are properly handled, thanks to Florent Vilmart
  • Fix: Schema validations now runs after beforeSave hooks, thanks to Florent Vilmart
  • Fix: usersname and passwords are properly type checked, thanks to Bam Wang
  • Fix: logging in info log would log also in error log, thanks to Florent Vilmart
  • Fix: removes extaneous logging from ParseLiveQueryServer, thanks to Flavio Torres
  • Fix: support for Range requests for files, thanks to Brage G. Staven

2.2.18

  • Fix: Improve support for objects in push alert, thanks to Antoine Lenoir
  • Fix; Prevent pointed from getting clobbered when they are changed in a beforeSave, thanks to sud
  • Fix: Improve support for "Bytes" type, thanks to CongHoang
  • Fix: Better logging compatability with Parse.com, thanks to Arthur Cinader
  • New: Add Janrain Capture and Janrain Engage auth provider, thanks to Andrew Lane
  • Improved: Include content length header in files response, thanks to Steven Van Bael
  • Improved: Support byte range header for files, thanks to Brage G. Staven
  • Improved: Validations for LinkedIn access_tokens, thanks to Felix Dumit
  • Improved: Experimental postgres support, thanks to Florent Vilmart
  • Perf: Use native bcrypt implementation if available, thanks to Florent Vilmart

2.2.16

  • New: Expose InMemoryCacheAdapter publicly, thanks to Steven Shipton
  • New: Add ability to prevent login with unverified email, thanks to Diwakar Cherukumilli
  • Improved: Better error message for incorrect type, thanks to Andrew Lane
  • Improved: Better error message for permission denied, thanks to Blayne Chard
  • Improved: Update authData on login, thanks to Florent Vilmart
  • Improved: Ability to not check for old files on Parse.com, thanks to OzgeAkin
  • Fix: Issues with email adapter validation, thanks to Tyler Brock
  • Fix: Issues with nested $or queries, thanks to Florent Vilmart

2.2.15

  • Fix: Type in description for Parse.Error.INVALID_QUERY, thanks to Andrew Lane
  • Improvement: Stop requiring verifyUserEmails for password reset functionality, thanks to Tyler Brock
  • Improvement: Kill without validation, thanks to Drew Gross
  • Fix: Deleting a file does not delete from fs.files, thanks to David Keita
  • Fix: Postgres stoage adapter fix, thanks to Vitaly Tomilov
  • Fix: Results invalid session when providing an invalid session token, thanks to Florent Vilmart
  • Fix: issue creating an anonymous user, thanks to Hussam Moqhim
  • Fix: make http response serializable, thanks to Florent Vilmart
  • New: Add postmark email adapter alternative Glenn Reyes

2.2.14

  • Hotfix: Fix Parse.Cloud.HTTPResponse serialization

2.2.13

  • Hotfix: Pin version of deepcopy

2.2.12

  • New: Custom error codes in cloud code response.error, thanks to Jeremy Pease
  • Fix: Crash in beforeSave when response is not an object, thanks to Tyler Brock
  • Fix: Allow "get" on installations
  • Fix: Fix overly restrictive Class Level Permissions, thanks to Florent Vilmart
  • Fix: Fix nested date parsing in Cloud Code, thanks to Marco Cheung
  • Fix: Support very old file formats from Parse.com

2.2.11

  • Security: Censor user password in logs, thanks to Marco Cheung
  • New: Add PARSE_SERVER_LOGS_FOLDER env var for setting log folder, thanks to KartikeyaRokde
  • New: Webhook key support, thanks to Tyler Brock
  • Perf: Add cache adapter and default caching of certain objects, thanks to Blayne Chard
  • Improvement: Better error messages for schema type mismatches, thanks to Jeremy Pease
  • Improvement: Better error messages for reset password emails
  • Improvement: Webhook key support in CLI, thanks to Tyler Brock
  • Fix: Remove read only fields when using beforeSave, thanks to Tyler Brock
  • Fix: Use content type provided by JS SDK, thanks to Blayne Chard and Florent Vilmart
  • Fix: Tell the dashboard the stored push data is available, thanks to Jeremy Pease
  • Fix: Add support for HTTP Basic Auth, thanks to Hussam Moqhim
  • Fix: Support for MongoDB version 3.2.6, (note: do not use MongoDB 3.2 with migrated apps that still have traffic on Parse.com), thanks to Tyler Brock
  • Fix: Prevent pm2 from crashing when push notifications fail, thanks to benishak
  • Fix: Add full list of default _Installation fields, thanks to Jeremy Pease
  • Fix: Strip objectId out of hooks responses, thanks to Tyler Brock
  • Fix: Fix external webhook response format, thanks to Tyler Brock
  • Fix: Fix beforeSave when object is passed to success, thanks to Madhav Bhagat
  • Fix: Remove use of deprecated APIs, thanks to Emad Ehsan
  • Fix: Crash when multiple Parse Servers on the same machine try to write to the same logs folder, thanks to Steven Shipton
  • Fix: Various issues with key names in Parse.Objects
  • Fix: Treat Bytes type properly
  • Fix: Caching bugs that caused writes by masterKey or other session token to not show up to users reading with a different session token
  • Fix: Pin mongo driver version, preventing a regression in version 2.1.19
  • Fix: Various issues with pointer fields not being treated properly
  • Fix: Issues with pointed getting un-fetched due to changes in beforeSave
  • Fix: Fixed crash when deleting classes that have CLPs

2.2.10

  • Fix: Write legacy ACLs to Mongo so that clients that still go through Parse.com can read them, thanks to Tyler Brock and carmenlau
  • Fix: Querying installations with limit = 0 and count = 1 now works, thanks to ssk7833
  • Fix: Return correct error when violating unique index, thanks to Marco Cheung
  • Fix: Allow unsetting user's email, thanks to Marco Cheung
  • New: Support for Node 6.1

2.2.9

  • Fix: Fix a regression that caused Parse Server to crash when a null parameter is passed to a Cloud function

2.2.8

  • New: Support for Pointer Permissions
  • New: Expose logger in Cloud Code
  • New: Option to revoke sessions on password reset
  • New: Option to expire inactive sessions
  • Perf: Improvements in ACL checking query
  • Fix: Issues when sending pushes to list of devices that contains invalid values
  • Fix: Issues caused by using babel-polyfill outside of Parse Server, but in the same express app
  • Fix: Remove creation of extra session tokens
  • Fix: Return authData when querying with master key
  • Fix: Bugs when deleting webhooks
  • Fix: Ignore _RevocableSession header, which might be sent by the JS SDK
  • Fix: Issues with querying via URL params
  • Fix: Properly encode "Date" parameters to cloud code functions

2.2.7

2.2.6

2.2.5

2.2.4

  • Hotfix: fixed imports issue for S3Adapter, GCSAdapter, FileSystemAdapter #1263 (drew-gross
  • Fix: Clean null authData values on _User update #1199 (yuzeh)

2.2.3

2.2.2

  • Important Fix: Mounts createLiveQueryServer, fix babel induced problem #1153 (flovilmart)
  • Move ParseServer to it's own file #1166 (flovilmart)
  • Update README.md * remove deploy buttons * replace with community links #1139 (drew-gross)
  • Adds bootstrap.sh #1138 (flovilmart)
  • Fix: Do not override username #1142 (flovilmart)
  • Fix: Add pushId back to GCM payload #1168 (wangmengyan95)

2.2.1

  • New: Add FileSystemAdapter file adapter #1098 (dtsolis)
  • New: Enabled CLP editing #1128 (drew-gross)
  • Improvement: Reduces the number of connections to mongo created #1111 (flovilmart)
  • Improvement: Make ParseServer a class #980 (flovilmart)
  • Fix: Adds support for plain object in $add, $addUnique, $remove #1114 (flovilmart)
  • Fix: Generates default CLP, freezes objects #1132 (flovilmart)
  • Fix: Properly sets installationId on creating session with 3rd party auth #1110 (flovilmart)

2.2.0

  • New Feature: Real-time functionality with Live Queries! #1092 (wangmengyan95)
  • Improvement: Push Status API #1004 (flovilmart)
  • Improvement: Allow client operations on Roles #1068 (flovilmart)
  • Improvement: Add URI encoding to mongo auth parameters #986 (bgw)
  • Improvement: Adds support for apps key in config file, but only support single app for now #979 (flovilmart)
  • Documentation: Getting Started and Configuring Parse Server #988 (hramos)
  • Fix: Various edge cases with REST API #1066 (flovilmart)
  • Fix: Makes sure the location in results has the proper objectId #1065 (flovilmart)
  • Fix: Third-party auth is properly removed when unlinked #1081 (flovilmart)
  • Fix: Clear the session-user cache when changing _User objects #1072 (gfosco)
  • Fix: Bug related to subqueries on unfetched objects #1046 (flovilmart)
  • Fix: Properly urlencode parameters for email validation and password reset #1001 (flovilmart)
  • Fix: Better sanitization/decoding of object data for afterSave triggers #992 (flovilmart)
  • Fix: Changes default encoding for httpRequest #892 (flovilmart)

2.1.6

  • Improvement: Full query support for badge Increment (#931) #983 (flovilmart)
  • Improvement: Shutdown standalone parse server gracefully #958 (raulr)
  • Improvement: Add database options to ParseServer constructor and pass to MongoStorageAdapter #956 (steven-supersolid)
  • Improvement: AuthData logic refactor #952 (flovilmart)
  • Improvement: Changed FileLoggerAdapterSpec to fail gracefully on Windows #946 (aneeshd16)
  • Improvement: Add new schema collection type and replace all usages of direct mongo collection for schema operations. #943 (nlutsenko)
  • Improvement: Adds CLP API to Schema router #898 (flovilmart)
  • Fix: Cleans up authData null keys on login for android crash #978 (flovilmart)
  • Fix: Do master query for before/afterSaveHook #959 (wangmengyan95)
  • Fix: re-add shebang #944 (flovilmart)
  • Fix: Added test command for Windows support #886 (aneeshd16)

2.1.5

  • New: FileAdapter for Google Cloud Storage #708 (mcdonamp)
  • Improvement: Minimize extra schema queries in some scenarios. #919 (Marco129)
  • Improvement: Move DatabaseController and Schema fully to adaptive mongo collection. #909 (nlutsenko)
  • Improvement: Cleanup PushController/PushRouter, remove raw mongo collection access. #903 (nlutsenko)
  • Improvement: Increment badge the right way #902 (flovilmart)
  • Improvement: Migrate ParseGlobalConfig to new database storage API. #901 (nlutsenko)
  • Improvement: Improve delete flow for non-existent _Join collection #881 (Marco129)
  • Improvement: Adding a role scenario test for issue 827 #878 (gfosco)
  • Improvement: Test empty authData block on login for #413 #863 (gfosco)
  • Improvement: Modified the npm dev script to support Windows #846 (aneeshd16)
  • Improvement: Move HooksController to use MongoCollection instead of direct Mongo access. #844 (nlutsenko)
  • Improvement: Adds public_html and views for packaging #839 (flovilmart)
  • Improvement: Better support for windows builds #831 (flovilmart)
  • Improvement: Convert Schema.js to ES6 class. #826 (nlutsenko)
  • Improvement: Remove duplicated instructions #816 (hramos)
  • Improvement: Completely migrate SchemasRouter to new MongoCollection API. #794 (nlutsenko)
  • Fix: Do not require where clause in $dontSelect condition on queries. #925 (nlutsenko)
  • Fix: Make sure that ACLs propagate to before/after save hooks. #924 (nlutsenko)
  • Fix: Support params option in Parse.Cloud.httpRequest. #912 (carmenlau)
  • Fix: Fix flaky Parse.GeoPoint test. #908 (nlutsenko)
  • Fix: Handle legacy _client_permissions key in _SCHEMA. #900 (drew-gross)
  • Fix: Fixes bug when querying equalTo on objectId and relation #887 (flovilmart)
  • Fix: Allow crossdomain on filesRouter #876 (flovilmart)
  • Fix: Remove limit when counting results. #867 (gfosco)
  • Fix: beforeSave changes should propagate to the response #865 (gfosco)
  • Fix: Delete relation field when _Join collection not exist #864 (Marco129)
  • Fix: Related query on non-existing column #861 (gfosco)
  • Fix: Update markdown in .github/ISSUE_TEMPLATE.md #859 (igorshubovych)
  • Fix: Issue with creating wrong _Session for Facebook login #857 (tobernguyen)
  • Fix: Leak warnings in tests, use mongodb-runner from node_modules #843 (drew-gross)
  • Fix: Reversed roles lookup #841 (flovilmart)
  • Fix: Improves loading of Push Adapter, fix loading of S3Adapter #833 (flovilmart)
  • Fix: Add field to system schema #828 (Marco129)

2.1.4

  • New: serverInfo endpoint that returns server version and info about the server's features
  • Improvement: Add support for badges on iOS
  • Improvement: Improve failure handling in cloud code http requests
  • Improvement: Add support for queries on pointers and relations
  • Improvement: Add support for multiple $in clauses in a query
  • Improvement: Add allowClientClassCreation config option
  • Improvement: Allow atomically setting subdocument keys
  • Improvement: Allow arbitrarily deeply nested roles
  • Improvement: Set proper content-type in S3 File Adapter
  • Improvement: S3 adapter auto-creates buckets
  • Improvement: Better error messages for many errors
  • Performance: Improved algorithm for validating client keys
  • Experimental: Parse Hooks and Hooks API
  • Experimental: Email verification and password reset emails
  • Experimental: Improve compatability of logs feature with Parse.com
  • Fix: Fix for attempting to delete missing classes via schemas API
  • Fix: Allow creation of system classes via schemas API
  • Fix: Allow missing where cause in $select
  • Fix: Improve handling of invalid object ids
  • Fix: Replace query overwriting existing query
  • Fix: Propagate installationId in cloud code triggers
  • Fix: Session expiresAt is now a Date instead of a string
  • Fix: Fix count queries
  • Fix: Disallow _Role objects without names or without ACL
  • Fix: Better handling of invalid types submitted
  • Fix: beforeSave will not be triggered for attempts to save with invalid authData
  • Fix: Fix duplicate device token issues on Android
  • Fix: Allow empty authData on signup
  • Fix: Allow Master Key Headers (CORS)
  • Fix: Fix bugs if JavaScript key was not provided in server configuration
  • Fix: Parse Files on objects can now be stored without URLs
  • Fix: allow both objectId or installationId when modifying installation
  • Fix: Command line works better when not given options

2.1.3

  • Feature: Add initial support for in-app purchases
  • Feature: Better error messages when attempting to run the server on a port that is already in use or without a server URL
  • Feature: Allow customization of max file size
  • Performance: Faster saves if not using beforeSave triggers
  • Fix: Send session token in response to current user endpoint
  • Fix: Remove triggers for _Session collection
  • Fix: Improve compatability of cloud code beforeSave hook for newly created object
  • Fix: ACL creation for master key only objects
  • Fix: Allow uploading files without Content-Type
  • Fix: Add features to http request to match Parse.com
  • Fix: Bugs in development script when running from locations other than project root
  • Fix: Can pass query constraints in URL
  • Fix: Objects with legacy "_tombstone" key now don't cause issues.
  • Fix: Allow nested keys in objects to begin with underscores
  • Fix: Allow correct headers for CORS

2.1.2

  • Change: The S3 file adapter constructor requires a bucket name
  • Fix: Parse Query should throw if improperly encoded
  • Fix: Issue where roles were not used in some requests
  • Fix: serverURL will no longer default to api.parse.com/1

2.1.1

  • Experimental: Schemas API support for DELETE operations
  • Fix: Session token issue fetching Users
  • Fix: Facebook auth validation
  • Fix: Invalid error when deleting missing session

2.1.0

  • Feature: Support for additional OAuth providers
  • Feature: Ability to implement custom OAuth providers
  • Feature: Support for deleting Parse Files
  • Feature: Allow querying roles
  • Feature: Support for logs, extensible via Log Adapter
  • Feature: New Push Adapter for sending push notifications through OneSignal
  • Feature: Tighter default security for Users
  • Feature: Pass parameters to cloud code in query string
  • Feature: Disable anonymous users via configuration.
  • Experimental: Schemas API support for PUT operations
  • Fix: Prevent installation ID from being added to User
  • Fix: Becoming a user works properly with sessions
  • Fix: Including multiple object when some object are unavailable will get all the objects that are available
  • Fix: Invalid URL for Parse Files
  • Fix: Making a query without a limit now returns 100 results
  • Fix: Expose installation id in cloud code
  • Fix: Correct username for Anonymous users
  • Fix: Session token issue after fetching user
  • Fix: Issues during install process
  • Fix: Issue with Unity SDK sending _noBody

2.0.8

  • Add: support for Android and iOS push notifications
  • Experimental: cloud code validation hooks (can mark as non-experimental after we have docs)
  • Experimental: support for schemas API (GET and POST only)
  • Experimental: support for Parse Config (GET and POST only)
  • Fix: Querying objects with equality constraint on array column
  • Fix: User logout will remove session token
  • Fix: Various files related bugs
  • Fix: Force minimum node version 4.3 due to security issues in earlier version
  • Performance Improvement: Improved caching