Skip to content

Commit 5fbfcbe

Browse files
committed
Merge branch 'release/v0.12.0'
2 parents b383ed2 + 62f9309 commit 5fbfcbe

File tree

193 files changed

+3771
-1658
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

193 files changed

+3771
-1658
lines changed

.github/workflows/ci.yml

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
name: CI
2+
# Controls when the workflow will run
3+
on:
4+
# Triggers the workflow on push or pull request events but only for the develop branch
5+
push:
6+
branches: [develop, main]
7+
pull_request:
8+
# Allows you to run this workflow manually from the Actions tab
9+
workflow_dispatch:
10+
11+
concurrency:
12+
group: ${{ github.workflow }}-${{ (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main') && github.run_number || github.ref }}
13+
cancel-in-progress: true
14+
15+
env:
16+
FORCE_COLOR: true
17+
NODE_OPTIONS: "--max-old-space-size=4096"
18+
LOCKBOX_MASTER_KEY: lockbox-master-key
19+
SECRET_KEY_BASE: secrret-key-base
20+
NODE_ENV: test
21+
PG_HOST: postgres
22+
PG_PORT: 5432
23+
PG_USER: postgres
24+
PG_PASS: postgres
25+
PG_DB: tooljet_test
26+
27+
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
28+
jobs:
29+
build:
30+
runs-on: ubuntu-latest
31+
32+
steps:
33+
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
34+
- uses: actions/checkout@v2
35+
36+
- name: Use Node.js 14.17.3
37+
uses: actions/setup-node@v2
38+
with:
39+
node-version: 14.17.3
40+
41+
- name: Cache node modules
42+
uses: actions/cache@v2
43+
env:
44+
cache-name: cache-node-modules
45+
with:
46+
# npm cache files are stored in `~/.npm` on Linux/macOS
47+
path: ~/.npm
48+
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
49+
restore-keys: |
50+
${{ runner.os }}-build-${{ env.cache-name }}-
51+
${{ runner.os }}-build-
52+
${{ runner.os }}-
53+
54+
- run: npm i -g [email protected]
55+
- run: npm run build
56+
57+
lint:
58+
runs-on: ubuntu-latest
59+
60+
steps:
61+
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
62+
- uses: actions/checkout@v2
63+
64+
- name: Use Node.js 14.17.3
65+
uses: actions/setup-node@v2
66+
with:
67+
node-version: 14.17.3
68+
69+
- name: Cache node modules
70+
uses: actions/cache@v2
71+
env:
72+
cache-name: cache-node-modules
73+
with:
74+
# npm cache files are stored in `~/.npm` on Linux/macOS
75+
path: ~/.npm
76+
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
77+
restore-keys: |
78+
${{ runner.os }}-build-${{ env.cache-name }}-
79+
${{ runner.os }}-build-
80+
${{ runner.os }}-
81+
82+
- run: npm i -g [email protected]
83+
- run: npm --prefix frontend ci && npm --prefix server ci
84+
- run: npm --prefix server run lint && npm --prefix frontend run lint
85+
86+
unit-test:
87+
runs-on: ubuntu-latest
88+
needs: build
89+
container: node:14.17.3-buster
90+
services:
91+
postgres:
92+
image: postgres
93+
env:
94+
POSTGRES_PASSWORD: postgres
95+
# Set health checks to wait until postgres has started
96+
options: >-
97+
--health-cmd pg_isready
98+
--health-interval 10s
99+
--health-timeout 5s
100+
--health-retries 5
101+
steps:
102+
- uses: actions/checkout@v2
103+
- name: Cache node modules
104+
uses: actions/cache@v2
105+
env:
106+
cache-name: cache-node-modules
107+
with:
108+
# npm cache files are stored in `~/.npm` on Linux/macOS
109+
path: ~/.npm
110+
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
111+
restore-keys: |
112+
${{ runner.os }}-build-${{ env.cache-name }}-
113+
${{ runner.os }}-build-
114+
${{ runner.os }}-
115+
- run: apt update && apt install -y postgresql
116+
- run: npm i -g [email protected]
117+
- run: npm --prefix server ci
118+
- run: npm --prefix server run db:create
119+
- run: npm --prefix server run db:migrate
120+
- run: npm --prefix server run test
121+
122+
e2e-test:
123+
runs-on: ubuntu-latest
124+
needs: build
125+
container: node:14.17.3-buster
126+
services:
127+
postgres:
128+
image: postgres
129+
env:
130+
POSTGRES_PASSWORD: postgres
131+
# Set health checks to wait until postgres has started
132+
options: >-
133+
--health-cmd pg_isready
134+
--health-interval 10s
135+
--health-timeout 5s
136+
--health-retries 5
137+
steps:
138+
- uses: actions/checkout@v2
139+
- name: Cache node modules
140+
uses: actions/cache@v2
141+
env:
142+
cache-name: cache-node-modules
143+
with:
144+
# npm cache files are stored in `~/.npm` on Linux/macOS
145+
path: ~/.npm
146+
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
147+
restore-keys: |
148+
${{ runner.os }}-build-${{ env.cache-name }}-
149+
${{ runner.os }}-build-
150+
${{ runner.os }}-
151+
- run: apt update && apt install -y postgresql
152+
- run: npm i -g [email protected]
153+
- run: npm --prefix server ci
154+
- run: npm --prefix server run db:create
155+
- run: npm --prefix server run db:migrate
156+
- run: npm --prefix server run test:e2e -- --silent

.version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.11.1
1+
0.12.0

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ You can deploy ToolJet on Heroku for free using the one-click-deployment button
5656

5757
[GitHub contributor leaderboard using ToolJet](https://blog.tooljet.io/building-a-github-contributor-leaderboard-using-tooljet/)<br>
5858
[Cryptocurrency dashboard using ToolJet](https://blog.tooljet.com/how-to-build-a-cryptocurrency-dashboard-in-10-minutes/)<br>
59+
[WhatsApp CRM using ToolJet](https://blog.tooljet.com/build-a-whatsapp-crm-using-tooljet-within-10-mins/)<br>
5960

6061
## Documentation
6162
Documentation is available at https://docs.tooljet.com.

app.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@
4040
"SSO_DISABLE_SIGNUP": {
4141
"description": "Disable sign-up via SSO",
4242
"value": ""
43+
},
44+
"DISABLE_PASSWORD_LOGIN": {
45+
"description": "Disable logging in with username and password. (Do not turn this on unless you've configured SSO and additional admins)",
46+
"value": "false"
4347
}
4448
},
4549
"formation": {
@@ -63,4 +67,4 @@
6367
}
6468
}
6569
}
66-
}
70+
}

docs/docs/Enterprise/_category_.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"label": "Enterprise",
3+
"position": 8,
4+
"collapsed": true
5+
}

docs/docs/Enterprise/audit_logs.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Audit logs
2+
3+
The audit log is the report of all the activities done in your ToolJet account. It will capture and display events automatically by recording who performed an activity, what when, and where the activity was performed, along with other information such as IP address.
4+
5+
<img class="screenshot-full" src="/img/Enterprise/audit_logs/audit_logs.gif" alt="ToolJet - Enterprise - Audit logs" height="420"/>
6+
7+
### Filter audit logs
8+
9+
Audited events can be filtered using the below characteristics:
10+
11+
#### Select Users
12+
13+
Select a specific user from this dropdown to check all their activities.
14+
15+
#### Select Apps
16+
17+
The dropdown will list all the apps present in your account. Choose an app to filter the logs associated with that app.
18+
19+
#### Select Resources
20+
21+
| Resources | description |
22+
| ----------- | ----------- |
23+
| User | Filter all the User events like `USER_LOGIN`, `USER_SIGNUP`, `USER_INVITE`, AND `USER_INVITE_REDEEM`. |
24+
| App | Filter all the App events like `APP_CREATE`, `APP_UPDATE`,`APP_VIEW`,`APP_DELETE`,`APP_IMPORT`,`APP_EXPORT`,`APP_CLONE`. |
25+
| Data Query | Filters the events associated with Data Query like `DATA_QUERY_RUN`. |
26+
| Group Permission | All the events associated with Group Permissions will be filtered. Group Permissions include `GROUP_CREATE`, `GROUP_UPDATE`, `GROUP_DELETE`. |
27+
| App Group Permission | Within each group, you can set apps for read or edit privileges. These events gets recorded as App Group Permissions. |
28+
29+
#### Select Actions
30+
31+
| Actions | description |
32+
| ----------- | ----------- |
33+
| USER_LOGIN | This event is recorded everytime a user logins. |
34+
| USER_SIGNUP | This event is recorded everytime a new signup is made. |
35+
| USER_INVITE | You can invite users to your account from `Manage Users` section and an event is audited everytime an invite is sent. |
36+
| USER_INVITE_REDEEM | This event is recorded whenever an invite is redeemed. |
37+
| APP_CREATE | This event is recorded when a user creates a new app. |
38+
| APP_UPDATE | This event is recorded whenever actions like renaming the app, making the app public, editing shareable link, or deploying the app are made. |
39+
| APP_VIEW | This event is logged when someone views the launched app. (public apps isn't accounted for) |
40+
| APP_DELETE | This event is recorded whenever a user deletes an app from the dashboard. |
41+
| APP_IMPORT | This event is recorded whenever a user imports an app. |
42+
| APP_EXPORT | This event is recorded whenever an app is exported. |
43+
| APP_CLONE | This event is recorded whenever a clone of the existing app is created. |
44+
| DATA_QUERY_RUN | This event is logged whenever a data source is added, a query is created, or a whenever a query is run either from the query editor or from the launched app. |
45+
| GROUP_PERMISSION_CREATE | This event is recorded whenever a group is created. |
46+
| GROUP_PERMISSION_UPDATE | This event is recorded whenever an app or user is added to or removed from a group, or the permissions for a group are updated. |
47+
| GROUP_PERMISSION_DELETE | This event is recorded whenever a user group is deleted from an account. |
48+
| APP_GROUP_PERMISSION_UPDATE | For every app added in a user group, you can set privileges like `View` or `Edit` and whenever these privileges are updated this event is recorded. By default, the permission of an app for a user group is set to `View`. |
49+
50+
:::info
51+
It is mandatory to set a Data Range in `From` and `To` to filter audit logs.
52+
:::
53+
54+
### Understanding information from logs
55+
56+
<img class="screenshot-full" src="/img/Enterprise/audit_logs/reading_logs.png" alt="ToolJet - Enterprise - Reading logs" />
57+
58+
| Property | description |
59+
| ----------- | ----------- |
60+
| action_type | It is the type of action that was logged in this event. Refer [this](#select-actions) to know about actions. |
61+
| created_at | Displays the date and time of a logged event. |
62+
| id | Every event logged has a specific event id associated with it. |
63+
| ip_address | Displays the IP address from where the event was logged. |
64+
| metadata | Metadata includes two sub-properties - `tooljet_version` and `user_agent`. `tooljet_version` displays the version of ToolJet used for the logged event and `user_agent` contains information about the device and browser used for that event. |
65+
| organization_id | Every organization in ToolJet has an id associated with it and is recorded when an event occurs. |
66+
| resource_id | There are several [resources](#select-resources) and each resource that is created, an id get associated with it.|
67+
| resource_name | Displays the name of the [resources](#select-resources) that was logged in the event. For example, if an app was created or deleted then it will display the name of the app. |
68+
| resource_type | isplays the type of the [resources](#select-resources) that was logged in the event. |
69+
| user_id | Every user account in ToolJet has an id associated with it and is recorded when an event occurs. |

docs/docs/actions/_category_.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"label": "Actions Reference",
3-
"position": 6,
3+
"position": 7,
44
"collapsed": true
55
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"label": "Contributing Guide",
3-
"position": 6,
3+
"position": 9,
44
"collapsed": true
5-
}
5+
}

docs/docs/data-sources/airtable.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ sidebar_position: 1
77

88
ToolJet can connect to your Airtable account to read and write data. Airtable API key is required to create an Airtable datasource on ToolJet. You can generate API key by visiting [Airtable account page](https://airtable.com/account).
99

10-
<img class="screenshot-full" src="/img/datasource-reference/airtable/airtable-intro.gif" alt="ToolJet - ToolJet - Datasource Airtable" height="420" />
10+
<img class="screenshot-full" src="/img/datasource-reference/airtable/airtable-intro.gif" alt="ToolJet - Datasource Airtable" height="420" />
1111

1212
:::info
1313
Airtable API has a rate limit, and at the time of writing this documentation, the limit is five(5) requests per second per base. You can read more about rate limits here [Airtable API]( https://airtable.com/api ).

docs/docs/data-sources/sendgrid.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
sidebar_position: 11
3+
---
4+
5+
# SendGrid
6+
7+
ToolJet can connect to your SendGrid account to send emails.
8+
9+
<img class="screenshot-full" src="/img/datasource-reference/sendgrid/sendgrid-datasource.png" alt="ToolJet - Datasource SendGrid" height="420" />
10+
11+
:::info
12+
The SendGrid API Datasource supports for interaction with the mail endpoint of the [SendGrid v3 API](https://docs.sendgrid.com/api-reference/how-to-use-the-sendgrid-v3-api/authentication).
13+
:::
14+
15+
## Connection
16+
To add a new SendGrid API datasource, click the Datasource manager icon on the left-sidebar of the app builder and click on the `Add datasource` button, then select SendGrid API from the modal that pops up.
17+
18+
Enter your **SendGrid API key** in the "API key" field.
19+
20+
:::tip
21+
SendGrid API key is required to create an SendGrid datasource on ToolJet. You can generate API key by visiting [SendGrid account page](https://app.sendgrid.com/settings/api_keys).
22+
:::
23+
24+
Click on the 'Save' button to save the datasource.
25+
26+
## Supported operations
27+
1. Email service
28+
29+
30+
### Email service
31+
Required parameters:
32+
- Send email to
33+
- Send email from
34+
- Subject
35+
- Body as text
36+
37+
38+
Optional parameters:
39+
- Body as HTML
40+
41+
<img class="screenshot-full" src="/img/datasource-reference/sendgrid/sendgrid-query.jpg" alt="ToolJet - Query SendGrid" height="420"/>
42+
43+
:::info
44+
**Send mail to** - accepts a array/list of emails separated by comma.
45+
For example:
46+
47+
:::
48+
49+
:::tip
50+
**Send a single email to multiple recipients** - The `Send mail to` field can contain an array of recipients, which will send a single email with all of the recipients in the field.
51+
52+
**Send multiple individual emails to multiple recipients** - set <b>Multiple recipients</b> field to `{{true}}` and the `Send mail to` field will be split into multiple emails and send to each recipient.
53+
:::
54+
55+
56+
:::note
57+
NOTE: Query should be saved before running.
58+
:::

docs/docs/data-sources/typesense.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# TypeSense
2+
ToolJet can connect to your TypeSense deployment to read and write data.
3+
4+
## Supported operations
5+
6+
:::tip
7+
Documentation for each of these operations are available at https://typesense.org/docs/
8+
:::
9+
10+
1. Create collection
11+
2. Index document
12+
3. Search documents
13+
4. Get document
14+
5. Update document
15+
6. Delete document
16+
17+
:::tip
18+
Make sure that you supply JSON strings instead of JavaScript objects for any document or schema that is being passed to the server, in any of the above operations.
19+
:::
20+
21+
## Connection
22+
Please make sure the host/IP of the TypeSense deployment is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please whitelist our IP.
23+
24+
ToolJet requires the following to connect to your TypeSense deployment:
25+
- Host
26+
- Port
27+
- API Key
28+
- Protocol

docs/docs/deployment/env-vars.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,14 @@ If you want to restrict the signups and allow new users only by invitations, set
4848
You will still be able to see the signup page but won't be able to successfully submit the form.
4949
:::
5050

51+
#### Disable login and signup using username and password
52+
53+
:::info
54+
Use this feature only if you have configured other methods of authentication, such as SSO.
55+
:::
56+
57+
If you want to restrict users from logging in using regular username and password, set the environment variable `DISABLE_PASSWORD_LOGIN` to `true`.
58+
5159
#### Serve client as a server end-point ( optional )
5260

5361
By default, the `SERVE_CLIENT` variable will be set to `false` and the server won't serve the client at its `/` end-point.

0 commit comments

Comments
 (0)