From 54bf0afa0691e448b7ec20395753468e047e1fd1 Mon Sep 17 00:00:00 2001 From: Parse Platform <90459499+parseplatformorg@users.noreply.github.com> Date: Wed, 9 Oct 2024 11:52:44 +0200 Subject: [PATCH 01/31] fix: Security upgrade express from 4.21.0 to 4.21.1 (#2607) --- package-lock.json | 17 +++++++++-------- package.json | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index c21e5529b4..99ce989a04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "copy-to-clipboard": "3.3.2", "core-js": "3.28.0", "csurf": "1.11.0", - "express": "4.21.0", + "express": "^4.21.1", "graphiql": "2.0.8", "graphql": "16.8.1", "immutable": "4.1.0", @@ -10320,9 +10320,9 @@ } }, "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "license": "MIT", "dependencies": { "accepts": "~1.3.8", @@ -10330,7 +10330,7 @@ "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -10362,9 +10362,10 @@ } }, "node_modules/express/node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", "engines": { "node": ">= 0.6" } diff --git a/package.json b/package.json index 1cde2b1a63..6ea134dac0 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "copy-to-clipboard": "3.3.2", "core-js": "3.28.0", "csurf": "1.11.0", - "express": "4.21.0", + "express": "4.21.1", "graphiql": "2.0.8", "graphql": "16.8.1", "immutable": "4.1.0", From af521420ba9c862e9ade50f9909633b9f0d59152 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 9 Oct 2024 09:54:18 +0000 Subject: [PATCH 02/31] chore(release): 6.0.0-alpha.17 [skip ci] # [6.0.0-alpha.17](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.16...6.0.0-alpha.17) (2024-10-09) ### Bug Fixes * Security upgrade express from 4.21.0 to 4.21.1 ([#2607](https://github.com/ParsePlatform/parse-dashboard/issues/2607)) ([54bf0af](https://github.com/ParsePlatform/parse-dashboard/commit/54bf0afa0691e448b7ec20395753468e047e1fd1)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 1d66232a96..13a8325c22 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.17](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.16...6.0.0-alpha.17) (2024-10-09) + + +### Bug Fixes + +* Security upgrade express from 4.21.0 to 4.21.1 ([#2607](https://github.com/ParsePlatform/parse-dashboard/issues/2607)) ([54bf0af](https://github.com/ParsePlatform/parse-dashboard/commit/54bf0afa0691e448b7ec20395753468e047e1fd1)) + # [6.0.0-alpha.16](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.15...6.0.0-alpha.16) (2024-10-07) diff --git a/package-lock.json b/package-lock.json index 99ce989a04..72c8e42a5a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-beta.2", + "version": "6.0.0-alpha.17", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-beta.2", + "version": "6.0.0-alpha.17", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index 6ea134dac0..114e5e7c2b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-beta.2", + "version": "6.0.0-alpha.17", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 8c07284cd571c69426c3f080c2698b0624fd4ec4 Mon Sep 17 00:00:00 2001 From: Tom Date: Wed, 16 Oct 2024 17:13:02 +0200 Subject: [PATCH 03/31] fix: Node 22 support missing in package.json (#2617) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 114e5e7c2b..0c79fbe7aa 100644 --- a/package.json +++ b/package.json @@ -139,7 +139,7 @@ "parse-dashboard": "./bin/parse-dashboard" }, "engines": { - "node": ">=18.0.0 <21" + "node": ">=18.0.0 <21 || >=22.9.0 <23" }, "main": "Parse-Dashboard/app.js", "jest": { From 811a8a3d41280d2774af75e0a88a8fab64db3018 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 16 Oct 2024 15:14:40 +0000 Subject: [PATCH 04/31] chore(release): 6.0.0-alpha.18 [skip ci] # [6.0.0-alpha.18](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.17...6.0.0-alpha.18) (2024-10-16) ### Bug Fixes * Node 22 support missing in package.json ([#2617](https://github.com/ParsePlatform/parse-dashboard/issues/2617)) ([8c07284](https://github.com/ParsePlatform/parse-dashboard/commit/8c07284cd571c69426c3f080c2698b0624fd4ec4)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 13a8325c22..a2e4e2cdbf 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.18](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.17...6.0.0-alpha.18) (2024-10-16) + + +### Bug Fixes + +* Node 22 support missing in package.json ([#2617](https://github.com/ParsePlatform/parse-dashboard/issues/2617)) ([8c07284](https://github.com/ParsePlatform/parse-dashboard/commit/8c07284cd571c69426c3f080c2698b0624fd4ec4)) + # [6.0.0-alpha.17](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.16...6.0.0-alpha.17) (2024-10-09) diff --git a/package-lock.json b/package-lock.json index 72c8e42a5a..c38f5b8ade 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.17", + "version": "6.0.0-alpha.18", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-alpha.17", + "version": "6.0.0-alpha.18", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index 0c79fbe7aa..e167195e07 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.17", + "version": "6.0.0-alpha.18", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From bab71dc57195efa62518127de842edd5902603de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 19:38:00 +0200 Subject: [PATCH 05/31] fix: Security upgrade ws, parse and puppeteer (#2618) --- package-lock.json | 152 ++++++++++++++++++++++------------------------ package.json | 4 +- 2 files changed, 73 insertions(+), 83 deletions(-) diff --git a/package-lock.json b/package-lock.json index c38f5b8ade..3ba3aa802b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "copy-to-clipboard": "3.3.2", "core-js": "3.28.0", "csurf": "1.11.0", - "express": "^4.21.1", + "express": "4.21.1", "graphiql": "2.0.8", "graphql": "16.8.1", "immutable": "4.1.0", @@ -28,7 +28,7 @@ "js-beautify": "1.14.10", "otpauth": "8.0.3", "package-json": "7.0.0", - "parse": "3.4.2", + "parse": "3.5.1", "passport": "0.5.3", "passport-local": "1.0.0", "prismjs": "1.29.0", @@ -80,7 +80,7 @@ "marked": "4.1.1", "null-loader": "4.0.1", "prettier": "2.8.8", - "puppeteer": "22.6.1", + "puppeteer": "22.15.0", "react-test-renderer": "16.13.1", "request": "2.88.2", "request-promise": "4.2.5", @@ -96,7 +96,7 @@ "yaml": "1.10.0" }, "engines": { - "node": ">=18.0.0 <21" + "node": ">=18.0.0 <21 || >=22.9.0 <23" } }, "node_modules/@actions/core": { @@ -5047,19 +5047,19 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.0.tgz", - "integrity": "sha512-MC7LxpcBtdfTbzwARXIkqGZ1Osn3nnZJlm+i0+VqHl72t//Xwl9wICrXT8BwtgC6s1xJNHsxOpvzISUqe92+sw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz", + "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==", "dev": true, "dependencies": { - "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.4.0", - "semver": "7.6.0", - "tar-fs": "3.0.5", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.2" + "debug": "^4.3.5", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.4.0", + "semver": "^7.6.3", + "tar-fs": "^3.0.6", + "unbzip2-stream": "^1.4.3", + "yargs": "^17.7.2" }, "bin": { "browsers": "lib/cjs/main-cli.js" @@ -5069,13 +5069,10 @@ } }, "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -6940,9 +6937,9 @@ } }, "node_modules/ast-types/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", + "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", "dev": true }, "node_modules/async": { @@ -7719,14 +7716,14 @@ } }, "node_modules/chromium-bidi": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.14.tgz", - "integrity": "sha512-zm4mX61/U4KXs+S/0WIBHpOWqtpW6FPv1i7n4UZqDDc5LOQ9/Y1MAnB95nO7i/lFFuijLjpe1XMdNcqDqwlH5w==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz", + "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==", "dev": true, "dependencies": { "mitt": "3.0.1", "urlpattern-polyfill": "10.0.0", - "zod": "3.22.4" + "zod": "3.23.8" }, "peerDependencies": { "devtools-protocol": "*" @@ -8641,12 +8638,12 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -9119,9 +9116,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1262051", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1262051.tgz", - "integrity": "sha512-YJe4CT5SA8on3Spa+UDtNhEqtuV6Epwz3OZ4HQVLhlRccpZ9/PAYk0/cy/oKxFKRrZPBUPyxympQci4yWNWZ9g==", + "version": "0.0.1312386", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz", + "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==", "dev": true }, "node_modules/diff-match-patch": { @@ -15890,9 +15887,9 @@ "dev": true }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/mute-stream": { "version": "0.0.8", @@ -19458,16 +19455,16 @@ } }, "node_modules/parse": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/parse/-/parse-3.4.2.tgz", - "integrity": "sha512-Ruehcp/S7eB3A0lDG5eAPvZHa5pABCbUR+lMJL2gUNKJLZNcD9/s3RL255PwI5jTqa+TCJ7MdPqobUplouN1pQ==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/parse/-/parse-3.5.1.tgz", + "integrity": "sha512-uxkLVNfbqgZ/pStg/jIQGh09tOUkPZorzDIqz9vSFjZ3iIZzgvNk6VBbjXjcMWsR8LyFPOR1ROR6/y9Dedn3/w==", "dependencies": { - "@babel/runtime": "7.17.9", + "@babel/runtime": "7.18.0", "@babel/runtime-corejs3": "7.17.8", "idb-keyval": "6.0.3", "react-native-crypto-js": "1.0.0", "uuid": "3.4.0", - "ws": "7.5.1", + "ws": "8.6.0", "xmlhttprequest": "1.8.0" }, "optionalDependencies": { @@ -19502,9 +19499,9 @@ } }, "node_modules/parse/node_modules/@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.0.tgz", + "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==", "dependencies": { "regenerator-runtime": "^0.13.4" }, @@ -19525,11 +19522,11 @@ } }, "node_modules/parse/node_modules/ws": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz", - "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.6.0.tgz", + "integrity": "sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -20256,17 +20253,16 @@ } }, "node_modules/puppeteer": { - "version": "22.6.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.6.1.tgz", - "integrity": "sha512-736QHNKtPD4tPeFbIn73E4l0CWsLzvRFlm0JsLG/VsyM8Eh0FRFNmMp+M3+GSMwdmYxqOVpTgzB6VQDxWxu8xQ==", - "deprecated": "< 22.8.2 is no longer supported", + "version": "22.15.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.15.0.tgz", + "integrity": "sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q==", "dev": true, "hasInstallScript": true, "dependencies": { - "@puppeteer/browsers": "2.2.0", - "cosmiconfig": "9.0.0", - "devtools-protocol": "0.0.1262051", - "puppeteer-core": "22.6.1" + "@puppeteer/browsers": "2.3.0", + "cosmiconfig": "^9.0.0", + "devtools-protocol": "0.0.1312386", + "puppeteer-core": "22.15.0" }, "bin": { "puppeteer": "lib/esm/puppeteer/node/cli.js" @@ -20276,16 +20272,16 @@ } }, "node_modules/puppeteer-core": { - "version": "22.6.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.6.1.tgz", - "integrity": "sha512-rShSd0xtyDSEJYys5nnzQnnwtrafQWg/lWCppyjZIIbYadWP8B1u0XJD/Oe+Xgw8v1hLHX0loNoA0ItRmNLnBg==", + "version": "22.15.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz", + "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==", "dev": true, "dependencies": { - "@puppeteer/browsers": "2.2.0", - "chromium-bidi": "0.5.14", - "debug": "4.3.4", - "devtools-protocol": "0.0.1262051", - "ws": "8.16.0" + "@puppeteer/browsers": "2.3.0", + "chromium-bidi": "0.6.3", + "debug": "^4.3.6", + "devtools-protocol": "0.0.1312386", + "ws": "^8.18.0" }, "engines": { "node": ">=18" @@ -21972,12 +21968,6 @@ "node": ">= 0.8" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, "node_modules/send/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -22743,9 +22733,9 @@ } }, "node_modules/tar-fs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", - "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "dev": true, "dependencies": { "pump": "^3.0.0", @@ -24022,9 +24012,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -24197,9 +24187,9 @@ } }, "node_modules/zod": { - "version": "3.22.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", - "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", "dev": true, "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index e167195e07..d9dad7cb0c 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "js-beautify": "1.14.10", "otpauth": "8.0.3", "package-json": "7.0.0", - "parse": "3.4.2", + "parse": "3.5.1", "passport": "0.5.3", "passport-local": "1.0.0", "prismjs": "1.29.0", @@ -103,7 +103,7 @@ "marked": "4.1.1", "null-loader": "4.0.1", "prettier": "2.8.8", - "puppeteer": "22.6.1", + "puppeteer": "22.15.0", "react-test-renderer": "16.13.1", "request": "2.88.2", "request-promise": "4.2.5", From 6c4d392a90e46330f22b6232758317be3b546923 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Wed, 16 Oct 2024 17:39:32 +0000 Subject: [PATCH 06/31] chore(release): 6.0.0-alpha.19 [skip ci] # [6.0.0-alpha.19](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.18...6.0.0-alpha.19) (2024-10-16) ### Bug Fixes * Security upgrade ws, parse and puppeteer ([#2618](https://github.com/ParsePlatform/parse-dashboard/issues/2618)) ([bab71dc](https://github.com/ParsePlatform/parse-dashboard/commit/bab71dc57195efa62518127de842edd5902603de)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index a2e4e2cdbf..f66e698350 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.19](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.18...6.0.0-alpha.19) (2024-10-16) + + +### Bug Fixes + +* Security upgrade ws, parse and puppeteer ([#2618](https://github.com/ParsePlatform/parse-dashboard/issues/2618)) ([bab71dc](https://github.com/ParsePlatform/parse-dashboard/commit/bab71dc57195efa62518127de842edd5902603de)) + # [6.0.0-alpha.18](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.17...6.0.0-alpha.18) (2024-10-16) diff --git a/package-lock.json b/package-lock.json index 3ba3aa802b..e02da75919 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.18", + "version": "6.0.0-alpha.19", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-alpha.18", + "version": "6.0.0-alpha.19", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index d9dad7cb0c..a3eba2e3ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.18", + "version": "6.0.0-alpha.19", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 47a43e0ac5d55fc9e214079895f71af7c7e3c350 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:09:35 +0100 Subject: [PATCH 07/31] fix: Security upgrade cross-spawn from 7.0.3 to 7.0.6 (#2629) --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e02da75919..7bc9f8e1f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8422,9 +8422,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", From e9c93b0781aa6919b5e1ad896dbb46ca953629ec Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 19 Nov 2024 13:16:38 +0000 Subject: [PATCH 08/31] chore(release): 6.0.0-alpha.20 [skip ci] # [6.0.0-alpha.20](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.19...6.0.0-alpha.20) (2024-11-19) ### Bug Fixes * Security upgrade cross-spawn from 7.0.3 to 7.0.6 ([#2629](https://github.com/ParsePlatform/parse-dashboard/issues/2629)) ([47a43e0](https://github.com/ParsePlatform/parse-dashboard/commit/47a43e0ac5d55fc9e214079895f71af7c7e3c350)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index f66e698350..604899db88 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.20](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.19...6.0.0-alpha.20) (2024-11-19) + + +### Bug Fixes + +* Security upgrade cross-spawn from 7.0.3 to 7.0.6 ([#2629](https://github.com/ParsePlatform/parse-dashboard/issues/2629)) ([47a43e0](https://github.com/ParsePlatform/parse-dashboard/commit/47a43e0ac5d55fc9e214079895f71af7c7e3c350)) + # [6.0.0-alpha.19](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.18...6.0.0-alpha.19) (2024-10-16) diff --git a/package-lock.json b/package-lock.json index 7bc9f8e1f6..25d9550a69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.19", + "version": "6.0.0-alpha.20", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-alpha.19", + "version": "6.0.0-alpha.20", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index a3eba2e3ca..686ebd3d88 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.19", + "version": "6.0.0-alpha.20", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From c2728f22374999764a9a4e7d5d2a3b9e0cc05cb7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 8 Dec 2024 11:04:07 +0100 Subject: [PATCH 09/31] refactor: Bump path-to-regexp and express (#2630) --- package-lock.json | 22 ++++++++++++---------- package.json | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25d9550a69..6a5b5be1a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "copy-to-clipboard": "3.3.2", "core-js": "3.28.0", "csurf": "1.11.0", - "express": "4.21.1", + "express": "4.21.2", "graphiql": "2.0.8", "graphql": "16.8.1", "immutable": "4.1.0", @@ -10317,10 +10317,9 @@ } }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", - "license": "MIT", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -10341,7 +10340,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -10356,6 +10355,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/cookie": { @@ -19664,10 +19667,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", - "license": "MIT" + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "node_modules/path-type": { "version": "4.0.0", diff --git a/package.json b/package.json index 686ebd3d88..f72718609c 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "copy-to-clipboard": "3.3.2", "core-js": "3.28.0", "csurf": "1.11.0", - "express": "4.21.1", + "express": "4.21.2", "graphiql": "2.0.8", "graphql": "16.8.1", "immutable": "4.1.0", From 539e88348721bc100a80ae00de81a921bc2c53d4 Mon Sep 17 00:00:00 2001 From: Harshvardhan Sharma <91624754+vardhan0604@users.noreply.github.com> Date: Fri, 24 Jan 2025 05:29:55 +0530 Subject: [PATCH 10/31] fix: Info panel not showing when some apps miss infoPanel config (#2627) --- src/components/BrowserCell/BrowserCell.react.js | 4 ++-- src/components/Toolbar/Toolbar.react.js | 8 ++++---- src/dashboard/Data/Browser/Browser.react.js | 17 ++++++++++------- .../Data/Browser/BrowserToolbar.react.js | 6 +++++- src/dashboard/Data/Browser/DataBrowser.react.js | 10 ++++++---- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/components/BrowserCell/BrowserCell.react.js b/src/components/BrowserCell/BrowserCell.react.js index 74614feb69..b794f13f61 100644 --- a/src/components/BrowserCell/BrowserCell.react.js +++ b/src/components/BrowserCell/BrowserCell.react.js @@ -294,7 +294,7 @@ export default class BrowserCell extends Component { this.props.setShowAggregatedData(true); this.props.setSelectedObjectId(this.props.objectId); if (this.props.isPanelVisible) { - this.props.callCloudFunction(this.props.objectId, this.props.className); + this.props.callCloudFunction(this.props.objectId, this.props.className, this.props.appId); } } @@ -649,7 +649,7 @@ export default class BrowserCell extends Component { isPanelVisible && ((e.shiftKey && !this.props.firstSelectedCell) || !e.shiftKey) ) { - callCloudFunction(this.props.objectId, this.props.className); + callCloudFunction(this.props.objectId, this.props.className, this.props.appId); } } handleCellClick(e, row, col); diff --git a/src/components/Toolbar/Toolbar.react.js b/src/components/Toolbar/Toolbar.react.js index aad773e702..670cd205dc 100644 --- a/src/components/Toolbar/Toolbar.react.js +++ b/src/components/Toolbar/Toolbar.react.js @@ -15,7 +15,7 @@ import { useNavigate, useNavigationType, NavigationType } from 'react-router-dom const POPOVER_CONTENT_ID = 'toolbarStatsPopover'; -const Stats = ({ data, classwiseCloudFunctions, className }) => { +const Stats = ({ data, classwiseCloudFunctions, className, appId , appName}) => { const [selected, setSelected] = React.useState(null); const [open, setOpen] = React.useState(false); const buttonRef = React.useRef(); @@ -98,7 +98,7 @@ const Stats = ({ data, classwiseCloudFunctions, className }) => { setSelected(statsOptions[0]); }, []); - const rightMarginStyle = classwiseCloudFunctions && classwiseCloudFunctions[className] ? '120px' : 'initial'; + const rightMarginStyle = classwiseCloudFunctions && classwiseCloudFunctions[`${appId}${appName}`] && classwiseCloudFunctions[`${appId}${appName}`][className] ? '120px' : 'initial'; return ( <> @@ -140,9 +140,9 @@ const Toolbar = props => { - {props?.selectedData?.length ? : null} + {props?.selectedData?.length ? : null}
{props.children}
- {props.classwiseCloudFunctions && props.classwiseCloudFunctions[props.className] && ( + {props.classwiseCloudFunctions && props.classwiseCloudFunctions[`${props.appId}${props.appName}`] && props.classwiseCloudFunctions[`${props.appId}${props.appName}`][props.className] && ( + + )} + {isExpanded ? '▼' : '▲'} + + + {isExpanded && ( +
+ {isLoadingNested ? ( +
+ +
+ ) : ( + nestedData && nestedData.panel.segments.map((segment, index) => + renderSegmentContent(segment, index) + ) + )} +
+ )} + + ); + } + return ( - <> +
{isLoading ? (
) : shouldShowAggregatedData ? ( - data.panel.segments.map((segment, index) => ( -
-

{segment.title}

-
- {segment.items.map((item, idx) => { - switch (item.type) { - case 'text': - return ; - case 'keyValue': - return ; - case 'table': - return ; - case 'image': - return ; - case 'video': - return ; - case 'audio': - return ; - case 'button': - return ; - default: - return null; - } - })} -
-
- )) +
+ {data.panel.segments.map((segment, index) => + renderSegmentContent(segment, index) + )} +
) : ( -
- No object selected. +
+ No object selected.
)} - +
); }; diff --git a/src/components/AggregationPanel/AggregationPanel.scss b/src/components/AggregationPanel/AggregationPanel.scss index 2bfda14147..58edd2a41e 100644 --- a/src/components/AggregationPanel/AggregationPanel.scss +++ b/src/components/AggregationPanel/AggregationPanel.scss @@ -11,14 +11,11 @@ .segmentItems { font-size: 14px; - padding-left: 10px; - padding-right: 10px; - padding-top: 6px; + padding: 10px; display: flex; flex-direction: column; - border-left: 1px solid #e3e3ea; gap: 10px; -} + } .keyValue { font-size: 14px; @@ -76,13 +73,14 @@ text-align: center; border-radius: 5px; font-size: 14px; + &:hover, &:focus { background-color: $darkBlue; } } -.loading{ +.loading { height: 100%; display: flex; flex-direction: column; @@ -96,4 +94,69 @@ top: 50%; left: 50%; @include transform(translate(-50%, -50%)); +} + +.nestedPanel { + margin-right: -10px; + transition: all 0.3s ease; +} + +.nestedPanelHeader { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + border-left: 1px solid transparent; + background-color: $blue; + color: $white; + cursor: pointer; + padding-right: 4px; + + &.expanded { + border-left-color: #e3e3ea; + } + } + +.expandButton { + display: inline; + padding: 8px; + font-weight: 500; + + &.expanded { + font-weight: 600; + } +} + +.refreshButton { + background: none; + border: none; + padding: 4px; + cursor: pointer; + color: #666; + font-size: 16px; + + &:hover { + color: #333; + } + + &:disabled { + color: #ccc; + cursor: not-allowed; + } +} + +.nestedPanelContent { + padding: 0 0 8px 0; +} + +.loader { + display: flex; + align-items: center; + justify-content: center; +} + +.segmentContainer { + border-left: 1px solid #e3e3ea; + border-bottom: 1px solid #e3e3ea; + margin-bottom: 16px; } \ No newline at end of file From 243e92c88eca1ccb87c814d1f2ddad14f8e3307e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 30 Jan 2025 18:07:55 +0000 Subject: [PATCH 19/31] chore(release): 6.0.0-alpha.25 [skip ci] # [6.0.0-alpha.25](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.24...6.0.0-alpha.25) (2025-01-30) ### Features * Add info panel item `panel` to load and display data on demand ([#2622](https://github.com/ParsePlatform/parse-dashboard/issues/2622)) ([8e5741d](https://github.com/ParsePlatform/parse-dashboard/commit/8e5741d73b5a8c4fcb5d4248de1bdcd7bd957ee8)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index d3a783bf85..aa359bda88 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.25](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.24...6.0.0-alpha.25) (2025-01-30) + + +### Features + +* Add info panel item `panel` to load and display data on demand ([#2622](https://github.com/ParsePlatform/parse-dashboard/issues/2622)) ([8e5741d](https://github.com/ParsePlatform/parse-dashboard/commit/8e5741d73b5a8c4fcb5d4248de1bdcd7bd957ee8)) + # [6.0.0-alpha.24](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.23...6.0.0-alpha.24) (2025-01-29) diff --git a/package-lock.json b/package-lock.json index 47d481ad8b..4017d2b5f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.24", + "version": "6.0.0-alpha.25", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-alpha.24", + "version": "6.0.0-alpha.25", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index 142ae00028..7a086a98df 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.24", + "version": "6.0.0-alpha.25", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 6389fc6097a76dc95e3cbcdab56c8d1f96909d97 Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Fri, 31 Jan 2025 15:39:30 +0100 Subject: [PATCH 20/31] feat: Add info panel `keyValue` item parameter `isRelativeUrl` to link to dashboard pages (#2646) --- README.md | 46 ++++++++++++++++--- .../AggregationPanel/AggregationPanel.js | 3 +- .../AggregationPanelComponents.js | 4 +- .../Data/Browser/DataBrowser.react.js | 1 + 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 7f41abcae3..02c4aa8d4b 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ Parse Dashboard is a standalone dashboard for managing your [Parse Server](https - [Video Item](#video-item) - [Audio Item](#audio-item) - [Button Item](#button-item) + - [Panel Item](#panel-item) - [Browse as User](#browse-as-user) - [Change Pointer Key](#change-pointer-key) - [Limitations](#limitations) @@ -929,12 +930,13 @@ Example: A text item that consists of a key and a value. The value can optionally be linked to a URL. -| Parameter | Value | Optional | Description | -|-----------|--------|----------|-----------------------------------------------------------------------------------| -| `type` | String | No | Must be `"keyValue"`. | -| `key` | String | No | The key text to display. | -| `value` | String | No | The value text to display. | -| `url` | String | Yes | The URL that will be opened in a new browser tab when clicking on the value text. | +| Parameter | Value | Default | Optional | Description | +|-----------------|---------|-------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `type` | String | - | No | Must be `"keyValue"`. | +| `key` | String | - | No | The key text to display. | +| `value` | String | - | No | The value text to display. | +| `url` | String | `undefined` | Yes | The URL that will be opened in a new browser tab when clicking on the value text. It can be set to an absolute URL or a relative URL in which case the base URL is `:////`. | +| `isRelativeUrl` | Boolean | `false` | Yes | Set this to `true` when linking to another dashboard page, in which case the base URL for the relative URL will be `:////apps//`. | Examples: @@ -951,7 +953,17 @@ Examples: "type": "keyValue", "key": "Last purchase ID", "value": "123", - "url": "https://example.com/purchaseDetails?purchaseId=012345" + "url": "https://example.com/purchaseDetails?purchaseId=123" +} +``` + +```json +{ + "type": "keyValue", + "key": "Last purchase ID", + "value": "123", + "url": "browser/_User", + "isRelativeUrl": true } ``` @@ -1082,6 +1094,26 @@ Example: } ``` +#### Panel Item + +A sub-panel whose data is loaded on-demand by expanding the item. + +| Parameter | Value | Optional | Description | +|---------------------|--------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------| +| `type` | String | No | Must be `"infoPanel"`. | +| `title` | String | No | The title to display in the expandable headline. | +| `cloudCodeFunction` | String | No | The Cloud Code Function to call which receives the selected object in the data browser and returns the response to be displayed in the sub-panel. | + +Example: + +```json +{ + "type": "panel", + "text": "Purchase History", + "cloudCodeFunction": "getUserPurchaseHistory" +} +``` + ## Browse as User ▶️ *Core > Browser > Browse* diff --git a/src/components/AggregationPanel/AggregationPanel.js b/src/components/AggregationPanel/AggregationPanel.js index 60ac2bdfb2..bd732ae962 100644 --- a/src/components/AggregationPanel/AggregationPanel.js +++ b/src/components/AggregationPanel/AggregationPanel.js @@ -21,6 +21,7 @@ const AggregationPanel = ({ showNote, setSelectedObjectId, selectedObjectId, + appName, depth = 0, cloudCodeFunction = null, panelTitle = null, @@ -89,7 +90,7 @@ const AggregationPanel = ({ case 'text': return ; case 'keyValue': - return ; + return ; case 'table': return ; case 'image': diff --git a/src/components/AggregationPanel/AggregationPanelComponents.js b/src/components/AggregationPanel/AggregationPanelComponents.js index 2f876c17d0..d81ca31569 100644 --- a/src/components/AggregationPanel/AggregationPanelComponents.js +++ b/src/components/AggregationPanel/AggregationPanelComponents.js @@ -9,10 +9,10 @@ export const TextElement = ({ text }) => ( ); // Key-Value Element Component -export const KeyValueElement = ({ item }) => ( +export const KeyValueElement = ({ item, appName }) => (
{item.key}: - {item.url ? {item.value} : {item.value}} + {item.url ? {item.value} : {item.value}}
); diff --git a/src/dashboard/Data/Browser/DataBrowser.react.js b/src/dashboard/Data/Browser/DataBrowser.react.js index bb62a15e49..fe938dbe1c 100644 --- a/src/dashboard/Data/Browser/DataBrowser.react.js +++ b/src/dashboard/Data/Browser/DataBrowser.react.js @@ -609,6 +609,7 @@ export default class DataBrowser extends React.Component { setErrorAggregatedData={this.props.setErrorAggregatedData} setSelectedObjectId={this.setSelectedObjectId} selectedObjectId={this.state.selectedObjectId} + appName = {this.props.appName} />
From a568e562d9e1397f7e258d7147f375529917e659 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 31 Jan 2025 14:41:05 +0000 Subject: [PATCH 21/31] chore(release): 6.0.0-alpha.26 [skip ci] # [6.0.0-alpha.26](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.25...6.0.0-alpha.26) (2025-01-31) ### Features * Add info panel `keyValue` item parameter `isRelativeUrl` to link to dashboard pages ([#2646](https://github.com/ParsePlatform/parse-dashboard/issues/2646)) ([6389fc6](https://github.com/ParsePlatform/parse-dashboard/commit/6389fc6097a76dc95e3cbcdab56c8d1f96909d97)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index aa359bda88..fdf755fda5 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.26](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.25...6.0.0-alpha.26) (2025-01-31) + + +### Features + +* Add info panel `keyValue` item parameter `isRelativeUrl` to link to dashboard pages ([#2646](https://github.com/ParsePlatform/parse-dashboard/issues/2646)) ([6389fc6](https://github.com/ParsePlatform/parse-dashboard/commit/6389fc6097a76dc95e3cbcdab56c8d1f96909d97)) + # [6.0.0-alpha.25](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.24...6.0.0-alpha.25) (2025-01-30) diff --git a/package-lock.json b/package-lock.json index 4017d2b5f9..1136f0662f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.25", + "version": "6.0.0-alpha.26", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-alpha.25", + "version": "6.0.0-alpha.26", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index 7a086a98df..b7ea717705 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.25", + "version": "6.0.0-alpha.26", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 44df723b56636607f44c16f2ca24e81e0e17dfb3 Mon Sep 17 00:00:00 2001 From: Parse Platform <90459499+parseplatformorg@users.noreply.github.com> Date: Sat, 1 Feb 2025 19:16:21 +0100 Subject: [PATCH 22/31] fix: Security upgrade node from 20.17.0-alpine3.20 to 20.18.2-alpine3.20 (#2647) --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 1570cf871f..c131f9aac3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ ############################################################ # Build stage ############################################################ -FROM node:20.17.0-alpine3.20 AS build +FROM node:20.18.2-alpine3.20 AS build RUN apk --no-cache add git WORKDIR /src @@ -27,7 +27,7 @@ RUN npm run prepare && npm run build ############################################################ # Release stage ############################################################ -FROM node:20.17.0-alpine3.20 AS release +FROM node:20.18.2-alpine3.20 AS release WORKDIR /src # Copy production node_modules From b523e00ee97c795d18db05690d76004f78c2d7e7 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 1 Feb 2025 18:18:02 +0000 Subject: [PATCH 23/31] chore(release): 6.0.0-alpha.27 [skip ci] # [6.0.0-alpha.27](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.26...6.0.0-alpha.27) (2025-02-01) ### Bug Fixes * Security upgrade node from 20.17.0-alpine3.20 to 20.18.2-alpine3.20 ([#2647](https://github.com/ParsePlatform/parse-dashboard/issues/2647)) ([44df723](https://github.com/ParsePlatform/parse-dashboard/commit/44df723b56636607f44c16f2ca24e81e0e17dfb3)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index fdf755fda5..bf1f96e247 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.27](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.26...6.0.0-alpha.27) (2025-02-01) + + +### Bug Fixes + +* Security upgrade node from 20.17.0-alpine3.20 to 20.18.2-alpine3.20 ([#2647](https://github.com/ParsePlatform/parse-dashboard/issues/2647)) ([44df723](https://github.com/ParsePlatform/parse-dashboard/commit/44df723b56636607f44c16f2ca24e81e0e17dfb3)) + # [6.0.0-alpha.26](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.25...6.0.0-alpha.26) (2025-01-31) diff --git a/package-lock.json b/package-lock.json index 1136f0662f..5c17d0ed5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.26", + "version": "6.0.0-alpha.27", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-alpha.26", + "version": "6.0.0-alpha.27", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index b7ea717705..01d3143b4b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.26", + "version": "6.0.0-alpha.27", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 81c9c7772445dc4d36016f7f42e1867b1093d25c Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Sat, 1 Feb 2025 21:00:58 +0100 Subject: [PATCH 24/31] docs: Fix incorrect info panel docs (#2648) --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 02c4aa8d4b..08a31a0de2 100644 --- a/README.md +++ b/README.md @@ -960,13 +960,29 @@ Examples: ```json { "type": "keyValue", - "key": "Last purchase ID", + "key": "Purchase", "value": "123", - "url": "browser/_User", + "url": "browser/Purchase", "isRelativeUrl": true } ``` +To navigate to a specific object using a relative URL, the query parameters must be URL encoded: + +```js +const objectId = 'abc123'; +const className = 'Purchase'; +const query = [{ field: 'objectId', constraint: 'eq', compareTo: objectId }]; +const url = `browser/Purchase?filters=${JSON.stringify(query)}`; +const item = { + type: 'keyValue', + key: 'Purchase', + value: objectId, + url, + isRelativeUrl: true +} +``` + #### Table Item A table with columns and rows to display data in a structured format. @@ -1109,7 +1125,7 @@ Example: ```json { "type": "panel", - "text": "Purchase History", + "title": "Purchase History", "cloudCodeFunction": "getUserPurchaseHistory" } ``` From 884ff70567e372ff676297b6fb7856fbb7b71cbb Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Sat, 1 Feb 2025 22:05:03 +0100 Subject: [PATCH 25/31] fix: Info panel item `panel` calls Cloud Code with parameter `objectId` instead of `Parse.Object` and without `masterKey` (#2649) --- src/components/AggregationPanel/AggregationPanel.js | 13 ++++++++++--- src/dashboard/Data/Browser/Browser.react.js | 2 +- src/dashboard/Data/Browser/DataBrowser.react.js | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/components/AggregationPanel/AggregationPanel.js b/src/components/AggregationPanel/AggregationPanel.js index bd732ae962..1b64c0adb0 100644 --- a/src/components/AggregationPanel/AggregationPanel.js +++ b/src/components/AggregationPanel/AggregationPanel.js @@ -1,7 +1,7 @@ import LoaderDots from 'components/LoaderDots/LoaderDots.react'; +import Parse from 'parse'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import styles from './AggregationPanel.scss'; -import Parse from 'parse'; import { AudioElement, ButtonElement, @@ -21,6 +21,7 @@ const AggregationPanel = ({ showNote, setSelectedObjectId, selectedObjectId, + className, appName, depth = 0, cloudCodeFunction = null, @@ -52,8 +53,13 @@ const AggregationPanel = ({ const fetchNestedData = useCallback(async () => { setIsLoadingNested(true); try { - const params = { objectId: selectedObjectId }; - const result = await Parse.Cloud.run(cloudCodeFunction, params); + const params = { + object: Parse.Object.extend(className).createWithoutData(selectedObjectId).toPointer(), + }; + const options = { + useMasterKey: true, + }; + const result = await Parse.Cloud.run(cloudCodeFunction, params, options); if (result?.panel?.segments) { setNestedData(result); } else { @@ -113,6 +119,7 @@ const AggregationPanel = ({ showNote={showNote} setSelectedObjectId={setSelectedObjectId} selectedObjectId={selectedObjectId} + className={className} depth={depth + 1} cloudCodeFunction={item.cloudCodeFunction} panelTitle={item.title} diff --git a/src/dashboard/Data/Browser/Browser.react.js b/src/dashboard/Data/Browser/Browser.react.js index 691cf9f567..93b01a308d 100644 --- a/src/dashboard/Data/Browser/Browser.react.js +++ b/src/dashboard/Data/Browser/Browser.react.js @@ -273,7 +273,7 @@ class Browser extends DashboardView { }; const options = { useMasterKey: true, - } + }; const appName = this.props.params.appId; const cloudCodeFunction = this.state.classwiseCloudFunctions[`${appId}${appName}`]?.[className][0].cloudCodeFunction; Parse.Cloud.run(cloudCodeFunction, params, options).then( diff --git a/src/dashboard/Data/Browser/DataBrowser.react.js b/src/dashboard/Data/Browser/DataBrowser.react.js index fe938dbe1c..b769d3942d 100644 --- a/src/dashboard/Data/Browser/DataBrowser.react.js +++ b/src/dashboard/Data/Browser/DataBrowser.react.js @@ -610,6 +610,7 @@ export default class DataBrowser extends React.Component { setSelectedObjectId={this.setSelectedObjectId} selectedObjectId={this.state.selectedObjectId} appName = {this.props.appName} + className = {this.props.className} /> From 3862c3271feb178f2de8e11645bb6fad50611354 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 1 Feb 2025 21:06:37 +0000 Subject: [PATCH 26/31] chore(release): 6.0.0-alpha.28 [skip ci] # [6.0.0-alpha.28](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.27...6.0.0-alpha.28) (2025-02-01) ### Bug Fixes * Info panel item `panel` calls Cloud Code with parameter `objectId` instead of `Parse.Object` and without `masterKey` ([#2649](https://github.com/ParsePlatform/parse-dashboard/issues/2649)) ([884ff70](https://github.com/ParsePlatform/parse-dashboard/commit/884ff70567e372ff676297b6fb7856fbb7b71cbb)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index bf1f96e247..9709da7a97 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.28](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.27...6.0.0-alpha.28) (2025-02-01) + + +### Bug Fixes + +* Info panel item `panel` calls Cloud Code with parameter `objectId` instead of `Parse.Object` and without `masterKey` ([#2649](https://github.com/ParsePlatform/parse-dashboard/issues/2649)) ([884ff70](https://github.com/ParsePlatform/parse-dashboard/commit/884ff70567e372ff676297b6fb7856fbb7b71cbb)) + # [6.0.0-alpha.27](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.26...6.0.0-alpha.27) (2025-02-01) diff --git a/package-lock.json b/package-lock.json index 5c17d0ed5e..e9221d6037 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.27", + "version": "6.0.0-alpha.28", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-alpha.27", + "version": "6.0.0-alpha.28", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index 01d3143b4b..d90ca2bc84 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.27", + "version": "6.0.0-alpha.28", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 9025ed07b5e7fd801a6ec56c71a12299b2d57279 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 15 Feb 2025 01:47:13 +1100 Subject: [PATCH 27/31] feat: Add dynamic master key by allowing to set option `masterKey` to a function (#2655) --- Parse-Dashboard/app.js | 44 ++++++++++++++++++++++--------- Parse-Dashboard/configKeyCache.js | 22 ++++++++++++++++ Parse-Dashboard/index.js | 1 + README.md | 5 ++++ 4 files changed, 60 insertions(+), 12 deletions(-) create mode 100644 Parse-Dashboard/configKeyCache.js diff --git a/Parse-Dashboard/app.js b/Parse-Dashboard/app.js index 5ec6cc26b9..5e3ecd4ae7 100644 --- a/Parse-Dashboard/app.js +++ b/Parse-Dashboard/app.js @@ -5,6 +5,7 @@ const packageJson = require('package-json'); const csrf = require('csurf'); const Authentication = require('./Authentication.js'); const fs = require('fs'); +const ConfigKeyCache = require('./configKeyCache.js'); const currentVersionFeatures = require('../package.json').parseDashboardFeatures; @@ -80,11 +81,11 @@ module.exports = function(config, options) { }); // Serve the configuration. - app.get('/parse-dashboard-config.json', function(req, res) { + app.get('/parse-dashboard-config.json', async (req, res) => { const apps = config.apps.map((app) => Object.assign({}, app)); // make a copy const response = { - apps: apps, - newFeaturesInLatestVersion: newFeaturesInLatestVersion, + apps, + newFeaturesInLatestVersion, }; //Based on advice from Doug Wilson here: @@ -119,20 +120,31 @@ module.exports = function(config, options) { return app; }); } - if (successfulAuth) { if (appsUserHasAccess) { - // Restric access to apps defined in user dictionary - // If they didn't supply any app id, user will access all apps - response.apps = response.apps.filter(function (app) { - return appsUserHasAccess.find(appUserHasAccess => { - const isSame = app.appId === appUserHasAccess.appId; - if (isSame && appUserHasAccess.readOnly) { + const processedApps = await Promise.all( + response.apps.map(async (app) => { + const matchingAccess = appsUserHasAccess.find( + (access) => access.appId === app.appId + ); + + if (!matchingAccess) { + return null; + } + + if (matchingAccess.readOnly) { app.masterKey = app.readOnlyMasterKey; } - return isSame; + + if (typeof app.masterKey === 'function') { + app.masterKey = await ConfigKeyCache.get(app.appId, 'masterKey', app.masterKeyTtl, app.masterKey); + } + + return app; }) - }); + ); + + response.apps = processedApps.filter((app) => app !== null); } // They provided correct auth return res.json(response); @@ -147,6 +159,14 @@ module.exports = function(config, options) { //(ie. didn't supply usernames and passwords) if (requestIsLocal || options.dev) { //Allow no-auth access on localhost only, if they have configured the dashboard to not need auth + await Promise.all( + response.apps.map(async (app) => { + if (typeof app.masterKey === 'function') { + app.masterKey = await ConfigKeyCache.get(app.appId, 'masterKey', app.masterKeyTtl, app.masterKey); + } + }) + ); + return res.json(response); } //We shouldn't get here. Fail closed. diff --git a/Parse-Dashboard/configKeyCache.js b/Parse-Dashboard/configKeyCache.js new file mode 100644 index 0000000000..3b8ad9b31f --- /dev/null +++ b/Parse-Dashboard/configKeyCache.js @@ -0,0 +1,22 @@ +class KeyCache { + constructor() { + this.cache = {}; + } + + async get(appId, key, ttl, callback) { + key = `${appId}:${key}`; + const cached = this.cache[key]; + if (cached && cached.expiry > Date.now()) { + return cached.value; + } + + const value = await Promise.resolve(callback()); + this.cache[key] = { + value, + expiry: Date.now() + ttl, + }; + return value; + } +} + +module.exports = new KeyCache(); diff --git a/Parse-Dashboard/index.js b/Parse-Dashboard/index.js index 6217df3e95..f472ec0844 100644 --- a/Parse-Dashboard/index.js +++ b/Parse-Dashboard/index.js @@ -13,6 +13,7 @@ const startServer = require('./server'); const program = require('commander'); program.option('--appId [appId]', 'the app Id of the app you would like to manage.'); program.option('--masterKey [masterKey]', 'the master key of the app you would like to manage.'); +program.option('--masterKeyTtl [masterKeyTtl]', 'the master key ttl of the app you would like to manage.'); program.option('--serverURL [serverURL]', 'the server url of the app you would like to manage.'); program.option('--graphQLServerURL [graphQLServerURL]', 'the GraphQL server url of the app you would like to manage.'); program.option('--dev', 'Enable development mode. This will disable authentication and allow non HTTPS connections. DO NOT ENABLE IN PRODUCTION SERVERS'); diff --git a/README.md b/README.md index 08a31a0de2..01b3d47af8 100644 --- a/README.md +++ b/README.md @@ -131,6 +131,11 @@ Parse Dashboard is continuously tested with the most recent releases of Node.js | Parameter | Type | Optional | Default | Example | Description | |----------------------------------------|---------------------|----------|---------|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------| | `apps` | Array<Object> | no | - | `[{ ... }, { ... }]` | The apps that are configured for the dashboard. | +| `apps.appId` | String | yes | - | `"myAppId"` | The Application ID for your Parse Server instance. | +| `apps.masterKey` | String \| Function | yes | - | `"exampleMasterKey"`, `() => "exampleMasterKey"` | The master key for full access to Parse Server. It can be provided directly as a String or as a Function returning a String. | +| `apps.masterKeyTtl` | Number | no | - | `3600` | Time-to-live (TTL) for the master key in seconds. This defines how long the master key is cached before the `masterKey` function is re-triggered. | +| `apps.serverURL` | String | yes | - | `"http://localhost:1337/parse"` | The URL where your Parse Server is running. | +| `apps.appName` | String | no | - | `"MyApp"` | The display name of the app in the dashboard. | | `infoPanel` | Array<Object> | yes | - | `[{ ... }, { ... }]` | The [info panel](#info-panel) configuration. | | `infoPanel[*].title` | String | no | - | `User Details` | The panel title. | | `infoPanel[*].classes` | Array<String> | no | - | `["_User"]` | The classes for which the info panel should be displayed. | From 58b38f8af0c91bae7adecade2370d941846a06ef Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 14 Feb 2025 14:48:54 +0000 Subject: [PATCH 28/31] chore(release): 6.0.0-alpha.29 [skip ci] # [6.0.0-alpha.29](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.28...6.0.0-alpha.29) (2025-02-14) ### Features * Add dynamic master key by allowing to set option `masterKey` to a function ([#2655](https://github.com/ParsePlatform/parse-dashboard/issues/2655)) ([9025ed0](https://github.com/ParsePlatform/parse-dashboard/commit/9025ed07b5e7fd801a6ec56c71a12299b2d57279)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 9709da7a97..2cc75516e7 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.29](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.28...6.0.0-alpha.29) (2025-02-14) + + +### Features + +* Add dynamic master key by allowing to set option `masterKey` to a function ([#2655](https://github.com/ParsePlatform/parse-dashboard/issues/2655)) ([9025ed0](https://github.com/ParsePlatform/parse-dashboard/commit/9025ed07b5e7fd801a6ec56c71a12299b2d57279)) + # [6.0.0-alpha.28](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.27...6.0.0-alpha.28) (2025-02-01) diff --git a/package-lock.json b/package-lock.json index e9221d6037..051b58f2de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.28", + "version": "6.0.0-alpha.29", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-alpha.28", + "version": "6.0.0-alpha.29", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index d90ca2bc84..9f3a7166d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.28", + "version": "6.0.0-alpha.29", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From 9d623a97a4e9ff9692f72191a33441a22fb6956e Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 3 Mar 2025 11:39:36 +1100 Subject: [PATCH 29/31] feat: Add cell selection in data browser on space bar touch down (#2661) --- src/dashboard/Data/Browser/DataBrowser.react.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/dashboard/Data/Browser/DataBrowser.react.js b/src/dashboard/Data/Browser/DataBrowser.react.js index b769d3942d..67f56e4566 100644 --- a/src/dashboard/Data/Browser/DataBrowser.react.js +++ b/src/dashboard/Data/Browser/DataBrowser.react.js @@ -419,6 +419,15 @@ export default class DataBrowser extends React.Component { e.preventDefault(); } break; + case 32: // Space + // Only handle space if not editing and there's a current row selected + if (!this.state.editing && this.state.current?.row >= 0) { + const rowId = this.props.data[this.state.current.row].id; + const isSelected = this.props.selection[rowId]; + this.props.selectRow(rowId, !isSelected); + e.preventDefault(); + } + break; } } From 135f5b61e7b9efa83f5180890daf303c18c1d590 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 3 Mar 2025 00:41:10 +0000 Subject: [PATCH 30/31] chore(release): 6.0.0-alpha.30 [skip ci] # [6.0.0-alpha.30](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.29...6.0.0-alpha.30) (2025-03-03) ### Features * Add cell selection in data browser on space bar touch down ([#2661](https://github.com/ParsePlatform/parse-dashboard/issues/2661)) ([9d623a9](https://github.com/ParsePlatform/parse-dashboard/commit/9d623a97a4e9ff9692f72191a33441a22fb6956e)) --- changelogs/CHANGELOG_alpha.md | 7 +++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/changelogs/CHANGELOG_alpha.md b/changelogs/CHANGELOG_alpha.md index 2cc75516e7..2f0007bdb2 100644 --- a/changelogs/CHANGELOG_alpha.md +++ b/changelogs/CHANGELOG_alpha.md @@ -1,3 +1,10 @@ +# [6.0.0-alpha.30](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.29...6.0.0-alpha.30) (2025-03-03) + + +### Features + +* Add cell selection in data browser on space bar touch down ([#2661](https://github.com/ParsePlatform/parse-dashboard/issues/2661)) ([9d623a9](https://github.com/ParsePlatform/parse-dashboard/commit/9d623a97a4e9ff9692f72191a33441a22fb6956e)) + # [6.0.0-alpha.29](https://github.com/ParsePlatform/parse-dashboard/compare/6.0.0-alpha.28...6.0.0-alpha.29) (2025-02-14) diff --git a/package-lock.json b/package-lock.json index 051b58f2de..0947717ece 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.29", + "version": "6.0.0-alpha.30", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "parse-dashboard", - "version": "6.0.0-alpha.29", + "version": "6.0.0-alpha.30", "license": "SEE LICENSE IN LICENSE", "dependencies": { "@babel/runtime": "7.20.13", diff --git a/package.json b/package.json index 9f3a7166d8..dacbd79453 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "parse-dashboard", - "version": "6.0.0-alpha.29", + "version": "6.0.0-alpha.30", "repository": { "type": "git", "url": "https://github.com/ParsePlatform/parse-dashboard" From ec94e7bd8183607eb3aaab8850a1120add0da375 Mon Sep 17 00:00:00 2001 From: Manuel <5673677+mtrezza@users.noreply.github.com> Date: Tue, 4 Mar 2025 03:26:07 +0100 Subject: [PATCH 31/31] ci: Remove beta releases (#2663) --- CHANGELOG.md | 15 --------------- README.md | 2 -- release.config.js | 5 +++-- 3 files changed, 3 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d338a61c57..d7472efa2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,19 +15,6 @@ Details: - Purpose: official release - Suitable environment: production -## ⚠️ [Beta Releases][log_beta] - -These are releases that are pretty stable, but may have still some bugs to be fixed before official release. - -> ### “Please try out, we’d love your feedback!” - -Details: -- Stability: *pretty stable* -- NPM channel: `@beta` -- Branch: [beta][branch_beta] -- Purpose: feature maturation -- Suitable environment: development - ## 🔥 [Alpha Releases][log_alpha] > ### “If you are curious to see what's next!” @@ -43,8 +30,6 @@ Details: [log_release]: https://github.com/parse-community/parse-dashboard/blob/release/changelogs/CHANGELOG_release.md -[log_beta]: https://github.com/parse-community/parse-dashboard/blob/beta/changelogs/CHANGELOG_beta.md [log_alpha]: https://github.com/parse-community/parse-dashboard/blob/alpha/changelogs/CHANGELOG_alpha.md [branch_release]: https://github.com/parse-community/parse-dashboard/tree/release -[branch_beta]: https://github.com/parse-community/parse-dashboard/tree/beta [branch_alpha]: https://github.com/parse-community/parse-dashboard/tree/alpha diff --git a/README.md b/README.md index 01b3d47af8..ef45a68adf 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ --- [![Build Status](https://github.com/parse-community/parse-dashboard/workflows/ci/badge.svg?branch=alpha)](https://github.com/parse-community/parse-dashboard/actions?query=workflow%3Aci+branch%3Aalpha) -[![Build Status](https://github.com/parse-community/parse-dashboard/workflows/ci/badge.svg?branch=beta)](https://github.com/parse-community/parse-dashboard/actions?query=workflow%3Aci+branch%3Abeta) [![Build Status](https://github.com/parse-community/parse-dashboard/workflows/ci/badge.svg?branch=release)](https://github.com/parse-community/parse-dashboard/actions?query=workflow%3Aci+branch%3Arelease) [![Snyk Badge](https://snyk.io/test/github/parse-community/parse-dashboard/badge.svg)](https://snyk.io/test/github/parse-community/parse-dashboard) @@ -11,7 +10,6 @@ [![auto-release](https://img.shields.io/badge/%F0%9F%9A%80-auto--release-9e34eb.svg)](https://github.com/parse-community/parse-dashboard/releases) [![npm latest version](https://img.shields.io/npm/v/parse-dashboard/latest.svg)](https://www.npmjs.com/package/parse-dashboard) -[![npm beta version](https://img.shields.io/npm/v/parse-dashboard/beta.svg)](https://www.npmjs.com/package/parse-dashboard) [![npm alpha version](https://img.shields.io/npm/v/parse-dashboard/alpha.svg)](https://www.npmjs.com/package/parse-dashboard) [![Backers on Open Collective](https://opencollective.com/parse-server/backers/badge.svg)][open-collective-link] diff --git a/release.config.js b/release.config.js index 082f461781..50d2877de2 100644 --- a/release.config.js +++ b/release.config.js @@ -92,8 +92,9 @@ async function config() { '@saithodev/semantic-release-backmerge', { 'branches': [ - { from: 'beta', to: 'alpha' }, - { from: 'release', to: 'beta' }, + // { from: 'beta', to: 'alpha' }, + // { from: 'release', to: 'beta' }, + { from: 'release', to: 'alpha' }, ] } ],