parse-dashboard 8.0.0-alpha.2 → 8.0.0-alpha.4

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.
package/README.md CHANGED
@@ -145,34 +145,130 @@ Parse Dashboard is continuously tested with the most recent releases of Node.js
145
145
 
146
146
  ### Options
147
147
 
148
- | Parameter | Type | Optional | Default | Example | Description |
149
- |----------------------------------------|---------------------|----------|---------|--------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
150
- | `apps` | Array<Object> | no | - | `[{ ... }, { ... }]` | The apps that are configured for the dashboard. |
151
- | `apps.appId` | String | yes | - | `"myAppId"` | The Application ID for your Parse Server instance. |
152
- | `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. |
153
- | `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. |
154
- | `apps.serverURL` | String | yes | - | `"http://localhost:1337/parse"` | The URL where your Parse Server is running. |
155
- | `apps.appName` | String | no | - | `"MyApp"` | The display name of the app in the dashboard. |
156
- | `infoPanel` | Array<Object> | yes | - | `[{ ... }, { ... }]` | The [info panel](#info-panel) configuration. |
157
- | `infoPanel[*].title` | String | no | - | `User Details` | The panel title. |
158
- | `infoPanel[*].classes` | Array<String> | no | - | `["_User"]` | The classes for which the info panel should be displayed. |
159
- | `infoPanel[*].cloudCodeFunction` | String | no | - | `getUserDetails` | The Cloud Code Function which received the selected object in the data browser and returns the response to be displayed in the info panel. |
160
- | `infoPanel[*].prefetchObjects` | Number | yes | `0` | `2` | Number of next rows to prefetch when browsing sequential rows. For example, `2` means the next 2 rows will be fetched in advance. |
161
- | `infoPanel[*].prefetchStale` | Number | yes | `0` | `10` | Duration in seconds after which prefetched data is discarded as stale. |
162
- | `apps.scripts` | Array<Object> | yes | `[]` | `[{ ... }, { ... }]` | The scripts that can be executed for that app. |
163
- | `apps.scripts.title` | String | no | - | `'Delete User'` | The title that will be displayed in the data browser context menu and the script run confirmation dialog. |
164
- | `apps.scripts.classes` | Array<String> | no | - | `['_User']` | The classes of Parse Objects for which the scripts can be executed. |
165
- | `apps.scripts.cloudCodeFunction` | String | no | - | `'deleteUser'` | The name of the Parse Cloud Function to execute. |
166
- | `apps.scripts.executionBatchSize` | Integer | yes | `1` | `10` | The batch size with which a script should be executed on all selected objects. For example, with 50 objects selected, a batch size of 10 means the script will run on 10 objects in parallel, running a total of 5 batches in serial. |
167
- | `apps.scripts.showConfirmationDialog` | Bool | yes | `false` | `true` | Is `true` if a confirmation dialog should be displayed before the script is executed, `false` if the script should be executed immediately. |
168
- | `apps.scripts.confirmationDialogStyle` | String | yes | `info` | `critical` | The style of the confirmation dialog. Valid values: `info` (blue style), `critical` (red style). |
169
- | `apps.cloudConfigHistoryLimit` | Integer | yes | `100` | `100` | The number of historic values that should be saved in the Cloud Config change history. Valid values: `0`...`Number.MAX_SAFE_INTEGER`.
170
- | `apps.config` | Object | yes | - | `{ ... }` | App settings option used to store dashboard configuration on the server.
171
- | `apps.config.className` | String | yes | _ | `DashboardConfig` | The table name used to save and migrate the dashboard configuration. |
148
+ 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
+
150
+ #### Root Configuration Keys
151
+
152
+ | Key | Type | Required | Default | CLI | Env Variable | Example | Description | Links to Details |
153
+ |-----|------|----------|---------|-----|--------------|---------|-------------|------------------|
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) |
156
+ | `useEncryptedPasswords` | Boolean | No | `false` | - | - | `true` | Use bcrypt hashes instead of plain text passwords | - |
157
+ | `trustProxy` | Boolean \| Number | No | `false` | `--trustProxy` | `PARSE_DASHBOARD_TRUST_PROXY` | `1` | Trust X-Forwarded-* headers when behind proxy | - |
158
+ | `iconsFolder` | String | No | - | - | - | `"icons"` | Folder for app icons (relative or absolute path) | - |
159
+ | `agent` | Object | No | - | - | `PARSE_DASHBOARD_AGENT` (JSON) | `{...}` | AI agent configuration | [AI Agent Configuration](#ai-agent) |
160
+ | `enableResourceCache` | Boolean | No | `false` | - | - | `true` | Enable browser caching of dashboard resources | - |
161
+
162
+
163
+ ##### App Configuration (`apps` array)
164
+
165
+ | Parameter | Type | Optional | Default | CLI | Env Variable | Example | Description |
166
+ | -------------------------- | ------------------- | -------- | --------- | -------------------- | ------------------------------------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------ |
167
+ | `appId` | String | no | - | `--appId` | `PARSE_DASHBOARD_APP_ID` | `"myAppId"` | The Application ID for your Parse Server instance. |
168
+ | `masterKey` | String \| Function | no | - | `--masterKey` | `PARSE_DASHBOARD_MASTER_KEY` | `"key"` or `() => "key"` | Master key for full access. Can be a String or Function returning a String. |
169
+ | `serverURL` | String | no | - | `--serverURL` | `PARSE_DASHBOARD_SERVER_URL` | `"http://localhost:1337/parse"` | The URL where your Parse Server is running. |
170
+ | `appName` | String | yes | `appId` | `--appName` | `PARSE_DASHBOARD_APP_NAME` | `"MyApp"` | Display name of the app. |
171
+ | `masterKeyTtl` | Number | yes | - | `--masterKeyTtl` | - | `3600` | TTL for master key cache in seconds (only when masterKey is a function). |
172
+ | `readOnlyMasterKey` | String | yes | - | - | - | `"myReadOnlyKey"` | Read-only master key that prevents mutations. |
173
+ | `clientKey` | String | yes | - | - | - | `"myClientKey"` | Client key for Parse SDK (legacy, mostly unused). |
174
+ | `javascriptKey` | String | yes | - | - | - | `"myJsKey"` | JavaScript key for Parse SDK (legacy, mostly unused). |
175
+ | `restKey` | String | yes | - | - | - | `"myRestKey"` | REST API key for server-side REST applications. |
176
+ | `windowsKey` | String | yes | - | - | - | `"myWindowsKey"` | Windows SDK key (legacy, mostly unused). |
177
+ | `webhookKey` | String | yes | - | - | - | `"myWebhookKey"` | Webhook key for Cloud Code Webhooks. |
178
+ | `fileKey` | String | yes | - | - | - | `"myFileKey"` | File key used for file migrations. |
179
+ | `graphQLServerURL` | String | yes | - | `--graphQLServerURL` | `PARSE_DASHBOARD_GRAPHQL_SERVER_URL` | `"http://localhost:1337/graphql"` | The URL where your Parse GraphQL Server is running. |
180
+ | `appNameForURL` | String | yes | `appName` | - | - | `"my-app"` | URL-friendly name used in dashboard URLs. |
181
+ | `production` | Boolean | yes | `false` | - | - | `true` | Mark as production environment. |
182
+ | `iconName` | String | yes | - | - | - | `"icon.png"` | Filename of app icon (requires global `iconsFolder`). |
183
+ | `primaryBackgroundColor` | String | yes | - | - | - | `"#FFA500"` | Primary background color (CSS value). |
184
+ | `secondaryBackgroundColor` | String | yes | - | - | - | `"#FF4500"` | Secondary background color (CSS value). |
185
+ | `supportedPushLocales` | Array<String> | yes | - | - | - | `["en","fr"]` | Supported locales for push notifications. |
186
+ | `preventSchemaEdits` | Boolean | yes | `false` | - | - | `true` | Prevent schema modifications through the dashboard. |
187
+ | `columnPreference` | Object | yes | - | - | - | `{"_User":[...]}` | Column visibility/sorting/filtering preferences. See [column preferences details](#prevent-columns-sorting). |
188
+ | `classPreference` | Object | yes | - | - | - | `{"_Role":{...}}` | Persistent filters for all users. See [persistent filters details](#persistent-filters). |
189
+ | `enableSecurityChecks` | Boolean | yes | `false` | - | - | `true` | Enable security checks under App Settings > Security. |
190
+ | `cloudConfigHistoryLimit` | Integer | yes | `100` | - | - | `200` | Number of historic Cloud Config values (0 to Number.MAX_SAFE_INTEGER). |
191
+ | `config` | Object | yes | - | - | - | `{...}` | Settings for storing dashboard config on server. |
192
+ | `config.className` | String | yes | - | - | - | `"DashboardConfig"` | Table name for dashboard configuration. |
193
+ | `scripts` | Array<Object> | yes | `[]` | - | - | `[{...}]` | Scripts for this app. See [scripts table below](#scripts). |
194
+ | `infoPanel` | Array<Object> | yes | - | - | - | `[{...}]` | Info panel config. See [info panel table below](#info-panel). |
195
+
196
+ ##### Column Preference Configuration (`apps[].columnPreference.<className>[]`)
197
+
198
+ Each class in `columnPreference` can have an array of column configurations:
199
+
200
+ | Parameter | Type | Optional | Default | Example | Description |
201
+ | ------------------|---------|----------|---------|---------------|----------------------------------------------------|
202
+ | `name` | String | no | - | `"createdAt"` | Column/field name. |
203
+ | `visible` | Boolean | yes | `true` | `false` | Whether the column is visible in the data browser. |
204
+ | `preventSort` | Boolean | yes | `false` | `true` | Prevent this column from being sortable. |
205
+ | `filterSortToTop` | Boolean | yes | `false` | `true` | Sort this column to the top in filter popup. |
206
+
207
+ ##### Scripts Configuration (`apps[].scripts[]`)
208
+
209
+ | Parameter | Type | Optional | Default | Example | Description |
210
+ | --------------------------|--------------------------------------------|----------|---------|-----------------|---------------------------------------------------|
211
+ | `title` | String | no | - | `"Delete User"` | Title in context menu and confirmation dialog. |
212
+ | `classes` | Array&lt;String&gt; \| Array&lt;Object&gt; | no | - | `["_User"]` | Classes for which script can run. |
213
+ | `cloudCodeFunction` | String | no | - | `"deleteUser"` | Parse Cloud Function name to execute. |
214
+ | `executionBatchSize` | Integer | yes | `1` | `10` | Batch size for multiple objects (runs in serial). |
215
+ | `showConfirmationDialog` | Boolean | yes | `false` | `true` | Show confirmation dialog before execution. |
216
+ | `confirmationDialogStyle` | String | yes | `info` | `critical` | Dialog style: `info` (blue) or `critical` (red). |
217
+
218
+ ##### Info Panel Configuration (`apps[].infoPanel[]`)
219
+
220
+ | Parameter | Type | Optional | Default | Example | Description |
221
+ | --------------------|---------------------|----------|---------|--------------------|-----------------------------------------------|
222
+ | `title` | String | no | - | `"User Details"` | Panel title. |
223
+ | `classes` | Array&lt;String&gt; | no | - | `["_User"]` | Classes for which panel is displayed. |
224
+ | `cloudCodeFunction` | String | no | - | `"getUserDetails"` | Cloud Function receiving selected object. |
225
+ | `prefetchObjects` | Number | yes | `0` | `2` | Number of next rows to prefetch. |
226
+ | `prefetchStale` | Number | yes | `0` | `10` | Seconds after which prefetched data is stale. |
227
+ | `prefetchImage` | Boolean | yes | `true` | `false` | Whether to prefetch image content. |
228
+ | `prefetchVideo` | Boolean | yes | `true` | `false` | Whether to prefetch video content. |
229
+ | `prefetchAudio` | Boolean | yes | `true` | `false` | Whether to prefetch audio content. |
230
+
231
+
232
+ ##### User Configuration (`users[]`)
233
+
234
+ | Parameter | Type | Optional | Default | CLI | Env Variable | Example | Description |
235
+ | ------------------|---------------------|----------|----------|------------------|---------------------------------|----------------------|----------------------------------------|
236
+ | `user` | String | no | - | `--userId` | `PARSE_DASHBOARD_USER_ID` | `"admin"` | Username for authentication. |
237
+ | `pass` | String | no | - | `--userPassword` | `PARSE_DASHBOARD_USER_PASSWORD` | `"pass"` | Password (plain or bcrypt hash). |
238
+ | `mfa` | String | yes | - | - | - | `"JBSWY3DPEHPK3PXP"` | MFA secret for TOTP. |
239
+ | `mfaAlgorithm` | String | yes | `"SHA1"` | - | - | `"SHA256"` | TOTP algorithm for MFA. |
240
+ | `mfaDigits` | Number | yes | `6` | - | - | `8` | Number of digits in MFA code. |
241
+ | `mfaPeriod` | Number | yes | `30` | - | - | `60` | MFA code validity period in seconds. |
242
+ | `readOnly` | Boolean | yes | `false` | - | - | `true` | Read-only access to all their apps. |
243
+ | `apps` | Array&lt;Object&gt; | yes | - | - | - | `[{...}]` | Apps user can access (all if omitted). |
244
+ | `apps[].appId` | String | no | - | - | - | `"myAppId"` | App ID user can access. |
245
+ | `apps[].readOnly` | Boolean | yes | `false` | - | - | `true` | Read-only access to this specific app. |
246
+
247
+ #### CLI & Server Options
248
+
249
+ | Parameter | Type | Optional | Default | CLI | Env Variable | Example | Description |
250
+ | ----------------------|---------|----------|--------------|-------------------------|------------------------------------------|-----------------| -------------------------------------------------|
251
+ | `host` | String | yes | `"0.0.0.0"` | `--host` | `HOST` | `"127.0.0.1"` | Host address to bind server. |
252
+ | `port` | Number | yes | `4040` | `--port` | `PORT` | `8080` | Port for dashboard server. |
253
+ | `mountPath` | String | yes | `"/"` | `--mountPath` | `MOUNT_PATH` | `"/dashboard"` | Mount path for application. |
254
+ | `allowInsecureHTTP` | Boolean | yes | `false` | `--allowInsecureHTTP` | `PARSE_DASHBOARD_ALLOW_INSECURE_HTTP` | `true` | Allow HTTP (use behind HTTPS proxy). |
255
+ | `sslKey` | String | yes | - | `--sslKey` | `PARSE_DASHBOARD_SSL_KEY` | `"/path/key"` | Path to SSL private key for HTTPS. |
256
+ | `sslCert` | String | yes | - | `--sslCert` | `PARSE_DASHBOARD_SSL_CERT` | `"/path/cert"` | Path to SSL certificate for HTTPS. |
257
+ | `cookieSessionSecret` | String | yes | Random | `--cookieSessionSecret` | `PARSE_DASHBOARD_COOKIE_SESSION_SECRET` | `"secret"` | Secret for session cookies (for multi-server). |
258
+ | `cookieSessionMaxAge` | Number | yes | Session-only | `--cookieSessionMaxAge` | `PARSE_DASHBOARD_COOKIE_SESSION_MAX_AGE` | `3600` | Session cookie expiration (seconds). |
259
+ | `dev` | Boolean | yes | `false` | `--dev` | - | - | Development mode (**DO NOT use in production**). |
260
+ | `config` | String | yes | - | `--config` | - | `"config.json"` | Path to JSON configuration file. |
261
+
262
+ #### Helper CLI Commands
263
+
264
+ | Command | Description |
265
+ | ---------------|---------------------------------------------------------------------|
266
+ | `--createUser` | Interactive tool to generate secure user passwords and MFA secrets. |
267
+ | `--createMFA` | Interactive tool to generate MFA secrets for existing users. |
172
268
 
173
269
  ### File
174
270
 
175
- You can also start the dashboard from the command line with a config file. To do this, create a new file called `parse-dashboard-config.json` inside your local Parse Dashboard directory hierarchy. The file should match the following format:
271
+ You can also start the dashboard from the command line with a config file. To do this, create a new file called `parse-dashboard-config.json` inside your local Parse Dashboard directory hierarchy. The file should match the following format:
176
272
 
177
273
  ```json
178
274
  {
@@ -927,7 +1023,10 @@ The following example dashboard configuration shows an info panel for the `_User
927
1023
  "classes": ["_User"],
928
1024
  "cloudCodeFunction": "getUserDetails",
929
1025
  "prefetchObjects": 2,
930
- "prefetchStale": 10
1026
+ "prefetchStale": 10,
1027
+ "prefetchImage": true,
1028
+ "prefetchVideo": true,
1029
+ "prefetchAudio": true
931
1030
  }
932
1031
  ]
933
1032
  }
@@ -1228,13 +1327,18 @@ Example:
1228
1327
 
1229
1328
  To reduce the time for info panel data to appear, data can be prefetched.
1230
1329
 
1231
- | Parameter | Type | Optional | Default | Example | Description |
1232
- |--------------------------------|--------|----------|---------|---------|-----------------------------------------------------------------------------------------------------------------------------------|
1233
- | `infoPanel[*].prefetchObjects` | Number | yes | `0` | `2` | Number of next rows to prefetch when browsing sequential rows. For example, `2` means the next 2 rows will be fetched in advance. |
1234
- | `infoPanel[*].prefetchStale` | Number | yes | `0` | `10` | Duration in seconds after which prefetched data is discarded as stale. |
1330
+ | Parameter | Type | Optional | Default | Example | Description |
1331
+ |--------------------------------|---------|----------|---------|---------|-----------------------------------------------------------------------------------------------------------------------------------|
1332
+ | `infoPanel[*].prefetchObjects` | Number | yes | `0` | `2` | Number of next rows to prefetch when browsing sequential rows. For example, `2` means the next 2 rows will be fetched in advance. |
1333
+ | `infoPanel[*].prefetchStale` | Number | yes | `0` | `10` | Duration in seconds after which prefetched data is discarded as stale. |
1334
+ | `infoPanel[*].prefetchImage` | Boolean | yes | `true` | `false` | Whether to prefetch image content when prefetching objects. Only applies when `prefetchObjects` is enabled. |
1335
+ | `infoPanel[*].prefetchVideo` | Boolean | yes | `true` | `false` | Whether to prefetch video content when prefetching objects. Only applies when `prefetchObjects` is enabled. |
1336
+ | `infoPanel[*].prefetchAudio` | Boolean | yes | `true` | `false` | Whether to prefetch audio content when prefetching objects. Only applies when `prefetchObjects` is enabled. |
1235
1337
 
1236
1338
  Prefetching is particularly useful when navigating through lists of objects. To optimize performance and avoid unnecessary data loading, prefetching is triggered only after the user has moved through 3 consecutive rows using the keyboard down-arrow key or by mouse click.
1237
1339
 
1340
+ When `prefetchObjects` is enabled, media content (images, videos, and audio) in the info panel can also be prefetched to improve loading performance. By default, all media types are prefetched, but you can selectively disable prefetching for specific media types using the `prefetchImage`, `prefetchVideo`, and `prefetchAudio` options.
1341
+
1238
1342
  ### Freeze Columns
1239
1343
 
1240
1344
  ▶️ *Core > Browser > Freeze column*
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "parse-dashboard",
3
- "version": "8.0.0-alpha.2",
3
+ "version": "8.0.0-alpha.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/parse-community/parse-dashboard"