parse-dashboard 8.1.1-alpha.1 → 8.2.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,31 +39,6 @@ object-assign
39
39
 
40
40
  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
41
41
 
42
- /**
43
- * @license
44
- * MIT License
45
- *
46
- * Copyright (c) 2014-present, Lee Byron and other contributors.
47
- *
48
- * Permission is hereby granted, free of charge, to any person obtaining a copy
49
- * of this software and associated documentation files (the "Software"), to deal
50
- * in the Software without restriction, including without limitation the rights
51
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
52
- * copies of the Software, and to permit persons to whom the Software is
53
- * furnished to do so, subject to the following conditions:
54
- *
55
- * The above copyright notice and this permission notice shall be included in all
56
- * copies or substantial portions of the Software.
57
- *
58
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
59
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
60
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
61
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
62
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
63
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
64
- * SOFTWARE.
65
- */
66
-
67
42
  /**
68
43
  * @remix-run/router v1.23.0
69
44
  *
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [![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)
7
7
  [![Snyk Badge](https://snyk.io/test/github/parse-community/parse-dashboard/badge.svg)](https://snyk.io/test/github/parse-community/parse-dashboard)
8
8
 
9
- [![Node Version](https://img.shields.io/badge/nodejs-18,_20,_22-green.svg?logo=node.js&style=flat)](https://nodejs.org/)
9
+ [![Node Version](https://img.shields.io/badge/nodejs-18,_20,_22,_24-green.svg?logo=node.js&style=flat)](https://nodejs.org/)
10
10
  [![auto-release](https://img.shields.io/badge/%F0%9F%9A%80-auto--release-9e34eb.svg)](https://github.com/parse-community/parse-dashboard/releases)
11
11
 
12
12
  [![npm latest version](https://img.shields.io/npm/v/parse-dashboard/latest.svg)](https://www.npmjs.com/package/parse-dashboard)
@@ -30,6 +30,14 @@ Parse Dashboard is a standalone dashboard for managing your [Parse Server](https
30
30
  - [Node.js](#nodejs)
31
31
  - [Configuring Parse Dashboard](#configuring-parse-dashboard)
32
32
  - [Options](#options)
33
+ - [Root Options](#root-options)
34
+ - [App Options](#app-options)
35
+ - [Column Options](#column-options)
36
+ - [Script Options](#script-options)
37
+ - [Info Panel Options](#info-panel-options)
38
+ - [User Options](#user-options)
39
+ - [CLI \& Server Options](#cli--server-options)
40
+ - [Helper CLI Commands](#helper-cli-commands)
33
41
  - [File](#file)
34
42
  - [Environment variables](#environment-variables)
35
43
  - [Multiple apps](#multiple-apps)
@@ -42,6 +50,7 @@ Parse Dashboard is a standalone dashboard for managing your [Parse Server](https
42
50
  - [Prevent columns sorting](#prevent-columns-sorting)
43
51
  - [Custom order in the filter popup](#custom-order-in-the-filter-popup)
44
52
  - [Persistent Filters](#persistent-filters)
53
+ - [Keyboard Shortcuts](#keyboard-shortcuts)
45
54
  - [Scripts](#scripts)
46
55
  - [Resource Cache](#resource-cache)
47
56
  - [Running as Express Middleware](#running-as-express-middleware)
@@ -51,7 +60,8 @@ Parse Dashboard is a standalone dashboard for managing your [Parse Server](https
51
60
  - [Security Checks](#security-checks)
52
61
  - [Configuring Basic Authentication](#configuring-basic-authentication)
53
62
  - [Multi-Factor Authentication (One-Time Password)](#multi-factor-authentication-one-time-password)
54
- - [Separating App Access Based on User Identity](#separating-app-access-based-on-user-identity)
63
+ - [Running Multiple Dashboard Replicas](#running-multiple-dashboard-replicas)
64
+ - [Using a Custom Session Store](#using-a-custom-session-store)
55
65
  - [Use Read-Only masterKey](#use-read-only-masterkey)
56
66
  - [Making an app read-only for all users](#making-an-app-read-only-for-all-users)
57
67
  - [Makings users read-only](#makings-users-read-only)
@@ -90,6 +100,7 @@ Parse Dashboard is a standalone dashboard for managing your [Parse Server](https
90
100
  - [Pointer](#pointer)
91
101
  - [Link](#link)
92
102
  - [Image](#image)
103
+ - [Video](#video)
93
104
  - [Contributing](#contributing)
94
105
 
95
106
  # Getting Started
@@ -135,11 +146,12 @@ Parse Dashboard automatically checks the Parse Server version when connecting an
135
146
  ### Node.js
136
147
  Parse Dashboard is continuously tested with the most recent releases of Node.js to ensure compatibility. We follow the [Node.js Long Term Support plan](https://github.com/nodejs/Release) and only test against versions that are officially supported and have not reached their end-of-life date.
137
148
 
138
- | Version | Latest Version | End-of-Life | Compatible |
149
+ | Version | Minimum version | End-of-Life | Compatible |
139
150
  |------------|----------------|-------------|------------|
140
151
  | Node.js 18 | 18.20.4 | May 2025 | ✅ Yes |
141
152
  | Node.js 20 | 20.18.0 | April 2026 | ✅ Yes |
142
153
  | Node.js 22 | 22.9.0 | April 2027 | ✅ Yes |
154
+ | Node.js 24 | 24.0.0 | April 2028 | ✅ Yes |
143
155
 
144
156
  ## Configuring Parse Dashboard
145
157
 
@@ -147,12 +159,12 @@ Parse Dashboard is continuously tested with the most recent releases of Node.js
147
159
 
148
160
  This section provides a comprehensive reference for all Parse Dashboard configuration options that can be used in the configuration file, via CLI arguments, or as environment variables.
149
161
 
150
- #### Root Configuration Keys
162
+ #### Root Options
151
163
 
152
164
  | Key | Type | Required | Default | CLI | Env Variable | Example | Description | Links to Details |
153
165
  |-----|------|----------|---------|-----|--------------|---------|-------------|------------------|
154
- | `apps` | Array<Object> | Yes | - | - | `PARSE_DASHBOARD_CONFIG` | `[{...}]` | Array of Parse Server apps to manage | [App Configuration](#app-configuration-apps-array) |
155
- | `users` | Array<Object> | No | - | - | - | `[{...}]` | User accounts for dashboard authentication | [User Configuration](#user-configuration-users) |
166
+ | `apps` | Array<Object> | Yes | - | - | `PARSE_DASHBOARD_CONFIG` | `[{...}]` | Array of Parse Server apps to manage | [App Options](#app-options) |
167
+ | `users` | Array<Object> | No | - | - | - | `[{...}]` | User accounts for dashboard authentication | [User Configuration](#user-options) |
156
168
  | `useEncryptedPasswords` | Boolean | No | `false` | - | - | `true` | Use bcrypt hashes instead of plain text passwords | - |
157
169
  | `trustProxy` | Boolean \| Number | No | `false` | `--trustProxy` | `PARSE_DASHBOARD_TRUST_PROXY` | `1` | Trust X-Forwarded-* headers when behind proxy | - |
158
170
  | `iconsFolder` | String | No | - | - | - | `"icons"` | Folder for app icons (relative or absolute path) | - |
@@ -160,7 +172,7 @@ This section provides a comprehensive reference for all Parse Dashboard configur
160
172
  | `enableResourceCache` | Boolean | No | `false` | - | - | `true` | Enable browser caching of dashboard resources | - |
161
173
 
162
174
 
163
- ##### App Configuration (`apps` array)
175
+ ##### App Options
164
176
 
165
177
  | Parameter | Type | Optional | Default | CLI | Env Variable | Example | Description |
166
178
  | -------------------------- | ------------------- | -------- | --------- | -------------------- | ------------------------------------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------ |
@@ -193,7 +205,7 @@ This section provides a comprehensive reference for all Parse Dashboard configur
193
205
  | `scripts` | Array<Object> | yes | `[]` | - | - | `[{...}]` | Scripts for this app. See [scripts table below](#scripts). |
194
206
  | `infoPanel` | Array<Object> | yes | - | - | - | `[{...}]` | Info panel config. See [info panel table below](#info-panel). |
195
207
 
196
- ##### Column Preference Configuration (`apps[].columnPreference.<className>[]`)
208
+ ##### Column Options
197
209
 
198
210
  Each class in `columnPreference` can have an array of column configurations:
199
211
 
@@ -204,7 +216,7 @@ Each class in `columnPreference` can have an array of column configurations:
204
216
  | `preventSort` | Boolean | yes | `false` | `true` | Prevent this column from being sortable. |
205
217
  | `filterSortToTop` | Boolean | yes | `false` | `true` | Sort this column to the top in filter popup. |
206
218
 
207
- ##### Scripts Configuration (`apps[].scripts[]`)
219
+ ##### Script Options
208
220
 
209
221
  | Parameter | Type | Optional | Default | Example | Description |
210
222
  | --------------------------|--------------------------------------------|----------|---------|-----------------|---------------------------------------------------|
@@ -215,7 +227,7 @@ Each class in `columnPreference` can have an array of column configurations:
215
227
  | `showConfirmationDialog` | Boolean | yes | `false` | `true` | Show confirmation dialog before execution. |
216
228
  | `confirmationDialogStyle` | String | yes | `info` | `critical` | Dialog style: `info` (blue) or `critical` (red). |
217
229
 
218
- ##### Info Panel Configuration (`apps[].infoPanel[]`)
230
+ ##### Info Panel Options
219
231
 
220
232
  | Parameter | Type | Optional | Default | Example | Description |
221
233
  | --------------------|---------------------|----------|---------|--------------------|-----------------------------------------------|
@@ -229,7 +241,7 @@ Each class in `columnPreference` can have an array of column configurations:
229
241
  | `prefetchAudio` | Boolean | yes | `true` | `false` | Whether to prefetch audio content. |
230
242
 
231
243
 
232
- ##### User Configuration (`users[]`)
244
+ ##### User Options
233
245
 
234
246
  | Parameter | Type | Optional | Default | CLI | Env Variable | Example | Description |
235
247
  | ------------------|---------------------|----------|----------|------------------|---------------------------------|----------------------|----------------------------------------|
@@ -519,6 +531,12 @@ For example:
519
531
 
520
532
  You can conveniently create a filter definition without having to write it by hand by first saving a filter in the data browser, then exporting the filter definition under *App Settings > Export Class Preferences*.
521
533
 
534
+ ### Keyboard Shortcuts
535
+
536
+ Configure custom keyboard shortcuts for dashboard actions in **App Settings > Keyboard Shortcuts**.
537
+
538
+ Delete a shortcut key to disable the shortcut.
539
+
522
540
  ### Scripts
523
541
 
524
542
  You can specify scripts to execute Cloud Functions with the `scripts` option:
@@ -1623,6 +1641,24 @@ Example:
1623
1641
  > [!Warning]
1624
1642
  > The URL will be directly invoked by the browser when trying to display the image. For security reasons, make sure you either control the full URL, including the image file name, or sanitize the URL before returning it to the dashboard. URLs containing `javascript:` or `<script` will be blocked automatically and replaced with a placeholder.
1625
1643
 
1644
+ #### Video
1645
+
1646
+ Videos are rendered directly in the output table with a `<video>` tag that includes playback controls. The content mode is always "scale to fit", meaning that the video maintains its aspect ratio within the specified dimensions.
1647
+
1648
+ Example:
1649
+
1650
+ ```json
1651
+ {
1652
+ "__type": "Video",
1653
+ "url": "https://example.com/video.mp4",
1654
+ "width": "320",
1655
+ "height": "240"
1656
+ }
1657
+ ```
1658
+
1659
+ > [!Warning]
1660
+ > The URL will be directly invoked by the browser when trying to display the video. For security reasons, make sure you either control the full URL, including the video file name, or sanitize the URL before returning it to the dashboard. URLs containing `javascript:` or `<script` will be blocked automatically and replaced with a placeholder.
1661
+
1626
1662
  # Contributing
1627
1663
 
1628
1664
  We really want Parse to be yours, to see it grow and thrive in the open source community. Please see the [Contributing to Parse Dashboard guide](CONTRIBUTING.md).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-dashboard",
3
- "version": "8.1.1-alpha.1",
3
+ "version": "8.2.0-alpha.10",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/parse-community/parse-dashboard"
@@ -36,7 +36,7 @@
36
36
  "LICENSE"
37
37
  ],
38
38
  "dependencies": {
39
- "@babel/runtime": "7.27.4",
39
+ "@babel/runtime": "7.28.4",
40
40
  "@babel/runtime-corejs3": "7.28.3",
41
41
  "bcryptjs": "3.0.2",
42
42
  "body-parser": "2.2.1",
@@ -49,7 +49,7 @@
49
49
  "express-session": "1.18.2",
50
50
  "fast-deep-equal": "3.1.3",
51
51
  "graphiql": "2.0.8",
52
- "graphql": "16.11.0",
52
+ "graphql": "16.12.0",
53
53
  "immutable": "5.1.3",
54
54
  "immutable-devtools": "0.1.5",
55
55
  "inquirer": "12.9.0",
@@ -77,29 +77,29 @@
77
77
  "regenerator-runtime": "0.14.1"
78
78
  },
79
79
  "devDependencies": {
80
- "@actions/core": "1.11.1",
81
- "@babel/core": "7.27.4",
80
+ "@actions/core": "2.0.1",
81
+ "@babel/core": "7.28.5",
82
82
  "@babel/eslint-parser": "7.28.0",
83
- "@babel/plugin-proposal-decorators": "7.27.1",
84
- "@babel/plugin-transform-runtime": "7.28.0",
83
+ "@babel/plugin-proposal-decorators": "7.28.0",
84
+ "@babel/plugin-transform-runtime": "7.28.5",
85
85
  "@babel/preset-env": "7.28.5",
86
- "@babel/preset-react": "7.27.1",
87
- "@eslint/compat": "1.3.1",
86
+ "@babel/preset-react": "7.28.5",
87
+ "@eslint/compat": "2.0.0",
88
88
  "@saithodev/semantic-release-backmerge": "4.0.1",
89
89
  "@semantic-release/changelog": "6.0.3",
90
90
  "@semantic-release/commit-analyzer": "13.0.1",
91
91
  "@semantic-release/git": "10.0.1",
92
- "@semantic-release/github": "11.0.3",
92
+ "@semantic-release/github": "12.0.2",
93
93
  "@semantic-release/npm": "12.0.1",
94
- "@semantic-release/release-notes-generator": "14.0.3",
94
+ "@semantic-release/release-notes-generator": "14.1.0",
95
95
  "@types/jest": "30.0.0",
96
96
  "all-node-versions": "13.0.1",
97
97
  "babel-loader": "10.0.0",
98
98
  "css-loader": "6.7.3",
99
- "eslint": "9.28.0",
100
- "eslint-plugin-jest": "29.0.1",
99
+ "eslint": "9.39.1",
100
+ "eslint-plugin-jest": "29.5.0",
101
101
  "eslint-plugin-react": "7.37.5",
102
- "globals": "16.2.0",
102
+ "globals": "16.5.0",
103
103
  "http-server": "14.1.1",
104
104
  "husky": "9.1.7",
105
105
  "jest": "30.0.4",
@@ -107,19 +107,19 @@
107
107
  "madge": "8.0.0",
108
108
  "marked": "15.0.12",
109
109
  "null-loader": "4.0.1",
110
- "prettier": "3.6.2",
110
+ "prettier": "3.7.4",
111
111
  "puppeteer": "24.12.1",
112
112
  "react-test-renderer": "16.13.1",
113
113
  "request": "2.88.2",
114
114
  "request-promise": "4.2.6",
115
115
  "sass": "1.89.2",
116
116
  "sass-loader": "13.2.0",
117
- "semantic-release": "24.2.7",
118
- "semver": "7.7.2",
117
+ "semantic-release": "25.0.2",
118
+ "semver": "7.7.3",
119
119
  "style-loader": "3.3.1",
120
120
  "svg-prep": "1.0.4",
121
- "typescript": "5.8.2",
122
- "webpack": "5.99.9",
121
+ "typescript": "5.9.3",
122
+ "webpack": "5.103.0",
123
123
  "webpack-cli": "6.0.1",
124
124
  "yaml": "2.8.0"
125
125
  },
@@ -144,7 +144,7 @@
144
144
  "parse-dashboard": "./bin/parse-dashboard"
145
145
  },
146
146
  "engines": {
147
- "node": ">=18.20.4 <19.0.0 || >=20.18.0 <21.0.0 || >=22.12.0 <23.0.0"
147
+ "node": ">=18.20.4 <19.0.0 || >=20.18.0 <21.0.0 || >=22.12.0 <23.0.0 || >=24.0.0 <25.0.0"
148
148
  },
149
149
  "main": "Parse-Dashboard/app.js",
150
150
  "jest": {