parse-dashboard-analytics 7.4.0 → 7.4.1
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.
|
@@ -162,7 +162,13 @@ module.exports = (options) => {
|
|
|
162
162
|
if (allowInsecureHTTP || trustProxy || dev) {app.enable('trust proxy');}
|
|
163
163
|
|
|
164
164
|
config.data.trustProxy = trustProxy;
|
|
165
|
-
const dashboardOptions = {
|
|
165
|
+
const dashboardOptions = {
|
|
166
|
+
allowInsecureHTTP,
|
|
167
|
+
cookieSessionSecret,
|
|
168
|
+
dev,
|
|
169
|
+
cookieSessionMaxAge,
|
|
170
|
+
cookieSessionStore: config.data.cookieSessionStore
|
|
171
|
+
};
|
|
166
172
|
app.use(mountPath, parseDashboard(config.data, dashboardOptions));
|
|
167
173
|
let server;
|
|
168
174
|
if(!configSSLKey || !configSSLCert){
|
package/README.md
CHANGED
|
@@ -170,11 +170,14 @@ After starting the dashboard, you can visit http://localhost:4040 in your browse
|
|
|
170
170
|
## Compatibility
|
|
171
171
|
|
|
172
172
|
### Parse Server
|
|
173
|
-
Parse Dashboard is compatible with the following Parse Server
|
|
173
|
+
Parse Dashboard is compatible with the following versions of Parse Server.
|
|
174
174
|
|
|
175
|
-
| Parse Dashboard
|
|
176
|
-
|
|
177
|
-
| >=1.0
|
|
175
|
+
| Parse Dashboard | Parse Server |
|
|
176
|
+
|-----------------|------------------|
|
|
177
|
+
| >= 1.0.0 | >= 2.1.4 < 7.0.0 |
|
|
178
|
+
| >= 8.0.0 | >= 7.0.0 |
|
|
179
|
+
|
|
180
|
+
Parse Dashboard automatically checks the Parse Server version when connecting and displays a warning if the server version does not meet the minimum required version. The required Parse Server version is defined in the `supportedParseServerVersion` field in `package.json`.
|
|
178
181
|
|
|
179
182
|
### Node.js
|
|
180
183
|
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.
|
|
@@ -189,32 +192,130 @@ Parse Dashboard is continuously tested with the most recent releases of Node.js
|
|
|
189
192
|
|
|
190
193
|
### Options
|
|
191
194
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
|
197
|
-
|
|
198
|
-
| `apps
|
|
199
|
-
| `
|
|
200
|
-
| `
|
|
201
|
-
| `
|
|
202
|
-
| `
|
|
203
|
-
| `
|
|
204
|
-
| `
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
|
210
|
-
|
|
|
211
|
-
| `
|
|
212
|
-
| `
|
|
213
|
-
| `
|
|
195
|
+
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.
|
|
196
|
+
|
|
197
|
+
#### Root Configuration Keys
|
|
198
|
+
|
|
199
|
+
| Key | Type | Required | Default | CLI | Env Variable | Example | Description | Links to Details |
|
|
200
|
+
|-----|------|----------|---------|-----|--------------|---------|-------------|------------------|
|
|
201
|
+
| `apps` | Array<Object> | Yes | - | - | `PARSE_DASHBOARD_CONFIG` | `[{...}]` | Array of Parse Server apps to manage | [App Configuration](#app-configuration-apps-array) |
|
|
202
|
+
| `users` | Array<Object> | No | - | - | - | `[{...}]` | User accounts for dashboard authentication | [User Configuration](#user-configuration-users) |
|
|
203
|
+
| `useEncryptedPasswords` | Boolean | No | `false` | - | - | `true` | Use bcrypt hashes instead of plain text passwords | - |
|
|
204
|
+
| `trustProxy` | Boolean \| Number | No | `false` | `--trustProxy` | `PARSE_DASHBOARD_TRUST_PROXY` | `1` | Trust X-Forwarded-* headers when behind proxy | - |
|
|
205
|
+
| `iconsFolder` | String | No | - | - | - | `"icons"` | Folder for app icons (relative or absolute path) | - |
|
|
206
|
+
| `agent` | Object | No | - | - | `PARSE_DASHBOARD_AGENT` (JSON) | `{...}` | AI agent configuration | [AI Agent Configuration](#ai-agent) |
|
|
207
|
+
| `enableResourceCache` | Boolean | No | `false` | - | - | `true` | Enable browser caching of dashboard resources | - |
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
##### App Configuration (`apps` array)
|
|
211
|
+
|
|
212
|
+
| Parameter | Type | Optional | Default | CLI | Env Variable | Example | Description |
|
|
213
|
+
| -------------------------- | ------------------- | -------- | --------- | -------------------- | ------------------------------------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------ |
|
|
214
|
+
| `appId` | String | no | - | `--appId` | `PARSE_DASHBOARD_APP_ID` | `"myAppId"` | The Application ID for your Parse Server instance. |
|
|
215
|
+
| `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. |
|
|
216
|
+
| `serverURL` | String | no | - | `--serverURL` | `PARSE_DASHBOARD_SERVER_URL` | `"http://localhost:1337/parse"` | The URL where your Parse Server is running. |
|
|
217
|
+
| `appName` | String | yes | `appId` | `--appName` | `PARSE_DASHBOARD_APP_NAME` | `"MyApp"` | Display name of the app. |
|
|
218
|
+
| `masterKeyTtl` | Number | yes | - | `--masterKeyTtl` | - | `3600` | TTL for master key cache in seconds (only when masterKey is a function). |
|
|
219
|
+
| `readOnlyMasterKey` | String | yes | - | - | - | `"myReadOnlyKey"` | Read-only master key that prevents mutations. |
|
|
220
|
+
| `clientKey` | String | yes | - | - | - | `"myClientKey"` | Client key for Parse SDK (legacy, mostly unused). |
|
|
221
|
+
| `javascriptKey` | String | yes | - | - | - | `"myJsKey"` | JavaScript key for Parse SDK (legacy, mostly unused). |
|
|
222
|
+
| `restKey` | String | yes | - | - | - | `"myRestKey"` | REST API key for server-side REST applications. |
|
|
223
|
+
| `windowsKey` | String | yes | - | - | - | `"myWindowsKey"` | Windows SDK key (legacy, mostly unused). |
|
|
224
|
+
| `webhookKey` | String | yes | - | - | - | `"myWebhookKey"` | Webhook key for Cloud Code Webhooks. |
|
|
225
|
+
| `fileKey` | String | yes | - | - | - | `"myFileKey"` | File key used for file migrations. |
|
|
226
|
+
| `graphQLServerURL` | String | yes | - | `--graphQLServerURL` | `PARSE_DASHBOARD_GRAPHQL_SERVER_URL` | `"http://localhost:1337/graphql"` | The URL where your Parse GraphQL Server is running. |
|
|
227
|
+
| `appNameForURL` | String | yes | `appName` | - | - | `"my-app"` | URL-friendly name used in dashboard URLs. |
|
|
228
|
+
| `production` | Boolean | yes | `false` | - | - | `true` | Mark as production environment. |
|
|
229
|
+
| `iconName` | String | yes | - | - | - | `"icon.png"` | Filename of app icon (requires global `iconsFolder`). |
|
|
230
|
+
| `primaryBackgroundColor` | String | yes | - | - | - | `"#FFA500"` | Primary background color (CSS value). |
|
|
231
|
+
| `secondaryBackgroundColor` | String | yes | - | - | - | `"#FF4500"` | Secondary background color (CSS value). |
|
|
232
|
+
| `supportedPushLocales` | Array<String> | yes | - | - | - | `["en","fr"]` | Supported locales for push notifications. |
|
|
233
|
+
| `preventSchemaEdits` | Boolean | yes | `false` | - | - | `true` | Prevent schema modifications through the dashboard. |
|
|
234
|
+
| `columnPreference` | Object | yes | - | - | - | `{"_User":[...]}` | Column visibility/sorting/filtering preferences. See [column preferences details](#prevent-columns-sorting). |
|
|
235
|
+
| `classPreference` | Object | yes | - | - | - | `{"_Role":{...}}` | Persistent filters for all users. See [persistent filters details](#persistent-filters). |
|
|
236
|
+
| `enableSecurityChecks` | Boolean | yes | `false` | - | - | `true` | Enable security checks under App Settings > Security. |
|
|
237
|
+
| `cloudConfigHistoryLimit` | Integer | yes | `100` | - | - | `200` | Number of historic Cloud Config values (0 to Number.MAX_SAFE_INTEGER). |
|
|
238
|
+
| `config` | Object | yes | - | - | - | `{...}` | Settings for storing dashboard config on server. |
|
|
239
|
+
| `config.className` | String | yes | - | - | - | `"DashboardConfig"` | Table name for dashboard configuration. |
|
|
240
|
+
| `scripts` | Array<Object> | yes | `[]` | - | - | `[{...}]` | Scripts for this app. See [scripts table below](#scripts). |
|
|
241
|
+
| `infoPanel` | Array<Object> | yes | - | - | - | `[{...}]` | Info panel config. See [info panel table below](#info-panel). |
|
|
242
|
+
|
|
243
|
+
##### Column Preference Configuration (`apps[].columnPreference.<className>[]`)
|
|
244
|
+
|
|
245
|
+
Each class in `columnPreference` can have an array of column configurations:
|
|
246
|
+
|
|
247
|
+
| Parameter | Type | Optional | Default | Example | Description |
|
|
248
|
+
| ------------------|---------|----------|---------|---------------|----------------------------------------------------|
|
|
249
|
+
| `name` | String | no | - | `"createdAt"` | Column/field name. |
|
|
250
|
+
| `visible` | Boolean | yes | `true` | `false` | Whether the column is visible in the data browser. |
|
|
251
|
+
| `preventSort` | Boolean | yes | `false` | `true` | Prevent this column from being sortable. |
|
|
252
|
+
| `filterSortToTop` | Boolean | yes | `false` | `true` | Sort this column to the top in filter popup. |
|
|
253
|
+
|
|
254
|
+
##### Scripts Configuration (`apps[].scripts[]`)
|
|
255
|
+
|
|
256
|
+
| Parameter | Type | Optional | Default | Example | Description |
|
|
257
|
+
| --------------------------|--------------------------------------------|----------|---------|-----------------|---------------------------------------------------|
|
|
258
|
+
| `title` | String | no | - | `"Delete User"` | Title in context menu and confirmation dialog. |
|
|
259
|
+
| `classes` | Array<String> \| Array<Object> | no | - | `["_User"]` | Classes for which script can run. |
|
|
260
|
+
| `cloudCodeFunction` | String | no | - | `"deleteUser"` | Parse Cloud Function name to execute. |
|
|
261
|
+
| `executionBatchSize` | Integer | yes | `1` | `10` | Batch size for multiple objects (runs in serial). |
|
|
262
|
+
| `showConfirmationDialog` | Boolean | yes | `false` | `true` | Show confirmation dialog before execution. |
|
|
263
|
+
| `confirmationDialogStyle` | String | yes | `info` | `critical` | Dialog style: `info` (blue) or `critical` (red). |
|
|
264
|
+
|
|
265
|
+
##### Info Panel Configuration (`apps[].infoPanel[]`)
|
|
266
|
+
|
|
267
|
+
| Parameter | Type | Optional | Default | Example | Description |
|
|
268
|
+
| --------------------|---------------------|----------|---------|--------------------|-----------------------------------------------|
|
|
269
|
+
| `title` | String | no | - | `"User Details"` | Panel title. |
|
|
270
|
+
| `classes` | Array<String> | no | - | `["_User"]` | Classes for which panel is displayed. |
|
|
271
|
+
| `cloudCodeFunction` | String | no | - | `"getUserDetails"` | Cloud Function receiving selected object. |
|
|
272
|
+
| `prefetchObjects` | Number | yes | `0` | `2` | Number of next rows to prefetch. |
|
|
273
|
+
| `prefetchStale` | Number | yes | `0` | `10` | Seconds after which prefetched data is stale. |
|
|
274
|
+
| `prefetchImage` | Boolean | yes | `true` | `false` | Whether to prefetch image content. |
|
|
275
|
+
| `prefetchVideo` | Boolean | yes | `true` | `false` | Whether to prefetch video content. |
|
|
276
|
+
| `prefetchAudio` | Boolean | yes | `true` | `false` | Whether to prefetch audio content. |
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
##### User Configuration (`users[]`)
|
|
280
|
+
|
|
281
|
+
| Parameter | Type | Optional | Default | CLI | Env Variable | Example | Description |
|
|
282
|
+
| ------------------|---------------------|----------|----------|------------------|---------------------------------|----------------------|----------------------------------------|
|
|
283
|
+
| `user` | String | no | - | `--userId` | `PARSE_DASHBOARD_USER_ID` | `"admin"` | Username for authentication. |
|
|
284
|
+
| `pass` | String | no | - | `--userPassword` | `PARSE_DASHBOARD_USER_PASSWORD` | `"pass"` | Password (plain or bcrypt hash). |
|
|
285
|
+
| `mfa` | String | yes | - | - | - | `"JBSWY3DPEHPK3PXP"` | MFA secret for TOTP. |
|
|
286
|
+
| `mfaAlgorithm` | String | yes | `"SHA1"` | - | - | `"SHA256"` | TOTP algorithm for MFA. |
|
|
287
|
+
| `mfaDigits` | Number | yes | `6` | - | - | `8` | Number of digits in MFA code. |
|
|
288
|
+
| `mfaPeriod` | Number | yes | `30` | - | - | `60` | MFA code validity period in seconds. |
|
|
289
|
+
| `readOnly` | Boolean | yes | `false` | - | - | `true` | Read-only access to all their apps. |
|
|
290
|
+
| `apps` | Array<Object> | yes | - | - | - | `[{...}]` | Apps user can access (all if omitted). |
|
|
291
|
+
| `apps[].appId` | String | no | - | - | - | `"myAppId"` | App ID user can access. |
|
|
292
|
+
| `apps[].readOnly` | Boolean | yes | `false` | - | - | `true` | Read-only access to this specific app. |
|
|
293
|
+
|
|
294
|
+
#### CLI & Server Options
|
|
295
|
+
|
|
296
|
+
| Parameter | Type | Optional | Default | CLI | Env Variable | Example | Description |
|
|
297
|
+
| ----------------------|---------|----------|--------------|-------------------------|------------------------------------------|-----------------| -------------------------------------------------|
|
|
298
|
+
| `host` | String | yes | `"0.0.0.0"` | `--host` | `HOST` | `"127.0.0.1"` | Host address to bind server. |
|
|
299
|
+
| `port` | Number | yes | `4040` | `--port` | `PORT` | `8080` | Port for dashboard server. |
|
|
300
|
+
| `mountPath` | String | yes | `"/"` | `--mountPath` | `MOUNT_PATH` | `"/dashboard"` | Mount path for application. |
|
|
301
|
+
| `allowInsecureHTTP` | Boolean | yes | `false` | `--allowInsecureHTTP` | `PARSE_DASHBOARD_ALLOW_INSECURE_HTTP` | `true` | Allow HTTP (use behind HTTPS proxy). |
|
|
302
|
+
| `sslKey` | String | yes | - | `--sslKey` | `PARSE_DASHBOARD_SSL_KEY` | `"/path/key"` | Path to SSL private key for HTTPS. |
|
|
303
|
+
| `sslCert` | String | yes | - | `--sslCert` | `PARSE_DASHBOARD_SSL_CERT` | `"/path/cert"` | Path to SSL certificate for HTTPS. |
|
|
304
|
+
| `cookieSessionSecret` | String | yes | Random | `--cookieSessionSecret` | `PARSE_DASHBOARD_COOKIE_SESSION_SECRET` | `"secret"` | Secret for session cookies (for multi-server). |
|
|
305
|
+
| `cookieSessionMaxAge` | Number | yes | Session-only | `--cookieSessionMaxAge` | `PARSE_DASHBOARD_COOKIE_SESSION_MAX_AGE` | `3600` | Session cookie expiration (seconds). |
|
|
306
|
+
| `dev` | Boolean | yes | `false` | `--dev` | - | - | Development mode (**DO NOT use in production**). |
|
|
307
|
+
| `config` | String | yes | - | `--config` | - | `"config.json"` | Path to JSON configuration file. |
|
|
308
|
+
|
|
309
|
+
#### Helper CLI Commands
|
|
310
|
+
|
|
311
|
+
| Command | Description |
|
|
312
|
+
| ---------------|---------------------------------------------------------------------|
|
|
313
|
+
| `--createUser` | Interactive tool to generate secure user passwords and MFA secrets. |
|
|
314
|
+
| `--createMFA` | Interactive tool to generate MFA secrets for existing users. |
|
|
214
315
|
|
|
215
316
|
### File
|
|
216
317
|
|
|
217
|
-
You can also start the dashboard from the command line with a config file.
|
|
318
|
+
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:
|
|
218
319
|
|
|
219
320
|
```json
|
|
220
321
|
{
|
|
@@ -749,6 +850,55 @@ If you create a new user by running `parse-dashboard --createUser`, you will be
|
|
|
749
850
|
|
|
750
851
|
Parse Dashboard follows the industry standard and supports the common OTP algorithm `SHA-1` by default, to be compatible with most authenticator apps. If you have specific security requirements regarding TOTP characteristics (algorithm, digit length, time period) you can customize them by using the guided configuration mentioned above.
|
|
751
852
|
|
|
853
|
+
### Running Multiple Dashboard Replicas
|
|
854
|
+
|
|
855
|
+
When deploying Parse Dashboard with multiple replicas behind a load balancer, you need to use a shared session store to ensure that CSRF tokens and user sessions work correctly across all replicas. Without a shared session store, login attempts may fail with "CSRF token validation failed" errors when requests are distributed across different replicas.
|
|
856
|
+
|
|
857
|
+
#### Using a Custom Session Store
|
|
858
|
+
|
|
859
|
+
Parse Dashboard supports using any session store compatible with [express-session](https://github.com/expressjs/session). The `sessionStore` option must be configured programmatically when initializing the dashboard.
|
|
860
|
+
|
|
861
|
+
**Suggested Session Stores:**
|
|
862
|
+
|
|
863
|
+
- [connect-redis](https://www.npmjs.com/package/connect-redis) - Redis session store
|
|
864
|
+
- [connect-mongo](https://www.npmjs.com/package/connect-mongo) - MongoDB session store
|
|
865
|
+
- [connect-pg-simple](https://www.npmjs.com/package/connect-pg-simple) - PostgreSQL session store
|
|
866
|
+
- [memorystore](https://www.npmjs.com/package/memorystore) - Memory session store with TTL support
|
|
867
|
+
|
|
868
|
+
**Example using connect-redis:**
|
|
869
|
+
|
|
870
|
+
```js
|
|
871
|
+
const express = require('express');
|
|
872
|
+
const ParseDashboard = require('parse-dashboard');
|
|
873
|
+
const { createClient } = require('redis');
|
|
874
|
+
const RedisStore = require('connect-redis').default;
|
|
875
|
+
|
|
876
|
+
// Instantiate Redis client
|
|
877
|
+
const redisClient = createClient({ url: 'redis://localhost:6379' });
|
|
878
|
+
redisClient.connect();
|
|
879
|
+
|
|
880
|
+
// Instantiate Redis session store
|
|
881
|
+
const cookieSessionStore = new RedisStore({ client: redisClient });
|
|
882
|
+
|
|
883
|
+
// Configure dashboard with session store
|
|
884
|
+
const dashboard = new ParseDashboard({
|
|
885
|
+
apps: [...],
|
|
886
|
+
users: [...],
|
|
887
|
+
}, {
|
|
888
|
+
cookieSessionStore,
|
|
889
|
+
cookieSessionSecret: 'your-secret-key',
|
|
890
|
+
});
|
|
891
|
+
|
|
892
|
+
**Important Notes:**
|
|
893
|
+
|
|
894
|
+
- The `cookieSessionSecret` option must be set to the same value across all replicas to ensure session cookies work correctly.
|
|
895
|
+
- If `cookieSessionStore` is not provided, Parse Dashboard will use the default in-memory session store, which only works for single-instance deployments.
|
|
896
|
+
- For production deployments with multiple replicas, always configure a shared session store.
|
|
897
|
+
|
|
898
|
+
#### Alternative: Using Sticky Sessions
|
|
899
|
+
|
|
900
|
+
If you cannot use a shared session store, you can configure your load balancer to use sticky sessions (session affinity), which ensures that requests from the same user are always routed to the same replica. However, using a shared session store is the recommended approach as it provides better reliability and scalability.
|
|
901
|
+
|
|
752
902
|
### Separating App Access Based on User Identity
|
|
753
903
|
If you have configured your dashboard to manage multiple applications, you can restrict the management of apps based on user identity.
|
|
754
904
|
|
|
@@ -969,7 +1119,10 @@ The following example dashboard configuration shows an info panel for the `_User
|
|
|
969
1119
|
"classes": ["_User"],
|
|
970
1120
|
"cloudCodeFunction": "getUserDetails",
|
|
971
1121
|
"prefetchObjects": 2,
|
|
972
|
-
"prefetchStale": 10
|
|
1122
|
+
"prefetchStale": 10,
|
|
1123
|
+
"prefetchImage": true,
|
|
1124
|
+
"prefetchVideo": true,
|
|
1125
|
+
"prefetchAudio": true
|
|
973
1126
|
}
|
|
974
1127
|
]
|
|
975
1128
|
}
|
|
@@ -1270,13 +1423,18 @@ Example:
|
|
|
1270
1423
|
|
|
1271
1424
|
To reduce the time for info panel data to appear, data can be prefetched.
|
|
1272
1425
|
|
|
1273
|
-
| Parameter | Type
|
|
1274
|
-
|
|
1275
|
-
| `infoPanel[*].prefetchObjects` | Number
|
|
1276
|
-
| `infoPanel[*].prefetchStale` | Number
|
|
1426
|
+
| Parameter | Type | Optional | Default | Example | Description |
|
|
1427
|
+
|--------------------------------|---------|----------|---------|---------|-----------------------------------------------------------------------------------------------------------------------------------|
|
|
1428
|
+
| `infoPanel[*].prefetchObjects` | Number | yes | `0` | `2` | Number of navigation steps to prefetch ahead when browsing sequential rows. For example, `2` means data for the next 2 navigation steps will be fetched in advance. When using multi-panel mode with batch navigation enabled, each navigation step corresponds to a full batch of panels, so the total number of prefetched objects will be `prefetchObjects × panelCount`. |
|
|
1429
|
+
| `infoPanel[*].prefetchStale` | Number | yes | `0` | `10` | Duration in seconds after which prefetched data is discarded as stale. |
|
|
1430
|
+
| `infoPanel[*].prefetchImage` | Boolean | yes | `true` | `false` | Whether to prefetch image content when prefetching objects. Only applies when `prefetchObjects` is enabled. |
|
|
1431
|
+
| `infoPanel[*].prefetchVideo` | Boolean | yes | `true` | `false` | Whether to prefetch video content when prefetching objects. Only applies when `prefetchObjects` is enabled. |
|
|
1432
|
+
| `infoPanel[*].prefetchAudio` | Boolean | yes | `true` | `false` | Whether to prefetch audio content when prefetching objects. Only applies when `prefetchObjects` is enabled. |
|
|
1277
1433
|
|
|
1278
1434
|
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.
|
|
1279
1435
|
|
|
1436
|
+
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.
|
|
1437
|
+
|
|
1280
1438
|
### Freeze Columns
|
|
1281
1439
|
|
|
1282
1440
|
▶️ *Core > Browser > Freeze column*
|
|
@@ -1522,4 +1680,4 @@ As of April 5, 2017, Parse, LLC has transferred this code to the parse-community
|
|
|
1522
1680
|
|
|
1523
1681
|
[license-svg]: https://img.shields.io/badge/license-BSD-lightgrey.svg
|
|
1524
1682
|
[license-link]: LICENSE
|
|
1525
|
-
[open-collective-link]: https://opencollective.com/parse-server
|
|
1683
|
+
[open-collective-link]: https://opencollective.com/parse-server
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "parse-dashboard-analytics",
|
|
3
|
-
"version": "7.4.
|
|
3
|
+
"version": "7.4.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/pastordee/parse-dashboard"
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"Relation Editor",
|
|
23
23
|
"Enhanced Analytics Dashboard"
|
|
24
24
|
],
|
|
25
|
+
"supportedParseServerVersion": ">=7.0.0",
|
|
25
26
|
"keywords": [
|
|
26
27
|
"parse",
|
|
27
28
|
"dashboard",
|
|
@@ -43,15 +44,15 @@
|
|
|
43
44
|
"@babel/runtime": "7.27.4",
|
|
44
45
|
"@babel/runtime-corejs3": "7.28.3",
|
|
45
46
|
"bcryptjs": "3.0.2",
|
|
46
|
-
"body-parser": "2.2.
|
|
47
|
+
"body-parser": "2.2.1",
|
|
47
48
|
"commander": "13.1.0",
|
|
48
49
|
"connect-flash": "0.1.1",
|
|
49
|
-
"cookie-session": "2.1.1",
|
|
50
50
|
"copy-to-clipboard": "3.3.3",
|
|
51
51
|
"core-js": "3.42.0",
|
|
52
52
|
"cors": "^2.8.5",
|
|
53
53
|
"csurf": "1.11.0",
|
|
54
|
-
"express": "
|
|
54
|
+
"express": "4.21.2",
|
|
55
|
+
"express-session": "1.18.2",
|
|
55
56
|
"fast-deep-equal": "3.1.3",
|
|
56
57
|
"graphiql": "2.0.8",
|
|
57
58
|
"graphql": "16.11.0",
|
|
@@ -62,9 +63,8 @@
|
|
|
62
63
|
"node-fetch": "3.3.2",
|
|
63
64
|
"otpauth": "8.0.3",
|
|
64
65
|
"package-json": "7.0.0",
|
|
65
|
-
"parse": "
|
|
66
|
-
"
|
|
67
|
-
"passport": "0.5.3",
|
|
66
|
+
"parse": "7.1.2",
|
|
67
|
+
"passport": "0.7.0",
|
|
68
68
|
"passport-local": "1.0.0",
|
|
69
69
|
"prismjs": "1.30.0",
|
|
70
70
|
"prop-types": "15.8.1",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"@babel/eslint-parser": "7.28.0",
|
|
89
89
|
"@babel/plugin-proposal-decorators": "7.27.1",
|
|
90
90
|
"@babel/plugin-transform-runtime": "7.28.0",
|
|
91
|
-
"@babel/preset-env": "7.
|
|
91
|
+
"@babel/preset-env": "7.28.5",
|
|
92
92
|
"@babel/preset-react": "7.27.1",
|
|
93
93
|
"@eslint/compat": "1.3.1",
|
|
94
94
|
"@saithodev/semantic-release-backmerge": "4.0.1",
|