parse-dashboard 7.3.0-alpha.40 → 7.3.0-alpha.42

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.
@@ -126,6 +126,15 @@ object-assign
126
126
  * LICENSE file in the root directory of this source tree.
127
127
  */
128
128
 
129
+ /** @license React v16.14.0
130
+ * react-dom-server.browser.production.min.js
131
+ *
132
+ * Copyright (c) Facebook, Inc. and its affiliates.
133
+ *
134
+ * This source code is licensed under the MIT license found in the
135
+ * LICENSE file in the root directory of this source tree.
136
+ */
137
+
129
138
  /** @license React v16.14.0
130
139
  * react-dom.production.min.js
131
140
  *
@@ -350,6 +350,13 @@
350
350
  <path d="M58 75.25H7.81v-50.5H66V17H0v66h66V51h-8"/>
351
351
  <path d="M80.613 18.543l-7.732 7.733L79.07 32H47.52C36.73 32 28 41.24 28 52.03V66h10.885V52.03c0-4.76 3.873-9.03 8.634-9.03h31.543l-6.187 6.583 7.732 7.733L100 37.93 80.613 18.542z"/>
352
352
  </symbol>
353
+ <symbol id="sparkle-solid" viewBox="0 0 512 512">
354
+ <g>
355
+ <path class="st0" d="M247.355,106.9C222.705,82.241,205.833,39.18,197.46,0c-8.386,39.188-25.24,82.258-49.899,106.917&#xA;&#x9;&#x9;c-24.65,24.642-67.724,41.514-106.896,49.904c39.188,8.373,82.254,25.235,106.904,49.895c24.65,24.65,41.522,67.72,49.908,106.9&#xA;&#x9;&#x9;c8.373-39.188,25.24-82.258,49.886-106.917c24.65-24.65,67.724-41.514,106.896-49.904&#xA;&#x9;&#x9;C315.08,148.422,272.014,131.551,247.355,106.9z"/>
356
+ <path class="st0" d="M407.471,304.339c-14.714-14.721-24.81-40.46-29.812-63.864c-5.011,23.404-15.073,49.142-29.803,63.872&#xA;&#x9;&#x9;c-14.73,14.714-40.464,24.801-63.864,29.812c23.408,5.01,49.134,15.081,63.864,29.811c14.73,14.722,24.81,40.46,29.82,63.864&#xA;&#x9;&#x9;c5.001-23.413,15.081-49.142,29.802-63.872c14.722-14.722,40.46-24.802,63.856-29.82&#xA;&#x9;&#x9;C447.939,329.14,422.201,319.061,407.471,304.339z"/>
357
+ <path class="st0" d="M146.352,354.702c-4.207,19.648-12.655,41.263-25.019,53.626c-12.362,12.354-33.968,20.82-53.613,25.027&#xA;&#x9;&#x9;c19.645,4.216,41.251,12.656,53.613,25.027c12.364,12.362,20.829,33.96,25.036,53.618c4.203-19.658,12.655-41.255,25.023-53.626&#xA;&#x9;&#x9;c12.354-12.362,33.964-20.82,53.605-25.035c-19.64-4.2-41.251-12.656-53.613-25.019&#xA;&#x9;&#x9;C159.024,395.966,150.555,374.351,146.352,354.702z"/>
358
+ </g>
359
+ </symbol>
353
360
  <symbol id="trash-outline" viewBox="0 0 100 100">
354
361
  <path d="M88 20.994C88 14.834 82.524 10 76.363 10H60.48c-.453-5.49-5.056-10-10.66-10S39.61 4.51 39.156 10h-15.52C17.474 10 12 14.833 12 20.994v15.874h4.024v51.96c0 6.16 5.013 11.172 11.174 11.172h45.604c6.16 0 11.173-5.012 11.173-11.173v-51.96H88V20.995zM49.82 5.932c2.328 0 4.266 1.86 4.684 4.068h-9.37c.417-2.21 2.356-4.068 4.685-4.068zM23.635 19h52.727C77.62 19 79 19.738 79 20.994V28H21v-7.006C21 19.738 22.38 19 23.636 19zM75.08 88.827c0 1.255-1.023 2.277-2.278 2.277H27.198c-1.256 0-2.278-1.022-2.278-2.277v-51.96h6.148V83c0 1.64 1.328 2.966 2.966 2.966C35.672 85.966 37 84.64 37 83V36.868h10.034V83c0 1.64 1.328 2.966 2.966 2.966 1.64 0 2.966-1.328 2.966-2.966V36.868H63V83c0 1.64 1.36 2.966 3 2.966s3-1.328 3-2.966V36.868h6.08v51.96z"/>
355
362
  </symbol>
package/README.md CHANGED
@@ -74,10 +74,14 @@ Parse Dashboard is a standalone dashboard for managing your [Parse Server](https
74
74
  - [Panel Item](#panel-item)
75
75
  - [Prefetching](#prefetching)
76
76
  - [Freeze Columns](#freeze-columns)
77
- - [Browse as User](#browse-as-user)
78
- - [Change Pointer Key](#change-pointer-key)
79
- - [Limitations](#limitations)
80
- - [CSV Export](#csv-export)
77
+ - [Browse as User](#browse-as-user)
78
+ - [Change Pointer Key](#change-pointer-key)
79
+ - [Limitations](#limitations)
80
+ - [CSV Export](#csv-export)
81
+ - [AI Agent](#ai-agent)
82
+ - [Configuration](#configuration)
83
+ - [Providers](#providers)
84
+ - [OpenAI](#openai)
81
85
  - [Views](#views)
82
86
  - [Data Sources](#data-sources)
83
87
  - [Aggregation Pipeline](#aggregation-pipeline)
@@ -85,6 +89,7 @@ Parse Dashboard is a standalone dashboard for managing your [Parse Server](https
85
89
  - [View Table](#view-table)
86
90
  - [Pointer](#pointer)
87
91
  - [Link](#link)
92
+ - [Image](#image)
88
93
  - [Contributing](#contributing)
89
94
 
90
95
  # Getting Started
@@ -1230,7 +1235,7 @@ Prefetching is particularly useful when navigating through lists of objects. To
1230
1235
 
1231
1236
  Right-click on a table column header to freeze columns from the left up to the clicked column in the data browser. When scrolling horizontally, the frozen columns remain visible while the other columns scroll underneath.
1232
1237
 
1233
- ## Browse as User
1238
+ ### Browse as User
1234
1239
 
1235
1240
  ▶️ *Core > Browser > Browse*
1236
1241
 
@@ -1238,20 +1243,21 @@ This feature allows you to use the data browser as another user, respecting that
1238
1243
 
1239
1244
  > ⚠️ Logging in as another user will trigger the same Cloud Triggers as if the user logged in themselves using any other login method. Logging in as another user requires to enter that user's password.
1240
1245
 
1241
- ## Change Pointer Key
1246
+ ### Change Pointer Key
1242
1247
 
1243
1248
  ▶️ *Core > Browser > Edit > Change pointer key*
1244
1249
 
1245
1250
  This feature allows you to change how a pointer is represented in the browser. By default, a pointer is represented by the `objectId` of the linked object. You can change this to any other column of the object class. For example, if class `Installation` has a field that contains a pointer to class `User`, the pointer will show the `objectId` of the user by default. You can change this to display the field `email` of the user, so that a pointer displays the user's email address instead.
1246
1251
 
1247
- ### Limitations
1252
+ #### Limitations
1248
1253
 
1249
1254
  - This does not work for an array of pointers; the pointer will always display the `objectId`.
1250
1255
  - System columns like `createdAt`, `updatedAt`, `ACL` cannot be set as pointer key.
1251
1256
  - This feature uses browser storage; switching to a different browser resets the pointer key to `objectId`.
1252
1257
 
1253
1258
  > ⚠️ For each custom pointer key in each row, a server request is triggered to resolve the custom pointer key. For example, if the browser shows a class with 50 rows and each row contains 3 custom pointer keys, a total of 150 separate server requests are triggered.
1254
- ## CSV Export
1259
+
1260
+ ### CSV Export
1255
1261
 
1256
1262
  ▶️ *Core > Browser > Export*
1257
1263
 
@@ -1259,6 +1265,83 @@ This feature will take either selected rows or all rows of an individual class a
1259
1265
 
1260
1266
  > ⚠️ There is currently a 10,000 row limit when exporting all data. If more than 10,000 rows are present in the class, the CSV file will only contain 10,000 rows.
1261
1267
 
1268
+ ## AI Agent
1269
+
1270
+ The Parse Dashboard includes an AI agent that can help manage your Parse Server data through natural language commands. The agent can perform operations like creating classes, adding data, querying records, and more.
1271
+
1272
+ > [!Caution]
1273
+ > The AI agent has full access to your database using the master key. It can read, modify, and delete any data. This feature is highly recommended for development environments only. Always back up important data before using the AI agent.
1274
+
1275
+ ### Configuration
1276
+
1277
+ To configure the AI agent for your dashboard, you need to add the `agent` configuration to your Parse Dashboard config:
1278
+
1279
+ ```json
1280
+ {
1281
+ "apps": [
1282
+ // ...
1283
+ ],
1284
+ "agent": {
1285
+ "models": [
1286
+ {
1287
+ "name": "ChatGPT 4.1",
1288
+ "provider": "openai",
1289
+ "model": "gpt-4.1",
1290
+ "apiKey": "YOUR_OPENAI_API_KEY"
1291
+ },
1292
+ ]
1293
+ }
1294
+ }
1295
+ ```
1296
+
1297
+ | Parameter | Type | Required | Description |
1298
+ |-----------------------------|--------|----------|--------------------------------------------------------------------------------|
1299
+ | `agent` | Object | Yes | The AI agent configuration object. |
1300
+ | `agent.models` | Array | Yes | Array of AI model configurations available to the agent. |
1301
+ | `agent.models[*].name` | String | Yes | The display name for the model (e.g., `ChatGPT 4.1`). |
1302
+ | `agent.models[*].provider` | String | Yes | The AI provider identifier (e.g., "openai"). |
1303
+ | `agent.models[*].model` | String | Yes | The specific model name from the provider (e.g., `gpt-4.1`). |
1304
+ | `agent.models[*].apiKey` | String | Yes | The API key for authenticating with the AI provider. |
1305
+
1306
+ The agent will use the configured models to process natural language commands and perform database operations using the master key from your app configuration.
1307
+
1308
+ ### Providers
1309
+
1310
+ > [!Note]
1311
+ > Currently, only OpenAI models are supported. Support for additional providers may be added in future releases.
1312
+
1313
+ #### OpenAI
1314
+
1315
+ To get an OpenAI API key for use with the AI agent:
1316
+
1317
+ 1. **Create an OpenAI account**: Visit [platform.openai.com](https://platform.openai.com) and sign up for an account if you don't already have one.
1318
+
1319
+ 2. **Access the API section**: Once logged in, navigate to the API section of your OpenAI dashboard.
1320
+
1321
+ 3. **Create a new project**:
1322
+ - Go to the "Projects" section
1323
+ - Click "Create project"
1324
+ - Name your project "Parse-Dashboard" (or any descriptive name)
1325
+ - Complete the project setup
1326
+
1327
+ 4. **Configure model access**:
1328
+ - In your project, navigate to "Limits > Model Usage"
1329
+ - Select the AI models you want to use (e.g., `gpt-4`, `gpt-3.5-turbo`)
1330
+ - These model names will be used as the `agent.models[*].model` parameter in your dashboard configuration
1331
+
1332
+ 5. **Generate an API key**:
1333
+ - Go to the "API Keys" page in your project settings
1334
+ - Click "Create new secret key"
1335
+ - Give your key a descriptive name (e.g., "Parse Dashboard Agent")
1336
+ - Copy the generated API key immediately (you won't be able to see it again)
1337
+
1338
+ 6. **Set up billing**: Make sure you have a valid payment method added to your OpenAI account, as API usage incurs charges.
1339
+
1340
+ 7. **Configure the dashboard**: Add the API key to your Parse Dashboard configuration as shown in the example above.
1341
+
1342
+ > [!Important]
1343
+ > Keep your API key secure and never commit it to version control. Consider using environment variables or secure configuration management for production deployments.
1344
+
1262
1345
  ## Views
1263
1346
 
1264
1347
  ▶️ *Core > Views*
@@ -1362,6 +1445,25 @@ In the example above, the query string will be escaped and added to the url, res
1362
1445
  > [!Note]
1363
1446
  > For security reasons, the link `<a>` tag contains the `rel="noreferrer"` attribute, which prevents the target website to know the referring website which in this case is the Parse Dashboard URL. That attribute is widely supported across modern browsers, but if in doubt check your browser's compatibility.
1364
1447
 
1448
+ #### Image
1449
+
1450
+ Images are rendered directly in the output table with an `<img>` tag. The content mode is always "scale to fit", meaning that if the image file is 100x50px and the specified dimensions are 50x50px, it would display as 50x25px, since it's scaled maintaining aspect ratio.
1451
+
1452
+ Example:
1453
+
1454
+ ```json
1455
+ {
1456
+ "__type": "Image",
1457
+ "url": "https://example.com/image.png",
1458
+ "width": "50",
1459
+ "height": "50",
1460
+ "alt": "Image"
1461
+ }
1462
+ ```
1463
+
1464
+ > [!Warning]
1465
+ > 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.
1466
+
1365
1467
  # Contributing
1366
1468
 
1367
1469
  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": "7.3.0-alpha.40",
3
+ "version": "7.3.0-alpha.42",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/parse-community/parse-dashboard"
@@ -53,6 +53,7 @@
53
53
  "immutable-devtools": "0.1.5",
54
54
  "inquirer": "12.6.3",
55
55
  "js-beautify": "1.15.4",
56
+ "node-fetch": "3.3.2",
56
57
  "otpauth": "8.0.3",
57
58
  "package-json": "7.0.0",
58
59
  "parse": "3.5.1",