Compare commits

...

523 Commits

Author SHA1 Message Date
Rıdvan Akca
465dc8ba38 feat(notion): add update database item action 2024-01-15 18:20:13 +03:00
Ömer Faruk Aydın
1e3ab75bb7 Merge pull request #1538 from automatisch/remove-types-package
chore: Remove types package
2024-01-15 13:57:01 +01:00
Faruk AYDIN
5f6dd12a73 chore: Remove types package from web dependencies 2024-01-15 13:41:54 +01:00
Faruk AYDIN
d18c06d2c4 chore: Remove types package 2024-01-15 13:37:58 +01:00
Ömer Faruk Aydın
baf99a9cfe Merge pull request #1537 from automatisch/web/types
chore: Use types from the web package
2024-01-15 13:37:43 +01:00
Faruk AYDIN
159931a6ea chore: Use types from the web package 2024-01-15 13:30:48 +01:00
Ömer Faruk Aydın
7831f2925b Merge pull request #1536 from automatisch/docs/remove-typescript
Use JS for the documentation examples
2024-01-15 13:17:48 +01:00
Faruk AYDIN
8fcb7840de docs: Convert code examples to JS 2024-01-15 13:13:48 +01:00
Faruk AYDIN
9ece9461dc docs: Convert all file imports to ES modules 2024-01-15 13:10:26 +01:00
Faruk AYDIN
b304acaaba docs: Use .js file extension 2024-01-15 13:02:06 +01:00
Faruk AYDIN
5a1960609a docs: Use JS highlighter instead of TS 2024-01-15 12:56:43 +01:00
Faruk AYDIN
476aa6e3aa docs: Remove imports of automatisch types 2024-01-15 12:55:55 +01:00
Ömer Faruk Aydın
aa76007fd0 Merge pull request #1533 from automatisch/remove-cli
chore: Remove cli package
2024-01-14 21:06:46 +01:00
Faruk AYDIN
17a8813c4b chore: Remove build step from CI for cli 2024-01-14 20:13:23 +01:00
Faruk AYDIN
fe79fc9003 chore: Remove cli package 2024-01-14 20:10:23 +01:00
Ömer Faruk Aydın
ac8649ac18 Merge pull request #1532 from automatisch/seed-user
fix: Exit process after creating seed user
2024-01-13 03:07:05 +01:00
Faruk AYDIN
817db026b1 fix: Exit process after creating database and user 2024-01-13 02:59:00 +01:00
Faruk AYDIN
01ef97949b feat: Convert migration file names if there is a table 2024-01-13 02:58:28 +01:00
Faruk AYDIN
9e151051a8 fix: Exit process after creating seed user 2024-01-13 02:55:42 +01:00
Ömer Faruk Aydın
0feab23eb6 Merge pull request #1531 from automatisch/dockerfile-cloud
fix: Remove redundant branch tag for dockerfile cloud
2024-01-12 18:12:48 +01:00
Faruk AYDIN
8957f83939 fix: Remove redundant branch tag for dockerfile cloud 2024-01-12 18:08:55 +01:00
Ömer Faruk Aydın
3bf2bc94f3 Merge pull request #1517 from automatisch/models-js
feat: Convert model files to JS
2024-01-12 18:05:44 +01:00
Faruk AYDIN
8c3d5f1f4b feat: Convert old TS migration names to JS names 2024-01-12 17:50:09 +01:00
Faruk AYDIN
124e6e0811 feat: Execute db:migrate and db:seed:user for main instance 2024-01-12 17:30:05 +01:00
Faruk AYDIN
54d9d17d14 chore: Make dockerfile cloud work with main branch 2024-01-12 17:24:29 +01:00
Faruk AYDIN
62bdb7fb6d fix: Import statements of removed subscription job 2024-01-12 16:44:56 +01:00
Faruk AYDIN
af6574fdf1 feat: Do not build web when it's a worker instance 2024-01-12 16:44:44 +01:00
Faruk AYDIN
115a993cd2 feat: Convert cloud dockerfile to work without build step 2024-01-12 16:33:58 +01:00
Faruk AYDIN
188b6c2fe5 chore: Remove @automatisch/web from backend package 2024-01-12 16:10:37 +01:00
Faruk AYDIN
99adb2ceda feat: Update node version to 18 for Dockerfiles 2024-01-12 15:17:09 +01:00
Faruk AYDIN
6344a3bcef feat: Remove jest from dev dependencies 2024-01-12 14:23:03 +01:00
Faruk AYDIN
f62c17de0b fix: Remove redundant only statement from backend tests 2024-01-12 14:22:19 +01:00
Faruk AYDIN
9d269b8111 chore: Change CI node version to 18 2024-01-12 14:19:29 +01:00
Faruk AYDIN
49b26a9640 chore: Remove tsconfig file for backend package 2024-01-12 14:15:39 +01:00
Faruk AYDIN
dddb79eeb2 chore: Remove ts-jest from dev dependencies 2024-01-12 14:14:30 +01:00
Faruk AYDIN
b0909ecb98 chore: Change main and files of backend package 2024-01-12 14:13:45 +01:00
Faruk AYDIN
ec63ce0532 chore: Remove sinon from dependencies 2024-01-12 14:13:26 +01:00
Faruk AYDIN
1eb03e3afb chore: Remove all dev dependencies for types 2024-01-12 14:10:58 +01:00
Faruk AYDIN
26d906f1b7 chore: Remove ts-node and ts-node-dev libraries 2024-01-12 14:09:00 +01:00
Faruk AYDIN
af9ceac0b4 feat: Use vitest instead of jest for ESM compatibility 2024-01-12 14:07:59 +01:00
Faruk AYDIN
911159a14f chore: Update NodeJS from 16.15 to 18.19 to use vitest 2024-01-11 19:37:00 +01:00
Faruk AYDIN
6a639e4ac9 chore: Use ES module path to import auth files 2024-01-09 12:51:41 +01:00
Faruk AYDIN
c4a6c86a69 feat: Make web app path static for the backend 2024-01-08 18:36:36 +01:00
Faruk AYDIN
d2bac9d8d1 chore: Adjust cli package to use JS for linter 2024-01-08 17:23:06 +01:00
Faruk AYDIN
758aa50550 feat: Change playwright test setup for the backend 2024-01-08 17:20:03 +01:00
Faruk AYDIN
1af887cee7 chore: Remove backend build step from cli build 2024-01-08 17:11:26 +01:00
Faruk AYDIN
34b115c694 feat: Convert cli files to JS 2024-01-08 17:08:20 +01:00
Faruk AYDIN
8e4935409f feat: Add start worker CI step for the backend package 2024-01-08 16:40:20 +01:00
Faruk AYDIN
ca32d221c4 fix: Remove redundant lerna bootstrap command 2024-01-08 16:35:04 +01:00
Faruk AYDIN
e2de1fe038 feat: Add webhook secret key to CI step 2024-01-08 16:26:25 +01:00
Faruk AYDIN
80179062db feat: Add sample encryption key to CI step 2024-01-08 16:15:47 +01:00
Faruk AYDIN
7143620d25 feat: Remove root files for worker, server, logger and database 2024-01-08 16:09:58 +01:00
Faruk AYDIN
a0e51e2a7e feat: Change CI configuration to start backend instead of build 2024-01-08 16:02:48 +01:00
Faruk AYDIN
53dbd01cb1 feat: Adjust start command to work without dist folder 2024-01-08 15:55:53 +01:00
Faruk AYDIN
3607c16fd1 chore: Remove build:watch script from backend 2024-01-08 15:55:29 +01:00
Faruk AYDIN
4dfdd01295 chore: Remove build and related scripts from backend 2024-01-08 15:54:32 +01:00
Faruk AYDIN
8983a3c581 chore: Remove types folder of the backend package 2024-01-08 15:53:41 +01:00
Faruk AYDIN
9cddef9108 fix: Adjust migrations folder for new JS structure 2024-01-08 14:49:30 +01:00
Faruk AYDIN
3dbea953a7 chore: Remove tsc command from build script 2024-01-08 14:49:14 +01:00
Faruk AYDIN
962bbc04b5 fix: Change require.resolve to work with ESM 2024-01-08 12:25:21 +01:00
Faruk AYDIN
0804026d74 fix: Correct dirname for the app config 2024-01-08 12:24:53 +01:00
Faruk AYDIN
879aa1f9f8 fix: Eslint offenses for JS files 2024-01-07 20:09:36 +01:00
Faruk AYDIN
9ffe2c14df chore: Exclude apps folder from type roots 2024-01-07 19:38:07 +01:00
Faruk AYDIN
f0d2f07193 feat: Convert package scripts to work with JS 2024-01-07 19:36:44 +01:00
Faruk AYDIN
ccf5928262 feat: Adjust eslint configuration to work with JS 2024-01-07 19:33:18 +01:00
Faruk AYDIN
b2f8634008 chore: Use ES modules for backend app 2024-01-05 19:08:04 +01:00
Faruk AYDIN
43dba351c3 feat: Convert all app files to JS 2024-01-05 17:44:21 +01:00
Faruk AYDIN
b95478b635 chore: Use imports as ES modules 2024-01-04 22:24:42 +01:00
Faruk AYDIN
523f8a8951 feat: Convert app, server, worker ts files to JS 2024-01-04 21:47:34 +01:00
Faruk AYDIN
0f71924d06 feat: Convert migration files to JS 2024-01-04 21:44:40 +01:00
Faruk AYDIN
6d1bfc0be0 fix: Remove response data types to get rid of ts errors 2024-01-04 21:17:15 +01:00
Faruk AYDIN
b0f53268f6 feat: Convert factories files to JS 2024-01-04 21:10:42 +01:00
Faruk AYDIN
75f5db23df feat: Conveert bin folder to use JS files 2024-01-04 21:07:19 +01:00
Faruk AYDIN
85141812d9 feat: Convert helpers to use JS files 2024-01-04 19:55:41 +01:00
Faruk AYDIN
8819ddefa7 feat: Convert model files to JS 2024-01-04 19:27:13 +01:00
Ömer Faruk Aydın
b693c12500 Merge pull request #1515 from automatisch/queues-js
feat: Convert all queues folder to js files
2024-01-04 18:30:42 +01:00
Faruk AYDIN
cbe3db8187 feat: Convert all queues folder to js files 2024-01-04 18:20:08 +01:00
Ömer Faruk Aydın
7bccbc9471 Merge pull request #1514 from automatisch/root-resolvers
feat: Convert root query and mutation resolvers to js
2024-01-04 18:19:29 +01:00
Faruk AYDIN
a452520f1a feat: Convert root query and mutation resolvers to js 2024-01-04 18:12:27 +01:00
Ömer Faruk Aydın
a331b34b49 Merge pull request #1513 from automatisch/mutations-js
feat: Convert all mutation files to js
2024-01-04 18:11:48 +01:00
Faruk AYDIN
8d6f0f8e9e feat: Convert all mutation files to js 2024-01-04 18:04:54 +01:00
Ömer Faruk Aydın
47dd5a1949 Merge pull request #1512 from automatisch/queries-js
feat: Convert all query files to JS
2024-01-04 18:04:21 +01:00
Faruk AYDIN
387f8fd44c feat: Convert all query files to JS 2024-01-04 17:55:29 +01:00
Ömer Faruk Aydın
b69b1f6f67 Merge pull request #1511 from automatisch/workers-js
feat: Convert workers to use js files
2024-01-04 17:55:01 +01:00
Faruk AYDIN
d1427ffd54 feat: Convert workers to use js files 2024-01-04 17:48:52 +01:00
Ömer Faruk Aydın
00c876dd93 Merge pull request #1510 from automatisch/routes-js
feat: Convert routes folder to the js files
2024-01-04 17:48:26 +01:00
Faruk AYDIN
9d1aa9e59a feat: Convert routes folder to the js files 2024-01-04 17:41:52 +01:00
Ömer Faruk Aydın
aceebba99a Merge pull request #1509 from automatisch/errors-folder-js
feat: Convert ts files to js files for errors directory
2024-01-04 17:40:59 +01:00
Faruk AYDIN
7d6a8c4607 feat: Convert service folder to js files 2024-01-04 17:33:03 +01:00
Faruk AYDIN
5fd90355ae feat: Convert error handler ts file to js file 2024-01-04 17:17:25 +01:00
Faruk AYDIN
9b01a2a4da feat: Convert ts files to js files for errors directory 2024-01-04 17:14:28 +01:00
Ömer Faruk Aydın
a2986d70a0 Merge pull request #1508 from automatisch/controllers-js
feat: Convert ts files to js files for controllers
2024-01-04 17:13:39 +01:00
Faruk AYDIN
5dfa38ca99 feat: Convert ts files to js files for controllers 2024-01-04 17:06:19 +01:00
Ömer Faruk Aydın
157c6812cc Merge pull request #1507 from automatisch/config-folder-js
feat: Convert ts files to js files for config folder
2024-01-04 17:05:52 +01:00
Faruk AYDIN
215ff4b74a chore: Add eslint configuration specific to backend 2024-01-04 16:56:29 +01:00
Faruk AYDIN
ca7b8b865a feat: Convert ts files to js files for config folder 2024-01-04 16:52:52 +01:00
Ömer Faruk Aydın
fd0b12f6a1 Merge pull request #1506 from automatisch/allow-js
chore: Allow JS files for the backend package
2024-01-04 16:50:19 +01:00
Faruk AYDIN
2f3b739f9e chore: Allow JS files for the backend package 2024-01-04 16:34:55 +01:00
Ömer Faruk Aydın
3255ddca63 Merge pull request #1503 from automatisch/feature/helix-app
feat: Implement Helix app with new chat action
2024-01-02 21:20:50 +01:00
Faruk AYDIN
b5460712e6 feat: Implement Helix app with new chat action 2024-01-02 19:06:07 +01:00
Ömer Faruk Aydın
6f7dcc2b6e Merge pull request #1498 from automatisch/AUT-557
feat(self-hosted-llm): add send prompt and send chat prompt actions
2024-01-02 14:27:46 +01:00
Ömer Faruk Aydın
70d4800cb1 Merge pull request #1497 from automatisch/AUT-554
feat(azure-openai): add send prompt action
2024-01-02 14:27:20 +01:00
Ali BARIN
a8b85cdb0d feat(self-hosted-llm): add send prompt and send chat prompt actions 2023-12-20 16:18:39 +00:00
Ali BARIN
fe10523972 test: update first app as azure-openai 2023-12-20 14:51:30 +00:00
Ali BARIN
c975a56245 feat(azure-openai): add send prompt action 2023-12-20 14:48:33 +00:00
QAComet
d070e976b0 test(e2e-tests): run only on relevant changes in pull requests (#1495) 2023-12-15 18:51:58 +01:00
Ali BARIN
0caf6bfabb Merge pull request #1494 from automatisch/aut-551
feat: hide notifications page in mation instances
2023-12-15 18:00:08 +01:00
Ali BARIN
b842d7938f feat: hide notifications page in mation instances 2023-12-15 16:28:41 +00:00
Ali BARIN
cebbf84375 Merge pull request #1491 from automatisch/aut-548
feat: apply conditional mation styling
2023-12-15 11:40:12 +01:00
Ali BARIN
8608431490 feat: add conditional mation logo by default 2023-12-14 15:59:37 +00:00
Ali BARIN
78ba18b176 feat: apply conditional mation styling 2023-12-14 14:28:07 +00:00
Ali BARIN
f8c30c8526 Merge pull request #1475 from automatisch/aut-547
feat(queries/getAutomatischInfo): add mation
2023-12-14 11:15:35 +01:00
QAComet
693c9b85a5 test: run UI workflow only on changes outside of backend apps (#1462) 2023-12-14 10:45:15 +01:00
Ali BARIN
70bb7defd1 feat(queries/getAutomatischInfo): add mation 2023-12-12 17:37:27 +00:00
Ali BARIN
160377ca31 Merge pull request #1473 from automatisch/aut-545
docs(salesforce): update connection steps
2023-12-12 18:17:07 +01:00
Ali BARIN
2c0ce77a4e docs(salesforce): update connection steps 2023-12-12 17:08:15 +00:00
Ali BARIN
77fbb0c9da Merge pull request #1470 from automatisch/aut-538
fix(odoo): introduce secure connection option
2023-12-11 16:44:11 +01:00
Ali BARIN
5971425d23 fix(odoo): introduce secure connection option 2023-12-11 15:36:50 +00:00
Ali BARIN
aefff5c861 Merge pull request #1449 from automatisch/AUT-414
feat(zendesk): add new users trigger
2023-11-30 12:55:02 +01:00
Rıdvan Akca
a296b5e645 feat(zendesk): add new users trigger 2023-11-30 14:42:25 +03:00
Ali BARIN
eb486a3a07 Merge pull request #1456 from automatisch/AUT-431
feat(notion): add updated database items trigger
2023-11-29 16:54:45 +01:00
Ali BARIN
062b8521ba Merge pull request #1454 from automatisch/AUT-418
feat(zendesk): add delete user action
2023-11-29 14:37:42 +01:00
Rıdvan Akca
1b07f3195a feat(zendesk): add delete user action 2023-11-29 16:30:05 +03:00
Rıdvan Akca
dfa7d4cb8d feat(notion): add updated database items trigger 2023-11-29 16:18:38 +03:00
Ali BARIN
a14dd9666c Merge pull request #1451 from automatisch/AUT-415
feat(zendesk): add create user action
2023-11-29 14:10:46 +01:00
Rıdvan Akca
b07bd4374f feat(zendesk): add create user action 2023-11-29 16:01:55 +03:00
Ali BARIN
b4e12b0ea8 Merge pull request #1448 from automatisch/AUT-413
feat(zendesk): add delete ticket action
2023-11-29 13:35:58 +01:00
Ali BARIN
ee5c17bb85 Merge pull request #1447 from automatisch/AUT-412
feat(zendesk): add find ticket action
2023-11-29 13:32:29 +01:00
Rıdvan Akca
16c9d3400c feat(zendesk): add delete ticket action 2023-11-29 14:27:54 +03:00
Rıdvan Akca
4dd994348d feat(zendesk): add find ticket action 2023-11-29 13:17:04 +03:00
Ali BARIN
f0cbfafc24 Merge pull request #1443 from automatisch/AUT-411
feat(zendesk): add update ticket action
2023-11-28 15:02:21 +01:00
Ali BARIN
d3f38f5488 Merge pull request #1455 from automatisch/rename-discord-scheduled-event-action
feat(discord/create-scheduled-event): remove new prefix
2023-11-28 13:14:25 +01:00
Ali BARIN
737090a67a feat(discord/create-scheduled-event): remove new prefix 2023-11-28 11:56:36 +00:00
Ali BARIN
4f66a4d090 Merge pull request #1446 from automatisch/AUT-465
feat: embed external fonts used in the codebase
2023-11-28 12:47:32 +01:00
Rıdvan Akca
df54f909c1 feat(zendesk): add update ticket action 2023-11-28 14:40:26 +03:00
Ali BARIN
772b195eca Merge pull request #1441 from automatisch/AUT-409
feat(zendesk): add new tickets trigger
2023-11-28 11:52:22 +01:00
Ali BARIN
87866e34ed Merge pull request #1450 from felifluid/feature/action-discord-create-event
feat(discord): add createEvent action
2023-11-27 18:08:20 +01:00
Ali BARIN
c98ac05097 feat(discord/create-new-scheduled-event): rework fields 2023-11-27 17:01:40 +00:00
DerKlobold
36f991b6f9 feat: discord createNewEvent action in docs
adds a simple entry in the docs for the createNewEvent action
2023-11-26 18:59:01 +01:00
DerKlobold
a81c5164fc feat: discord createNewEvent action
adds the action of creating a new event on a discord server. provides some sort of logic-check to make sure the correct fields have been filled, depending of the type given.
2023-11-26 18:58:09 +01:00
DerKlobold
5942482690 feat: list discord voice channel dynamic data
adds a helper function to provide dynamic data of voice and stage channels of a discord server
2023-11-26 18:56:50 +01:00
Rıdvan Akca
4f538ca2fc feat(zendesk): add new tickets trigger 2023-11-24 15:22:35 +03:00
Kasia
9f2281a3e2 feat: embed external fonts used in the codebase 2023-11-24 12:20:28 +00:00
Ali BARIN
b0d2f28c78 Merge pull request #1444 from automatisch/AUT-487
fix(zendesk): get after_cursor from meta field
2023-11-23 13:42:01 +01:00
Rıdvan Akca
d4380a4426 fix(zendesk): get after_cursor from meta field 2023-11-23 15:17:11 +03:00
Ali BARIN
ae2738d4cc Merge pull request #1435 from mohammedzaher/removebg
feat(removebg): add `remove image background` action
2023-11-22 16:28:55 +01:00
Ali BARIN
aa5ae028b2 feat(removebg/remove-image-background): update wording 2023-11-22 15:01:02 +00:00
Mohammed Zaher
7ab8c76aa0 docs(removebg): Add Remove image background action 2023-11-16 15:43:22 +00:00
Mohammed Zaher
8075b65e14 feat(removebg): Add Remove image background action 2023-11-16 15:39:46 +00:00
Ali BARIN
073ce3bf1b Merge pull request #1433 from automatisch/AUT-445
feat(reddit): provide user-agent header
2023-11-14 17:25:29 +01:00
Rıdvan Akca
80fcbfe01b feat(reddit): provide user-agent header 2023-11-14 14:08:01 +03:00
Ali BARIN
dba0041e5f Merge pull request #1430 from automatisch/dependabot/npm_and_yarn/axios-1.6.0
chore(deps): bump axios from 0.24.0 to 1.6.0
2023-11-13 17:56:57 +01:00
Ali BARIN
b8a44afd25 refactor: re-type interceptors for axios@1.6.0 2023-11-13 16:14:03 +00:00
dependabot[bot]
e2445bf585 chore(deps): bump axios from 0.24.0 to 1.6.0
Bumps [axios](https://github.com/axios/axios) from 0.24.0 to 1.6.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.24.0...v1.6.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-13 16:14:03 +00:00
Ali BARIN
50706c524e Merge pull request #1431 from QAComet/qacomet/admin-roles-loader
test: add page title test ids to await and await mounting loader components
2023-11-13 10:52:49 +01:00
QAComet
11e0cb9398 test: add page title test ids to await and await mounting loader components 2023-11-12 16:46:38 -07:00
Ali BARIN
1e82e40802 Merge pull request #1428 from automatisch/AUT-398
feat(reddit): add create link post action
2023-11-10 16:27:25 +01:00
Rıdvan Akca
ff00644e62 feat(reddit): add create link post action 2023-11-10 18:21:04 +03:00
Ali BARIN
97bcd3792b Merge pull request #1427 from automatisch/AUT-397
feat(reddit): add new posts matching search trigger
2023-11-10 16:03:35 +01:00
Rıdvan Akca
5738a09771 feat(reddit): add new posts matching search trigger 2023-11-10 16:50:26 +03:00
kattoczko
c461cc4878 feat: introduce application auth clients tab in the admin panel (#1423)
* feat: introduce application auth clients tab in the admin panel

* feat: introduce improvements

* feat: use loading state returned from useMutation

* feat: use error returned by useMutation hook
2023-11-10 14:09:23 +01:00
Ali BARIN
878fab347a Merge pull request #1426 from automatisch/AUT-396
feat(reddit): add reddit integration
2023-11-10 11:16:46 +01:00
Rıdvan Akca
354b331b08 feat(reddit): add reddit integration 2023-11-10 12:51:52 +03:00
Ali BARIN
3b9aadb90f Merge pull request #1421 from automatisch/AUT-392
feat(xero): add new payments trigger
2023-11-09 16:30:42 +01:00
Ali BARIN
7193d018ce Merge pull request #1425 from automatisch/add-sf-execute-query-in-docs
docs(salesforce): list execute query in actions
2023-11-09 16:09:43 +01:00
Ali BARIN
d5cea034ac docs(salesforce): list execute query in actions 2023-11-09 15:02:58 +00:00
Ömer Faruk Aydın
a2760c10b3 Merge pull request #1422 from automatisch/release/0.10.0
Release v0.10.0
2023-11-09 16:12:19 +03:00
Faruk AYDIN
5492fae213 Release v0.10.0 2023-11-09 15:48:33 +03:00
Faruk AYDIN
490a23ae0a chore: Update version to 0.10.0 in Dockerfiles 2023-11-09 15:46:42 +03:00
Rıdvan Akca
3593cf3808 feat(xero): add new payments trigger 2023-11-09 11:57:47 +03:00
Ali BARIN
6ea7400ff4 Merge pull request #1419 from automatisch/AUT-391
feat(xero): add new bank transactions trigger
2023-11-08 17:07:14 +01:00
Rıdvan Akca
1a4ba35ef4 feat(xero): add new bank transactions trigger 2023-11-08 18:59:50 +03:00
Ali BARIN
2d52cab693 fix: let permitted users delete others' flows (#1417) 2023-11-08 16:55:30 +01:00
Ömer Faruk Aydın
e1fac78aba Merge pull request #1412 from automatisch/aut-311
fix: let permitted users create step in not-owned flows
2023-11-08 17:55:53 +03:00
Ali BARIN
e79fc9cae4 Merge pull request #1418 from automatisch/AUT-390
feat(xero): add xero integration
2023-11-08 15:37:03 +01:00
Rıdvan Akca
9200e1011b feat(xero): add xero integration 2023-11-08 17:03:33 +03:00
moaaz
373d29eeab docs(carbone): Add add-template actions 2023-11-08 11:27:17 +01:00
moaaz
bc337c588a feat(carbone): add add-template action 2023-11-08 11:27:17 +01:00
QAComet
112b05f7ad test: add wait for roles loader to detach 2023-11-08 10:39:02 +01:00
Moaaz Elsayed
9f84af95f6 docs(removebg): fix connection link (#1416) 2023-11-08 10:03:34 +01:00
Ali BARIN
0873cfa997 fix: let permitted users create step in not-owned flows 2023-11-07 15:51:24 +00:00
Ali BARIN
94d7162782 docs(carbone): list in available apps (#1411) 2023-11-07 15:30:47 +01:00
Mohammed Zaher
5db62679fa feat(removebg): add remove-bg integration (#1406)
* feat(remove-bg): add remove-bg integration

* feat(removebg): update name and icon

* docs(removebg): update name and icon

* docs: add remove.bg in available apps

* docs(removebg): correct path

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-11-07 13:52:55 +01:00
Moaaz Elsayed
a4a0102679 feat(carbone): add carbone integration (#1405)
* feat(carbone): add carbone integration

* Update list-apps.spec.js to ensure Carbone is the first application in the alphabetically sorted list

Previously, the test expected DeepL to be the first in the list. Now, this change ensures that Carbone will take precedence as it will come first in the alphabetical order.
2023-11-07 13:00:22 +01:00
Rıdvan Akca
2afcfbb4bc feat(ghost): add new post published trigger (#1403) 2023-11-07 12:55:35 +01:00
Rıdvan Akca
f0e8f070a8 feat(ghost): add ghost integration (#1401) 2023-11-07 11:30:26 +01:00
Rıdvan Akca
c42374e031 feat(notion/create-page): support variables in parentPageId field (#1410) 2023-11-07 09:33:57 +01:00
Rıdvan Akca
be610c7fa9 feat(zendesk): add create ticket action 2023-11-06 16:02:26 +01:00
Rıdvan Akca
4ff824663b test: skip admin role is not deletable 2023-11-06 14:21:19 +01:00
QAComet
1581b5ac0a test: write tests for role management (#1396) 2023-11-06 10:35:20 +01:00
Ömer Faruk Aydın
5fb48ed54b Merge pull request #1402 from automatisch/tests/get-flow
test: Implement graphQL getFlow query tests
2023-10-31 16:12:26 +01:00
Faruk AYDIN
903e9e6093 test: Implement graphQL getFlow query tests 2023-10-31 15:57:44 +01:00
Faruk AYDIN
d30e491817 test: Delete formattedData from connection factory before persisting 2023-10-31 15:57:22 +01:00
Faruk AYDIN
aa727e3260 test: Adjust step factory to assign correct appKey 2023-10-31 15:56:49 +01:00
Ömer Faruk Aydın
1cad3a7149 Merge pull request #1398 from automatisch/tests/disable-typescript
test: Disable ts check for test files
2023-10-31 12:08:30 +01:00
Ali BARIN
3b7f6740bb chore: exclude test files from eslint 2023-10-31 11:35:53 +01:00
Ali BARIN
2febc5efad fix(mutations/delete-flow): cover incomplete trigger 2023-10-30 15:19:31 +01:00
Faruk AYDIN
903616bef6 test: Disable ts check for test files 2023-10-30 14:25:22 +01:00
Rıdvan Akca
c944193fb4 feat(trello): add create card action 2023-10-30 11:48:19 +01:00
Ömer Faruk Aydın
4f2155ea63 Merge pull request #1394 from automatisch/tests/coverage
test: Show coverage for graphQL queries folder
2023-10-30 10:23:42 +01:00
Faruk AYDIN
4bda1edda7 test: Show coverage for graphQL queries folder 2023-10-29 13:13:01 +01:00
QAComet
1a55cc8604 test: update snackbar with variant and data-test attributes 2023-10-27 19:48:40 +02:00
Ali BARIN
bf7ab475ee feat: unregister webhook upon deleting flow 2023-10-27 19:19:13 +02:00
Ömer Faruk Aydın
2f39efb935 Merge pull request #1381 from automatisch/add-filters-in-get-executions-query
feat(queries/get-executions): add filter support
2023-10-26 17:56:10 +02:00
Ali BARIN
9f8eb985e4 refactor: assert entry dates as string 2023-10-26 15:43:11 +00:00
Ali BARIN
3549fef71c feat(ExecutionRow): use createdAt instead of updatedAt 2023-10-26 15:43:10 +00:00
Ali BARIN
2cfa64c2a3 test(queries/get-executions): use createdAt in filter test cases 2023-10-26 15:43:08 +00:00
Ali BARIN
7245a0a599 refactor(queries/get-executions): use createdAt in filters 2023-10-26 15:29:28 +00:00
Ali BARIN
0633da3244 fix(mutations/duplicate-flow): correct webhook path 2023-10-26 17:21:28 +02:00
Faruk AYDIN
96341976f5 test: Add graphQL query test for getExecutions 2023-10-26 17:19:37 +02:00
Faruk AYDIN
9abfaec4d5 test: Adjust permission factory to pass all values 2023-10-26 17:17:12 +02:00
Faruk AYDIN
945c52dd6b test: Add createdAt and updatedAt defaultst to execution and flow 2023-10-26 17:16:42 +02:00
Faruk AYDIN
6567d24760 test: Adjust app key of step depending on type 2023-10-26 17:15:50 +02:00
Faruk AYDIN
ffaf9b6e0c chore: Add date types to IFlow and IExecution 2023-10-26 17:15:10 +02:00
QAComet
463e6908b1 test: write tests for user management (#1316)
* chore: add data-test attributes

* test: add github connection test, add applications modal

* test: write tests for user management
2023-10-26 15:12:37 +02:00
Ali BARIN
e185ceb385 fix(queries/get-executions): recover flow and steps relations 2023-10-26 13:52:20 +02:00
Ali BARIN
1b21bbe5b7 feat(queries/get-executions): accept timestamp instead of ISO datetime 2023-10-26 13:52:20 +02:00
Ali BARIN
14b7053ed8 feat: add updated_at index in executions 2023-10-26 13:52:20 +02:00
Ali BARIN
2760526def feat: add flow_id index in executions 2023-10-26 13:52:20 +02:00
Ali BARIN
d851db22d0 feat(queries/get-executions): add updatedAt filter support 2023-10-26 13:52:20 +02:00
Ali BARIN
2fa360e400 feat(queries/get-executions): add status filter support 2023-10-26 13:52:20 +02:00
Ali BARIN
e4eb146169 feat(queries/get-executions): add flowId filter support 2023-10-26 13:52:20 +02:00
Moaaz Elsayed
86611453b5 feat(zendesk): add zendesk integration (#1385)
* feat(zendesk): add zendesk integration

* Add Zendesk connection documentation

* docs(zendesk/connection): add missing steps

* feat(zendesk): add more auth scopes for planned triggers/actions

* fix(zendesk): fix instanceUrl

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-10-26 12:47:13 +02:00
dependabot[bot]
65f9d1b6b9 chore(deps): bump crypto-js from 4.1.1 to 4.2.0
Bumps [crypto-js](https://github.com/brix/crypto-js) from 4.1.1 to 4.2.0.
- [Commits](https://github.com/brix/crypto-js/compare/4.1.1...4.2.0)

---
updated-dependencies:
- dependency-name: crypto-js
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-26 10:00:04 +02:00
QAComet
2fceaf2cf4 test: fix flakiness in GH connection test case (#1383) 2023-10-25 11:04:04 +02:00
Ömer Faruk Aydın
d82b50fcdb Merge pull request #1382 from automatisch/fix/delete-current-user
fix: Guard lowercase email for delete user operation
2023-10-25 01:17:52 +02:00
Faruk AYDIN
ab6e49bf4f fix: Guard lowercase email for delete user operation 2023-10-25 01:00:43 +02:00
Rıdvan Akca
ee90422f56 feat(trello): add trello integration (#1380) 2023-10-24 15:13:08 +02:00
Ömer Faruk Aydın
627184f124 Merge pull request #1379 from automatisch/factories/execution-step
test: Implement execution step factory
2023-10-24 13:45:08 +02:00
Rıdvan Akca
fa02edfefc feat(pushover): add send a pushover notification action (#1373) 2023-10-24 13:40:24 +02:00
Faruk AYDIN
61afebc827 test: Implement execution step factory 2023-10-24 12:35:29 +02:00
Faruk AYDIN
a4c22799e7 fix: Correct executions table name for execution factory 2023-10-24 12:35:29 +02:00
Faruk AYDIN
870a110a75 fix: Fetch lastStep directly on the step factory 2023-10-24 12:35:29 +02:00
kattoczko
8c859f9408 feat: introduce admin app configs page (#1335) 2023-10-24 12:19:37 +02:00
Ali BARIN
0a36101da1 feat: close snackbars upon click (#1378) 2023-10-24 12:03:30 +02:00
Ömer Faruk Aydın
c1bf063b12 Merge pull request #1377 from automatisch/factories/execution
test: Implement factory for the execution model
2023-10-23 23:06:45 +02:00
Ömer Faruk Aydın
0da56a800d Merge pull request #1376 from automatisch/factories/step
test: Add factory file for the step model
2023-10-23 23:00:26 +02:00
Faruk AYDIN
4d2172d153 test: Implement factory for the execution model 2023-10-23 22:52:24 +02:00
Faruk AYDIN
d0fab0e1f1 test: Add factory file for the step model 2023-10-23 22:47:19 +02:00
QAComet
4cedbdbc60 test: add tests for git connection (#1289)
* chore: add data-test attributes

* test: add github connection test, add applications modal

* chore: embed test GITHUB_CLIENT_* environment values

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-10-23 18:48:23 +02:00
Ömer Faruk Aydın
a82d34cbce Merge pull request #1375 from automatisch/factories/flow
test: Add factory file for the flow model
2023-10-23 18:43:14 +02:00
Faruk AYDIN
16d0c243c7 test: Add factory file for the flow model 2023-10-23 18:26:43 +02:00
Ömer Faruk Aydın
855901bd9e Merge pull request #1372 from automatisch/refactor/tests
refactor: Use named exports for factories
2023-10-23 11:09:05 +02:00
Faruk AYDIN
6be8a581d2 refactor: Use named exports for factories 2023-10-23 10:36:44 +02:00
Faruk AYDIN
655deb12c8 refactor: Rename fixtures as factories to differentiate dynamic data 2023-10-23 10:30:27 +02:00
Ömer Faruk Aydın
31b1b9457b Merge pull request #1364 from automatisch/AUT-348
feat(pushover): add pushover integration
2023-10-22 23:13:01 +02:00
Faruk AYDIN
c4394228f2 fix(placetel): Authenticate in case valid user without device 2023-10-22 23:03:46 +02:00
Rıdvan Akca
98e6dbe141 feat(pushover): add pushover integration 2023-10-22 23:03:46 +02:00
Ömer Faruk Aydın
4fac1ef7c4 Merge pull request #1355 from automatisch/AUT-347
feat(youtube): add new video by search trigger
2023-10-21 10:52:31 +02:00
Rıdvan Akca
034bc6a79e refactor(pipedrive): make filterProvidedFields func reusable 2023-10-20 19:06:34 +02:00
Rıdvan Akca
94e64676af refactor(pipedrive): set baseUrl in a seperate file 2023-10-20 18:36:50 +02:00
Rıdvan Akca
3a638220af feat(pipedrive): add create person action 2023-10-20 17:39:24 +02:00
Rıdvan Akca
0772308bf5 feat(pipedrive): add create organization action 2023-10-20 17:12:51 +02:00
Rıdvan Akca
9f5ea80731 feat(youtube): add new video by search trigger 2023-10-20 18:02:44 +03:00
Ömer Faruk Aydın
fb1f520096 Merge pull request #1367 from automatisch/test/connection-fixture
test: Implement connection fixture
2023-10-20 15:53:04 +02:00
Ömer Faruk Aydın
dd36609443 Merge pull request #1353 from automatisch/AUT-344
feat(youtube): add new video in channel trigger
2023-10-20 15:43:06 +02:00
Rıdvan Akca
4eace3fb7e feat(youtube): add new video in channel trigger 2023-10-20 16:35:13 +03:00
Faruk AYDIN
f13e93e2ce test: Implement connection fixture 2023-10-19 23:04:02 +02:00
Ömer Faruk Aydın
da4f8ab529 Merge pull request #1351 from automatisch/AUT-343
feat(youtube): add youtube integration
2023-10-19 15:05:58 +02:00
Ömer Faruk Aydın
b6ff4ec992 Merge pull request #1363 from automatisch/test/get-trial-status
test: Implement tests for get trial status graphQL query
2023-10-19 14:29:59 +02:00
Ömer Faruk Aydın
25f6cac69a Merge pull request #1362 from automatisch/test/get-automatisch-info
test: Add getAutomatischInfo graphQL query tests
2023-10-19 14:23:51 +02:00
Faruk AYDIN
172a8934e3 test: Add restoreAllMocks to global afterEach for spy and replaceProperty 2023-10-19 14:22:00 +02:00
Ali BARIN
aead014bcf refactor: remove additional mock implentation in tests 2023-10-19 13:43:49 +02:00
Faruk AYDIN
59770c80db test: Implement tests for get trial status graphQL query 2023-10-19 01:06:41 +02:00
Faruk AYDIN
6d6b77148d refactor: User fixture to pass additonal params 2023-10-19 01:06:01 +02:00
Faruk AYDIN
c1e8f5765f chore: Use cloud enabled version for test db 2023-10-19 01:05:23 +02:00
Faruk AYDIN
76e442940b test: Add getAutomatischInfo graphQL query tests 2023-10-18 15:47:09 +02:00
Faruk AYDIN
b2205097da test: Implement the structure of mocking appConfig options 2023-10-18 15:47:09 +02:00
Faruk AYDIN
14886d42e8 test: Clear all jest mocks with after each global hook 2023-10-18 15:47:09 +02:00
Ömer Faruk Aydın
2f35403078 Merge pull request #1359 from automatisch/AUT-350
fix(pipedrive): check if there is no data in dynamic-data
2023-10-18 11:42:12 +02:00
Rıdvan Akca
961d55a1c6 fix(pipedrive): check if there is no data in dynamic-data 2023-10-18 12:20:25 +03:00
Ömer Faruk Aydın
0fca0ef734 Merge pull request #1340 from automatisch/AUT-329
feat(invoice-ninja): add create product action
2023-10-18 00:27:05 +02:00
Ömer Faruk Aydın
cc3acd81bc Merge pull request #1357 from automatisch/pipedrive-create-activity-name-correction
fix(pipedrive/create-activity): correct its key
2023-10-18 00:18:30 +02:00
Ali BARIN
69a691c19e fix(pipedrive/create-activity): correct its key 2023-10-17 21:48:58 +02:00
Ömer Faruk Aydın
e0a4f5c9c9 Merge pull request #1356 from automatisch/formatter/format-phone-number
feat(formatter): implement format phone number transformer
2023-10-17 17:02:22 +02:00
Faruk AYDIN
cabf9b8fb8 feat(formatter): implement format phone number transformer 2023-10-17 16:45:56 +02:00
Rıdvan Akca
61e24da07d feat(invoice-ninja): add create product action 2023-10-17 15:27:25 +03:00
Ömer Faruk Aydın
648511dfad Merge pull request #1354 from automatisch/dependabot/npm_and_yarn/babel/traverse-7.23.2
chore(deps): bump @babel/traverse from 7.16.3 to 7.23.2
2023-10-17 12:52:18 +02:00
dependabot[bot]
dfc9efc31a chore(deps): bump @babel/traverse from 7.16.3 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.16.3 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 10:32:32 +00:00
Ömer Faruk Aydın
b58a22addc Merge pull request #1339 from automatisch/AUT-328
feat(invoice-ninja): add create payment action
2023-10-17 11:37:44 +02:00
Ömer Faruk Aydın
e07a9eeda2 Merge pull request #1338 from automatisch/AUT-327
feat(invoice-ninja): add create invoice action
2023-10-16 17:36:38 +02:00
Rıdvan Akca
f0de42fa63 feat(invoice-ninja): add create payment action 2023-10-16 18:30:10 +03:00
Rıdvan Akca
0121661ad0 feat(invoice-ninja): add create invoice action 2023-10-16 18:22:57 +03:00
Rıdvan Akca
fb6e46bd69 feat(youtube): add youtube integration 2023-10-16 16:27:17 +03:00
Ömer Faruk Aydın
9bd041799b Merge pull request #1350 from automatisch/test/get-config
test: Implement tests for getConfig graphQL query
2023-10-16 15:12:53 +02:00
Ömer Faruk Aydın
9e191c4ed9 Merge pull request #1349 from automatisch/test/get-roles
test: add tests for graphQL getRoles query
2023-10-16 15:12:43 +02:00
Ömer Faruk Aydın
794b4cf26a Merge pull request #1348 from automatisch/tests/get-role
test: Add getRole graphQL query test
2023-10-16 14:52:28 +02:00
Faruk AYDIN
2d8421943f test: Implement tests for getConfig graphQL query 2023-10-15 20:01:05 +02:00
Faruk AYDIN
48dc2312d9 refactor: Remove redundant context variable from getConfig 2023-10-15 20:00:51 +02:00
Faruk AYDIN
cdf7a1adc4 test: Implement config fixture 2023-10-15 20:00:07 +02:00
Faruk AYDIN
99ebd12081 chore: Add IConfig type 2023-10-15 19:59:26 +02:00
Faruk AYDIN
859337b5c1 test: add tests for graphQL getRoles query 2023-10-15 16:55:25 +02:00
Faruk AYDIN
1e601559a0 test: remove roles and permission with global before all hook 2023-10-15 16:54:51 +02:00
Faruk AYDIN
9314cba724 test: Add getRole graphQL query test 2023-10-15 15:22:08 +02:00
Ömer Faruk Aydın
25224f0308 Merge pull request #1346 from automatisch/test/get-users
test: Implement tests for graphQL getUsers query
2023-10-14 21:35:51 +02:00
Faruk AYDIN
9a981d5373 test: Implement tests for graphQL getUsers query 2023-10-14 21:29:24 +02:00
Faruk AYDIN
c7116361ab refactor: No need to interpolate token for getUser test 2023-10-14 21:21:40 +02:00
Ömer Faruk Aydın
1f17236c4f Merge pull request #1345 from automatisch/refactor/tests
test: Correct get current user test descriptions
2023-10-14 21:21:21 +02:00
Ömer Faruk Aydın
67f415de35 Merge pull request #1344 from automatisch/test/healthcheck-query
test: Add test for healthcheck graphQL query
2023-10-14 21:20:55 +02:00
Faruk AYDIN
b890150817 chore: Add verbose flag to yarn test script 2023-10-14 20:13:13 +02:00
Faruk AYDIN
4de1fc49df test: Add test case for unauthorized user for getUser 2023-10-14 20:12:10 +02:00
Faruk AYDIN
fb80d5d70d test: Correct get current user test descriptions 2023-10-14 20:04:49 +02:00
Faruk AYDIN
eaa25e412a test: Add test for healthcheck graphQL query 2023-10-14 17:45:26 +02:00
Faruk AYDIN
706142f98e chore: Change the description of existing graphQL tests 2023-10-14 17:19:25 +02:00
Ömer Faruk Aydın
36a72d0a32 Merge pull request #1334 from automatisch/AUT-326
feat(invoice-ninja): add create client action
2023-10-14 15:36:24 +02:00
Faruk AYDIN
1d44d387ac feat(invoice-ninja): Add static country codes to create client fields 2023-10-14 15:26:58 +02:00
Faruk AYDIN
f93c41f2d8 feat(invoice-ninja): Set instance URL as base URL 2023-10-14 15:26:58 +02:00
Rıdvan Akca
5b13f880c8 feat(invoice-ninja): add create client action 2023-10-14 15:26:58 +02:00
Ömer Faruk Aydın
c4af873036 Merge pull request #1342 from automatisch/lowercase-email
fix: Lowercase user email before insert and update
2023-10-14 13:42:05 +02:00
Faruk AYDIN
fe820fb4fe fix: use lowercase email for user model findOne method 2023-10-13 13:21:55 +02:00
Faruk AYDIN
82ad0735d2 chore: Convert user emails to lowercase 2023-10-13 11:52:31 +02:00
Faruk AYDIN
8b0a421924 fix: Lowercase user email before insert and update 2023-10-13 11:44:52 +02:00
Ömer Faruk Aydın
d44cb3d92e Merge pull request #1341 from automatisch/test/get-current-user
test: Implement getCurrentUser graphQL test
2023-10-13 11:36:38 +02:00
Ömer Faruk Aydın
5f335ef5b3 refactor: Use token without string interpolation for getCurrentUser test
Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-10-13 11:24:54 +02:00
Faruk AYDIN
5831bf9653 test: Implement getCurrentUser graphQL test 2023-10-13 01:04:35 +02:00
Ömer Faruk Aydın
2480dfbb6d Merge pull request #1331 from automatisch/AUT-323
feat(invoice-ninja): add new quotes trigger
2023-10-12 16:03:28 +02:00
Ömer Faruk Aydın
162b352ea5 Merge pull request #1330 from automatisch/AUT-322
feat(invoice-ninja): add new projects trigger
2023-10-12 15:58:49 +02:00
Ömer Faruk Aydın
9f30d7d7ba Merge pull request #1329 from automatisch/AUT-321
feat(invoice-ninja): add new payments trigger
2023-10-12 15:55:44 +02:00
Rıdvan Akca
27c296bb89 feat(invoice-ninja): add new quotes trigger 2023-10-12 14:44:17 +03:00
Rıdvan Akca
ef67908451 feat(invoice-ninja): add new projects trigger 2023-10-12 14:43:39 +03:00
Rıdvan Akca
3dedc3bfc7 feat(invoice-ninja): add new payments trigger 2023-10-12 14:43:06 +03:00
Ömer Faruk Aydın
65d509c97f Merge pull request #1328 from automatisch/AUT-320
feat(invoice-ninja): add new invoices trigger
2023-10-11 16:00:25 +02:00
Rıdvan Akca
11f38c4d3a feat(invoice-ninja): add new invoices trigger 2023-10-11 15:36:20 +02:00
Ömer Faruk Aydın
3bca6497f7 Merge pull request #1327 from automatisch/AUT-319
feat(invoice-ninja): add new credits trigger
2023-10-11 15:34:17 +02:00
Ömer Faruk Aydın
23d79b9265 Merge pull request #1333 from automatisch/backend-tests-ci
feat: Add CI configuration for backend tests
2023-10-11 14:07:01 +02:00
Faruk AYDIN
12c53a3d4d feat: Add CI configuration for backend tests 2023-10-11 13:41:03 +02:00
Ömer Faruk Aydın
1dfe58ec02 Merge pull request #1337 from automatisch/placetel-webhook
fix(placetel): Parse request body inside of run method
2023-10-11 11:24:55 +02:00
Faruk AYDIN
7615e62bbc fix(placetel): Parse request body inside of run method 2023-10-11 11:17:19 +02:00
Faruk AYDIN
53189a6487 fix: Do not parse all requests with json parser 2023-10-10 18:26:53 +02:00
Rıdvan Akca
027b11c3fb feat(invoice-ninja): add new credits trigger 2023-10-10 16:31:42 +03:00
Ömer Faruk Aydın
453ab7de66 Merge pull request #1325 from automatisch/AUT-318
feat(invoice-ninja): add new clients trigger
2023-10-10 12:51:40 +02:00
Rıdvan Akca
58f8ded161 feat(invoice-ninja): add new clients trigger 2023-10-10 13:41:14 +03:00
Ömer Faruk Aydın
497ce2e84f Merge pull request #1323 from automatisch/AUT-315
feat(invoice-ninja): add invoice ninja integration
2023-10-09 16:41:35 +02:00
Faruk AYDIN
3794c6f508 docs(invoice-ninja): Add warning to see API tokens 2023-10-09 16:30:53 +02:00
Rıdvan Akca
ee6c9fa5d4 feat(invoice-ninja): add invoice ninja integration 2023-10-09 16:06:00 +03:00
Ömer Faruk Aydın
1369bb095f Merge pull request #1324 from automatisch/placetel
feat(placetel): Implement app structure with authentication
2023-10-09 14:19:58 +02:00
Faruk AYDIN
c786d7549a refactor(placetel): No need to stringify call ID 2023-10-09 14:11:39 +02:00
Faruk AYDIN
b59840cb77 feat(placetel): Add types to hungup call trigger 2023-10-09 12:49:59 +02:00
Faruk AYDIN
265d57d8b7 refactor(placetel): Remove redundant header variable 2023-10-09 12:18:55 +02:00
Faruk AYDIN
5eed84f9e5 feat: Add run method to placetel hungup trigger 2023-10-09 12:18:11 +02:00
Faruk AYDIN
0a334dff1d docs(placetel): Add connection and triggers pages 2023-10-09 12:17:23 +02:00
Faruk AYDIN
5fff9bdc02 chore(placetel): Add missing type file 2023-10-09 12:17:23 +02:00
Faruk AYDIN
a9fd261bab refactor: Use json parser when content type is not specified 2023-10-09 12:17:23 +02:00
Faruk AYDIN
ef087be4f0 feat(placetel): Add hungup call trigger 2023-10-09 12:17:23 +02:00
Faruk AYDIN
2099978b8f fix: Add fields from substeps to getApps query 2023-10-09 12:17:23 +02:00
Faruk AYDIN
712bee297a feat(placetel): Implement app structure with authentication 2023-10-09 12:17:23 +02:00
Ömer Faruk Aydın
57bba90091 Merge pull request #1332 from automatisch/webhook-body
feat: Add run method to webhook triggers
2023-10-09 12:12:39 +02:00
Faruk AYDIN
d877f5c764 refactor: Use trigger queue for webhook handler 2023-10-09 12:05:45 +02:00
Faruk AYDIN
4c66cc1e33 feat: Adjust webhook handler to work with run method 2023-10-08 15:51:59 +02:00
Faruk AYDIN
27a3edeb93 feat: Add run method to webhook triggers 2023-10-07 18:46:25 +02:00
Ali BARIN
f79fc29203 chore: add mock license server 2023-10-06 14:39:11 +02:00
Ali BARIN
174240a220 refactor: add useEnqueueSnackbar with data-test attr 2023-10-06 12:28:09 +02:00
Ömer Faruk Aydın
60d8af5c16 Merge pull request #1321 from automatisch/AUT-310
feat(pipedrive): add create lead action
2023-10-06 11:40:04 +02:00
Faruk AYDIN
627a5892f1 chore: Add description to Pipedrive create lead fields 2023-10-06 11:33:52 +02:00
Ömer Faruk Aydın
7767f6d9cc Merge pull request #1322 from automatisch/salesforce/api-request
feat(salesforce): Implement execute query action
2023-10-05 16:12:42 +02:00
Faruk AYDIN
9729fd6b15 feat(salesforce): Implement execute query action 2023-10-05 15:23:48 +02:00
Rıdvan Akca
17916f29f6 feat(pipedrive): add create lead action 2023-10-05 14:12:37 +03:00
kattoczko
584b9323ec feat: introduce admin apps page (#1296)
* feat: introduce admin apps page

* feat: add access restriction and fix incorrectly placed key prop
2023-10-05 10:55:00 +02:00
Ömer Faruk Aydın
82c1aadfa9 Merge pull request #1319 from automatisch/refactor-get-user-tests
refactor: Use fixtures for getUser graphQL tests
2023-10-05 10:25:49 +02:00
Faruk AYDIN
bd497af89b test: Add case to getUser to not return user password 2023-10-04 21:01:16 +02:00
Faruk AYDIN
1683c5630a test: Add types to getUser test file 2023-10-04 21:01:16 +02:00
Faruk AYDIN
b5df1a026a chore: Use snake case test mappers for test env 2023-10-04 21:01:16 +02:00
Faruk AYDIN
b290c32aeb refactor: Use shared requestObject for getUser tests 2023-10-04 21:01:16 +02:00
Faruk AYDIN
a29b3c6db4 refactor: Use fixtures for getUser graphQL tests 2023-10-04 21:01:16 +02:00
Faruk AYDIN
ffb2f4f5db refactor: Use unauthorized user describe block for getUser tests 2023-10-04 21:01:16 +02:00
Faruk AYDIN
24c95f4801 refactor: Remove reduntant global knex instance 2023-10-04 21:01:16 +02:00
Ömer Faruk Aydın
1aaec2d555 Merge pull request #1317 from automatisch/AUT-306
feat(pipedrive): add create activity action
2023-10-04 20:55:43 +02:00
Rıdvan Akca
fedb198ae7 feat(pipedrive): add create activity action 2023-10-04 13:31:39 +03:00
Ömer Faruk Aydın
add654ccac Merge pull request #1314 from automatisch/get-user-test
feat: Implement getUser graphQL query test
2023-10-04 12:19:12 +02:00
Faruk AYDIN
5a578643a6 feat: Implement getUser graphQL query test 2023-10-04 11:52:39 +02:00
Faruk AYDIN
f0712bd213 feat: Adjust global hooks to work with both knex and objection 2023-10-04 11:48:38 +02:00
Faruk AYDIN
f490632722 refactor: Login mutation with create auth token helper 2023-10-04 11:46:18 +02:00
Faruk AYDIN
2610b96762 chore: Install supertest and faker libraries for tests 2023-10-04 11:46:18 +02:00
Ömer Faruk Aydın
8d90cb834d Merge pull request #1312 from automatisch/global-test-hooks
feat: Add global hooks for jest
2023-10-04 11:45:37 +02:00
Faruk AYDIN
9d92509796 fix: Disable eslint no-var while overriding global 2023-10-03 23:40:12 +02:00
Faruk AYDIN
04a78ee0ba feat: Add types knex field of global 2023-10-03 23:40:12 +02:00
Faruk AYDIN
3703390268 chore: Adjust global and knex types for global hooks 2023-10-03 23:40:12 +02:00
Faruk AYDIN
4ab6415f49 feat: Migrate test database within pretest script 2023-10-03 23:40:12 +02:00
Faruk AYDIN
9228722147 chore: Use ts migration files also for test env 2023-10-03 23:40:12 +02:00
Faruk AYDIN
0e5529b4ca feat: Add global hooks for jest 2023-10-03 23:40:12 +02:00
Ömer Faruk Aydın
4d454ec932 Merge pull request #1313 from automatisch/AUT-303
feat(pipedrive): add create note action
2023-10-02 17:50:42 +02:00
Rıdvan Akca
a9282ad118 feat(pipedrive): add create note action 2023-10-02 16:19:07 +03:00
Ömer Faruk Aydın
0e959641af Merge pull request #1310 from automatisch/test-setup
feat: Introduce jest for backend tests
2023-09-30 15:02:01 +02:00
Faruk AYDIN
13263eea76 feat: Introduce jest for backend tests 2023-09-30 14:31:01 +02:00
Faruk AYDIN
1a3418de58 chore: Remove ava from test setup 2023-09-30 14:17:47 +02:00
Ömer Faruk Aydın
4402995132 Merge pull request #1133 from automatisch/sandbox-emails
chore: Allow only automatisch emails for non-prod cloud envs
2023-09-30 13:25:18 +02:00
Ömer Faruk Aydın
4e33f9875b Merge pull request #1307 from automatisch/pipedrive-create-deal
feat(pipedrive): add create deal action
2023-09-30 13:20:43 +02:00
Faruk AYDIN
ed2893e37f fix(pipedrive): Add guard for not having any organizations 2023-09-30 13:13:21 +02:00
Rıdvan Akca
c35be241ca feat(pipedrive): add create deal action 2023-09-30 13:05:09 +02:00
Ömer Faruk Aydın
aad0b4ddfe Merge pull request #1302 from automatisch/miro-create-card-widget
feat(miro): add create card widget action
2023-09-30 10:48:25 +02:00
Rıdvan Akca
52f5c7ddb5 feat(miro): add create card widget action 2023-09-29 21:39:30 +02:00
Kasia
a04b933161 refactor: introduce useApps hook 2023-09-29 17:03:36 +02:00
kattoczko
c77e12edbb fix: consider null as value in step parameters (#1282) 2023-09-29 16:33:45 +02:00
Ömer Faruk Aydın
108bd04cf8 Merge pull request #1301 from automatisch/miro-copy-board
feat(miro): add copy board action
2023-09-29 12:52:25 +02:00
Rıdvan Akca
a95b500e42 feat(miro): add copy board action 2023-09-29 12:46:36 +02:00
Ömer Faruk Aydın
c2744c5569 Merge pull request #1300 from automatisch/miro-integration
feat(miro): add create board action
2023-09-29 12:45:05 +02:00
Faruk AYDIN
a1dfd87bbe docs(miro): Add to available apps 2023-09-29 12:31:33 +02:00
Rıdvan Akca
221aa8687f feat(miro): add create board action 2023-09-29 12:17:21 +02:00
Rıdvan Akca
fa8ac0a8ba feat(miro): add miro integration 2023-09-29 12:17:21 +02:00
Ömer Faruk Aydın
cc1f9873cb Merge pull request #1299 from automatisch/pipedrive-new-lead
feat(pipedrive): add new leads trigger
2023-09-29 12:15:28 +02:00
Rıdvan Akca
3cae9ee5d2 feat(pipedrive): add new leads trigger 2023-09-29 12:06:56 +02:00
Ömer Faruk Aydın
f764914adb Merge pull request #1298 from automatisch/pipedrive-new-activity
feat(pipedrive): add new activities trigger
2023-09-29 12:04:29 +02:00
Rıdvan Akca
991250c73f feat(pipedrive): add new activities trigger 2023-09-29 11:57:11 +02:00
Ömer Faruk Aydın
af46cf5ce8 Merge pull request #1297 from automatisch/pipedrive-new-note
feat(pipedrive): add new notes trigger
2023-09-29 11:53:10 +02:00
Faruk AYDIN
dbb1c42c47 fix(pipedrive): Skip adding auth header for refresh token 2023-09-29 11:44:35 +02:00
Rıdvan Akca
991f593b2e feat(pipedrive): add new notes trigger 2023-09-29 11:44:35 +02:00
Ömer Faruk Aydın
e43c083d50 Merge pull request #1305 from automatisch/fix-user-creation
fix: use default role for fallback user creation
2023-09-29 10:39:29 +02:00
Ömer Faruk Aydın
3cd9bdc1d4 Merge pull request #1304 from automatisch/new-calendars
feat(google-calendar): Add max results option to new calendar trigger
2023-09-28 17:00:51 +02:00
Ali BARIN
c0b8e6178d fix: use default role for fallback user creation 2023-09-28 14:49:49 +00:00
Ömer Faruk Aydın
410f9d0af5 Merge pull request #1291 from automatisch/google-calendar-new-event
feat(google-calendar): add new event trigger
2023-09-28 16:16:32 +02:00
Ömer Faruk Aydın
b1fedf28dc Merge branch 'main' into google-calendar-new-event 2023-09-28 16:06:08 +02:00
Faruk AYDIN
b0df03dcd2 feat(google-calendar): Add max results option to new calendar trigger 2023-09-28 15:10:36 +02:00
Ömer Faruk Aydın
2794e50a19 Merge pull request #1294 from automatisch/pipedrive-integration
feat(pipedrive): add new deals trigger
2023-09-28 15:09:17 +02:00
Faruk AYDIN
365ae656f2 fix(pipedrive): Adjust description of OAuth redirect URL 2023-09-28 15:01:35 +02:00
Faruk AYDIN
98649dcba6 fix(pipedrive): Guard new deals response in case there is none 2023-09-28 15:00:34 +02:00
Faruk AYDIN
213c8096d2 fix(pipedrive): Change the order in available apps 2023-09-28 15:00:34 +02:00
Faruk AYDIN
398938f27e feat(pipedrive): Use also company domain for screen name 2023-09-28 15:00:34 +02:00
Faruk AYDIN
6378e62645 docs(pipedrive): Add to available apps 2023-09-28 15:00:34 +02:00
Rıdvan Akca
251885d4be feat(pipedrive): add new deals trigger 2023-09-28 15:00:34 +02:00
Rıdvan Akca
f53909355f feat(pipedrive): add pipedrive integration 2023-09-28 15:00:34 +02:00
Rıdvan Akca
242b68889a feat(google-calendar): add new event trigger 2023-09-28 15:52:53 +03:00
Ömer Faruk Aydın
6a66b65f2a Merge pull request #1290 from automatisch/google-calendar-new-calendar-trigger
feat(google-calendar): add new calendar trigger
2023-09-28 13:45:41 +02:00
Faruk AYDIN
f30ead6bcb docs(google-calendar): Add to available apps 2023-09-28 13:37:32 +02:00
Faruk AYDIN
237ee72ca6 feat(google-calendar): Use etag as internal id instead of id 2023-09-28 13:29:39 +02:00
Faruk AYDIN
3590d84ad6 fix(google-calendar): Reverse order the response data of new calendars 2023-09-28 13:28:58 +02:00
Rıdvan Akca
2dae8c162d feat(google-calendar): add new calendar trigger 2023-09-18 15:17:05 +03:00
Rıdvan Akca
9a192b708e feat(google-calendar): add google calendar integration 2023-09-18 15:12:29 +03:00
Rıdvan Akca
c193f9334f feat(wordpress): add new comment trigger 2023-09-15 18:33:38 +02:00
Rıdvan Akca
6e682dc752 fix(create-role): check isCreator by default when permissioon is checked 2023-09-15 15:32:52 +02:00
Rıdvan Akca
da86fe56bd feat(wordpress): add new page trigger 2023-09-15 13:05:41 +02:00
Ali BARIN
45865d701a chore: embed env. vars. for playwright actions 2023-09-15 12:56:15 +02:00
Ömer Faruk Aydın
a66a31b474 Merge pull request #1284 from automatisch/tests/ava
feat: Introduce backend test suite with ava
2023-09-14 12:43:45 +02:00
Faruk AYDIN
2661e7102f feat: Add env file existince check for test suite 2023-09-14 12:25:09 +02:00
Faruk AYDIN
224965b91e feat: Introduce backend test suite with ava 2023-09-14 11:56:53 +02:00
Ömer Faruk Aydın
a9c7375534 Merge pull request #1279 from automatisch/feature/hubspot
feat(hubspot): Implement create contact action
2023-09-14 11:52:18 +02:00
Faruk AYDIN
e77f7ee0bf docs(hubspot): Order alphabetically & correct connection name typo 2023-09-13 23:39:34 +02:00
Faruk AYDIN
ae5dd0cad6 fix(hubspot): Remove redundant field descriptions 2023-09-13 23:16:23 +02:00
Faruk AYDIN
a128907a4e fix(hubspot): Correct website URL typo and primary color 2023-09-13 23:16:23 +02:00
Faruk AYDIN
d6453a8ed0 chore: Use camelCase convention for hubspot actions 2023-09-13 23:16:23 +02:00
Faruk AYDIN
dd1e8240b8 feat(hubspot): Implement verify credentials for OAuth 2023-09-13 23:16:23 +02:00
Faruk AYDIN
b12f39916f feat(hubspot): Implement generate auth url for OAuth 2023-09-13 23:16:23 +02:00
Faruk AYDIN
aae88fe1ad docs(hubspot): Adjust connection page for OAuth setup 2023-09-13 23:16:23 +02:00
Faruk AYDIN
83bb400df1 chore: Change hubspot auth doc url 2023-09-13 23:16:23 +02:00
Vitalii Mykytiuk
8ea8067788 feat(hubspot): Implement create contact action 2023-09-13 23:16:23 +02:00
Rıdvan Akca
9fbc9d59f5 feat: make authentication role mappings emptiable 2023-09-13 22:32:18 +02:00
Ali BARIN
b96ba69a72 chore: run GH actions on push to main branch 2023-09-13 22:25:20 +02:00
Faruk AYDIN
c4ccab6a5d chore: Run CI builds only for pull requests 2023-09-13 22:25:20 +02:00
Rıdvan Akca
f84f27bb56 feat(user-interface): introduce optimistic response 2023-09-13 22:10:47 +02:00
Ömer Faruk Aydın
416cc0ffa9 Merge pull request #1280 from automatisch/node-version
chore: Add .node-version and .nvmrc files to the root
2023-09-13 12:41:37 +02:00
Faruk AYDIN
1fd5ec4db6 chore: Add .node-version and .nvmrc files to the root 2023-09-13 12:36:20 +02:00
Rıdvan Akca
4795c35c68 feat(create-role): make isCreator condition checked by default (#1276) 2023-09-11 15:28:47 +02:00
Rıdvan Akca
25ce63b86d feat(user-interface): use default config as fallback (#1251)
* feat(user-interface): return default app values

* test: remove skip in UI tests

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-09-11 14:06:05 +02:00
Ömer Faruk Aydın
5271033d34 Merge pull request #1275 from automatisch/docs/formatter
docs(formatter): Add numbers and date-time actions
2023-09-11 10:05:44 +02:00
Faruk AYDIN
6ba8f33399 docs(formatter): Add numbers and date-time actions 2023-09-11 09:57:50 +02:00
Ali BARIN
7ab79bd815 Merge pull request #1273 from automatisch/role-mappings 2023-09-10 10:48:34 +02:00
Faruk AYDIN
04a0a847c7 fix: Check role mappings data with isEmpty method 2023-09-10 10:43:08 +02:00
Ali BARIN
436fa9af69 Merge pull request #1267 from automatisch/AUT-276
feat(user-interface): add title field
2023-09-08 21:04:58 +02:00
Ali BARIN
ca0bbb0f08 Merge pull request #1270 from automatisch/feat/random-number
feat(formatter): add decimal point to random number transformer
2023-09-08 21:02:10 +02:00
Ali BARIN
88996144a5 Merge pull request #1269 from automatisch/formatter/date-format
feat(formatter): Implement format date time transformer
2023-09-08 17:27:36 +02:00
Faruk AYDIN
44d5eee99e feat(formatter): Implement format date time transformer for date time action 2023-09-08 13:10:09 +00:00
Ali BARIN
0d1ff6074f Merge pull request #1266 from automatisch/numbers/format-number
feat(formatter): Add format number transformer to numbers action
2023-09-08 15:09:21 +02:00
kattoczko
d63757634a feat: introduce role mappings form on authentication page (#1256) 2023-09-08 14:09:53 +02:00
Faruk AYDIN
fd61cf3388 feat(formatter): Add decimal point to random number transformer 2023-09-06 17:06:13 +02:00
Faruk AYDIN
a6a6b63e5a feat(formatter): Add format number transformer to numbers action 2023-09-05 16:10:39 +02:00
Rıdvan Akca
c02c2def29 feat(user-interface): add title field 2023-09-05 17:10:01 +03:00
Ömer Faruk Aydın
ff66548462 feat(formatter): add random number transformer to numbers action (#1265) 2023-09-05 16:08:30 +02:00
Ömer Faruk Aydın
c9f292e252 feat(formatter): add number action with math operation transformer (#1264)
* feat(formatter): Add number action with math operation transformer

* chore: Use different folders for list transform options of formatter
2023-09-05 13:02:43 +02:00
Faruk AYDIN
18cef5f3bd chore: Sort formatter text transformers alphabetically 2023-09-01 18:02:14 +02:00
Faruk AYDIN
e19340f1e0 feat(formatter): Add replace transformer to text action 2023-09-01 18:02:14 +02:00
Ömer Faruk Aydın
feb613cb6d docs: add upgrade guide for docker compose installation (#1262) 2023-09-01 17:53:21 +02:00
Ömer Faruk Aydın
afa6bdfa44 feat(formatter): add trim whitespace transformer to text action (#1261) 2023-09-01 14:07:50 +02:00
Ömer Faruk Aydın
200e6d9905 feat(formatter): add pluralize transformer for text action (#1260) 2023-09-01 13:37:35 +02:00
Ömer Faruk Aydın
70772c49bd feat(formatter): add lowercase to text transformers (#1259) 2023-09-01 13:26:15 +02:00
Ömer Faruk Aydın
762ea97e8b Merge pull request #1258 from automatisch/release/0.9.3
Release v0.9.3
2023-09-01 12:55:35 +02:00
Faruk AYDIN
8156b8b356 Release v0.9.3 2023-09-01 12:35:19 +02:00
Faruk AYDIN
3a2cbae0a0 chore: Update version to 0.9.3 in Dockerfiles 2023-09-01 12:34:25 +02:00
Ömer Faruk Aydın
0ad8da097b fix(rss): get text for internal ID if the guid or id is object (#1257) 2023-09-01 12:10:42 +02:00
Ömer Faruk Aydın
e2dcdd2811 feat(formatter): add extract number transform to text action (#1255) 2023-08-31 16:35:28 +02:00
Ömer Faruk Aydın
8074f9146b Merge pull request #1253 from automatisch/refactor-notifications
refactor: fetch notifications over graphql query
2023-08-29 16:37:37 +02:00
Ali BARIN
df24bac913 refactor: fetch notifications over graphql query 2023-08-28 20:44:55 +00:00
Ali BARIN
4d4091adcc test: write login page tests 2023-08-28 20:11:21 +02:00
Ali BARIN
cac54c41a1 chore: run automatisch in playwright workflow 2023-08-28 20:11:21 +02:00
Ali BARIN
130931d7af fix: use axios with proxy in license check (#1252) 2023-08-28 17:19:19 +02:00
Ömer Faruk Aydın
d35b08b35e Merge pull request #1250 from automatisch/release/0.9.2
Release v0.9.2
2023-08-28 16:54:32 +02:00
Faruk AYDIN
82031da6a6 Release v0.9.2 2023-08-28 16:30:29 +02:00
Faruk AYDIN
9df5ee7b11 chore: Update version to 0.9.2 in Dockerfiles 2023-08-28 16:29:53 +02:00
Ömer Faruk Aydın
2ed1a57cd9 Merge pull request #1249 from automatisch/permission-contions
chore: Convert conditions of permissions to array
2023-08-28 16:27:29 +02:00
Faruk AYDIN
101450cba6 chore: Convert conditions of permissions to array 2023-08-28 16:24:39 +02:00
Ömer Faruk Aydın
6bab5b3f7c Merge pull request #1248 from automatisch/release/0.9.1
Release v0.9.1
2023-08-28 15:15:25 +02:00
Faruk AYDIN
ca3c0e00a7 Release v0.9.1 2023-08-28 14:47:05 +02:00
Faruk AYDIN
6d64daf324 chore: Update version to 0.9.1 in Dockerfiles 2023-08-28 14:46:26 +02:00
Ömer Faruk Aydın
9ae4578e19 Merge pull request #1247 from automatisch/remove-api-url
chore(web): Remove API url env variable
2023-08-28 14:44:41 +02:00
Faruk AYDIN
e06b7ab87a chore(web): Remove API url env variable 2023-08-28 14:37:10 +02:00
Ömer Faruk Aydın
1e2adedcbf Merge pull request #1246 from automatisch/release/0.9.0
Release v0.9.0
2023-08-28 13:34:24 +02:00
Faruk AYDIN
adf763c1b0 Release v0.9.0 2023-08-28 13:13:23 +02:00
Faruk AYDIN
36ee0df256 chore: Update version to 0.9.0 in Dockerfiles 2023-08-28 13:06:20 +02:00
Rıdvan Akca
823d85b24a feat(custom-logo): constraint svg logo dimensions (#1243) 2023-08-25 21:43:53 +02:00
Rıdvan Akca
a3b3038709 test(user-interface-configuration): write initial tests (#1242)
* test(user-interface): add tests with playwright

* test: refactor UI configuration tests

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-08-25 21:31:02 +02:00
kattoczko
ddeb18f626 feat: introduce authentication page (#1241)
* feat: introduce authentication page

* feat: update page width

* fix(saml): cover non-existing role mapping on onboarding

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-08-25 15:24:50 +02:00
Rıdvan Akca
90cd11bd38 feat: align admin pages vertically (#1240) 2023-08-24 16:34:18 +02:00
Ömer Faruk Aydın
e9ba37b8de fix: use withSoftDeleted scope to remove user associations permanently (#1239) 2023-08-24 16:34:07 +02:00
Faruk AYDIN
d5e4a1b1ad fix: Soft delete existing associations of soft deleted users 2023-08-24 15:05:54 +02:00
Faruk AYDIN
129e6d60e5 fix: Remove all related records when user is deleted 2023-08-24 15:05:54 +02:00
Faruk AYDIN
4b77f2f590 fix: Remove deleted flows from Redis 2023-08-24 15:05:54 +02:00
Rıdvan Akca
a909966562 feat(executions): display execution step id (#1232)
* feat(executions): display execution step id

* refactor: remove conditional components in execution steps

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-08-23 21:53:16 +02:00
Ömer Faruk Aydın
fd184239d6 Merge pull request #1233 from automatisch/enhance-variable-coverage
feat: enhance step variable coverage
2023-08-23 12:35:07 +02:00
Ali BARIN
52bc49dc6a feat: enhance step variable coverage 2023-08-22 16:17:20 +02:00
Ali BARIN
b9352ccc06 fix(mutations/update-flow-status): correct permission check 2023-08-22 16:17:20 +02:00
Ali BARIN
525b2baf06 fix(mutations/execute-flow): correct permission check 2023-08-22 16:17:20 +02:00
Ali BARIN
a8edeb2459 fix(mutations/update-step): correct permission check 2023-08-22 16:17:20 +02:00
Ali BARIN
e3830d64e0 feat: add getSamlAuthProviderRoleMappings query (#1229) 2023-08-22 14:50:01 +02:00
Ali BARIN
91f3e2c2b4 feat: make user.role_id not nullable (#1217) 2023-08-22 14:49:53 +02:00
Ali BARIN
77b4408416 chore: correct e2e test results path in GH actions (#1231) 2023-08-22 10:57:40 +03:00
QAComet
cede96f018 test: refactor create flow test cases with test.step (#1228) 2023-08-22 00:27:10 +02:00
dependabot[bot]
8e0a28d238 chore(deps): bump @node-saml/node-saml from 4.0.4 to 4.0.5 (#1227)
Bumps [@node-saml/node-saml](https://github.com/node-saml/node-saml) from 4.0.4 to 4.0.5.
- [Release notes](https://github.com/node-saml/node-saml/releases)
- [Changelog](https://github.com/node-saml/node-saml/blob/v4.0.5/CHANGELOG.md)
- [Commits](https://github.com/node-saml/node-saml/compare/v4.0.4...v4.0.5)

---
updated-dependencies:
- dependency-name: "@node-saml/node-saml"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-21 23:35:38 +02:00
Rıdvan Akca
da5d594428 feat(user-interface): introduce user interface page (#1226) 2023-08-21 23:11:25 +02:00
kattoczko
9f9ee0bb58 feat: create clear button for ControlledCustomAutocomplete (#1222)
Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-08-21 22:52:59 +02:00
Rıdvan Akca
163aca6179 feat(user-list): add pagination (#1219)
* feat(user-list): add pagination

* feat: add actual total count in getUsers

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-08-21 21:15:07 +02:00
Ali BARIN
cb06d3b0ae test: add in-between assertions and more fixtures (#1224) 2023-08-18 18:34:52 +02:00
Ali BARIN
dbe18dd100 chore: configure login env. vars. in e2e test workflow (#1221) 2023-08-18 09:48:41 +02:00
Ali BARIN
217970667a chore: make e2e tests manually triggerable (#1220) 2023-08-18 10:25:43 +03:00
Rıdvan Akca
dace794167 feat: introduce playwright (#1194)
* feat: introduce playwright

* test: migrate apps folder to playwright (#1201)

* test: rewrite connections tests with playwright (#1203)

* test: rewrite executions tests with playwright (#1207)

* test: rewrite flow editor tests with playwright (#1212)

* test(flow-editor): rewrite tests using serial mode (#1218)

* test: update custom connection creation paths

* test: move login logic to page fixture

* test: remove cypress tests and deps

---------

Co-authored-by: Ali BARIN <ali.barin53@gmail.com>
2023-08-17 23:31:38 +02:00
Faruk AYDIN
337d22bbf4 chore: Allow only automatisch emails for non-prod cloud envs 2023-06-08 11:58:14 +02:00
1598 changed files with 31757 additions and 30568 deletions

View File

@@ -29,7 +29,6 @@ rm -rf .env
echo "
PORT=$WEB_PORT
REACT_APP_GRAPHQL_URL=http://localhost:$BACKEND_PORT/graphql
REACT_APP_NOTIFICATIONS_URL=https://notifications.automatisch.io
" >> .env
cd $CURRENT_DIR

View File

@@ -7,4 +7,12 @@ module.exports = {
'plugin:@typescript-eslint/recommended',
'prettier',
],
overrides: [
{
files: ['**/*.test.ts', '**/test/**/*.ts'],
rules: {
'@typescript-eslint/ban-ts-comment': ['off'],
},
},
],
};

48
.github/workflows/backend.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: Automatisch Backend Tests
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
jobs:
test:
timeout-minutes: 60
runs-on:
- ubuntu-latest
services:
postgres:
image: postgres:14.5-alpine
env:
POSTGRES_DB: automatisch_test
POSTGRES_USER: automatisch_test_user
POSTGRES_PASSWORD: automatisch_test_user_password
options: >-
--health-cmd "pg_isready -U automatisch_test_user -d automatisch_test"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
redis:
image: redis:7.0.4-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: cd packages/backend && yarn
- name: Copy .env-example.test file to .env.test
run: cd packages/backend && cp .env-example.test .env.test
- name: Run tests
run: cd packages/backend && yarn test

View File

@@ -1,5 +1,11 @@
name: Automatisch CI
on: [push]
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
jobs:
linter:
runs-on: ubuntu-latest
@@ -10,7 +16,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '16'
node-version: '18'
cache: 'yarn'
cache-dependency-path: yarn.lock
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
@@ -18,7 +24,7 @@ jobs:
- run: yarn --frozen-lockfile
- run: yarn lint
- run: echo "🍏 This job's status is ${{ job.status }}."
build-backend:
start-backend-server:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
@@ -27,13 +33,36 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '16'
node-version: '18'
cache: 'yarn'
cache-dependency-path: yarn.lock
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- run: yarn --frozen-lockfile && yarn lerna bootstrap
- run: cd packages/backend && yarn build
- run: cd packages/backend && yarn start
env:
ENCRYPTION_KEY: sample_encryption_key
WEBHOOK_SECRET_KEY: sample_webhook_secret_key
- run: echo "🍏 This job's status is ${{ job.status }}."
start-backend-worker:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '18'
cache: 'yarn'
cache-dependency-path: yarn.lock
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- run: yarn --frozen-lockfile && yarn lerna bootstrap
- run: cd packages/backend && yarn start:worker
env:
ENCRYPTION_KEY: sample_encryption_key
WEBHOOK_SECRET_KEY: sample_webhook_secret_key
- run: echo "🍏 This job's status is ${{ job.status }}."
build-web:
runs-on: ubuntu-latest
@@ -44,7 +73,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '16'
node-version: '18'
cache: 'yarn'
cache-dependency-path: yarn.lock
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
@@ -54,21 +83,3 @@ jobs:
env:
CI: false
- run: echo "🍏 This job's status is ${{ job.status }}."
build-cli:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '16'
cache: 'yarn'
cache-dependency-path: yarn.lock
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- run: yarn --frozen-lockfile && yarn lerna bootstrap
- run: cd packages/backend && yarn build
- run: cd packages/cli && yarn build
- run: echo "🍏 This job's status is ${{ job.status }}."

121
.github/workflows/playwright.yml vendored Normal file
View File

@@ -0,0 +1,121 @@
name: Automatisch UI Tests
on:
push:
branches:
- main
pull_request:
paths:
- 'packages/backend/**'
- 'packages/e2e-tests/**'
- 'packages/web/**'
- '!packages/backend/src/apps/**'
workflow_dispatch:
env:
ENCRYPTION_KEY: sample_encryption_key
WEBHOOK_SECRET_KEY: sample_webhook_secret_key
APP_SECRET_KEY: sample_app_secret_key
POSTGRES_HOST: localhost
POSTGRES_DATABASE: automatisch
POSTGRES_PORT: 5432
POSTGRES_USERNAME: automatisch_user
POSTGRES_PASSWORD: automatisch_password
REDIS_HOST: localhost
APP_ENV: production
LICENSE_KEY: dummy_license_key
jobs:
test:
timeout-minutes: 60
runs-on:
- ubuntu-latest
services:
postgres:
image: postgres:14.5-alpine
env:
POSTGRES_DB: automatisch
POSTGRES_USER: automatisch_user
POSTGRES_PASSWORD: automatisch_password
options: >-
--health-cmd "pg_isready -U automatisch_user -d automatisch"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
redis:
image: redis:7.0.4-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 6379:6379
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Install dependencies
run: yarn && yarn lerna bootstrap
- name: Install Playwright Browsers
run: yarn playwright install --with-deps
- name: Build Automatisch
run: yarn lerna run --scope=@*/{web,cli} build
env:
# Keep this until we clean up warnings in build processes
CI: false
- name: Migrate database
working-directory: ./packages/backend
run: yarn db:migrate
- name: Seed user
working-directory: ./packages/backend
run: yarn db:seed:user &
- name: Install certutils
run: sudo apt install -y libnss3-tools
- name: Install mkcert
run: |
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64" \
&& chmod +x mkcert-v*-linux-amd64 \
&& sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
- name: Install root certificate via mkcert
run: mkcert -install
- name: Create certificate
run: mkcert automatisch.io "*.automatisch.io" localhost 127.0.0.1 ::1
working-directory: ./packages/e2e-tests
- name: Set CAROOT environment variable
run: echo "NODE_EXTRA_CA_CERTS=$(mkcert -CAROOT)/rootCA.pem" >> "$GITHUB_ENV"
- name: Override license server with local server
run: sudo echo "127.0.0.1 license.automatisch.io" | sudo tee -a /etc/hosts
- name: Run local license server
working-directory: ./packages/e2e-tests
run: sudo yarn start-mock-license-server &
- name: Run Automatisch
run: yarn start &
working-directory: ./packages/backend
- name: Run Automatisch worker
run: yarn start:worker &
working-directory: ./packages/backend
- name: Setup upterm session
if: false
uses: lhotari/action-upterm@v1
with:
limit-access-to-actor: true
limit-access-to-users: barinali
- name: Run Playwright tests
working-directory: ./packages/e2e-tests
env:
LOGIN_EMAIL: user@automatisch.io
LOGIN_PASSWORD: sample
BASE_URL: http://localhost:3000
GITHUB_CLIENT_ID: 1c0417daf898adfbd99a
GITHUB_CLIENT_SECRET: 3328fa814dd582ccd03dbe785cfd683fb8da92b3
run: yarn test
- uses: actions/upload-artifact@v3
if: always()
with:
name: playwright-report
path: packages/e2e-tests/test-results
retention-days: 30

1
.node-version Normal file
View File

@@ -0,0 +1 @@
18.19.0

1
.nvmrc Normal file
View File

@@ -0,0 +1 @@
18.19.0

View File

@@ -1,4 +1,7 @@
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}

View File

@@ -1,10 +1,10 @@
# syntax=docker/dockerfile:1
FROM node:16-alpine
FROM node:18-alpine
WORKDIR /automatisch
RUN \
apk --no-cache add --virtual build-dependencies python3 build-base && \
yarn global add @automatisch/cli@0.8.0 --network-timeout 1000000 && \
yarn global add @automatisch/cli@0.10.0 --network-timeout 1000000 && \
rm -rf /usr/local/share/.cache/ && \
apk del build-dependencies

View File

@@ -1,17 +1,22 @@
# syntax=docker/dockerfile:1
FROM node:16-alpine
WORKDIR /automatisch
FROM node:18-alpine
ENV PORT 3000
RUN ls -lna
RUN \
apk --no-cache add --virtual build-dependencies python3 build-base git
# copy the app, note .dockerignore
COPY . ./
RUN git clone https://github.com/automatisch/automatisch.git
RUN yarn
RUN yarn lerna bootstrap
RUN yarn lerna run --scope=@*/{web,backend,cli} build
WORKDIR /automatisch
RUN yarn install
RUN if [ "$WORKER" != "true" ]; then cd packages/web && yarn build; fi
RUN \
rm -rf /usr/local/share/.cache/ && \
apk del build-dependencies
COPY ./docker/entrypoint-cloud.sh /entrypoint-cloud.sh

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:1
FROM automatischio/automatisch:0.8.0
FROM automatischio/automatisch:0.10.0
WORKDIR /automatisch
RUN apk add --no-cache openssl dos2unix

View File

@@ -2,8 +2,12 @@
set -e
cd packages/backend
if [ -n "$WORKER" ]; then
yarn automatisch start-worker
yarn start:worker
else
yarn automatisch start
yarn db:migrate
yarn db:seed:user
yarn start
fi

View File

@@ -2,7 +2,7 @@
"packages": [
"packages/*"
],
"version": "0.8.0",
"version": "0.10.0",
"npmClient": "yarn",
"useWorkspaces": true,
"command": {

View File

@@ -18,7 +18,6 @@
"**/babel-loader",
"**/webpack",
"**/@automatisch/web",
"**/@automatisch/types",
"**/ajv"
]
},

View File

@@ -0,0 +1,15 @@
APP_ENV=test
HOST=localhost
PROTOCOL=http
PORT=3000
LOG_LEVEL=debug
ENCRYPTION_KEY=sample_encryption_key
WEBHOOK_SECRET_KEY=sample_webhook_secret_key
APP_SECRET_KEY=sample_app_secret_key
POSTGRES_HOST=localhost
POSTGRES_DATABASE=automatisch_test
POSTGRES_PORT=5432
POSTGRES_USERNAME=automatisch_test_user
POSTGRES_PASSWORD=automatisch_test_user_password
REDIS_HOST=localhost
AUTOMATISCH_CLOUD=true

View File

@@ -0,0 +1,12 @@
{
"root": true,
"env": {
"node": true,
"es6": true
},
"extends": ["eslint:recommended", "prettier"],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
}
}

View File

@@ -1,6 +1,6 @@
import { Client } from 'pg';
import pg from 'pg';
const client = new Client({
const client = new pg.Client({
host: 'localhost',
user: 'postgres',
port: 5432,

View File

@@ -0,0 +1,31 @@
import appConfig from '../../src/config/app.js';
import logger from '../../src/helpers/logger.js';
import '../../src/config/orm.js';
import { client as knex } from '../../src/config/database.js';
export const renameMigrationsAsJsFiles = async () => {
if (!appConfig.isDev) {
return;
}
try {
const tableExists = await knex.schema.hasTable('knex_migrations');
if (tableExists) {
await knex('knex_migrations')
.where('name', 'like', '%.ts')
.update({
name: knex.raw("REPLACE(name, '.ts', '.js')"),
});
logger.info(
`Migration file names with typescript renamed as JS file names!`
);
}
} catch (err) {
logger.error(err.message);
}
await knex.destroy();
};
renameMigrationsAsJsFiles();

View File

@@ -0,0 +1,3 @@
import { createDatabaseAndUser } from './utils.js';
createDatabaseAndUser();

View File

@@ -1,3 +0,0 @@
import { createDatabaseAndUser } from './utils';
createDatabaseAndUser();

View File

@@ -0,0 +1,3 @@
import { dropDatabase } from './utils.js';
dropDatabase();

View File

@@ -1,3 +0,0 @@
import { dropDatabase } from './utils';
dropDatabase();

View File

@@ -0,0 +1,3 @@
import { createUser } from './utils.js';
createUser();

View File

@@ -1,3 +0,0 @@
import { createUser } from './utils';
createUser();

View File

@@ -1,15 +1,15 @@
import appConfig from '../../src/config/app';
import logger from '../../src/helpers/logger';
import client from './client';
import User from '../../src/models/user';
import Role from '../../src/models/role';
import '../../src/config/orm';
import appConfig from '../../src/config/app.js';
import logger from '../../src/helpers/logger.js';
import client from './client.js';
import User from '../../src/models/user.js';
import Role from '../../src/models/role.js';
import '../../src/config/orm.js';
import process from 'process';
async function fetchAdminRole() {
const role = await Role
.query()
const role = await Role.query()
.where({
key: 'admin'
key: 'admin',
})
.limit(1)
.first();
@@ -41,12 +41,14 @@ export async function createUser(
logger.info('No need to seed a user.');
}
} catch (err) {
if ((err as any).nativeError.code !== UNIQUE_VIOLATION_CODE) {
if (err.nativeError.code !== UNIQUE_VIOLATION_CODE) {
throw err;
}
logger.info(`User already exists: ${email}`);
}
process.exit(0);
}
export const createDatabaseAndUser = async (
@@ -59,6 +61,7 @@ export const createDatabaseAndUser = async (
await grantPrivileges(database, user);
await client.end();
process.exit(0);
};
export const createDatabase = async (database = appConfig.postgresDatabase) => {
@@ -68,7 +71,7 @@ export const createDatabase = async (database = appConfig.postgresDatabase) => {
await client.query(`CREATE DATABASE ${database}`);
logger.info(`Database: ${database} created!`);
} catch (err) {
if ((err as any).code !== DUPLICATE_DB_CODE) {
if (err.code !== DUPLICATE_DB_CODE) {
throw err;
}
@@ -85,7 +88,7 @@ export const createDatabaseUser = async (user = appConfig.postgresUsername) => {
return result;
} catch (err) {
if ((err as any).code !== DUPLICATE_OBJECT_CODE) {
if (err.code !== DUPLICATE_OBJECT_CODE) {
throw err;
}

View File

@@ -1 +0,0 @@
export * from './dist/bin/database/utils';

View File

@@ -1,2 +0,0 @@
/* eslint-disable */
module.exports = require('./dist/bin/database/utils');

View File

@@ -1 +0,0 @@
export * from './dist/src/config/database';

View File

@@ -1,2 +0,0 @@
/* eslint-disable */
module.exports = require('./dist/src/config/database');

View File

@@ -1,6 +1,10 @@
import appConfig from './src/config/app';
import { knexSnakeCaseMappers } from 'objection';
import appConfig from './src/config/app.js';
import path from 'path';
import { fileURLToPath } from 'url';
const fileExtension = appConfig.isDev ? 'ts' : 'js';
const fileExtension = 'js';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const knexConfig = {
client: 'pg',
@@ -23,6 +27,7 @@ const knexConfig = {
seeds: {
directory: __dirname + '/src/db/seeds',
},
...(appConfig.isTest ? knexSnakeCaseMappers() : {}),
};
export default knexConfig;

View File

@@ -1 +0,0 @@
export * from './dist/src/helpers/logger';

View File

@@ -1,2 +0,0 @@
/* eslint-disable */
module.exports = require('./dist/src/helpers/logger');

View File

@@ -1,28 +1,25 @@
{
"name": "@automatisch/backend",
"version": "0.8.0",
"version": "0.10.0",
"license": "See LICENSE file",
"description": "The open source Zapier alternative. Build workflow automation without spending time and money.",
"type": "module",
"scripts": {
"dev": "ts-node-dev --watch 'src/graphql/schema.graphql' --exit-child src/server.ts",
"worker": "nodemon --watch 'src/**/*.ts' --exec 'ts-node' src/worker.ts",
"build": "tsc && yarn copy-statics",
"build:watch": "nodemon --watch 'src/**/*.ts' --watch 'bin/**/*.ts' --exec yarn build --ext ts",
"start": "node dist/src/server.js",
"test": "ava",
"dev": "nodemon --watch 'src/**/*.js' --exec 'node' src/server.js",
"worker": "nodemon --watch 'src/**/*.js' --exec 'node' src/worker.js",
"start": "node src/server.js",
"start:worker": "node src/worker.js",
"pretest": "APP_ENV=test node ./test/setup/prepare-test-env.js",
"test": "APP_ENV=test vitest run",
"lint": "eslint . --ignore-path ../../.eslintignore",
"db:create": "ts-node ./bin/database/create.ts",
"db:seed:user": "ts-node ./bin/database/seed-user.ts",
"db:drop": "ts-node ./bin/database/drop.ts",
"db:create": "node ./bin/database/create.js",
"db:seed:user": "node ./bin/database/seed-user.js",
"db:drop": "node ./bin/database/drop.js",
"db:migration:create": "knex migrate:make",
"db:rollback": "knex migrate:rollback",
"db:migrate": "knex migrate:latest",
"copy-statics": "copyfiles src/**/*.{graphql,json,svg,hbs} dist",
"prepack": "yarn build",
"prebuild": "rm -rf ./dist"
"db:migrate": "node ./bin/database/convert-migrations.js && knex migrate:latest"
},
"dependencies": {
"@automatisch/web": "^0.8.0",
"@bull-board/express": "^3.10.1",
"@casl/ability": "^6.5.0",
"@graphql-tools/graphql-file-loader": "^7.3.4",
@@ -31,11 +28,9 @@
"@rudderstack/rudder-sdk-node": "^1.1.2",
"@sentry/node": "^7.42.0",
"@sentry/tracing": "^7.42.0",
"@types/luxon": "^2.3.1",
"@types/passport": "^1.0.12",
"@types/xmlrpc": "^1.3.7",
"accounting": "^0.4.1",
"ajv-formats": "^2.1.1",
"axios": "0.24.0",
"axios": "1.6.0",
"bcrypt": "^5.0.1",
"bullmq": "^3.0.0",
"copyfiles": "^2.4.1",
@@ -57,6 +52,7 @@
"https-proxy-agent": "^7.0.1",
"jsonwebtoken": "^9.0.0",
"knex": "^2.4.0",
"libphonenumber-js": "^1.10.48",
"lodash.get": "^4.4.2",
"luxon": "2.5.2",
"memory-cache": "^0.2.0",
@@ -69,6 +65,8 @@
"passport": "^0.6.0",
"pg": "^8.7.1",
"php-serialize": "^4.0.2",
"pluralize": "^8.0.0",
"raw-body": "^2.5.2",
"showdown": "^2.1.0",
"stripe": "^11.13.0",
"winston": "^3.7.1",
@@ -81,26 +79,15 @@
}
],
"homepage": "https://github.com/automatisch/automatisch#readme",
"main": "dist/src/app",
"main": "src/server",
"directories": {
"bin": "bin",
"src": "src",
"test": "__tests__"
},
"files": [
"dist",
"bin",
"src",
"server.js",
"server.d.ts",
"worker.js",
"worker.d.ts",
"logger.js",
"logger.d.ts",
"database.js",
"database.d.ts",
"database-utils.js",
"database-utils.d.ts"
"src"
],
"repository": {
"type": "git",
@@ -110,39 +97,9 @@
"url": "https://github.com/automatisch/automatisch/issues"
},
"devDependencies": {
"@automatisch/types": "^0.8.0",
"@types/bcrypt": "^5.0.0",
"@types/bull": "^3.15.8",
"@types/cors": "^2.8.12",
"@types/crypto-js": "^4.0.2",
"@types/express": "^4.17.15",
"@types/http-errors": "^1.8.1",
"@types/jsonwebtoken": "^8.5.8",
"@types/lodash.get": "^4.4.6",
"@types/memory-cache": "^0.2.2",
"@types/morgan": "^1.9.3",
"@types/multer": "1.4.7",
"@types/node": "^16.10.2",
"@types/nodemailer": "^6.4.4",
"@types/pg": "^8.6.1",
"@types/pino": "^7.0.5",
"@types/showdown": "^2.0.1",
"ava": "^3.15.0",
"nodemon": "^2.0.13",
"sinon": "^11.1.2",
"ts-node": "^10.2.1",
"ts-node-dev": "^1.1.8"
},
"ava": {
"files": [
"test/**/*"
],
"extensions": [
"ts"
],
"require": [
"ts-node/register"
]
"supertest": "^6.3.3",
"vitest": "^1.1.3"
},
"publishConfig": {
"access": "public"

View File

@@ -1 +0,0 @@
export * from './dist/src/server';

View File

@@ -1,2 +0,0 @@
/* eslint-disable */
module.exports = require('./dist/src/server.js');

View File

@@ -2,22 +2,21 @@ import createError from 'http-errors';
import express from 'express';
import cors from 'cors';
import { IRequest } from '@automatisch/types';
import appConfig from './config/app';
import corsOptions from './config/cors-options';
import morgan from './helpers/morgan';
import * as Sentry from './helpers/sentry.ee';
import appAssetsHandler from './helpers/app-assets-handler';
import webUIHandler from './helpers/web-ui-handler';
import errorHandler from './helpers/error-handler';
import './config/orm';
import appConfig from './config/app.js';
import corsOptions from './config/cors-options.js';
import morgan from './helpers/morgan.js';
import * as Sentry from './helpers/sentry.ee.js';
import appAssetsHandler from './helpers/app-assets-handler.js';
import webUIHandler from './helpers/web-ui-handler.js';
import errorHandler from './helpers/error-handler.js';
import './config/orm.js';
import {
createBullBoardHandler,
serverAdapter,
} from './helpers/create-bull-board-handler';
import injectBullBoardHandler from './helpers/inject-bull-board-handler';
import router from './routes';
import configurePassport from './helpers/passport';
} from './helpers/create-bull-board-handler.js';
import injectBullBoardHandler from './helpers/inject-bull-board-handler.js';
import router from './routes/index.js';
import configurePassport from './helpers/passport.js';
createBullBoardHandler(serverAdapter);
@@ -33,11 +32,12 @@ injectBullBoardHandler(app, serverAdapter);
appAssetsHandler(app);
app.use(morgan);
app.use(
express.json({
limit: appConfig.requestBodySizeLimit,
verify(req, res, buf) {
(req as IRequest).rawBody = buf;
req.rawBody = buf;
},
})
);
@@ -46,7 +46,7 @@ app.use(
extended: true,
limit: appConfig.requestBodySizeLimit,
verify(req, res, buf) {
(req as IRequest).rawBody = buf;
req.rawBody = buf;
},
})
);

View File

@@ -0,0 +1,3 @@
import sendPrompt from './send-prompt/index.js';
export default [sendPrompt];

View File

@@ -0,0 +1,97 @@
import defineAction from '../../../../helpers/define-action.js';
const castFloatOrUndefined = (value) => {
return value === '' ? undefined : parseFloat(value);
};
export default defineAction({
name: 'Send prompt',
key: 'sendPrompt',
description: 'Creates a completion for the provided prompt and parameters.',
arguments: [
{
label: 'Prompt',
key: 'prompt',
type: 'string',
required: true,
variables: true,
description: 'The text to analyze.',
},
{
label: 'Temperature',
key: 'temperature',
type: 'string',
required: false,
variables: true,
description:
'What sampling temperature to use, between 0 and 2. Higher values means the model will take more risks. Try 0.9 for more creative applications, and 0 (argmax sampling) for ones with a well-defined answer. We generally recommend altering this or Top P but not both.',
},
{
label: 'Maximum tokens',
key: 'maxTokens',
type: 'string',
required: false,
variables: true,
description:
'The maximum number of tokens to generate in the completion.',
},
{
label: 'Stop Sequence',
key: 'stopSequence',
type: 'string',
required: false,
variables: true,
description:
'Single stop sequence where the API will stop generating further tokens. The returned text will not contain the stop sequence.',
},
{
label: 'Top P',
key: 'topP',
type: 'string',
required: false,
variables: true,
description:
'An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both.',
},
{
label: 'Frequency Penalty',
key: 'frequencyPenalty',
type: 'string',
required: false,
variables: true,
description: `Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.`,
},
{
label: 'Presence Penalty',
key: 'presencePenalty',
type: 'string',
required: false,
variables: true,
description: `Number between -2.0 and 2.0. Positive values penalize new tokens based on whether they appear in the text so far, increasing the model's likelihood to talk about new topics.`,
},
],
async run($) {
const payload = {
model: $.step.parameters.model,
prompt: $.step.parameters.prompt,
temperature: castFloatOrUndefined($.step.parameters.temperature),
max_tokens: castFloatOrUndefined($.step.parameters.maxTokens),
stop: $.step.parameters.stopSequence || null,
top_p: castFloatOrUndefined($.step.parameters.topP),
frequency_penalty: castFloatOrUndefined(
$.step.parameters.frequencyPenalty
),
presence_penalty: castFloatOrUndefined($.step.parameters.presencePenalty),
};
const { data } = await $.http.post(
`/deployments/${$.auth.data.deploymentId}/completions`,
payload
);
$.setActionItem({
raw: data,
});
},
});

View File

@@ -0,0 +1,6 @@
<svg width="256px" height="260px" viewBox="0 0 256 260" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<title>OpenAI</title>
<g>
<path d="M239.183914,106.202783 C245.054304,88.5242096 243.02228,69.1733805 233.607599,53.0998864 C219.451678,28.4588021 190.999703,15.7836129 163.213007,21.739505 C147.554077,4.32145883 123.794909,-3.42398554 100.87901,1.41873898 C77.9631105,6.26146349 59.3690093,22.9572536 52.0959621,45.2214219 C33.8436494,48.9644867 18.0901721,60.392749 8.86672513,76.5818033 C-5.443491,101.182962 -2.19544431,132.215255 16.8986662,153.320094 C11.0060865,170.990656 13.0197283,190.343991 22.4238231,206.422991 C36.5975553,231.072344 65.0680342,243.746566 92.8695738,237.783372 C105.235639,251.708249 123.001113,259.630942 141.623968,259.52692 C170.105359,259.552169 195.337611,241.165718 204.037777,214.045661 C222.28734,210.296356 238.038489,198.869783 247.267014,182.68528 C261.404453,158.127515 258.142494,127.262775 239.183914,106.202783 L239.183914,106.202783 Z M141.623968,242.541207 C130.255682,242.559177 119.243876,238.574642 110.519381,231.286197 L112.054146,230.416496 L163.724595,200.590881 C166.340648,199.056444 167.954321,196.256818 167.970781,193.224005 L167.970781,120.373788 L189.815614,133.010026 C190.034132,133.121423 190.186235,133.330564 190.224885,133.572774 L190.224885,193.940229 C190.168603,220.758427 168.442166,242.484864 141.623968,242.541207 Z M37.1575749,197.93062 C31.456498,188.086359 29.4094818,176.546984 31.3766237,165.342426 L32.9113895,166.263285 L84.6329973,196.088901 C87.2389349,197.618207 90.4682717,197.618207 93.0742093,196.088901 L156.255402,159.663793 L156.255402,184.885111 C156.243557,185.149771 156.111725,185.394602 155.89729,185.550176 L103.561776,215.733903 C80.3054953,229.131632 50.5924954,221.165435 37.1575749,197.93062 Z M23.5493181,85.3811273 C29.2899861,75.4733097 38.3511911,67.9162648 49.1287482,64.0478825 L49.1287482,125.438515 C49.0891492,128.459425 50.6965386,131.262556 53.3237748,132.754232 L116.198014,169.025864 L94.3531808,181.662102 C94.1132325,181.789434 93.8257461,181.789434 93.5857979,181.662102 L41.3526015,151.529534 C18.1419426,138.076098 10.1817681,108.385562 23.5493181,85.125333 L23.5493181,85.3811273 Z M203.0146,127.075598 L139.935725,90.4458545 L161.7294,77.8607748 C161.969348,77.7334434 162.256834,77.7334434 162.496783,77.8607748 L214.729979,108.044502 C231.032329,117.451747 240.437294,135.426109 238.871504,154.182739 C237.305714,172.939368 225.050719,189.105572 207.414262,195.67963 L207.414262,134.288998 C207.322521,131.276867 205.650697,128.535853 203.0146,127.075598 Z M224.757116,94.3850867 L223.22235,93.4642272 L171.60306,63.3828173 C168.981293,61.8443751 165.732456,61.8443751 163.110689,63.3828173 L99.9806554,99.8079259 L99.9806554,74.5866077 C99.9533004,74.3254088 100.071095,74.0701869 100.287609,73.9215426 L152.520805,43.7889738 C168.863098,34.3743518 189.174256,35.2529043 204.642579,46.0434841 C220.110903,56.8340638 227.949269,75.5923959 224.757116,94.1804513 L224.757116,94.3850867 Z M88.0606409,139.097931 L66.2158076,126.512851 C65.9950399,126.379091 65.8450965,126.154176 65.8065367,125.898945 L65.8065367,65.684966 C65.8314495,46.8285367 76.7500605,29.6846032 93.8270852,21.6883055 C110.90411,13.6920079 131.063833,16.2835462 145.5632,28.338998 L144.028434,29.2086986 L92.3579852,59.0343142 C89.7419327,60.5687513 88.1282597,63.3683767 88.1117998,66.4011901 L88.0606409,139.097931 Z M99.9294965,113.5185 L128.06687,97.3011417 L156.255402,113.5185 L156.255402,145.953218 L128.169187,162.170577 L99.9806554,145.953218 L99.9294965,113.5185 Z" fill="#000000"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,58 @@
import verifyCredentials from './verify-credentials.js';
import isStillVerified from './is-still-verified.js';
export default {
fields: [
{
key: 'screenName',
label: 'Screen Name',
type: 'string',
required: true,
readOnly: false,
value: null,
placeholder: null,
description:
'Screen name of your connection to be used on Automatisch UI.',
clickToCopy: false,
},
{
key: 'yourResourceName',
label: 'Your Resource Name',
type: 'string',
required: true,
readOnly: false,
value: null,
placeholder: null,
description: 'The name of your Azure OpenAI Resource.',
docUrl: 'https://automatisch.io/docs/azure-openai#your-resource-name',
clickToCopy: false,
},
{
key: 'deploymentId',
label: 'Deployment ID',
type: 'string',
required: true,
readOnly: false,
value: null,
placeholder: null,
description: 'The deployment name you chose when you deployed the model.',
docUrl: 'https://automatisch.io/docs/azure-openai#deployment-id',
clickToCopy: false,
},
{
key: 'apiKey',
label: 'API Key',
type: 'string',
required: true,
readOnly: false,
value: null,
placeholder: null,
description: 'Azure OpenAI API key of your account.',
docUrl: 'https://automatisch.io/docs/azure-openai#api-key',
clickToCopy: false,
},
],
verifyCredentials,
isStillVerified,
};

View File

@@ -0,0 +1,6 @@
const isStillVerified = async ($) => {
await $.http.get('/fine_tuning/jobs');
return true;
};
export default isStillVerified;

View File

@@ -0,0 +1,5 @@
const verifyCredentials = async ($) => {
await $.http.get('/fine_tuning/jobs');
};
export default verifyCredentials;

View File

@@ -0,0 +1,13 @@
const addAuthHeader = ($, requestConfig) => {
if ($.auth.data?.apiKey) {
requestConfig.headers['api-key'] = $.auth.data.apiKey;
}
requestConfig.params = {
'api-version': '2023-10-01-preview',
};
return requestConfig;
};
export default addAuthHeader;

View File

@@ -0,0 +1,11 @@
const setBaseUrl = ($, requestConfig) => {
const yourResourceName = $.auth.data.yourResourceName;
if (yourResourceName) {
requestConfig.baseURL = `https://${yourResourceName}.openai.azure.com/openai`;
}
return requestConfig;
};
export default setBaseUrl;

View File

@@ -0,0 +1,20 @@
import defineApp from '../../helpers/define-app.js';
import setBaseUrl from './common/set-base-url.js';
import addAuthHeader from './common/add-auth-header.js';
import auth from './auth/index.js';
import actions from './actions/index.js';
export default defineApp({
name: 'Azure OpenAI',
key: 'azure-openai',
baseUrl:
'https://azure.microsoft.com/en-us/products/ai-services/openai-service',
apiBaseUrl: '',
iconUrl: '{BASE_URL}/apps/azure-openai/assets/favicon.svg',
authDocUrl: 'https://automatisch.io/docs/apps/azure-openai/connection',
primaryColor: '000000',
supportsConnections: true,
beforeRequest: [setBaseUrl, addAuthHeader],
auth,
actions,
});

View File

@@ -0,0 +1,35 @@
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Add Template',
key: 'addTemplate',
description:
'Creates an attachment of a specified object by given parent ID.',
arguments: [
{
label: 'Templete Data',
key: 'templateData',
type: 'string',
required: true,
variables: true,
description: 'The content of your new Template in XML/HTML format.',
},
],
async run($) {
const templateData = $.step.parameters.templateData;
const base64Data = Buffer.from(templateData).toString('base64');
const dataURI = `data:application/xml;base64,${base64Data}`;
const body = JSON.stringify({ template: dataURI });
const response = await $.http.post('/template', body, {
headers: {
'Content-Type': 'application/json',
},
});
$.setActionItem({ raw: response.data });
},
});

View File

@@ -0,0 +1,3 @@
import addTemplate from './add-template/index.js';
export default [addTemplate];

View File

@@ -0,0 +1,444 @@
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="100%" viewBox="0 0 1173 1173" enable-background="new 0 0 1173 1173" xml:space="preserve">
<path fill="#73348B" opacity="1.000000" stroke="none"
d="
M1174.000000,208.000000
C1174.000000,529.969421 1174.000000,851.938782 1174.000000,1173.954102
C783.067810,1173.954102 392.135559,1173.954102 1.101677,1173.954102
C1.101677,783.104980 1.101677,392.209930 1.101677,1.000000
C322.697510,1.000000 644.395142,1.000000 966.516235,1.467920
C966.918274,68.235474 966.895691,134.535110 966.877258,200.834747
C966.875183,208.314804 966.885986,208.322311 974.623108,208.322571
C1038.924072,208.324631 1103.225098,208.326889 1167.526123,208.310104
C1169.684082,208.309540 1171.842041,208.107910 1174.000000,208.000000
M824.469116,403.972260
C830.640320,396.844513 836.811584,389.716736 843.084839,382.471130
C813.026611,353.649353 780.256958,329.661011 741.486328,314.979523
C680.713013,291.966217 618.102173,287.454407 554.867737,301.133331
C463.817413,320.829376 397.312988,373.276550 356.951416,457.320282
C326.804779,520.093689 319.957764,586.465027 335.155365,654.111511
C358.404633,757.597168 419.946594,829.052856 520.224731,865.190979
C575.706055,885.185242 632.887451,885.395691 690.185303,873.820862
C753.158081,861.099548 803.501465,826.733521 847.328979,780.124756
C825.522522,758.991638 803.799194,737.939087 781.866882,716.683960
C775.039185,722.581055 767.314697,729.376404 759.459290,736.016846
C716.790833,772.086792 668.088501,791.050049 611.649048,788.182129
C555.974548,785.353088 510.796692,761.934998 476.366638,718.347046
C450.585236,685.708313 437.160706,648.031494 433.752258,606.690613
C430.193268,563.523926 437.309692,522.406311 457.904602,484.052490
C496.945190,411.347198 573.378845,374.580780 654.712402,388.765686
C691.388062,395.162079 723.361389,411.383057 752.404175,434.001740
C761.432556,441.033173 770.043213,448.601013 779.130859,456.160980
C794.123657,438.910675 809.069336,421.714569 824.469116,403.972260
M401.126434,1003.500000
C401.122375,996.333740 401.039398,989.166199 401.152191,982.001770
C401.198700,979.046997 400.149170,977.760315 397.091583,977.847290
C392.096008,977.989441 387.061035,978.231079 382.102264,977.778320
C376.825531,977.296387 375.754608,979.441406 375.775360,984.315125
C375.949005,1025.145630 375.873474,1065.977417 375.874237,1106.808716
C375.874329,1113.141724 375.994049,1119.477539 375.836487,1125.806519
C375.755646,1129.053101 376.993805,1130.258667 380.217560,1130.162231
C385.712311,1129.997559 391.222198,1129.953491 396.712982,1130.175049
C400.378265,1130.322998 401.327179,1128.650757 401.160339,1125.375610
C400.987305,1121.979004 401.121826,1118.566772 401.121826,1114.051758
C403.029083,1115.849609 404.038116,1116.655273 404.875366,1117.611572
C423.297913,1138.649780 456.085083,1135.565308 472.987305,1118.665161
C494.109619,1097.545654 495.745544,1057.582886 476.289124,1034.845947
C458.642456,1014.223816 423.619873,1010.312439 404.695007,1033.663574
C403.933044,1034.603882 402.896790,1035.321899 401.126709,1036.922485
C401.126709,1025.377563 401.126709,1014.938782 401.126434,1003.500000
M1021.364685,1102.039429
C1034.668091,1125.202515 1054.950562,1134.733032 1081.114746,1132.114380
C1116.971191,1128.525757 1140.394165,1093.509888 1130.352783,1058.871704
C1120.842163,1026.064697 1084.911865,1009.039368 1051.827393,1021.662964
C1020.072083,1033.779419 1006.094421,1069.964478 1021.364685,1102.039429
M513.859009,1053.461792
C508.981232,1065.614258 508.319275,1078.089722 511.612946,1090.667114
C518.928467,1118.602539 545.601379,1135.665771 576.077942,1132.138428
C615.868713,1127.533081 639.243103,1085.250000 621.290771,1049.613525
C609.925598,1027.053101 590.627502,1017.015625 565.767517,1017.961548
C541.582703,1018.881775 524.357849,1030.779541 513.859009,1053.461792
M853.945312,1105.526489
C844.979370,1111.390137 835.234131,1113.082764 824.789001,1110.928833
C812.187134,1108.330078 801.815186,1096.424561 801.983032,1084.128296
C803.915649,1084.128296 805.872803,1084.128418 807.829956,1084.128296
C827.828918,1084.128174 847.827942,1084.128174 867.826904,1084.128052
C883.022278,1084.128052 883.416565,1084.089355 881.911011,1068.743774
C877.873352,1027.588623 845.873840,1010.303040 812.589294,1020.461792
C788.140564,1027.923828 771.315674,1053.597778 776.625183,1086.417480
C782.995667,1125.795166 822.767029,1141.211426 855.517578,1128.350586
C864.166870,1124.953979 871.321899,1119.494873 877.282959,1111.812744
C872.197815,1107.281738 867.508911,1103.103882 862.714783,1098.832153
C859.777344,1101.088501 857.158447,1103.100098 853.945312,1105.526489
M183.035294,1022.439941
C178.726364,1024.044678 174.417435,1025.649414 169.759094,1027.384277
C172.080597,1034.339355 174.168320,1040.594116 176.396927,1047.270874
C178.710007,1046.498047 180.428452,1045.982422 182.104675,1045.354126
C192.414581,1041.489502 203.049866,1039.981567 214.012650,1041.017212
C228.197418,1042.357178 237.230057,1053.265137 234.370621,1065.622192
C233.945877,1065.733521 233.456528,1066.014160 233.019272,1065.948486
C231.544067,1065.726807 230.081848,1065.406616 228.624466,1065.080322
C213.432663,1061.679199 198.251007,1060.834473 183.260117,1065.925537
C168.246078,1071.024536 160.203674,1082.376099 160.159256,1097.991577
C160.116211,1113.124634 168.617416,1125.277100 183.512024,1129.868774
C201.272339,1135.343872 217.762161,1132.975952 231.922165,1119.980591
C232.681229,1119.283936 233.598526,1118.759888 234.998825,1117.756470
C234.998825,1120.660034 235.167923,1122.828491 234.961670,1124.960815
C234.595810,1128.743408 235.836517,1130.435547 239.938004,1130.198853
C245.253296,1129.892090 250.601852,1130.021362 255.931290,1130.154541
C258.904449,1130.228760 260.057526,1129.146118 260.038300,1126.091797
C259.899628,1104.095337 260.293976,1082.087280 259.708466,1060.104492
C259.149353,1039.110596 247.823425,1025.003418 228.752792,1020.447083
C213.662979,1016.841919 198.651810,1018.154236 183.035294,1022.439941
M652.674988,1084.500000
C652.676819,1097.990356 652.774353,1111.481812 652.619568,1124.970337
C652.575684,1128.797485 653.756165,1130.430420 657.763428,1130.184448
C662.243225,1129.909424 666.753052,1130.130493 671.249817,1130.123413
C677.988098,1130.112915 677.994995,1130.108398 677.998840,1123.280029
C678.009644,1104.127197 677.813293,1084.971313 678.088196,1065.822388
C678.289795,1051.782104 687.650574,1041.728882 700.475464,1040.969238
C714.725037,1040.125244 723.562256,1047.280884 725.706665,1061.495361
C726.002808,1063.458374 725.985596,1065.479614 725.987732,1067.474121
C726.007690,1086.627075 726.075562,1105.780396 725.937012,1124.932373
C725.910034,1128.659790 726.763428,1130.436401 730.909912,1130.197876
C736.388123,1129.882690 741.898499,1130.048462 747.393127,1130.132080
C750.111389,1130.173340 751.333618,1129.085205 751.318970,1126.315796
C751.187561,1101.504028 751.651367,1076.672607 750.778564,1051.887817
C750.329590,1039.136963 743.986084,1028.674927 732.321106,1022.254761
C716.863159,1013.746887 695.690918,1017.041931 683.479919,1029.807129
C681.911743,1031.446533 680.418274,1033.157227 677.994934,1035.817871
C677.994934,1031.179810 677.847046,1027.753906 678.037964,1024.347046
C678.215881,1021.172424 677.140076,1019.820496 673.800659,1019.952393
C668.645813,1020.156006 663.460022,1020.260315 658.319153,1019.922363
C653.942261,1019.634521 652.544373,1021.128174 652.590515,1025.542358
C652.792175,1044.859741 652.675354,1064.180542 652.674988,1084.500000
M119.317238,1046.101074
C122.268578,1048.446411 125.219917,1050.791626 127.387344,1052.514038
C132.109711,1048.247925 136.374313,1044.289062 140.759842,1040.468872
C144.010681,1037.637085 143.275986,1035.555298 140.351669,1032.810791
C125.930077,1019.275879 108.562424,1015.442383 89.835030,1018.619995
C58.671745,1023.907654 39.333969,1050.496826 43.188984,1083.193359
C45.926426,1106.411377 59.195229,1122.338257 81.478561,1129.875244
C103.477272,1137.315918 128.440613,1130.652588 142.387802,1114.456543
C144.090958,1112.478760 144.008331,1111.254517 142.279175,1109.447876
C138.256943,1105.245117 134.418365,1100.866577 130.299011,1096.332031
C121.771889,1103.853394 113.867172,1109.740845 103.144859,1110.191895
C92.244728,1110.650269 83.239876,1107.153076 76.138634,1098.826416
C65.223991,1086.028564 65.297775,1064.157593 76.319031,1051.184937
C87.046638,1038.557983 103.476791,1036.430054 119.317238,1046.101074
M353.950317,1043.008423
C354.006683,1036.186401 353.906464,1029.358154 354.180176,1022.544922
C354.335571,1018.677124 352.771240,1017.653687 349.151764,1017.919495
C335.330078,1018.934265 325.588013,1026.116211 318.604279,1037.643921
C317.750885,1039.052734 316.890594,1040.457275 316.033447,1041.863770
C315.121674,1035.918945 314.900055,1030.423950 315.194824,1024.956665
C315.413696,1020.897034 313.799438,1019.733093 309.981384,1019.938782
C305.168030,1020.198242 300.312347,1020.256714 295.507935,1019.924500
C291.198883,1019.626587 289.697205,1020.959900 289.777374,1025.465820
C290.040833,1040.276245 289.874969,1055.094116 289.875153,1069.909180
C289.875397,1088.219849 289.984222,1106.531616 289.796387,1124.840332
C289.753448,1129.024658 291.144775,1130.494019 295.243988,1130.181030
C298.884857,1129.903076 302.564056,1130.154053 306.225861,1130.119141
C316.127838,1130.024902 314.970276,1131.203003 315.137146,1121.384644
C315.383026,1106.919067 314.932556,1092.386353 316.201233,1078.007690
C317.784821,1060.059814 328.779388,1048.418091 344.942749,1045.376465
C347.832062,1044.832642 350.733795,1044.354858 353.950317,1043.008423
M970.561462,1130.149170
C976.347717,1130.149170 982.133972,1130.149170 988.190430,1130.149170
C988.190430,1093.234131 988.190430,1056.859741 988.190430,1020.333618
C979.702515,1020.333618 971.488037,1020.333618 963.325317,1020.333618
C963.325317,1057.058838 963.325317,1093.449585 963.325317,1130.149170
C965.622131,1130.149170 967.600586,1130.149170 970.561462,1130.149170
M931.087708,1129.856323
C931.087708,1120.373291 931.087708,1110.890259 931.087708,1101.511963
C922.010315,1101.511963 913.093201,1101.511963 904.095581,1101.511963
C904.095581,1111.126099 904.095581,1120.382812 904.095581,1130.103516
C912.953064,1130.103516 921.562012,1130.103516 931.087708,1129.856323
M989.143494,1000.348511
C989.143494,993.401855 989.143494,986.455139 989.143494,979.396606
C979.834900,979.396606 970.989380,979.396606 962.400879,979.396606
C962.400879,987.527710 962.400879,995.258179 962.400879,1003.146362
C970.452820,1003.146362 978.106445,1003.221008 985.755371,1003.064941
C986.887451,1003.041870 987.997314,1001.928955 989.143494,1000.348511
z"/>
<path fill="#B497C6" opacity="1.000000" stroke="none"
d="
M1174.000000,207.750000
C1171.842041,208.107910 1169.684082,208.309540 1167.526123,208.310104
C1103.225098,208.326889 1038.924072,208.324631 974.623108,208.322571
C966.885986,208.322311 966.875183,208.314804 966.877258,200.834747
C966.895691,134.535110 966.918274,68.235474 966.969849,1.467920
C967.000000,1.000000 967.500000,1.000000 967.892212,1.300326
C968.620972,1.969603 968.943176,2.352815 969.295898,2.705561
C1036.645020,70.060425 1103.995605,137.413895 1171.356201,204.757263
C1172.170776,205.571564 1173.115845,206.255310 1174.000000,207.000000
C1174.000000,207.000000 1174.000000,207.500000 1174.000000,207.750000
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M1174.000000,206.533020
C1173.115845,206.255310 1172.170776,205.571564 1171.356201,204.757263
C1103.995605,137.413895 1036.645020,70.060425 969.295898,2.705561
C968.943176,2.352815 968.620972,1.969603 968.142212,1.300326
C1036.594238,1.000000 1105.188599,1.000000 1174.000000,1.000000
C1174.000000,69.355194 1174.000000,137.710617 1174.000000,206.533020
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M824.242065,404.245361
C809.069336,421.714569 794.123657,438.910675 779.130859,456.160980
C770.043213,448.601013 761.432556,441.033173 752.404175,434.001740
C723.361389,411.383057 691.388062,395.162079 654.712402,388.765686
C573.378845,374.580780 496.945190,411.347198 457.904602,484.052490
C437.309692,522.406311 430.193268,563.523926 433.752258,606.690613
C437.160706,648.031494 450.585236,685.708313 476.366638,718.347046
C510.796692,761.934998 555.974548,785.353088 611.649048,788.182129
C668.088501,791.050049 716.790833,772.086792 759.459290,736.016846
C767.314697,729.376404 775.039185,722.581055 781.866882,716.683960
C803.799194,737.939087 825.522522,758.991638 847.328979,780.124756
C803.501465,826.733521 753.158081,861.099548 690.185303,873.820862
C632.887451,885.395691 575.706055,885.185242 520.224731,865.190979
C419.946594,829.052856 358.404633,757.597168 335.155365,654.111511
C319.957764,586.465027 326.804779,520.093689 356.951416,457.320282
C397.312988,373.276550 463.817413,320.829376 554.867737,301.133331
C618.102173,287.454407 680.713013,291.966217 741.486328,314.979523
C780.256958,329.661011 813.026611,353.649353 843.084839,382.471130
C836.811584,389.716736 830.640320,396.844513 824.242065,404.245361
z"/>
<path fill="#B496C6" opacity="1.000000" stroke="none"
d="
M401.126587,1004.000000
C401.126709,1014.938782 401.126709,1025.377563 401.126709,1036.922485
C402.896790,1035.321899 403.933044,1034.603882 404.695007,1033.663574
C423.619873,1010.312439 458.642456,1014.223816 476.289124,1034.845947
C495.745544,1057.582886 494.109619,1097.545654 472.987305,1118.665161
C456.085083,1135.565308 423.297913,1138.649780 404.875366,1117.611572
C404.038116,1116.655273 403.029083,1115.849609 401.121826,1114.051758
C401.121826,1118.566772 400.987305,1121.979004 401.160339,1125.375610
C401.327179,1128.650757 400.378265,1130.322998 396.712982,1130.175049
C391.222198,1129.953491 385.712311,1129.997559 380.217560,1130.162231
C376.993805,1130.258667 375.755646,1129.053101 375.836487,1125.806519
C375.994049,1119.477539 375.874329,1113.141724 375.874237,1106.808716
C375.873474,1065.977417 375.949005,1025.145630 375.775360,984.315125
C375.754608,979.441406 376.825531,977.296387 382.102264,977.778320
C387.061035,978.231079 392.096008,977.989441 397.091583,977.847290
C400.149170,977.760315 401.198700,979.046997 401.152191,982.001770
C401.039398,989.166199 401.122375,996.333740 401.126587,1004.000000
M401.102875,1069.011719
C400.098053,1078.886963 401.329559,1088.256470 407.101685,1096.684570
C420.591766,1116.381714 449.957458,1114.592529 459.843262,1092.900513
C462.811829,1086.386719 463.929352,1078.394409 463.659058,1071.163086
C462.954895,1052.325073 448.612427,1039.179199 431.024689,1039.892334
C416.229248,1040.492432 405.168213,1050.977661 401.102875,1069.011719
z"/>
<path fill="#FEFDFE" opacity="1.000000" stroke="none"
d="
M1021.202576,1101.701294
C1006.094421,1069.964478 1020.072083,1033.779419 1051.827393,1021.662964
C1084.911865,1009.039368 1120.842163,1026.064697 1130.352783,1058.871704
C1140.394165,1093.509888 1116.971191,1128.525757 1081.114746,1132.114380
C1054.950562,1134.733032 1034.668091,1125.202515 1021.202576,1101.701294
M1063.986572,1041.223145
C1048.638306,1046.359863 1041.596069,1057.693604 1040.531982,1073.203491
C1038.714111,1099.699341 1064.766113,1118.165283 1088.315552,1107.193970
C1103.746460,1100.005005 1111.074951,1080.915771 1105.178711,1063.268677
C1099.385498,1045.930298 1083.597778,1037.239746 1063.986572,1041.223145
z"/>
<path fill="#B396C5" opacity="1.000000" stroke="none"
d="
M513.996948,1053.104736
C524.357849,1030.779541 541.582703,1018.881775 565.767517,1017.961548
C590.627502,1017.015625 609.925598,1027.053101 621.290771,1049.613525
C639.243103,1085.250000 615.868713,1127.533081 576.077942,1132.138428
C545.601379,1135.665771 518.928467,1118.602539 511.612946,1090.667114
C508.319275,1078.089722 508.981232,1065.614258 513.996948,1053.104736
M562.260620,1040.444092
C546.615784,1043.979858 537.547485,1054.070801 535.297913,1070.447632
C533.121765,1086.289917 541.953796,1102.308838 555.941284,1107.888672
C570.341492,1113.633301 586.898376,1109.268066 595.135681,1096.926514
C603.733704,1084.044556 604.355286,1070.265991 596.774170,1056.799438
C589.497620,1043.873901 577.771179,1038.791748 562.260620,1040.444092
z"/>
<path fill="#B396C5" opacity="1.000000" stroke="none"
d="
M854.242432,1105.319092
C857.158447,1103.100098 859.777344,1101.088501 862.714783,1098.832153
C867.508911,1103.103882 872.197815,1107.281738 877.282959,1111.812744
C871.321899,1119.494873 864.166870,1124.953979 855.517578,1128.350586
C822.767029,1141.211426 782.995667,1125.795166 776.625183,1086.417480
C771.315674,1053.597778 788.140564,1027.923828 812.589294,1020.461792
C845.873840,1010.303040 877.873352,1027.588623 881.911011,1068.743774
C883.416565,1084.089355 883.022278,1084.128052 867.826904,1084.128052
C847.827942,1084.128174 827.828918,1084.128174 807.829956,1084.128296
C805.872803,1084.128418 803.915649,1084.128296 801.983032,1084.128296
C801.815186,1096.424561 812.187134,1108.330078 824.789001,1110.928833
C835.234131,1113.082764 844.979370,1111.390137 854.242432,1105.319092
M807.682800,1067.153442
C823.922729,1067.153442 840.162659,1067.153442 856.360352,1067.153442
C857.024231,1051.490723 843.821167,1038.060181 828.868347,1038.415405
C814.209839,1038.763672 800.809204,1052.746582 801.885498,1066.903320
C803.478333,1066.985229 805.112427,1067.069336 807.682800,1067.153442
z"/>
<path fill="#B396C6" opacity="1.000000" stroke="none"
d="
M183.418549,1022.317383
C198.651810,1018.154236 213.662979,1016.841919 228.752792,1020.447083
C247.823425,1025.003418 259.149353,1039.110596 259.708466,1060.104492
C260.293976,1082.087280 259.899628,1104.095337 260.038300,1126.091797
C260.057526,1129.146118 258.904449,1130.228760 255.931290,1130.154541
C250.601852,1130.021362 245.253296,1129.892090 239.938004,1130.198853
C235.836517,1130.435547 234.595810,1128.743408 234.961670,1124.960815
C235.167923,1122.828491 234.998825,1120.660034 234.998825,1117.756470
C233.598526,1118.759888 232.681229,1119.283936 231.922165,1119.980591
C217.762161,1132.975952 201.272339,1135.343872 183.512024,1129.868774
C168.617416,1125.277100 160.116211,1113.124634 160.159256,1097.991577
C160.203674,1082.376099 168.246078,1071.024536 183.260117,1065.925537
C198.251007,1060.834473 213.432663,1061.679199 228.624466,1065.080322
C230.081848,1065.406616 231.544067,1065.726807 233.019272,1065.948486
C233.456528,1066.014160 233.945877,1065.733521 234.370621,1065.622192
C237.230057,1053.265137 228.197418,1042.357178 214.012650,1041.017212
C203.049866,1039.981567 192.414581,1041.489502 182.104675,1045.354126
C180.428452,1045.982422 178.710007,1046.498047 176.396927,1047.270874
C174.168320,1040.594116 172.080597,1034.339355 169.759094,1027.384277
C174.417435,1025.649414 178.726364,1024.044678 183.418549,1022.317383
M222.614487,1110.282959
C232.280441,1105.292969 236.480362,1097.197876 235.760620,1086.535889
C235.661087,1085.061401 234.448975,1082.775879 233.263031,1082.397217
C220.997086,1078.481323 208.516418,1076.766968 196.064621,1081.398193
C188.557663,1084.190308 184.559586,1090.745972 185.061066,1098.121948
C185.541321,1105.185791 190.386749,1110.687134 198.052612,1112.792114
C206.277649,1115.050659 214.217789,1113.966431 222.614487,1110.282959
z"/>
<path fill="#B497C6" opacity="1.000000" stroke="none"
d="
M652.674561,1084.000000
C652.675354,1064.180542 652.792175,1044.859741 652.590515,1025.542358
C652.544373,1021.128174 653.942261,1019.634521 658.319153,1019.922363
C663.460022,1020.260315 668.645813,1020.156006 673.800659,1019.952393
C677.140076,1019.820496 678.215881,1021.172424 678.037964,1024.347046
C677.847046,1027.753906 677.994934,1031.179810 677.994934,1035.817871
C680.418274,1033.157227 681.911743,1031.446533 683.479919,1029.807129
C695.690918,1017.041931 716.863159,1013.746887 732.321106,1022.254761
C743.986084,1028.674927 750.329590,1039.136963 750.778564,1051.887817
C751.651367,1076.672607 751.187561,1101.504028 751.318970,1126.315796
C751.333618,1129.085205 750.111389,1130.173340 747.393127,1130.132080
C741.898499,1130.048462 736.388123,1129.882690 730.909912,1130.197876
C726.763428,1130.436401 725.910034,1128.659790 725.937012,1124.932373
C726.075562,1105.780396 726.007690,1086.627075 725.987732,1067.474121
C725.985596,1065.479614 726.002808,1063.458374 725.706665,1061.495361
C723.562256,1047.280884 714.725037,1040.125244 700.475464,1040.969238
C687.650574,1041.728882 678.289795,1051.782104 678.088196,1065.822388
C677.813293,1084.971313 678.009644,1104.127197 677.998840,1123.280029
C677.994995,1130.108398 677.988098,1130.112915 671.249817,1130.123413
C666.753052,1130.130493 662.243225,1129.909424 657.763428,1130.184448
C653.756165,1130.430420 652.575684,1128.797485 652.619568,1124.970337
C652.774353,1111.481812 652.676819,1097.990356 652.674561,1084.000000
z"/>
<path fill="#B396C5" opacity="1.000000" stroke="none"
d="
M119.017403,1045.897461
C103.476791,1036.430054 87.046638,1038.557983 76.319031,1051.184937
C65.297775,1064.157593 65.223991,1086.028564 76.138634,1098.826416
C83.239876,1107.153076 92.244728,1110.650269 103.144859,1110.191895
C113.867172,1109.740845 121.771889,1103.853394 130.299011,1096.332031
C134.418365,1100.866577 138.256943,1105.245117 142.279175,1109.447876
C144.008331,1111.254517 144.090958,1112.478760 142.387802,1114.456543
C128.440613,1130.652588 103.477272,1137.315918 81.478561,1129.875244
C59.195229,1122.338257 45.926426,1106.411377 43.188984,1083.193359
C39.333969,1050.496826 58.671745,1023.907654 89.835030,1018.619995
C108.562424,1015.442383 125.930077,1019.275879 140.351669,1032.810791
C143.275986,1035.555298 144.010681,1037.637085 140.759842,1040.468872
C136.374313,1044.289062 132.109711,1048.247925 127.387344,1052.514038
C125.219917,1050.791626 122.268578,1048.446411 119.017403,1045.897461
z"/>
<path fill="#B497C6" opacity="1.000000" stroke="none"
d="
M353.790070,1043.427490
C350.733795,1044.354858 347.832062,1044.832642 344.942749,1045.376465
C328.779388,1048.418091 317.784821,1060.059814 316.201233,1078.007690
C314.932556,1092.386353 315.383026,1106.919067 315.137146,1121.384644
C314.970276,1131.203003 316.127838,1130.024902 306.225861,1130.119141
C302.564056,1130.154053 298.884857,1129.903076 295.243988,1130.181030
C291.144775,1130.494019 289.753448,1129.024658 289.796387,1124.840332
C289.984222,1106.531616 289.875397,1088.219849 289.875153,1069.909180
C289.874969,1055.094116 290.040833,1040.276245 289.777374,1025.465820
C289.697205,1020.959900 291.198883,1019.626587 295.507935,1019.924500
C300.312347,1020.256714 305.168030,1020.198242 309.981384,1019.938782
C313.799438,1019.733093 315.413696,1020.897034 315.194824,1024.956665
C314.900055,1030.423950 315.121674,1035.918945 316.033447,1041.863770
C316.890594,1040.457275 317.750885,1039.052734 318.604279,1037.643921
C325.588013,1026.116211 335.330078,1018.934265 349.151764,1017.919495
C352.771240,1017.653687 354.335571,1018.677124 354.180176,1022.544922
C353.906464,1029.358154 354.006683,1036.186401 353.790070,1043.427490
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M970.070190,1130.149170
C967.600586,1130.149170 965.622131,1130.149170 963.325317,1130.149170
C963.325317,1093.449585 963.325317,1057.058838 963.325317,1020.333618
C971.488037,1020.333618 979.702515,1020.333618 988.190430,1020.333618
C988.190430,1056.859741 988.190430,1093.234131 988.190430,1130.149170
C982.133972,1130.149170 976.347717,1130.149170 970.070190,1130.149170
z"/>
<path fill="#FCFBFD" opacity="1.000000" stroke="none"
d="
M930.629333,1129.979980
C921.562012,1130.103516 912.953064,1130.103516 904.095581,1130.103516
C904.095581,1120.382812 904.095581,1111.126099 904.095581,1101.511963
C913.093201,1101.511963 922.010315,1101.511963 931.087708,1101.511963
C931.087708,1110.890259 931.087708,1120.373291 930.629333,1129.979980
z"/>
<path fill="#FFFFFF" opacity="1.000000" stroke="none"
d="
M989.130493,1000.834351
C987.997314,1001.928955 986.887451,1003.041870 985.755371,1003.064941
C978.106445,1003.221008 970.452820,1003.146362 962.400879,1003.146362
C962.400879,995.258179 962.400879,987.527710 962.400879,979.396606
C970.989380,979.396606 979.834900,979.396606 989.143494,979.396606
C989.143494,986.455139 989.143494,993.401855 989.130493,1000.834351
z"/>
<path fill="#73358B" opacity="1.000000" stroke="none"
d="
M401.167480,1068.572754
C405.168213,1050.977661 416.229248,1040.492432 431.024689,1039.892334
C448.612427,1039.179199 462.954895,1052.325073 463.659058,1071.163086
C463.929352,1078.394409 462.811829,1086.386719 459.843262,1092.900513
C449.957458,1114.592529 420.591766,1116.381714 407.101685,1096.684570
C401.329559,1088.256470 400.098053,1078.886963 401.167480,1068.572754
z"/>
<path fill="#74368C" opacity="1.000000" stroke="none"
d="
M1064.389893,1041.130493
C1083.597778,1037.239746 1099.385498,1045.930298 1105.178711,1063.268677
C1111.074951,1080.915771 1103.746460,1100.005005 1088.315552,1107.193970
C1064.766113,1118.165283 1038.714111,1099.699341 1040.531982,1073.203491
C1041.596069,1057.693604 1048.638306,1046.359863 1064.389893,1041.130493
z"/>
<path fill="#73358B" opacity="1.000000" stroke="none"
d="
M562.688843,1040.359863
C577.771179,1038.791748 589.497620,1043.873901 596.774170,1056.799438
C604.355286,1070.265991 603.733704,1084.044556 595.135681,1096.926514
C586.898376,1109.268066 570.341492,1113.633301 555.941284,1107.888672
C541.953796,1102.308838 533.121765,1086.289917 535.297913,1070.447632
C537.547485,1054.070801 546.615784,1043.979858 562.688843,1040.359863
z"/>
<path fill="#74358C" opacity="1.000000" stroke="none"
d="
M807.214600,1067.153320
C805.112427,1067.069336 803.478333,1066.985229 801.885498,1066.903320
C800.809204,1052.746582 814.209839,1038.763672 828.868347,1038.415405
C843.821167,1038.060181 857.024231,1051.490723 856.360352,1067.153442
C840.162659,1067.153442 823.922729,1067.153442 807.214600,1067.153320
z"/>
<path fill="#74358C" opacity="1.000000" stroke="none"
d="
M222.282150,1110.464844
C214.217789,1113.966431 206.277649,1115.050659 198.052612,1112.792114
C190.386749,1110.687134 185.541321,1105.185791 185.061066,1098.121948
C184.559586,1090.745972 188.557663,1084.190308 196.064621,1081.398193
C208.516418,1076.766968 220.997086,1078.481323 233.263031,1082.397217
C234.448975,1082.775879 235.661087,1085.061401 235.760620,1086.535889
C236.480362,1097.197876 232.280441,1105.292969 222.282150,1110.464844
z"/>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,33 @@
import verifyCredentials from './verify-credentials.js';
import isStillVerified from './is-still-verified.js';
export default {
fields: [
{
key: 'screenName',
label: 'Screen Name',
type: 'string',
required: true,
readOnly: false,
value: null,
placeholder: null,
description:
'Screen name of your connection to be used on Automatisch UI.',
clickToCopy: false,
},
{
key: 'apiKey',
label: 'API Key',
type: 'string',
required: true,
readOnly: false,
value: null,
placeholder: null,
description: 'Carbone API key of your account.',
clickToCopy: false,
},
],
verifyCredentials,
isStillVerified,
};

View File

@@ -0,0 +1,8 @@
import verifyCredentials from './verify-credentials.js';
const isStillVerified = async ($) => {
await verifyCredentials($);
return true;
};
export default isStillVerified;

View File

@@ -0,0 +1,10 @@
const verifyCredentials = async ($) => {
await $.http.get('/templates');
await $.auth.set({
screenName: $.auth.data.screenName,
apiKey: $.auth.data.apiKey,
});
};
export default verifyCredentials;

View File

@@ -1,8 +1,7 @@
import { TBeforeRequest } from '@automatisch/types';
const addAuthHeader: TBeforeRequest = ($, requestConfig) => {
const addAuthHeader = ($, requestConfig) => {
if ($.auth.data?.apiKey) {
requestConfig.headers.Authorization = `Bearer ${$.auth.data.apiKey}`;
requestConfig.headers['carbone-version'] = '4';
}
return requestConfig;

View File

@@ -0,0 +1,18 @@
import defineApp from '../../helpers/define-app.js';
import addAuthHeader from './common/add-auth-header.js';
import auth from './auth/index.js';
import actions from './actions/index.js';
export default defineApp({
name: 'Carbone',
key: 'carbone',
iconUrl: '{BASE_URL}/apps/carbone/assets/favicon.svg',
authDocUrl: 'https://automatisch.io/docs/apps/carbone/connection',
supportsConnections: true,
baseUrl: 'https://carbone.io',
apiBaseUrl: 'https://api.carbone.io',
primaryColor: '6f42c1',
beforeRequest: [addAuthHeader],
auth,
actions,
});

View File

@@ -0,0 +1,3 @@
import translateText from './translate-text/index.js';
export default [translateText];

View File

@@ -1,3 +0,0 @@
import translateText from './translate-text';
export default [translateText];

View File

@@ -1,5 +1,5 @@
import qs from 'qs';
import defineAction from '../../../../helpers/define-action';
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Translate text',
@@ -9,7 +9,7 @@ export default defineAction({
{
label: 'Text',
key: 'text',
type: 'string' as const,
type: 'string',
required: true,
description: 'Text to be translated.',
variables: true,
@@ -17,7 +17,7 @@ export default defineAction({
{
label: 'Target Language',
key: 'targetLanguage',
type: 'dropdown' as const,
type: 'dropdown',
required: true,
description: 'Language to translate the text to.',
variables: true,

View File

@@ -1,12 +1,12 @@
import verifyCredentials from './verify-credentials';
import isStillVerified from './is-still-verified';
import verifyCredentials from './verify-credentials.js';
import isStillVerified from './is-still-verified.js';
export default {
fields: [
{
key: 'screenName',
label: 'Screen Name',
type: 'string' as const,
type: 'string',
required: true,
readOnly: false,
value: null,
@@ -18,7 +18,7 @@ export default {
{
key: 'authenticationKey',
label: 'Authentication Key',
type: 'string' as const,
type: 'string',
required: true,
readOnly: false,
value: null,

View File

@@ -0,0 +1,8 @@
import verifyCredentials from './verify-credentials.js';
const isStillVerified = async ($) => {
await verifyCredentials($);
return true;
};
export default isStillVerified;

View File

@@ -1,9 +0,0 @@
import { IGlobalVariable } from '@automatisch/types';
import verifyCredentials from './verify-credentials';
const isStillVerified = async ($: IGlobalVariable) => {
await verifyCredentials($);
return true;
};
export default isStillVerified;

View File

@@ -1,6 +1,4 @@
import { IGlobalVariable } from '@automatisch/types';
const verifyCredentials = async ($: IGlobalVariable) => {
const verifyCredentials = async ($) => {
await $.http.get('/v2/usage');
await $.auth.set({

View File

@@ -1,6 +1,4 @@
import { TBeforeRequest } from '@automatisch/types';
const addAuthHeader: TBeforeRequest = ($, requestConfig) => {
const addAuthHeader = ($, requestConfig) => {
if ($.auth.data?.authenticationKey) {
const authorizationHeader = `DeepL-Auth-Key ${$.auth.data.authenticationKey}`;
requestConfig.headers.Authorization = authorizationHeader;

View File

@@ -1,7 +1,7 @@
import defineApp from '../../helpers/define-app';
import addAuthHeader from './common/add-auth-header';
import auth from './auth';
import actions from './actions';
import defineApp from '../../helpers/define-app.js';
import addAuthHeader from './common/add-auth-header.js';
import auth from './auth/index.js';
import actions from './actions/index.js';
export default defineApp({
name: 'DeepL',

View File

@@ -1,4 +1,4 @@
import defineAction from '../../../../helpers/define-action';
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Delay for',
@@ -9,7 +9,7 @@ export default defineAction({
{
label: 'Delay for unit',
key: 'delayForUnit',
type: 'dropdown' as const,
type: 'dropdown',
required: true,
value: null,
description: 'Delay for unit, e.g. minutes, hours, days, weeks.',
@@ -36,7 +36,7 @@ export default defineAction({
{
label: 'Delay for value',
key: 'delayForValue',
type: 'string' as const,
type: 'string',
required: true,
description: 'Delay for value, use a number, e.g. 1, 2, 3.',
variables: true,

View File

@@ -1,4 +1,4 @@
import defineAction from '../../../../helpers/define-action';
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Delay until',
@@ -9,7 +9,7 @@ export default defineAction({
{
label: 'Delay until (Date)',
key: 'delayUntil',
type: 'string' as const,
type: 'string',
required: true,
description: 'Delay until the date. E.g. 2022-12-18',
variables: true,

View File

@@ -0,0 +1,4 @@
import delayFor from './delay-for/index.js';
import delayUntil from './delay-until/index.js';
export default [delayFor, delayUntil];

View File

@@ -1,4 +0,0 @@
import delayFor from './delay-for';
import delayUntil from './delay-until';
export default [delayFor, delayUntil];

View File

@@ -1,5 +1,5 @@
import defineApp from '../../helpers/define-app';
import actions from './actions';
import defineApp from '../../helpers/define-app.js';
import actions from './actions/index.js';
export default defineApp({
name: 'Delay',

View File

@@ -0,0 +1,88 @@
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Create a scheduled event',
key: 'createScheduledEvent',
description: 'Creates a scheduled event',
arguments: [
{
label: 'Type',
key: 'entityType',
type: 'dropdown',
required: true,
variables: true,
options: [
{ label: 'Stage channel', value: 1 },
{ label: 'Voice channel', value: 2 },
{ label: 'External', value: 3 },
],
additionalFields: {
type: 'query',
name: 'getDynamicFields',
arguments: [
{
name: 'key',
value: 'listExternalScheduledEventFields',
},
{
name: 'parameters.entityType',
value: '{parameters.entityType}',
},
],
},
},
{
label: 'Name',
key: 'name',
type: 'string',
required: true,
variables: true,
},
{
label: 'Description',
key: 'description',
type: 'string',
required: false,
variables: true,
},
{
label: 'Image',
key: 'image',
type: 'string',
required: false,
description:
'Image as DataURI scheme [data:image/<jpeg/png/gif>;base64,BASE64_ENCODED_<JPEG/PNG/GIF>_IMAGE_DATA]',
variables: true,
},
],
async run($) {
const data = {
channel_id: $.step.parameters.channel_id,
name: $.step.parameters.name,
privacy_level: 2,
scheduled_start_time: $.step.parameters.scheduledStartTime,
scheduled_end_time: $.step.parameters.scheduledEndTime,
description: $.step.parameters.description,
entity_type: $.step.parameters.entityType,
image: $.step.parameters.image,
};
const isExternal = $.step.parameters.entityType === 3;
if (isExternal) {
data.entity_metadata = {
location: $.step.parameters.location,
};
data.channel_id = null;
}
const response = await $.http?.post(
`/guilds/${$.auth.data.guildId}/scheduled-events`,
data
);
$.setActionItem({ raw: response.data });
},
});

View File

@@ -0,0 +1,4 @@
import sendMessageToChannel from './send-message-to-channel/index.js';
import createScheduledEvent from './create-scheduled-event/index.js';
export default [sendMessageToChannel, createScheduledEvent];

View File

@@ -1,3 +0,0 @@
import sendMessageToChannel from './send-message-to-channel';
export default [sendMessageToChannel];

View File

@@ -1,4 +1,4 @@
import defineAction from '../../../../helpers/define-action';
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Send a message to channel',
@@ -8,7 +8,7 @@ export default defineAction({
{
label: 'Channel',
key: 'channel',
type: 'dropdown' as const,
type: 'dropdown',
required: true,
description: 'Pick a channel to send the message to.',
variables: true,
@@ -26,7 +26,7 @@ export default defineAction({
{
label: 'Message text',
key: 'message',
type: 'string' as const,
type: 'string',
required: true,
description: 'The content of your new message.',
variables: true,
@@ -35,8 +35,9 @@ export default defineAction({
async run($) {
const data = {
content: $.step.parameters.message as string,
content: $.step.parameters.message,
};
const response = await $.http?.post(
`/channels/${$.step.parameters.channel}/messages`,
data

View File

@@ -1,15 +1,15 @@
import { IField, IGlobalVariable } from '@automatisch/types';
import { URLSearchParams } from 'url';
import scopes from '../common/scopes';
import scopes from '../common/scopes.js';
export default async function generateAuthUrl($: IGlobalVariable) {
export default async function generateAuthUrl($) {
const oauthRedirectUrlField = $.app.auth.fields.find(
(field: IField) => field.key == 'oAuthRedirectUrl'
(field) => field.key == 'oAuthRedirectUrl'
);
const callbackUrl = oauthRedirectUrlField.value as string;
const callbackUrl = oauthRedirectUrlField.value;
const searchParams = new URLSearchParams({
client_id: $.auth.data.consumerKey as string,
client_id: $.auth.data.consumerKey,
redirect_uri: callbackUrl,
response_type: 'code',
permissions: '2146958591',

View File

@@ -1,13 +1,13 @@
import generateAuthUrl from './generate-auth-url';
import verifyCredentials from './verify-credentials';
import isStillVerified from './is-still-verified';
import generateAuthUrl from './generate-auth-url.js';
import verifyCredentials from './verify-credentials.js';
import isStillVerified from './is-still-verified.js';
export default {
fields: [
{
key: 'oAuthRedirectUrl',
label: 'OAuth Redirect URL',
type: 'string' as const,
type: 'string',
required: true,
readOnly: true,
value: '{WEB_APP_URL}/app/discord/connections/add',
@@ -20,7 +20,7 @@ export default {
{
key: 'consumerKey',
label: 'Consumer Key',
type: 'string' as const,
type: 'string',
required: true,
readOnly: false,
value: null,
@@ -32,7 +32,7 @@ export default {
{
key: 'consumerSecret',
label: 'Consumer Secret',
type: 'string' as const,
type: 'string',
required: true,
readOnly: false,
value: null,
@@ -44,7 +44,7 @@ export default {
{
key: 'botToken',
label: 'Bot token',
type: 'string' as const,
type: 'string',
required: true,
readOnly: false,
value: null,

View File

@@ -0,0 +1,9 @@
import getCurrentUser from '../common/get-current-user.js';
const isStillVerified = async ($) => {
await getCurrentUser($);
return true;
};
export default isStillVerified;

View File

@@ -1,10 +0,0 @@
import { IGlobalVariable } from '@automatisch/types';
import getCurrentUser from '../common/get-current-user';
const isStillVerified = async ($: IGlobalVariable) => {
await getCurrentUser($);
return true;
};
export default isStillVerified;

View File

@@ -1,22 +1,24 @@
import { IGlobalVariable, IField } from '@automatisch/types';
import { URLSearchParams } from 'url';
import scopes from '../common/scopes';
import getCurrentUser from '../common/get-current-user';
import scopes from '../common/scopes.js';
import getCurrentUser from '../common/get-current-user.js';
const verifyCredentials = async ($: IGlobalVariable) => {
const verifyCredentials = async ($) => {
const oauthRedirectUrlField = $.app.auth.fields.find(
(field: IField) => field.key == 'oAuthRedirectUrl'
(field) => field.key == 'oAuthRedirectUrl'
);
const callbackUrl = oauthRedirectUrlField.value as string;
const callbackUrl = oauthRedirectUrlField.value;
const params = new URLSearchParams({
client_id: $.auth.data.consumerKey as string,
client_id: $.auth.data.consumerKey,
redirect_uri: callbackUrl,
response_type: 'code',
scope: scopes.join(' '),
client_secret: $.auth.data.consumerSecret as string,
code: $.auth.data.code as string,
client_secret: $.auth.data.consumerSecret,
code: $.auth.data.code,
grant_type: 'authorization_code',
});
const { data: verifiedCredentials } = await $.http.post(
'/oauth2/token',
params.toString()

View File

@@ -1,6 +1,4 @@
import { TBeforeRequest } from '@automatisch/types';
const addAuthHeader: TBeforeRequest = ($, requestConfig) => {
const addAuthHeader = ($, requestConfig) => {
const { tokenType, botToken } = $.auth.data;
if (tokenType && botToken) {
requestConfig.headers.Authorization = `Bot ${botToken}`;

View File

@@ -1,6 +1,4 @@
import { IGlobalVariable, IJSONObject } from '@automatisch/types';
const getCurrentUser = async ($: IGlobalVariable): Promise<IJSONObject> => {
const getCurrentUser = async ($) => {
const response = await $.http.get('/users/@me');
const currentUser = response.data;

View File

@@ -0,0 +1,4 @@
import listChannels from './list-channels/index.js';
import listVoiceChannels from './list-voice-channels/index.js';
export default [listChannels, listVoiceChannels];

View File

@@ -1,3 +0,0 @@
import listChannels from './list-channels';
export default [listChannels];

View File

@@ -1,14 +1,9 @@
import { IGlobalVariable, IJSONObject } from '@automatisch/types';
export default {
name: 'List channels',
key: 'listChannels',
async run($: IGlobalVariable) {
const channels: {
data: IJSONObject[];
error: IJSONObject | null;
} = {
async run($) {
const channels = {
data: [],
error: null,
};
@@ -18,11 +13,11 @@ export default {
);
channels.data = response.data
.filter((channel: IJSONObject) => {
.filter((channel) => {
// filter in text channels and announcement channels only
return channel.type === 0 || channel.type === 5;
})
.map((channel: IJSONObject) => {
.map((channel) => {
return {
value: channel.id,
name: channel.name,

View File

@@ -0,0 +1,29 @@
export default {
name: 'List voice channels',
key: 'listVoiceChannels',
async run($) {
const channels = {
data: [],
error: null,
};
const response = await $.http.get(
`/guilds/${$.auth.data.guildId}/channels`
);
channels.data = response.data
.filter((channel) => {
// filter in voice and stage channels only
return channel.type === 2 || channel.type === 13;
})
.map((channel) => {
return {
value: channel.id,
name: channel.name,
};
});
return channels;
},
};

View File

@@ -0,0 +1,3 @@
import listExternalScheduledEventFields from './list-external-scheduled-event-fields/index.js';
export default [listExternalScheduledEventFields];

View File

@@ -0,0 +1,87 @@
export default {
name: 'List external scheduled event fields',
key: 'listExternalScheduledEventFields',
async run($) {
const isExternal = $.step.parameters.entityType === 3;
if (isExternal) {
return [
{
label: 'Location',
key: 'location',
type: 'string',
required: true,
description:
'The location of the event (1-100 characters). This will be omitted if type is NOT EXTERNAL',
variables: true,
},
{
label: 'Start-Time',
key: 'scheduledStartTime',
type: 'string',
required: true,
description: 'The time the event will start [ISO8601]',
variables: true,
},
{
label: 'End-Time',
key: 'scheduledEndTime',
type: 'string',
required: true,
description:
'The time the event will end [ISO8601]. This will be omitted if type is NOT EXTERNAL',
variables: true,
},
];
}
return [
{
label: 'Channel',
key: 'channel_id',
type: 'dropdown',
required: true,
description:
'Pick a voice or stage channel to link the event to. This will be omitted if type is EXTERNAL',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listVoiceChannels',
},
],
},
},
{
label: 'Location',
key: 'location',
type: 'string',
required: false,
description:
'The location of the event (1-100 characters). This will be omitted if type is NOT EXTERNAL',
variables: true,
},
{
label: 'Start-Time',
key: 'scheduledStartTime',
type: 'string',
required: true,
description: 'The time the event will start [ISO8601]',
variables: true,
},
{
label: 'End-Time',
key: 'scheduledEndTime',
type: 'string',
required: false,
description:
'The time the event will end [ISO8601]. This will be omitted if type is NOT EXTERNAL',
variables: true,
},
];
},
};

View File

@@ -1,9 +1,10 @@
import defineApp from '../../helpers/define-app';
import addAuthHeader from './common/add-auth-header';
import auth from './auth';
import dynamicData from './dynamic-data';
import actions from './actions';
import triggers from './triggers';
import defineApp from '../../helpers/define-app.js';
import addAuthHeader from './common/add-auth-header.js';
import auth from './auth/index.js';
import dynamicData from './dynamic-data/index.js';
import actions from './actions/index.js';
import triggers from './triggers/index.js';
import dynamicFields from './dynamic-fields/index.js';
export default defineApp({
name: 'Discord',
@@ -17,6 +18,7 @@ export default defineApp({
beforeRequest: [addAuthHeader],
auth,
dynamicData,
dynamicFields,
triggers,
actions,
});

View File

@@ -1,23 +1,25 @@
import path from 'node:path';
import defineAction from '../../../../helpers/define-action';
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Create folder',
key: 'createFolder',
description: 'Create a new folder with the given parent folder and folder name',
description:
'Create a new folder with the given parent folder and folder name',
arguments: [
{
label: 'Folder',
key: 'parentFolder',
type: 'string' as const,
type: 'string',
required: true,
description: 'Enter the parent folder path, like /TextFiles/ or /Documents/Taxes/',
description:
'Enter the parent folder path, like /TextFiles/ or /Documents/Taxes/',
variables: true,
},
{
label: 'Folder Name',
key: 'folderName',
type: 'string' as const,
type: 'string',
required: true,
description: 'Enter the name for the new folder',
variables: true,
@@ -25,11 +27,13 @@ export default defineAction({
],
async run($) {
const parentFolder = $.step.parameters.parentFolder as string;
const folderName = $.step.parameters.folderName as string;
const parentFolder = $.step.parameters.parentFolder;
const folderName = $.step.parameters.folderName;
const folderPath = path.join(parentFolder, folderName);
const response = await $.http.post('/2/files/create_folder_v2', { path: folderPath });
const response = await $.http.post('/2/files/create_folder_v2', {
path: folderPath,
});
$.setActionItem({ raw: response.data });
},

View File

@@ -0,0 +1,4 @@
import createFolder from './create-folder/index.js';
import renameFile from './rename-file/index.js';
export default [createFolder, renameFile];

View File

@@ -1,4 +0,0 @@
import createFolder from "./create-folder";
import renameFile from "./rename-file";
export default [createFolder, renameFile];

View File

@@ -1,5 +1,5 @@
import path from 'node:path';
import defineAction from '../../../../helpers/define-action';
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Rename file',
@@ -9,25 +9,25 @@ export default defineAction({
{
label: 'File Path',
key: 'filePath',
type: 'string' as const,
type: 'string',
required: true,
description:
'Write the full path to the file such as /Folder1/File.pdf',
description: 'Write the full path to the file such as /Folder1/File.pdf',
variables: true,
},
{
label: 'New Name',
key: 'newName',
type: 'string' as const,
type: 'string',
required: true,
description: "Enter the new name for the file (without the extension, e.g., '.pdf')",
description:
"Enter the new name for the file (without the extension, e.g., '.pdf')",
variables: true,
},
],
async run($) {
const filePath = $.step.parameters.filePath as string;
const newName = $.step.parameters.newName as string;
const filePath = $.step.parameters.filePath;
const newName = $.step.parameters.newName;
const fileObject = path.parse(filePath);
const newPath = path.format({
dir: fileObject.dir,

View File

@@ -1,15 +1,15 @@
import { URLSearchParams } from 'url';
import { IField, IGlobalVariable } from '@automatisch/types';
import scopes from '../common/scopes';
import scopes from '../common/scopes.js';
export default async function generateAuthUrl($: IGlobalVariable) {
export default async function generateAuthUrl($) {
const oauthRedirectUrlField = $.app.auth.fields.find(
(field: IField) => field.key == 'oAuthRedirectUrl'
(field) => field.key == 'oAuthRedirectUrl'
);
const callbackUrl = oauthRedirectUrlField.value as string;
const callbackUrl = oauthRedirectUrlField.value;
const searchParams = new URLSearchParams({
client_id: $.auth.data.clientId as string,
client_id: $.auth.data.clientId,
redirect_uri: callbackUrl,
response_type: 'code',
scope: scopes.join(' '),

View File

@@ -1,14 +1,14 @@
import generateAuthUrl from './generate-auth-url';
import verifyCredentials from './verify-credentials';
import isStillVerified from './is-still-verified';
import refreshToken from './refresh-token';
import generateAuthUrl from './generate-auth-url.js';
import verifyCredentials from './verify-credentials.js';
import isStillVerified from './is-still-verified.js';
import refreshToken from './refresh-token.js';
export default {
fields: [
{
key: 'oAuthRedirectUrl',
label: 'OAuth Redirect URL',
type: 'string' as const,
type: 'string',
required: true,
readOnly: true,
value: '{WEB_APP_URL}/app/dropbox/connections/add',
@@ -20,7 +20,7 @@ export default {
{
key: 'clientId',
label: 'App Key',
type: 'string' as const,
type: 'string',
required: true,
readOnly: false,
value: null,
@@ -31,7 +31,7 @@ export default {
{
key: 'clientSecret',
label: 'App Secret',
type: 'string' as const,
type: 'string',
required: true,
readOnly: false,
value: null,

View File

@@ -0,0 +1,8 @@
import getCurrentAccount from '../common/get-current-account.js';
const isStillVerified = async ($) => {
const account = await getCurrentAccount($);
return !!account;
};
export default isStillVerified;

View File

@@ -1,9 +0,0 @@
import { IGlobalVariable } from '@automatisch/types';
import getCurrentAccount from '../common/get-current-account';
const isStillVerified = async ($: IGlobalVariable) => {
const account = await getCurrentAccount($);
return !!account;
};
export default isStillVerified;

View File

@@ -0,0 +1,36 @@
import { Buffer } from 'node:buffer';
const refreshToken = async ($) => {
const params = {
grant_type: 'refresh_token',
refresh_token: $.auth.data.refreshToken,
};
const basicAuthToken = Buffer.from(
`${$.auth.data.clientId}:${$.auth.data.clientSecret}`
).toString('base64');
const { data } = await $.http.post('oauth2/token', null, {
params,
headers: {
Authorization: `Basic ${basicAuthToken}`,
},
additionalProperties: {
skipAddingAuthHeader: true,
},
});
const {
access_token: accessToken,
expires_in: expiresIn,
token_type: tokenType,
} = data;
await $.auth.set({
accessToken,
expiresIn,
tokenType,
});
};
export default refreshToken;

View File

@@ -1,41 +0,0 @@
import { Buffer } from 'node:buffer';
import { IGlobalVariable } from '@automatisch/types';
const refreshToken = async ($: IGlobalVariable) => {
const params = {
grant_type: 'refresh_token',
refresh_token: $.auth.data.refreshToken as string,
};
const basicAuthToken = Buffer
.from(`${$.auth.data.clientId}:${$.auth.data.clientSecret}`)
.toString('base64');
const { data } = await $.http.post(
'oauth2/token',
null,
{
params,
headers: {
Authorization: `Basic ${basicAuthToken}`
},
additionalProperties: {
skipAddingAuthHeader: true
}
}
);
const {
access_token: accessToken,
expires_in: expiresIn,
token_type: tokenType,
} = data;
await $.auth.set({
accessToken,
expiresIn,
tokenType,
});
};
export default refreshToken;

Some files were not shown because too many files have changed in this diff Show More