Compare commits

...

1096 Commits

Author SHA1 Message Date
Ruben Fiszel
bf766decdd chore(main): release 1.110.0 (#1674)
* chore(main): release 1.110.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-06-07 10:33:11 +02:00
Ruben Fiszel
46055af093 add PIL => Pillow 2023-06-07 10:04:26 +02:00
Ruben Fiszel
19bd32c792 ensure wasm is present befor doing inference 2023-06-06 13:57:58 +02:00
Ruben Fiszel
f8050491f8 add folding to editor in flow and script editor 2023-06-06 13:44:39 +02:00
Ruben Fiszel
253fd91024 fix: empty flows not return their inputs 2023-06-06 11:09:17 +02:00
Ruben Fiszel
2943d26f0f fix backend compile 2023-06-06 11:01:49 +02:00
Ruben Fiszel
5bdf7171e6 migrate all jsonschema parser to wasms 2023-06-06 10:52:04 +02:00
Ruben Fiszel
c702f40980 feat: migrate ts parser to wasm (#1686)
* migrate ts parser to wasm

* add wasm

* revert py
2023-06-06 09:44:38 +02:00
Ruben Fiszel
a826166024 fix clihelpbox 2023-06-05 23:37:58 +02:00
dependabot[bot]
b087990c24 chore(deps-dev): bump @types/vscode from 1.78.0 to 1.78.1 in /frontend (#1684)
Bumps [@types/vscode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/vscode) from 1.78.0 to 1.78.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/vscode)

---
updated-dependencies:
- dependency-name: "@types/vscode"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 19:08:12 +00:00
dependabot[bot]
bc4b10a0d3 chore(deps): bump monaco-languageclient from 6.0.1 to 6.0.3 in /frontend (#1678)
Bumps [monaco-languageclient](https://github.com/TypeFox/monaco-languageclient/tree/HEAD/packages/client) from 6.0.1 to 6.0.3.
- [Changelog](https://github.com/TypeFox/monaco-languageclient/blob/main/packages/client/CHANGELOG.md)
- [Commits](https://github.com/TypeFox/monaco-languageclient/commits/mlc-6.0.3/packages/client)

---
updated-dependencies:
- dependency-name: monaco-languageclient
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 19:06:49 +00:00
dependabot[bot]
972b51f095 chore(deps-dev): bump svelte-splitpanes in /frontend (#1682)
Bumps [svelte-splitpanes](https://github.com/orefalo/svelte-splitpanes) from 0.7.13 to 0.7.14.
- [Release notes](https://github.com/orefalo/svelte-splitpanes/releases)
- [Changelog](https://github.com/orefalo/svelte-splitpanes/blob/master/CHANGELOG.md)
- [Commits](https://github.com/orefalo/svelte-splitpanes/compare/v0.7.13...v0.7.14)

---
updated-dependencies:
- dependency-name: svelte-splitpanes
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 19:05:47 +00:00
dependabot[bot]
8145524b55 chore(deps-dev): bump @sveltejs/kit from 1.18.0 to 1.20.1 in /frontend (#1681)
Bumps [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit) from 1.18.0 to 1.20.1.
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/master/packages/kit/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@1.20.1/packages/kit)

---
updated-dependencies:
- dependency-name: "@sveltejs/kit"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 19:04:40 +00:00
dependabot[bot]
5e3e654637 chore(deps): bump @leeoniya/ufuzzy from 1.0.6 to 1.0.7 in /frontend (#1680)
Bumps [@leeoniya/ufuzzy](https://github.com/leeoniya/uFuzzy) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/leeoniya/uFuzzy/releases)
- [Commits](https://github.com/leeoniya/uFuzzy/compare/1.0.6...1.0.7)

---
updated-dependencies:
- dependency-name: "@leeoniya/ufuzzy"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 19:04:39 +00:00
dependabot[bot]
c91195ad94 chore(deps-dev): bump monaco-editor-workers in /frontend (#1679)
Bumps [monaco-editor-workers](https://github.com/TypeFox/monaco-components/tree/HEAD/packages/monaco-editor-workers) from 0.37.0 to 0.38.0.
- [Changelog](https://github.com/TypeFox/monaco-components/blob/main/packages/monaco-editor-workers/CHANGELOG.md)
- [Commits](https://github.com/TypeFox/monaco-components/commits/workers_0.38.0/packages/monaco-editor-workers)

---
updated-dependencies:
- dependency-name: monaco-editor-workers
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 19:01:13 +00:00
dependabot[bot]
1eb3424062 chore(deps-dev): bump svelte-check from 3.3.2 to 3.4.3 in /frontend (#1677)
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 3.3.2 to 3.4.3.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check-3.3.2...svelte-check-3.4.3)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 19:00:27 +00:00
dependabot[bot]
9bca4e2ba5 chore(deps): bump lucide-svelte from 0.224.0 to 0.236.0 in /frontend (#1676)
Bumps [lucide-svelte](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-svelte) from 0.224.0 to 0.236.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/v0.236.0/packages/lucide-svelte)

---
updated-dependencies:
- dependency-name: lucide-svelte
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-05 19:00:26 +00:00
Ruben Fiszel
98e1fdd898 feat: support custom env variables (#1675)
* custom envs

* feat: custom envs

* only on non cloud

* remove unecessary imports
2023-06-05 17:42:57 +02:00
Ruben Fiszel
970a3c6dd3 add bigint serialization 2023-06-05 14:00:23 +02:00
Ruben Fiszel
67b05d3871 feat: add suggested results to prop picker 2023-06-05 06:09:08 +02:00
Ruben Fiszel
c7fac8c6d2 feat: deleting a flow step show confirmation modal with refs 2023-06-05 05:30:14 +02:00
Ruben Fiszel
7f81abd545 feat(apps): copy paste across apps 2023-06-05 03:18:52 +02:00
Ruben Fiszel
271edc5cfe chore(main): release 1.109.1 (#1673)
* chore(main): release 1.109.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-06-04 23:08:55 +02:00
Ruben Fiszel
4609bfb10a add support for openai endpoints 2023-06-04 23:07:06 +02:00
Ruben Fiszel
f648e4312c fix react-sdk build 2023-06-04 21:51:20 +02:00
Ruben Fiszel
a0401ac8f1 fix: fix go-client generation 2023-06-04 15:13:07 +02:00
Ruben Fiszel
9a8bec0402 chore(main): release 1.109.0 (#1672)
* chore(main): release 1.109.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-06-04 14:52:06 +02:00
Ruben Fiszel
c38af7bc34 add more spacing in advanced tab of flows 2023-06-04 14:47:17 +02:00
Ruben Fiszel
7e466b7715 feat: add cache as a primitive for flows (#1671)
* feat: add cache as a primitive for flows

* fix failure module
2023-06-04 14:39:10 +02:00
Ruben Fiszel
9861ba3aad chore(main): release 1.108.2 (#1670)
* chore(main): release 1.108.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-06-04 01:50:15 +02:00
Ruben Fiszel
ae5b11aba5 fix: optimize object viewer to handle large data 2023-06-04 01:45:35 +02:00
Ruben Fiszel
ce94426441 fix: improve websockets handling for flow editor 2023-06-02 19:45:30 +02:00
Ruben Fiszel
711b47c78d chore(main): release 1.108.1 (#1668)
* chore(main): release 1.108.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-06-02 12:05:59 +02:00
Henri Courdent
66feaa49a9 Tooltip for integration (#1669) 2023-06-02 12:01:44 +02:00
Ruben Fiszel
e14a2357d0 make admins scripts/apps undeletable 2023-06-02 11:59:52 +02:00
Ruben Fiszel
f7e23acfdc fix: renaming app + improve flow rendering 2023-06-02 11:51:47 +02:00
Ruben Fiszel
45641cbbab make to_i64 more resilient and clearer error message on client setup 2023-06-01 17:15:37 +02:00
Ruben Fiszel
7329d59e96 fix reload assistant 2023-06-01 01:33:34 +02:00
Ruben Fiszel
1d0e60b713 fix edit of resource type in schema editor 2023-05-31 22:12:49 +02:00
Ruben Fiszel
5b1b885824 fix edit of resource type in schema editor 2023-05-31 22:07:33 +02:00
Ruben Fiszel
8bc77efa5c fix remove_owner incompatibility with aurora 2023-05-31 20:43:20 +02:00
dependabot[bot]
c99615da12 chore(deps-dev): bump @types/node from 18.16.3 to 20.2.5 in /frontend (#1663)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.16.3 to 20.2.5.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-31 18:27:09 +02:00
Faton Ramadani
3e7dd0d179 fix(frontend): Fix currency input (#1667) 2023-05-31 18:26:39 +02:00
Ruben Fiszel
6538d5caef urlize description on run page 2023-05-31 17:29:58 +02:00
Ruben Fiszel
683e312046 chore(main): release 1.108.0 (#1666)
* chore(main): release 1.108.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-31 15:34:09 +02:00
Ruben Fiszel
609fdcd906 only show presence if websocket connection succceeds 2023-05-31 15:29:20 +02:00
Ruben Fiszel
e9fe595de4 feat: add app presence 2023-05-31 15:08:07 +02:00
Ruben Fiszel
e5eab9867b multiplayer fix 2023-05-30 21:18:53 +02:00
Ruben Fiszel
761a26a9a2 multiplayer fix 2023-05-30 21:05:59 +02:00
Ruben Fiszel
6f0e5a7826 re-use monaco-editor-workers for simple editor 2023-05-30 20:03:13 +02:00
Ruben Fiszel
bb368fcf5a add license key in more files 2023-05-30 18:32:44 +02:00
Ruben Fiszel
65fa1807bc fix multiplayer build 2023-05-30 18:20:45 +02:00
Ruben Fiszel
428e0ab2f8 feat: add multiplayer support for webeditor (#1562) 2023-05-30 17:42:27 +02:00
Faton Ramadani
1634ee635e fix(frontend): Fix app table actions (#1665)
* fix(frontend): Fix app table actions

* fix(frontend): Fix app table actions

* fix(frontend): Fix app table actions
2023-05-30 17:27:17 +02:00
Ruben Fiszel
62e98cf6c9 chore(main): release 1.107.0 (#1654)
* chore(main): release 1.107.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-30 00:36:14 +02:00
Ruben Fiszel
219332a7f4 give public app badges 2023-05-30 00:34:14 +02:00
Ruben Fiszel
1dab51c412 fix text in editor mode in view mode 2023-05-29 23:48:10 +02:00
Ruben Fiszel
8c33599663 feat(backend): webhook specific tokens 2023-05-29 23:39:50 +02:00
dependabot[bot]
a0bbf20b23 chore(deps-dev): bump prettier-plugin-svelte in /frontend (#1664)
Bumps [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) from 2.10.0 to 2.10.1.
- [Changelog](https://github.com/sveltejs/prettier-plugin-svelte/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/prettier-plugin-svelte/commits)

---
updated-dependencies:
- dependency-name: prettier-plugin-svelte
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-29 19:07:22 +00:00
dependabot[bot]
da329f9427 chore(deps-dev): bump pdfjs-dist from 3.6.172 to 3.7.107 in /frontend (#1658)
Bumps [pdfjs-dist](https://github.com/mozilla/pdfjs-dist) from 3.6.172 to 3.7.107.
- [Commits](https://github.com/mozilla/pdfjs-dist/commits)

---
updated-dependencies:
- dependency-name: pdfjs-dist
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-29 19:06:22 +00:00
dependabot[bot]
34897de62d chore(deps-dev): bump @playwright/test in /frontend (#1662)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from 1.33.0 to 1.34.3.
- [Release notes](https://github.com/Microsoft/playwright/releases)
- [Commits](https://github.com/Microsoft/playwright/compare/v1.33.0...v1.34.3)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-29 19:05:39 +00:00
dependabot[bot]
110db2bb7c chore(deps): bump lucide-svelte from 0.220.0 to 0.224.0 in /frontend (#1661)
Bumps [lucide-svelte](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-svelte) from 0.220.0 to 0.224.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/v0.224.0/packages/lucide-svelte)

---
updated-dependencies:
- dependency-name: lucide-svelte
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-29 19:03:32 +00:00
dependabot[bot]
f0c3f96ef1 chore(deps-dev): bump @typescript-eslint/eslint-plugin in /frontend (#1660)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.7 to 5.59.8.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.8/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-29 19:02:00 +00:00
dependabot[bot]
d4899e12c1 chore(deps-dev): bump @types/lodash in /frontend (#1659)
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.194 to 4.14.195.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-29 19:01:19 +00:00
dependabot[bot]
af8e86d06d chore(deps-dev): bump postcss from 8.4.23 to 8.4.24 in /frontend (#1657)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.23 to 8.4.24.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.23...8.4.24)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-29 19:00:24 +00:00
Ruben Fiszel
f3c7e80bb2 UX nits 2023-05-29 16:17:51 +02:00
Ruben Fiszel
d96c3fb81a chore(main): release 1.106.1 (#1653)
* chore(main): release 1.106.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-29 14:27:22 +02:00
Ruben Fiszel
a934195d5e fix compie 2023-05-29 14:08:16 +02:00
Ruben Fiszel
1816252f03 fix(backend): fix initial worker ping issue 2023-05-29 13:53:53 +02:00
Ruben Fiszel
29546a05ec chore(main): release 1.106.0 (#1651)
* chore(main): release 1.106.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-29 00:09:41 +02:00
Ruben Fiszel
1cd74b2284 store search filters in query 2023-05-28 23:53:16 +02:00
Ruben Fiszel
9b436deb7a fix table actions policy on deploy 2023-05-28 23:31:52 +02:00
Ruben Fiszel
e19fabb02f feat(cli): add resolveDefaultResource 2023-05-28 22:59:08 +02:00
Ruben Fiszel
6b850fb485 fix go compilation 2023-05-28 22:31:46 +02:00
Ruben Fiszel
ed9a5711a1 fix apps assign for array 2023-05-28 22:04:51 +02:00
Ruben Fiszel
521bf7b495 use hostname as worker name 2023-05-28 21:44:57 +02:00
Ruben Fiszel
9461b15d43 use hostname as worker name 2023-05-28 19:28:06 +02:00
Ruben Fiszel
c1d80d91cc prettify insert variable and enum custom value 2023-05-28 18:34:03 +02:00
Ruben Fiszel
8c9b080875 feat(apps): add setValue to frontend script's SDK 2023-05-28 18:02:42 +02:00
Ruben Fiszel
a86c146b83 do a shallow copy on rx connect to allow for function passing 2023-05-28 13:04:52 +02:00
Ruben Fiszel
91ad8d0b8d rework premium workspace pricing 2023-05-28 13:00:21 +02:00
Ruben Fiszel
f32a913506 update all_runnables 2023-05-27 17:22:56 +02:00
Ruben Fiszel
43e4039e6f chore(main): release 1.105.0 (#1646)
* chore(main): release 1.105.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-27 15:07:37 +02:00
Ruben Fiszel
f20536db19 update hub sync cli version 2023-05-27 15:07:21 +02:00
Ruben Fiszel
6f1d5c497f feat(cli): add variables add to CLI 2023-05-27 14:53:30 +02:00
Ruben Fiszel
1fff16bbb8 fix(cli): expose an encrypt value endpoint 2023-05-27 14:31:30 +02:00
Faton Ramadani
7fd5543d1a fix(frontend): Check whether the source has the right type (#1647)
* fix(frontend): Check whether the source has the right type

* fix(frontend): add componentErrorHandler
2023-05-26 15:14:14 +00:00
Ruben Fiszel
88c25171f4 embedded style for react-sdk 2023-05-26 07:50:51 +02:00
Ruben Fiszel
7cb1d12d4e feat(apps): added deployment history browser 2023-05-26 06:49:34 +02:00
Ruben Fiszel
84adb83709 revert rx modification 2023-05-25 21:29:31 +02:00
Ruben Fiszel
a0b3f8c6f9 add /user/all_runnable 2023-05-25 20:43:56 +02:00
Ruben Fiszel
8bf2ab349c fix toggle binding in app 2023-05-25 19:04:02 +02:00
Ruben Fiszel
c8ff19befd add logs around connecting to database 2023-05-25 17:45:17 +02:00
Ruben Fiszel
e38510c6ef object viewer copy path instead of content 2023-05-25 16:28:01 +02:00
Ruben Fiszel
b7a80779a5 fix redacted audit logs 2023-05-25 15:58:53 +02:00
Ruben Fiszel
7201045789 fix migration break 2023-05-25 11:07:54 +02:00
dependabot[bot]
472628051a chore(deps): bump dependabot/fetch-metadata from 1.3.6 to 1.5.0 (#1624)
Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 1.3.6 to 1.5.0.
- [Release notes](https://github.com/dependabot/fetch-metadata/releases)
- [Commits](https://github.com/dependabot/fetch-metadata/compare/v1.3.6...v1.5.0)

---
updated-dependencies:
- dependency-name: dependabot/fetch-metadata
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-05-25 08:57:52 +02:00
Ruben Fiszel
e85b7c7128 audit log redacted in CE (#1645)
* auditLogOnEE

* audit logs
2023-05-25 08:56:38 +02:00
Ruben Fiszel
64e1b745a8 chore(main): release 1.104.2 (#1644)
* chore(main): release 1.104.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-24 18:47:35 +02:00
Ruben Fiszel
3e19be1003 fix(python): fix python execution 2023-05-24 18:43:32 +02:00
Ruben Fiszel
21d1ae1beb chore(main): release 1.104.1 (#1643)
* chore(main): release 1.104.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-24 18:34:33 +02:00
Ruben Fiszel
d892ca56b7 fix(cli): fix hub pull 2023-05-24 18:31:28 +02:00
Ruben Fiszel
6851b86eb5 fix(cli): parse schema when pulling from hub 2023-05-24 18:30:09 +02:00
Ruben Fiszel
97b4403b7a fix(cli): avoid looping infinitely and avoid prompt if interactive 2023-05-24 17:38:58 +02:00
Faton Ramadani
42af2854b2 fix(frontend): Fix app toolbar z-index (#1641)
* fix(frontend): Fix app toolbar z-index

* fix(frontend): mimimize changes

* fix(frontend): use same strategy as Popover
2023-05-24 15:58:59 +02:00
Ruben Fiszel
1c8c766573 chore(main): release 1.104.0 (#1635)
* chore(main): release 1.104.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-24 15:49:28 +02:00
Ruben Fiszel
1a0605d228 update cli sync script 2023-05-24 15:46:58 +02:00
Ruben Fiszel
ad66bfadaf fix(cli): do not rely on x.nest.land 2023-05-24 15:37:00 +02:00
Ruben Fiszel
48aae747c4 fix multiline test 2023-05-24 15:16:19 +02:00
Ruben Fiszel
45a6ffcf32 add ee_license endpoint 2023-05-24 14:34:03 +02:00
Faton Ramadani
aa577fa508 App multi select default items (#1638)
* feat(frontend): add default items to multi select component

* feat(frontend): set the output correctly
2023-05-24 13:58:05 +02:00
Ruben Fiszel
39d32130d8 update openapi-typescript-codegen 2023-05-24 12:30:21 +02:00
Ruben Fiszel
b617dc8f98 update docker-compose and .env 2023-05-24 11:40:50 +02:00
Ruben Fiszel
3819349c3d overwrite buggy migration 3 2023-05-24 10:56:24 +02:00
Ruben Fiszel
77556a88f9 overwrite buggy migration 2 2023-05-24 10:52:54 +02:00
Ruben Fiszel
81f39e77f5 fix buggy migration 2 2023-05-24 10:52:12 +02:00
Ruben Fiszel
c3083fceda overwrite buggy migration 2023-05-24 10:44:10 +02:00
Ruben Fiszel
eda5405208 remove demo and starter if empty 2023-05-24 10:10:46 +02:00
Ruben Fiszel
3f8dbb1536 improve logout experience on setup 2023-05-24 08:31:37 +02:00
Ruben Fiszel
133adefc66 treat bash errors as errors 2023-05-23 20:49:16 +02:00
Ruben Fiszel
34048f9ea6 feat: schedule error handler (#1636)
* handleError

* revert

* all
2023-05-23 20:25:41 +02:00
Ruben Fiszel
de4042e9dc fix(python): handle nan 2023-05-23 18:36:59 +02:00
Ruben Fiszel
3f911fc457 better split frontend helpers 2023-05-23 12:32:20 +02:00
Ruben Fiszel
b499b4c4be pin deno to 1.33.3 2023-05-23 00:44:49 +02:00
dependabot[bot]
5c33f3f4f0 chore(deps-dev): bump @typescript-eslint/eslint-plugin in /frontend (#1630)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.6 to 5.59.7.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.7/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 19:12:05 +00:00
dependabot[bot]
6496c009af chore(deps): bump lucide-svelte from 0.216.0 to 0.220.0 in /frontend (#1632)
Bumps [lucide-svelte](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-svelte) from 0.216.0 to 0.220.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/v0.220.0/packages/lucide-svelte)

---
updated-dependencies:
- dependency-name: lucide-svelte
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 19:07:34 +00:00
dependabot[bot]
f3c7b7416c chore(deps-dev): bump @sveltejs/kit from 1.16.2 to 1.18.0 in /frontend (#1631)
Bumps [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit) from 1.16.2 to 1.18.0.
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/master/packages/kit/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@1.18.0/packages/kit)

---
updated-dependencies:
- dependency-name: "@sveltejs/kit"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 19:07:17 +00:00
dependabot[bot]
ba5c05e69f chore(deps-dev): bump pdfjs-dist from 3.5.141 to 3.6.172 in /frontend (#1629)
Bumps [pdfjs-dist](https://github.com/mozilla/pdfjs-dist) from 3.5.141 to 3.6.172.
- [Commits](https://github.com/mozilla/pdfjs-dist/commits)

---
updated-dependencies:
- dependency-name: pdfjs-dist
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 19:05:15 +00:00
dependabot[bot]
ccd13172e2 chore(deps): bump date-fns from 2.29.3 to 2.30.0 in /frontend (#1628)
Bumps [date-fns](https://github.com/date-fns/date-fns) from 2.29.3 to 2.30.0.
- [Release notes](https://github.com/date-fns/date-fns/releases)
- [Changelog](https://github.com/date-fns/date-fns/blob/v2.30.0/CHANGELOG.md)
- [Commits](https://github.com/date-fns/date-fns/compare/v2.29.3...v2.30.0)

---
updated-dependencies:
- dependency-name: date-fns
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 19:02:25 +00:00
dependabot[bot]
25c0ae9667 chore(deps-dev): bump tslib from 2.5.0 to 2.5.2 in /frontend (#1627)
Bumps [tslib](https://github.com/Microsoft/tslib) from 2.5.0 to 2.5.2.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/2.5.0...2.5.2)

---
updated-dependencies:
- dependency-name: tslib
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 19:01:52 +00:00
dependabot[bot]
6c18771cd7 chore(deps): bump svelte-select from 5.6.0 to 5.6.1 in /frontend (#1626)
Bumps [svelte-select](https://github.com/rob-balfre/svelte-select) from 5.6.0 to 5.6.1.
- [Changelog](https://github.com/rob-balfre/svelte-select/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rob-balfre/svelte-select/compare/v5.6.0...v5.6.1)

---
updated-dependencies:
- dependency-name: svelte-select
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 19:01:49 +00:00
dependabot[bot]
2f7796eca2 chore(deps-dev): bump @typescript-eslint/parser in /frontend (#1625)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.1 to 5.59.7.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.7/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-22 19:01:15 +00:00
Ruben Fiszel
c2ef17a0f7 chore(main): release 1.103.0 (#1616)
* chore(main): release 1.103.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-22 17:59:38 +02:00
Ruben Fiszel
b8da43db2c feat: docker as a new supported language 2023-05-22 17:50:30 +02:00
Ruben Fiszel
7f063050c4 add docker client in Dockerfile 2023-05-22 15:33:58 +02:00
Faton Ramadani
5905d3b103 feat(frontend): disable tabs (#1623)
* feat(frontend): disable tabs

* feat(frontend): disable tabs

* feat(frontend): remove console.log

* feat(frontend): remove GridTabDisabled for Stepper component
2023-05-22 14:37:11 +02:00
Ruben Fiszel
59fc3f5212 nit date inferrence 2023-05-22 14:15:58 +02:00
Ruben Fiszel
4221a7d56b added sql support to monaco 2023-05-22 11:28:28 +02:00
Faton Ramadani
eb99b73346 feat(frontend): add plain chartjs component (#1621)
* fix(frontend): add plain chartjs component

* feat(frontend): add missing styling

* feat(frontend): fix typing

* feat(frontend): fix typing
2023-05-22 11:18:04 +02:00
Ruben Fiszel
9c90e331f7 implement license keys with expiry 2023-05-22 11:06:23 +02:00
John Unland
b864ba9163 Add symlink to dockerfile (#1618) 2023-05-22 10:02:53 +02:00
Ruben Fiszel
a9846268bd fix breakpoint/mobile view for apps 2023-05-22 00:47:17 +02:00
Ruben Fiszel
050bb3c4c1 fix deno lsp 2023-05-22 00:02:53 +02:00
Ruben Fiszel
64e2e54bc3 fix chartjs 2023-05-21 19:38:16 +02:00
Ruben Fiszel
9eec936bee fix initializing && update chart.js to 4.x 2023-05-21 19:16:05 +02:00
Ruben Fiszel
11a52f2d59 feat(frontend): add flowstatus and log component for apps 2023-05-21 18:37:18 +02:00
Danny Summerlin
c44bf45ff9 Open Added an import exception for pysmb #1615
adding pysmb to exceptions list
2023-05-21 17:09:36 +02:00
Ruben Fiszel
0b193cc905 chore(main): release 1.102.1 (#1614)
* chore(main): release 1.102.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-21 12:52:00 +02:00
Ruben Fiszel
501bb11d96 fix: add setVariable to deno-client 2023-05-21 12:42:41 +02:00
Ruben Fiszel
5deee79ccb fix allow overflow for multi select in apps 2023-05-20 21:32:30 +02:00
Ruben Fiszel
c4ff45967e make select full width in apps 2023-05-20 21:24:13 +02:00
Ruben Fiszel
d810e178db UX nits 2023-05-20 12:52:04 +02:00
Ruben Fiszel
f8d233f178 tooltip fixes 2023-05-20 12:01:08 +02:00
Ruben Fiszel
0bd8b88e65 UX improvements on runform + creating group from folder 2023-05-20 11:30:03 +02:00
Ruben Fiszel
9e57b942d7 flow nits 2023-05-20 10:10:22 +02:00
Ruben Fiszel
847cc37749 fix input transform viewer 2023-05-20 09:09:56 +02:00
Ruben Fiszel
17337cb370 improve CURL helps 2023-05-20 02:52:49 +02:00
Ruben Fiszel
46ec3137cd chore(main): release 1.102.0 (#1588)
* chore(main): release 1.102.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-19 23:42:02 +02:00
Ruben Fiszel
b91f7d5013 feat: add ability to pass the full raw body (#1611) 2023-05-19 23:22:04 +02:00
Ruben Fiszel
7b4c18a804 fix lsp docker image for go 2023-05-19 22:27:01 +02:00
Faton Ramadani
c687a775eb fix(frontend): Fix rx (#1609)
* fix(frontend): Fix inputValue connection to ensure done event is always sent

* fix(frontend): Fix RX
2023-05-19 21:02:34 +02:00
Ruben Fiszel
632be3b8fb feat: expose a react sdk to integrate windmill into react apps (#1605)
* expose react sdk

* expose react sdk

* iterate

* iterate

* iterate

* nit

* update example

* update example

* small fixes

* update all
2023-05-19 20:44:07 +02:00
Faton Ramadani
f27abecbac fix(frontend): Fix inputValue connection to ensure done event is always sent (#1607) 2023-05-19 18:57:00 +02:00
Ruben Fiszel
e02de8fd6d update README 2023-05-18 17:31:34 +02:00
Ruben Fiszel
cdc4f29ec1 feat: add GOPROXY + fix on saved inputs 2023-05-18 17:29:37 +02:00
Ruben Fiszel
2645e6bce5 small multiselect fix 2023-05-18 16:39:34 +02:00
Ruben Fiszel
85576b0083 fix: rework multiselect as app component (#1599) 2023-05-18 16:28:58 +02:00
Ruben Fiszel
71c8b563ce add shellcheck to lsp 2023-05-18 14:15:16 +02:00
Axel Baudot
d2c2e67718 Recursive schema display and property deletion (#1539)
* Recursive schema display and property deletion

* Added type safety and reintroduced lightmode

---------

Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-05-18 13:52:06 +02:00
Ruben Fiszel
89e55e0226 feat(lsp): add black + ruff + shellcheck (#1597) 2023-05-18 13:44:41 +02:00
Ruben Fiszel
a08be53fb2 add valid output to app form 2023-05-18 09:12:11 +02:00
Faton Ramadani
94b8bc4738 fix(frontend): Fix the spinning logo position (#1595) 2023-05-18 08:19:49 +02:00
Faton Ramadani
3d1fcfa16a Fix app drawer modal (#1594)
* feat(frontend): fix app drawer + modal

* feat(frontend): fix app
2023-05-18 08:18:50 +02:00
Ruben Fiszel
dcc46d66de clarify README setup 2023-05-18 02:36:06 +02:00
Ruben Fiszel
c6d1eb1878 add tooltip to use Variable 2023-05-17 23:23:36 +02:00
Ruben Fiszel
1cbd704a25 feat(backend): add REQUEST_SIZE_LIMIT env variable 2023-05-17 23:07:17 +02:00
Ruben Fiszel
3b76280f30 fix username handling with non A_Z 2023-05-17 22:43:40 +02:00
Ruben Fiszel
a13d2832d4 feat(backend): non mapped values are passed as arg 'body' 2023-05-17 21:45:57 +02:00
Ruben Fiszel
a387c626fe fix tab behavior 2023-05-17 21:13:04 +02:00
Henri Courdent
9e0c000424 Update README.md video to the latest (52s) (#1593) 2023-05-17 18:40:27 +02:00
Henri Courdent
fb972671dc Updated README -> video to be updated after merge (#1592) 2023-05-17 18:30:45 +02:00
Faton Ramadani
fff2b5a24a fix(frontend): Add missing tooltips + multilpe small fix in the app builder (#1590)
* fix(frontend): revert commit that were removed + delete outdated components + add missing tooltips

* fix(frontend): remove outdated select button

* fix(frontend): add missing tooltips

* fix(frontend): add debug tab

* fix(frontend): remove duplicate file

* fix(frontend): add missing props
2023-05-17 17:34:40 +02:00
Faton Ramadani
f7338c9c9a feat(frontend): add presets components (#1589)
* feat(frontend): add presets components

* feat(frontend): fix build
2023-05-17 14:25:10 +02:00
Ruben Fiszel
fb89195241 fix conditional tabs rendering 2023-05-16 16:58:35 +02:00
Ruben Fiszel
d9968f62f5 fix capture payload too big check typo 2023-05-16 16:17:26 +02:00
Ruben Fiszel
c7c564aec0 increase payload size from 10kb to 512kb for capture endpoint 2023-05-16 16:10:28 +02:00
Faton Ramadani
a1cdf13cb3 fix(frontend): fix pdf header + icon picker (#1586) 2023-05-16 15:32:26 +02:00
Ruben Fiszel
94be4a8a6c chore(main): release 1.101.1 (#1575)
* chore(main): release 1.101.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-16 13:14:10 +02:00
Ruben Fiszel
41f2d35c97 fix(backend): make result job endpoints public 2023-05-16 13:08:36 +02:00
Ruben Fiszel
4644e9b03a add rls raw up migration 2023-05-16 13:02:29 +02:00
dependabot[bot]
1f3335409b chore(deps-dev): bump svelte-check from 3.2.0 to 3.3.2 in /frontend (#1580)
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 3.2.0 to 3.3.2.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check-3.2.0...svelte-check-3.3.2)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-15 19:09:28 +00:00
dependabot[bot]
df599b8ec5 chore(deps-dev): bump @typescript-eslint/eslint-plugin in /frontend (#1584)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.5 to 5.59.6.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.6/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-15 19:07:55 +00:00
dependabot[bot]
9a4d5b2d57 chore(deps-dev): bump svelte from 3.58.0 to 3.59.1 in /frontend (#1583)
Bumps [svelte](https://github.com/sveltejs/svelte) from 3.58.0 to 3.59.1.
- [Changelog](https://github.com/sveltejs/svelte/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/svelte/compare/v3.58.0...v3.59.1)

---
updated-dependencies:
- dependency-name: svelte
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-15 19:04:58 +00:00
dependabot[bot]
565ff76ca3 chore(deps-dev): bump svelte-highlight from 7.2.1 to 7.3.0 in /frontend (#1582)
Bumps [svelte-highlight](https://github.com/metonym/svelte-highlight) from 7.2.1 to 7.3.0.
- [Release notes](https://github.com/metonym/svelte-highlight/releases)
- [Changelog](https://github.com/metonym/svelte-highlight/blob/master/CHANGELOG.md)
- [Commits](https://github.com/metonym/svelte-highlight/compare/v7.2.1...v7.3.0)

---
updated-dependencies:
- dependency-name: svelte-highlight
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-15 19:04:02 +00:00
dependabot[bot]
6f3620129f chore(deps): bump lucide-svelte from 0.214.0 to 0.216.0 in /frontend (#1579)
Bumps [lucide-svelte](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-svelte) from 0.214.0 to 0.216.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/v0.216.0/packages/lucide-svelte)

---
updated-dependencies:
- dependency-name: lucide-svelte
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-15 19:00:46 +00:00
dependabot[bot]
da174e063b chore(deps-dev): bump svelte-awesome-color-picker in /frontend (#1578)
Bumps [svelte-awesome-color-picker](https://github.com/Ennoriel/svelte-awesome-color-picker) from 2.4.1 to 2.4.3.
- [Changelog](https://github.com/Ennoriel/svelte-awesome-color-picker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Ennoriel/svelte-awesome-color-picker/commits)

---
updated-dependencies:
- dependency-name: svelte-awesome-color-picker
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-15 19:00:11 +00:00
Faton Ramadani
2a17d60caa fix(frontend): add temp hidden span to compute the text max length (#1573)
* fix(frontend): add temp hidden span to compute the text max length

* fix(frontend): add temp hidden span to compute the text max length

* fix(frontend): add missing render condition
2023-05-15 17:35:29 +02:00
Faton Ramadani
45acdc895b fix(frontend): fix app multi select (#1574) 2023-05-15 16:17:41 +02:00
Ruben Fiszel
fe1595c194 fix lsp on arm 2023-05-15 14:49:41 +02:00
Ruben Fiszel
94644538bc chore(main): release 1.101.0 (#1572)
* chore(main): release 1.101.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-15 13:40:29 +02:00
Ruben Fiszel
4d1a6c4ab1 attempt 1 at lsp on arm 2023-05-15 13:33:51 +02:00
Faton Ramadani
ad6e967205 feat(frontend): stepper standalone (#1558) 2023-05-15 11:52:08 +02:00
Ruben Fiszel
26bcf0b61c sqlx 2023-05-15 11:51:54 +02:00
Ruben Fiszel
b6c0018e2a feat(backend): add job_id as a query arg to force set the new job_id 2023-05-15 10:50:43 +02:00
Faton Ramadani
efc4e9ce8a fix(frontend): Handle empty required in SchemaForm (#1571) 2023-05-15 10:35:55 +02:00
Ruben Fiszel
7a39eb6b06 nit cli 2023-05-15 00:43:49 +02:00
Ruben Fiszel
79c038ffd4 chore(main): release 1.100.2 (#1567)
* chore(main): release 1.100.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-15 00:23:37 +02:00
Ruben Fiszel
0919a80b72 update backend deps 2023-05-15 00:19:41 +02:00
Maxime Lardier
9583f0dcf8 chore: fix typo (#1568) 2023-05-15 00:10:28 +02:00
Ruben Fiszel
678b574efc fix(cli): update wmill script push 2023-05-15 00:08:38 +02:00
Ruben Fiszel
a1d54de9c9 lock hash only when relevant 2023-05-14 22:22:02 +02:00
Ruben Fiszel
f71e4872db lock hash fix, date fix, srcript editor fix 2023-05-14 21:55:07 +02:00
Ruben Fiszel
393de630d8 re-allow multiple statements but must use a return 2023-05-14 15:02:22 +02:00
Ruben Fiszel
c252b765f1 fix: transform_inputs now only support single line expressions 2023-05-14 14:46:54 +02:00
Ruben Fiszel
63f520a05a fix cancel approval step 2023-05-14 13:57:22 +02:00
Ruben Fiszel
908358eb08 fix: discriminate execute apps by component 2023-05-14 13:07:52 +02:00
Faton Ramadani
2eb0c5c3a2 App style rework (#1566)
* feat(frontend): fix styling in multiple components

* feat(frontend): rework modals

* feat(frontend): fix tooltip

* feat(frontend): fix ui

* feat(frontend): clean up

* feat(frontend): remove unnecessary file
2023-05-13 17:24:26 +02:00
Ruben Fiszel
e64f0e980e update README 2023-05-13 07:07:27 +02:00
Ruben Fiszel
c9a19666b3 chore(main): release 1.100.1 (#1563)
* chore(main): release 1.100.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-12 23:52:00 +02:00
Ruben Fiszel
178ed6f426 fix: update setup step 2023-05-12 23:47:39 +02:00
Ruben Fiszel
33c9389978 chore(main): release 1.100.0 (#1559)
* chore(main): release 1.100.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-12 21:20:54 +02:00
Ruben Fiszel
3396bdba76 fix app setup 2023-05-12 21:19:16 +02:00
Ruben Fiszel
5e7e46e025 fix(backend): handle Date type 2023-05-12 13:14:20 +02:00
Ruben Fiszel
747b9a6d50 lighten script badges 2023-05-12 12:26:18 +02:00
Ruben Fiszel
a2c086b90c merge Styling and Alignment section 2023-05-12 12:23:14 +02:00
Ruben Fiszel
031a4b9e02 add names to background runnables 2023-05-12 12:07:10 +02:00
Ruben Fiszel
9b9730d2b7 feat(frontend): add download button 2023-05-12 11:08:59 +02:00
Ruben Fiszel
4cb3ec5fd3 add autodownload 2023-05-12 00:22:40 +02:00
Ruben Fiszel
7c50565160 add mode to ctx 2023-05-12 00:12:47 +02:00
Ruben Fiszel
66f7cf6784 use object viewer when json is too large 2023-05-11 23:44:31 +02:00
Ruben Fiszel
72d343e916 add OAUTH_JSON_AS_BASE64 2023-05-11 23:03:05 +02:00
Ruben Fiszel
7f43c7e138 remove uffizzi 2023-05-11 22:42:20 +02:00
Ruben Fiszel
6bbd9374cb fix(frontend): only download result for apps 2023-05-11 22:13:19 +02:00
Ruben Fiszel
8e785d8ba6 fix(frontend): apps rendering should not depend on local time 2023-05-11 15:47:52 +02:00
Ruben Fiszel
5dfd82c22a force raw path to ends with .py, .sh, .go, .ts 2023-05-11 11:00:01 +02:00
Ruben Fiszel
8dcc2864b4 load variable on is_secret change 2023-05-11 09:52:35 +02:00
Ruben Fiszel
39472722d4 requiring passing new value when updating is_secret 2023-05-11 08:50:53 +02:00
Ruben Fiszel
1c0dba2453 remove variable restriction to update secret/public 2023-05-11 00:26:34 +02:00
Ruben Fiszel
94c066511b chore(main): release 1.99.0 (#1554)
* chore(main): release 1.99.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-10 21:52:12 +02:00
Ruben Fiszel
742ee3a518 feat(frontend): allow copy pasting nested containers 2023-05-10 20:56:28 +02:00
Ruben Fiszel
5601d047fe fix(backend): run endpoints also support support x-www-form-urlencoded encoded payloads 2023-05-10 20:01:11 +02:00
Ruben Fiszel
018b504986 feat: increase timeout to 900 2023-05-10 19:08:18 +02:00
Ruben Fiszel
2b57418427 feat(backend): run endpoints also support support x-www-form-urlencoded encoded payloads 2023-05-10 18:55:37 +02:00
Ruben Fiszel
e28811cd65 fix topHash on autosave reload for scripts 2023-05-10 18:43:16 +02:00
Ruben Fiszel
8d8542e4cf only prettify run forms and lightweight schema form 2023-05-10 17:29:12 +02:00
Ruben Fiszel
2b1ba8eeea shortcut HEAD request on get run_wait_result 2023-05-10 17:15:04 +02:00
Ruben Fiszel
5ed5ebb175 remove default toggle 2023-05-10 17:01:35 +02:00
Ruben Fiszel
54b329fcf2 accept head request on post methods to send webhooks 2023-05-10 16:48:55 +02:00
Faton Ramadani
6c2ba053a1 feat(frontend): app on error (#1556)
* feat(frontend): app on error

* feat(frontend): Add default onError errorOverlay + add toggle to optionally append error to the error toast

* feat(frontend): Add default onError errorOverlay + add toggle to optionally append error to the error toast

* feat(frontend): hide bug icon

* feat(frontend): add missing ?

* feat(frontend): simplify the code
2023-05-10 16:32:55 +02:00
Faton Ramadani
4ad530f2f0 feat(frontend): App select tabs (#1557)
* feat(frontend): app select tabs

* feat(frontend): app select tabs

* feat(frontend): app select tabs

* feat(frontend): fix build

* feat(frontend): removeclasses

* feat(frontend): add tabSize
2023-05-10 16:32:37 +02:00
Faton Ramadani
3d371d5b65 feat(frontend): conditional rendering (#1555)
* feat(frontend): conditional rendering

* feat(frontend): done

* feat(frontend): small fix

* feat(frontend): done

* feat(frontend): renaming

* feat(frontend): restructure components

* feat(frontend): revert setTab

* feat(frontend): fix setTab

* feat(frontend): fix setTab
2023-05-10 14:23:33 +02:00
Ruben Fiszel
45991bf259 preserve json orders for apps and drafts 2023-05-10 13:23:04 +02:00
Ruben Fiszel
df5f984477 app jsonb to json to preserve order for drafts too 2023-05-10 12:42:11 +02:00
Ruben Fiszel
bb8ddfc7a1 app jsonb to json to preserve order 2023-05-10 12:21:57 +02:00
Ruben Fiszel
2002ee6c58 bugfix for ignoring autosave on apps 2023-05-10 12:03:11 +02:00
Ruben Fiszel
18f0532c46 app schema form overflow-auto 2023-05-10 10:39:27 +02:00
Ruben Fiszel
e42ba2d1a3 hide refresh buttons do not apply to triggerables 2023-05-10 10:33:32 +02:00
Ruben Fiszel
ef089ab56c feat(frontend): add hide refresh button 2023-05-10 10:08:32 +02:00
Ruben Fiszel
eef923b7a6 handle revert to static better for apps 2023-05-10 09:39:39 +02:00
Ruben Fiszel
a422e2a23f improve form config 2023-05-10 09:25:17 +02:00
Ruben Fiszel
879ce03267 nit form config 2023-05-10 08:57:04 +02:00
Ruben Fiszel
5ce85241cd fix modal 2023-05-10 00:08:09 +02:00
Ruben Fiszel
6c2627003b fix quickstyle properties with app navigation 2023-05-09 23:29:43 +02:00
Ruben Fiszel
83ea50bb26 change drawer truncated for long title 2023-05-09 20:36:50 +02:00
Ruben Fiszel
957fd81576 feat(frontend): add input library to flow builder 2023-05-09 16:08:22 +02:00
Ruben Fiszel
4f78ab43a3 chore(main): release 1.98.0 (#1553)
* chore(main): release 1.98.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-09 15:08:05 +02:00
Ruben Fiszel
c62670f735 fix(backend): grant all on raw_app 2023-05-09 15:02:04 +02:00
Ruben Fiszel
9203d17bd6 improve login page if providers length < 2 2023-05-09 14:55:03 +02:00
Ruben Fiszel
2dfb74e7e4 feat(frontend): if member of a single workspace, autoset at login 2023-05-09 14:38:46 +02:00
Ruben Fiszel
c6e41a4eb0 fix openbb build 2023-05-09 13:57:19 +02:00
Ruben Fiszel
92aafb53cf chore(main): release 1.97.0 (#1552)
* chore(main): release 1.97.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-09 13:09:34 +02:00
Ruben Fiszel
939289030b fix(lsp): handle write_message errors 2023-05-09 13:05:29 +02:00
Ruben Fiszel
7537f1a1d7 feat(backend): cache hub scripts in the worker cache 2023-05-09 12:45:54 +02:00
Ruben Fiszel
d814a25b0f add cairo to openbb build 2023-05-09 11:11:09 +02:00
Ruben Fiszel
808304ce31 add pkg-config to openbb build 2023-05-09 10:56:50 +02:00
Ruben Fiszel
6b5ceed652 feat(backend): in python, if a value is bytes, it is encoded to base64 automaticaly 2023-05-09 09:36:07 +02:00
Ruben Fiszel
38ec7d3a85 feat(backend): add windmill_status_code to run_wait_result 2023-05-09 02:46:53 +02:00
Ruben Fiszel
90244c278b chore(main): release 1.96.3 (#1551)
* chore(main): release 1.96.3

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-09 01:20:19 +02:00
Ruben Fiszel
2639250b43 fix(cli): variable updating 2023-05-09 01:17:09 +02:00
Ruben Fiszel
c598083925 fix(cli): add folder listing 2023-05-09 00:43:19 +02:00
Ruben Fiszel
d254088fce fix(cli): show diffs only with --show-diffs 2023-05-09 00:17:01 +02:00
Ruben Fiszel
37f08e9357 fix(cli): show diffs only with --show-diffs 2023-05-09 00:16:50 +02:00
Ruben Fiszel
b43356fc99 chore(main): release 1.96.2 (#1550)
* chore(main): release 1.96.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-08 23:38:26 +02:00
Ruben Fiszel
8f1cdf1d61 fix(cli): add debug mode to CLI + improve error output 2023-05-08 23:35:02 +02:00
Ruben Fiszel
a583381146 chore(main): release 1.96.1 (#1541)
* chore(main): release 1.96.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-08 21:19:23 +02:00
Ruben Fiszel
239f401999 fix(cli): fix cli folder sync 2023-05-08 21:13:38 +02:00
dependabot[bot]
16d294038e chore(deps): bump @tanstack/svelte-table in /frontend (#1549)
Bumps [@tanstack/svelte-table](https://github.com/tanstack/table) from 8.8.5 to 8.9.1.
- [Release notes](https://github.com/tanstack/table/releases)
- [Commits](https://github.com/tanstack/table/compare/v8.8.5...v8.9.1)

---
updated-dependencies:
- dependency-name: "@tanstack/svelte-table"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-08 19:09:43 +00:00
dependabot[bot]
fbe37293a1 chore(deps-dev): bump eslint from 8.38.0 to 8.40.0 in /frontend (#1548)
Bumps [eslint](https://github.com/eslint/eslint) from 8.38.0 to 8.40.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.38.0...v8.40.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-08 19:06:54 +00:00
dependabot[bot]
6cc2763822 chore(deps-dev): bump @typescript-eslint/eslint-plugin in /frontend (#1547)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.2 to 5.59.5.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.5/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-08 19:06:14 +00:00
dependabot[bot]
b0ad4f92b3 chore(deps-dev): bump svelte2tsx from 0.6.11 to 0.6.14 in /frontend (#1546)
Bumps [svelte2tsx](https://github.com/sveltejs/language-tools) from 0.6.11 to 0.6.14.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte2tsx-0.6.11...svelte2tsx-0.6.14)

---
updated-dependencies:
- dependency-name: svelte2tsx
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-08 19:05:24 +00:00
dependabot[bot]
e07fe2dcb9 chore(deps-dev): bump @playwright/test in /frontend (#1545)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from 1.32.3 to 1.33.0.
- [Release notes](https://github.com/Microsoft/playwright/releases)
- [Commits](https://github.com/Microsoft/playwright/compare/v1.32.3...v1.33.0)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-08 19:02:05 +00:00
dependabot[bot]
3faa421666 chore(deps): bump lucide-svelte from 0.192.0 to 0.214.0 in /frontend (#1543)
Bumps [lucide-svelte](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-svelte) from 0.192.0 to 0.214.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/v0.214.0/packages/lucide-svelte)

---
updated-dependencies:
- dependency-name: lucide-svelte
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-08 19:01:31 +00:00
dependabot[bot]
0bfdec3aae chore(deps-dev): bump @sveltejs/kit from 1.15.9 to 1.16.2 in /frontend (#1542)
Bumps [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit) from 1.15.9 to 1.16.2.
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/master/packages/kit/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@1.16.2/packages/kit)

---
updated-dependencies:
- dependency-name: "@sveltejs/kit"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-08 19:01:18 +00:00
Ruben Fiszel
a90514b8e9 fix(cli): fix cli folder sync 2023-05-08 20:41:31 +02:00
Ruben Fiszel
068661aa21 chore(main): release 1.96.0 (#1538)
* chore(main): release 1.96.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-08 19:43:28 +02:00
Ruben Fiszel
13242abff1 feat: add support for full fleged apps (react, svelte, vue) (#1536)
* add react support

* use whoami

* update

* update

* update

* create react app

* all

* sqlx
2023-05-08 19:10:45 +02:00
Faton Ramadani
686f5bbe18 feat(frontend): app modal (#1518)
* feat(frontend): app modal wip

* feat(frontend): Modal

* feat(frontend): fix modal title

* feat(frontend): Merge main

* feat(frontend): fix build

* feat(frontend): use ResolveConfig + rename prop

* feat(frontend): use ResolveConfig + rename prop
2023-05-08 18:04:43 +02:00
Faton Ramadani
bef829d480 feat(frontend): Add label, description, input style + add displayType… (#1540)
* feat(frontend): Add label, description, input style + add displayType prop

* feat(frontend): add large gap prop + use ResolveConfig
2023-05-08 18:04:18 +02:00
Faton Ramadani
3a291f7108 feat(frontend): Add a custom deepEqualWithOrderedArray to handle orde… (#1537)
* feat(frontend): Add a custom deepEqualWithOrderedArray to handle ordered arrays comparaison

* feat(frontend): Add a custom deepEqualWithOrderedArray to handle ordered arrays comparaison

* feat(frontend): simplify
2023-05-08 14:25:13 +02:00
Ruben Fiszel
0bd0f6b4d1 fix login grid for providers <=2 2023-05-07 15:20:40 +02:00
Ruben Fiszel
df9f6acc7a avoid the need for caddy for dev 2023-05-07 11:30:03 +02:00
Ruben Fiszel
f43920e34f add initial typescript client 2023-05-07 01:17:42 +02:00
Ruben Fiszel
a8f3532919 replaceState on deploy 2023-05-06 15:34:30 +02:00
Ruben Fiszel
ba4289b9f1 cli nit 2023-05-06 13:41:56 +02:00
Ruben Fiszel
41fbb4fbf9 nit failure_module 2023-05-06 12:19:42 +02:00
Ruben Fiszel
dc8f0d11da chore(main): release 1.95.1 (#1535)
* chore(main): release 1.95.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-06 12:09:45 +02:00
Ruben Fiszel
c23e6b4534 assign static crate for rustpython-parser 2023-05-06 12:02:52 +02:00
Ruben Fiszel
a74deb7445 cli improvements 2023-05-06 11:44:54 +02:00
Ruben Fiszel
3598a650a8 cli nits 2023-05-06 11:11:22 +02:00
Ruben Fiszel
e585e3aea2 fix(cli): cli flow sync improvements 2023-05-06 11:06:39 +02:00
Ruben Fiszel
36ecb3a279 chore(main): release 1.95.0 (#1532)
* chore(main): release 1.95.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-05 23:26:28 +02:00
Ruben Fiszel
93ae0d71a4 feat(cli): split flows inline scripts 2023-05-05 23:26:03 +02:00
Faton Ramadani
15f1c947bb feat(frontend): App stepper (#1529)
* feat(frontend): wip

* feat(frontend): wip

* feat(frontend): wip

* feat(frontend): stepper done

* feat(frontend): Fix colors

* feat(frontend): fix build

* feat(frontend): app stepper done

* feat(frontend): app stepper done

* feat(frontend): add editor mode

* feat(frontend): remove unnecessary reactivity

* feat(frontend): python default code

* feat(frontend): remove submit

* feat(frontend): pre-connect

* feat(frontend): Adapt AppStepper

* feat(frontend): add errorHandledByComponent

* feat(frontend): remove button + fix runStep

* feat(frontend): fix overflow
2023-05-05 17:15:40 +02:00
Faton Ramadani
85c0d939f5 feat(frontend): App Schema Form component (#1533)
* feat(frontend): app static form

* feat(frontend): working schemaForm

* feat(frontend): add lightmode

* feat(frontend): sync values direclty

* feat(frontend): remove dev code
2023-05-05 16:40:07 +02:00
Faton Ramadani
1be4658150 feat(frontend): Merge run configuration + triggers (#1530)
* feat(frontend): Merge run configuration + triggers

* feat(frontend): merge main + fix add dependendy

* feat(frontend): merge main + fix add dependendy

* feat(frontend): merge main + fix add dependendy

* Update ScriptRunConfiguration.svelte

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-05-05 16:20:01 +02:00
Ruben Fiszel
845343c369 fix html frame clickable in preview mode 2023-05-05 15:17:34 +02:00
Ruben Fiszel
aaef5b5ac4 support purejs hashing if subtle not available 2023-05-05 15:10:45 +02:00
Ruben Fiszel
2a958a9d1d fix default value in python 2023-05-05 10:03:28 +02:00
Ruben Fiszel
d0aebadedf clarify default value for property editor of flows 2023-05-05 09:57:30 +02:00
Ruben Fiszel
8791a86a93 feat(backend): default parameters are used in python if missing from args 2023-05-05 09:44:53 +02:00
Ruben Fiszel
f90b376319 make yaml the default on the cli 2023-05-05 09:08:28 +02:00
Ruben Fiszel
2a7812c434 chore(main): release 1.94.0 (#1525)
* chore(main): release 1.94.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-05 02:51:13 +02:00
Ruben Fiszel
73738c0873 fix(cli): refactor cli (#1531)
* all

* cliUpgrade

* refactor entire cli
2023-05-05 02:51:01 +02:00
Ruben Fiszel
f3ec9ca09d make the group 'all' undeletable 2023-05-04 19:22:53 +02:00
Ruben Fiszel
b4867f12bb fix(frontend): preserve customise arguments 2023-05-04 15:39:15 +02:00
Faton Ramadani
32f04c7968 feat(frontend): add eval badge + alert (#1522)
* feat(frontend): add eval badge + alert

* fix(frontend): adapt eval badge

* fix(frontend): fix  eval badge
2023-05-04 12:02:40 +02:00
Faton Ramadani
b423eec019 fix(frontend): fix ArrayStaticInputEditor width (#1528) 2023-05-04 11:55:18 +02:00
Faton Ramadani
f248c09655 fix(frontend): fix select width (#1526) 2023-05-04 09:35:35 +02:00
Ruben Fiszel
d795d868fe fix cli in yaml mode 2023-05-04 08:36:19 +02:00
Ruben Fiszel
af3c89efc4 fix tabs configuration 2023-05-03 23:59:53 +02:00
Ruben Fiszel
a07e3e8438 fix(backend): fix python transformers 2023-05-03 23:27:14 +02:00
Ruben Fiszel
1040b8be3b handle better diff on yaml for cli 2023-05-03 19:27:10 +02:00
Ruben Fiszel
57d7876d76 chore(main): release 1.93.1 (#1524)
* chore(main): release 1.93.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-03 16:44:03 +02:00
Ruben Fiszel
03e6017860 fix(cli): add yaml support for cli 2023-05-03 16:40:46 +02:00
Ruben Fiszel
6a108d6b7a chore(main): release 1.93.0 (#1521) 2023-05-03 16:24:20 +02:00
Ruben Fiszel
fd070c0e75 add cli yaml support (#1520)
* add cli yaml support

* use the new yaml option
2023-05-03 16:21:24 +02:00
Henri Courdent
7889de033a Replaced background scripts by background runnables -> validate PR 165 on wmildocs before (#1523) 2023-05-03 16:10:55 +02:00
Ruben Fiszel
0443bb6c37 update README_DEV for mac 2023-05-03 15:17:42 +02:00
Ruben Fiszel
727d946d52 fix tests 2023-05-03 14:31:54 +02:00
Ruben Fiszel
5a94f5bef2 chore(main): release 1.93.0 (#1519)
* chore(main): release 1.93.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-03 14:16:49 +02:00
Ruben Fiszel
dd18e4d0d5 fix reactivity issue wrt to updating worldStore on state output already existing 2023-05-03 14:16:07 +02:00
Ruben Fiszel
f2457faf8a nit select undefined item 2023-05-03 13:30:59 +02:00
Ruben Fiszel
7ac96771a5 fix(frontend): deploy path for apps 2023-05-03 13:24:25 +02:00
Ruben Fiszel
1f11340143 minor menu nits 2023-05-03 12:02:12 +02:00
Ruben Fiszel
bff52e576d fix hover issue for popups 2023-05-03 11:49:03 +02:00
Ruben Fiszel
16d8dbb29b change wording around background script -> background runnable 2023-05-03 10:51:43 +02:00
Ruben Fiszel
392d0f8b87 feat(frontend): add recompute others to background scripts 2023-05-03 10:48:13 +02:00
Ruben Fiszel
10602a370e more consistent clear behavior for frontend apps 2023-05-03 09:54:13 +02:00
Ruben Fiszel
8a430a037b chore(main): release 1.92.2 (#1517)
* chore(main): release 1.92.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-03 01:03:58 +02:00
Ruben Fiszel
82c4d6629e fix(go-client): fix go-client gen 2023-05-03 01:00:35 +02:00
Ruben Fiszel
4437f9488b chore(main): release 1.92.1 (#1516)
* chore(main): release 1.92.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-03 00:52:23 +02:00
Ruben Fiszel
df333d9739 fix(go-client): fix go-client gen 2023-05-03 00:49:03 +02:00
Ruben Fiszel
17e6cd73a3 fix tests 2023-05-03 00:38:43 +02:00
Ruben Fiszel
512cebf8eb chore(main): release 1.92.0 (#1512)
* chore(main): release 1.92.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-03 00:27:36 +02:00
Faton Ramadani
f6ff8ca232 fix(frontend): fix small ui issues (#1513) 2023-05-03 00:23:38 +02:00
Ruben Fiszel
cedc3d6f2c display type for background scripts as well 2023-05-03 00:17:44 +02:00
Ruben Fiszel
e9f2ffd61e little migration fix 2023-05-03 00:12:28 +02:00
Ruben Fiszel
607c803be9 feat(frontend): background script can run script and flows (#1515)
* all

* progress

* all

* all
2023-05-03 00:10:41 +02:00
Ruben Fiszel
a70d461659 hide deleted background scripts 2023-05-02 14:52:11 +02:00
Ruben Fiszel
b52745b3a5 fix show_archived 2023-05-02 14:12:06 +02:00
Ruben Fiszel
85477ba310 improve bar style 2023-05-02 12:33:06 +02:00
Ruben Fiszel
64065c17f3 feat(frontend): add labels as table action 2023-05-02 12:18:54 +02:00
Ruben Fiszel
2ab1714dfa feat(frontend): add labels as table action 2023-05-02 12:17:32 +02:00
Henri Courdent
dc34230235 Tooltipin (#1502)
Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-05-02 11:20:02 +02:00
Ruben Fiszel
62acbb5ab3 feat(frontend): allow running eval in every field 2023-05-02 09:59:18 +02:00
dependabot[bot]
f9fbf39201 chore(deps-dev): bump @typescript-eslint/eslint-plugin in /frontend (#1511)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.59.1 to 5.59.2.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.2/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 19:09:59 +00:00
dependabot[bot]
33c248fb2c chore(deps-dev): bump cssnano from 6.0.0 to 6.0.1 in /frontend (#1510)
Bumps [cssnano](https://github.com/cssnano/cssnano) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@6.0.0...cssnano@6.0.1)

---
updated-dependencies:
- dependency-name: cssnano
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 19:07:39 +00:00
dependabot[bot]
bf1fecc903 chore(deps-dev): bump prettier from 2.8.7 to 2.8.8 in /frontend (#1509)
Bumps [prettier](https://github.com/prettier/prettier) from 2.8.7 to 2.8.8.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/2.8.7...2.8.8)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 19:06:42 +00:00
dependabot[bot]
24c4143f82 chore(deps-dev): bump vite from 4.3.1 to 4.3.3 in /frontend (#1508)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.3.1 to 4.3.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.3.3/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 19:06:25 +00:00
dependabot[bot]
25c5add90e chore(deps): bump lucide-svelte from 0.176.0 to 0.192.0 in /frontend (#1507)
Bumps [lucide-svelte](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-svelte) from 0.176.0 to 0.192.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/v0.192.0/packages/lucide-svelte)

---
updated-dependencies:
- dependency-name: lucide-svelte
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 19:05:53 +00:00
dependabot[bot]
40f52ea5a7 chore(deps-dev): bump @sveltejs/kit from 1.15.6 to 1.15.9 in /frontend (#1506)
Bumps [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit) from 1.15.6 to 1.15.9.
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/master/packages/kit/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@1.15.9/packages/kit)

---
updated-dependencies:
- dependency-name: "@sveltejs/kit"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 19:03:00 +00:00
dependabot[bot]
c9098456eb chore(deps-dev): bump @types/node from 18.16.0 to 18.16.3 in /frontend (#1505)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.16.0 to 18.16.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 19:02:31 +00:00
dependabot[bot]
e52a2faf6e chore(deps-dev): bump tailwindcss from 3.3.1 to 3.3.2 in /frontend (#1504)
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.3.1...v3.3.2)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 19:02:26 +00:00
dependabot[bot]
ff82d6c42b chore(deps): bump highlight.js from 11.7.0 to 11.8.0 in /frontend (#1503)
Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 11.7.0 to 11.8.0.
- [Release notes](https://github.com/highlightjs/highlight.js/releases)
- [Changelog](https://github.com/highlightjs/highlight.js/blob/main/CHANGES.md)
- [Commits](https://github.com/highlightjs/highlight.js/compare/11.7.0...11.8.0)

---
updated-dependencies:
- dependency-name: highlight.js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-01 19:01:35 +00:00
Ruben Fiszel
940589d127 styling nits 2023-05-01 19:32:50 +02:00
Ruben Fiszel
5c67011a11 styling nits 2023-05-01 19:29:45 +02:00
Ruben Fiszel
e485943d48 chore(main): release 1.91.0 (#1495)
* chore(main): release 1.91.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-05-01 18:58:24 +02:00
Ruben Fiszel
f7374c8204 feat: add drafts for apps 2023-05-01 18:13:57 +02:00
Ruben Fiszel
9988a51173 add fork menu back for flows 2023-05-01 09:47:13 +02:00
Ruben Fiszel
41817b855b nit dirtyStore 2023-05-01 09:44:30 +02:00
Ruben Fiszel
a1966427e8 feat: introduce draft for flows 2023-05-01 09:31:22 +02:00
Ruben Fiszel
bda06ac0e5 Update ScriptBuilder.svelte (#1496) 2023-05-01 02:54:42 +02:00
Ruben Fiszel
421048c222 nit 2023-04-30 17:41:31 +02:00
Ruben Fiszel
cddd2e0c1b update readme 2023-04-30 17:31:47 +02:00
Ruben Fiszel
5d64185152 fix flow update update schedules 2023-04-30 16:18:43 +02:00
Ruben Fiszel
88e37fe0be feat: introduce backend persisted draft systems for scripts 2023-04-30 15:56:52 +02:00
Ruben Fiszel
d5f07cc788 reword Use as template/Duplicate Fork 2023-04-29 10:22:01 +02:00
Ruben Fiszel
4ea7e1aa12 chore(main): release 1.90.0 (#1455)
* chore(main): release 1.90.0

* Apply automatic changes

* Apply automatic changes

* update api client

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-04-29 09:45:03 +02:00
Ruben Fiszel
5ca8bbcfdd remove windmillhub submodule 2023-04-28 23:15:27 +02:00
Ruben Fiszel
2815f1ec71 feat(frontend): add an eval input component for flow (#1494)
* fix sqlx

* all
2023-04-28 23:09:28 +02:00
Henri Courdent
7277056ef0 First wave of tooltips linking to docs (#1493)
Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-04-28 19:52:30 +02:00
Faton Ramadani
52e9887752 Fix frontend scripts settings (#1492)
* fix(frontend): fix recomputa all

* fix(frontend): fix frontend scripts

* fix(frontend): fix frontend scripts

* fix(frontend): wip

* fix(frontend): wip

* fix(frontend): fix isScriptByNameDefined

* fix(frontend): fix isScriptByNameDefined

* fix(frontend): fix

* fix(frontend): remove console.log

* fix(frontend): fix multiselect

* fix(frontend): revert changes

* fix(frontend): add migration code

* fix(frontend): fix isRunnableDefined
2023-04-28 19:17:32 +02:00
Faton Ramadani
fb05a09955 fix(frontend): fix recomputa all (#1491) 2023-04-28 16:27:25 +02:00
Faton Ramadani
41a24ecd36 feat(frontend): adapt style (#1488) 2023-04-28 15:35:01 +02:00
Ruben Fiszel
1ba9999c18 fix sqlx 2023-04-28 12:59:21 +02:00
Faton Ramadani
05c837e64f feat(frontend): refactor inline script (#1480)
* feat(frontend): refactor inline script wip

* feat(frontend): refactor inline script wip

* feat(frontend): clean up

* feat(frontend): fix run configuration for triggerable

* feat(frontend): fix autoRefresh issues

* feat(frontend): fix autoRefresh issues

* feat(frontend): modify actions + remove reactivity

* feat(frontend): wip

* feat(frontend): fix RecomputeAllComponnet

* feat(frontend): add intermediate state when the language has not yet been selected

* feat(frontend): fix connection

* feat(frontend): fix wording

* feat(frontend): fix bg trigers list

* feat(frontend): restore

* feat(frontend): restore

* feat(frontend): add missing migration
2023-04-28 12:56:06 +02:00
Faton Ramadani
cf59cc04ef fix(frontend): fix apply connection (#1487) 2023-04-28 11:46:04 +02:00
Ruben Fiszel
5a98ae1606 treat null accordingly in arginfo 2023-04-28 00:52:08 +02:00
Ruben Fiszel
de9abd129d feat(backend): add EXIT_AFTER_NO_JOB_FOR_SECS for ephemeral workers 2023-04-28 00:09:48 +02:00
Ruben Fiszel
324d4f5e9e feat(backend): expose tag in the job (#1486)
* fix

* update tag

* update tag

* update tag

* fix
2023-04-27 19:09:53 +02:00
Ryan Rich
6f8616fb27 fix(frontend): reset ui job loading state when submitting preview job triggers error (#1483)
* fix(frontend): catch errors when submitting preview job

* fix(frontend): catch errors when submitting preview job (simplified)

* fix(frontend): also reset currentId
2023-04-27 18:39:37 +02:00
Ruben Fiszel
f568bb1bd8 fix script in schedule should use latest hash 2023-04-27 18:03:12 +02:00
Ruben Fiszel
1d6d60bace add documentationLink to pageHeader 2023-04-27 17:27:12 +02:00
Ruben Fiszel
38addd348c fix cloudflare preview 2023-04-27 12:19:41 +02:00
Faton Ramadani
d915f6b004 fix(frontend): register applyConnection as a callback to remove unnecessary reactivit (#1485) 2023-04-27 11:37:40 +02:00
Faton Ramadani
430c73399b fix(frontend): close the modal before deleting a form modal (#1484)
* fix(frontend): close the modal before deleting a form modal

* fix(frontend): use componentControl
2023-04-27 10:27:00 +02:00
Ruben Fiszel
c164c0ff29 fix stale comment 2023-04-27 07:42:40 +02:00
Ruben Fiszel
4387db275f fix run_wait_result polling + make it configurable 2023-04-27 07:35:53 +02:00
Ruben Fiszel
95e52b2d74 fix go json parsing 2023-04-26 21:45:26 +02:00
Ruben Fiszel
0b7bad3816 feat(backend): add JOB_RETENTION_SECS to delete completed jobs completed after expiration period 2023-04-26 19:34:54 +02:00
Ruben Fiszel
79f46d08ac improve run_wait_result latency 2023-04-26 17:56:39 +02:00
Faton Ramadani
7ad496ad3f feat(frontend): Small style fix (#1473)
* feat(frontend): Small style fix

* feat(frontend): fix button dropdown z-index

* feat(frontend): fix button dropdown z-index

* feat(frontend): revert

* feat(frontend): revert
2023-04-26 14:27:38 +02:00
Ádám Kovács
7adacd4c9f feat(frontend): Add new integration icons (#1479) 2023-04-26 14:27:11 +02:00
Ruben Fiszel
25bf0b3675 update g/all to f/examples 2023-04-26 09:14:02 +02:00
Ruben Fiszel
4a34e83b56 minor worker tags nit 2023-04-26 01:54:09 +02:00
Ádám Kovács
50d814c3dc fix(frontend): Flow editor design updates (#1477)
* fix(frontend): Add seconds input to flow retries

* fix(frontend): Update flow branch editor styling
2023-04-25 21:20:44 +02:00
Faton Ramadani
b60a7f63d0 fix(frontend): Fix frontend script (#1476)
* fix(frontend): fix frontend script intendation

* feat(frontend): wip

* feat(frontend): fix reload all

* feat(frontend): add missing donePromise call

* feat(frontend): move donePromise in setResult

* feat(frontend): revert refresh
2023-04-25 15:46:45 +02:00
Faton Ramadani
47f0f35236 feat(frontend): Schedules run now (#1475)
* feat(frontend): run now

* feat(frontend): run now

* feat(frontend): add missing await + add toast action to view run page

* feat(frontend): fix path

* feat(frontend): fix path
2023-04-25 14:47:13 +02:00
Faton Ramadani
d8529ff3ed fix(frontend): Allow 0 as select default value (#1474) 2023-04-25 12:28:57 +02:00
Ádám Kovács
8fd10b1f58 fix(frontend): Minor app editor updates (#1458)
* fix(frontend): Update clearable inputs

* update icon picker popup

* update
2023-04-25 12:28:27 +02:00
Faton Ramadani
8b763249cb feat(frontend): Support TS union type with a select field (#1457)
* feat(frontend): Support TS union type with a select field

* feat(frontend): Support TS union type with a select field
2023-04-24 22:57:50 +02:00
dependabot[bot]
35a9de5886 chore(deps-dev): bump @typescript-eslint/parser in /frontend (#1469)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.59.0 to 5.59.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.1/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:12:51 +00:00
dependabot[bot]
679ccbb781 chore(deps-dev): bump @types/node from 18.15.11 to 18.16.0 in /frontend (#1471)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.15.11 to 18.16.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:12:30 +00:00
dependabot[bot]
91e482ee60 chore(deps): bump node from 19-alpine to 20-alpine (#1459)
Bumps node from 19-alpine to 20-alpine.

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 21:12:37 +02:00
dependabot[bot]
a2150b7ccf chore(deps-dev): bump @types/lodash in /frontend (#1470)
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.14.192 to 4.14.194.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:08:40 +00:00
dependabot[bot]
bb72145a41 chore(deps-dev): bump @typescript-eslint/eslint-plugin in /frontend (#1468)
Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.57.0 to 5.59.1.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.1/packages/eslint-plugin)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:06:33 +00:00
dependabot[bot]
38abe0f98e chore(deps): bump tailwind-merge from 1.11.0 to 1.12.0 in /frontend (#1467)
Bumps [tailwind-merge](https://github.com/dcastil/tailwind-merge) from 1.11.0 to 1.12.0.
- [Release notes](https://github.com/dcastil/tailwind-merge/releases)
- [Commits](https://github.com/dcastil/tailwind-merge/compare/v1.11.0...v1.12.0)

---
updated-dependencies:
- dependency-name: tailwind-merge
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:05:55 +00:00
dependabot[bot]
3ee001761a chore(deps-dev): bump postcss from 8.4.21 to 8.4.23 in /frontend (#1466)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.21 to 8.4.23.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.21...8.4.23)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:05:13 +00:00
dependabot[bot]
6b342a513f chore(deps-dev): bump @zerodevx/svelte-toast in /frontend (#1464)
Bumps [@zerodevx/svelte-toast](https://github.com/zerodevx/svelte-toast) from 0.8.2 to 0.9.3.
- [Release notes](https://github.com/zerodevx/svelte-toast/releases)
- [Commits](https://github.com/zerodevx/svelte-toast/compare/v0.8.2...v0.9.3)

---
updated-dependencies:
- dependency-name: "@zerodevx/svelte-toast"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:03:11 +00:00
dependabot[bot]
d49e4355b8 chore(deps-dev): bump @playwright/test in /frontend (#1463)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from 1.32.1 to 1.32.3.
- [Release notes](https://github.com/Microsoft/playwright/releases)
- [Commits](https://github.com/Microsoft/playwright/compare/v1.32.1...v1.32.3)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:02:44 +00:00
dependabot[bot]
8606655849 chore(deps): bump lucide-svelte from 0.115.0 to 0.176.0 in /frontend (#1461)
Bumps [lucide-svelte](https://github.com/lucide-icons/lucide/tree/HEAD/packages/lucide-svelte) from 0.115.0 to 0.176.0.
- [Release notes](https://github.com/lucide-icons/lucide/releases)
- [Commits](https://github.com/lucide-icons/lucide/commits/v0.176.0/packages/lucide-svelte)

---
updated-dependencies:
- dependency-name: lucide-svelte
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:02:25 +00:00
dependabot[bot]
867c9624f1 chore(deps-dev): bump vite from 4.2.1 to 4.3.1 in /frontend (#1460)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.2.1 to 4.3.1.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v4.3.1/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-24 19:01:53 +00:00
Ádám Kovács
4a2af1359e fix(frontend): Update direct exports (#1456) 2023-04-24 13:34:41 +02:00
Ruben Fiszel
ed9d451246 svelte-package 2 exports 2023-04-24 13:04:07 +02:00
Ádám Kovács
c77393c154 fix(frontend): Update CLI login request styling (#1454) 2023-04-24 12:25:53 +02:00
Ruben Fiszel
8259451295 default worker handle other tags 2023-04-24 12:17:38 +02:00
Ruben Fiszel
7ac83acfe2 update readme 2023-04-24 01:35:17 +02:00
Ruben Fiszel
78b4fc9471 fix (#1453) 2023-04-24 00:16:56 +02:00
Ruben Fiszel
efacaeebf0 chore(main): release 1.89.0 (#1429)
* chore(main): release 1.89.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-04-23 17:05:46 +02:00
Ruben Fiszel
ed049da984 update readme 2023-04-23 17:05:33 +02:00
Ruben Fiszel
722783f7f6 feat(backend): worker groups (#1452)
* tagged scripts

* tagged scripts

* fix

* fix

* fix

* all

* update sqlx
2023-04-23 16:57:23 +02:00
Ruben Fiszel
a5ffe22da7 update default tab for hub 2023-04-23 12:18:39 +02:00
Ruben Fiszel
3cf0289921 update self-host instructions 2023-04-23 11:13:57 +02:00
Ádám Kovács
32903d2839 fix(frontend): App color picker overflow issue (#1449) 2023-04-22 09:56:16 +02:00
ELLIOTTCABLE
4b9ec9c080 lsp: Expose 3001 in the Docker image (#1450) 2023-04-22 09:55:34 +02:00
Ruben Fiszel
3f21e9004c move tests to not use njsail 2023-04-22 08:24:54 +02:00
Ruben Fiszel
d76e90757e fix(backend): avoid potential conflict between pull from tar and background sync 2023-04-21 23:49:14 +02:00
Ruben Fiszel
5f8a730fdf fix(backend): global cache synco only start if all piptars have been downloaded 2023-04-21 22:21:04 +02:00
Faton Ramadani
c6a7a62d46 App templates (#1448)
* feat(backend): workers are instantly ready and sync with global cache in background

* feat(frontend): add templates

* feat(frontend): fix

* feat(frontend): add psql template

* feat(frontend): Move braces

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-04-21 15:09:18 +02:00
Ádám Kovács
30bf7ad3e9 feat(frontend): Add seconds input (#1445)
* feat(frontend): Add seconds input

* add more instances

* fix header toggles

* add retry calculations
2023-04-21 14:35:50 +02:00
Ruben Fiszel
3d031c7017 feat(backend): only run fully deployed scripts 2023-04-21 12:49:47 +02:00
Ruben Fiszel
c0ab27a9e7 fix frontend compile 2023-04-21 10:46:18 +02:00
Faton Ramadani
f7a2ed15d2 App UI rework (#1442)
* feat(frontend): app editor ui rework

* feat(frontend): update insert variable

* feat(frontend): fix preview button

* feat(frontend): update toggle group v2

* feat(frontend): fix typo

* feat(frontend): fix build

* feat(frontend): adapt homepage

* feat(frontend): small fix

* feat(frontend): add back type
2023-04-21 10:40:03 +02:00
Ruben Fiszel
670ba51d9b feat(backend): workers are instantly ready and sync with global cache in background 2023-04-21 09:45:25 +02:00
Ruben Fiszel
68ab75169a improve log line for cache syncing 2023-04-21 01:54:58 +02:00
Ruben Fiszel
455e2e9c25 fix untar_all_piptars 2023-04-21 01:02:51 +02:00
Ruben Fiszel
ddc04f93c3 better rclone filters 2023-04-21 00:31:39 +02:00
Ruben Fiszel
fac32f3ebf better rclone filters 2023-04-20 23:45:31 +02:00
Ruben Fiszel
ed87020a83 set relative folder for archive creation 2023-04-20 23:33:53 +02:00
Ruben Fiszel
1f304a7c84 remove deno/gen/windmill from tmp cache 2023-04-20 21:04:17 +02:00
Ruben Fiszel
f67062f150 fix owner permission for admins 2023-04-20 20:52:00 +02:00
Ruben Fiszel
96f79bc6cc --s3-no-cache-buckets 2023-04-20 20:50:02 +02:00
Ruben Fiszel
92e5964464 fix tests 2023-04-20 20:17:03 +02:00
Ruben Fiszel
369dd0dac6 feat(backend): global cache refactor for pip using tar for each dependency (#1443)
* cache refactor

* exclude tar from being synced to bucket

* run

* update

* update
2023-04-20 20:05:12 +02:00
Ryan Rich
3c98452f50 feat(frontend): support showing metadata on script add via query param (#1438)
* feat(frontend): support showing metadata on script add via query param

* feat(frontend): snake case query param per pr feedback
2023-04-20 16:35:58 +02:00
Ádám Kovács
46a29b5d27 fix(frontend): Update flow viewer styling (#1441)
* fix(frontend): Update flow viewer styling

* update
2023-04-20 16:35:45 +02:00
Ádám Kovács
fe75aa18f2 fix(frontend): Minor update of app default codes (#1440) 2023-04-20 11:38:30 +02:00
Ruben Fiszel
7f886a673b fix python install on save with nsjail 2023-04-20 10:33:11 +02:00
Mohsin Malik
8636801a7a Add UI toggles (#1437)
* Add UI toggles

* Reset .env

* Remove console.log

* Remove more console.logs
2023-04-19 22:48:50 +02:00
Ádám Kovács
c8acfbc1ff fix(frontend): Update app default codes (#1432)
* fix(frontend): Update app default codes

* remove console log
2023-04-19 22:46:00 +02:00
Ruben Fiszel
62d196ecec add barrier when num workers > 1 2023-04-19 17:00:03 +02:00
Ádám Kovács
17646130bc fix(frontend): Update app mobile preview width (#1431)
* fix(frontend): App mobile preview width

* fix(frontend): Add min width to app desktop preview
2023-04-19 14:54:51 +02:00
Ádám Kovács
17cb8fc3fa fix(frontend): Update flow tooltip z-indexes (#1433) 2023-04-19 14:54:39 +02:00
Ruben Fiszel
29848ae466 add barrier when num workers > 1 2023-04-19 12:46:25 +02:00
Faton Ramadani
36acbf793b feat(frontend): Add documentation links (#1399)
* feat(frontend): Add documentation link

* feat(frontend): update documentation link style

* feat(frontend): update documentation link
2023-04-19 09:37:57 +02:00
Ruben Fiszel
c919827cf8 feat(ee): sync cache in background 2023-04-19 01:15:41 +02:00
Ruben Fiszel
0e77e37fbd feat(ee): sync cache in background 2023-04-19 00:55:51 +02:00
Faton Ramadani
3615fb26fb feat(frontend): reorder array items in app editor (#1426)
* feat(frontend): reorder array items in app editor

* feat(frontend): support tab

* feat(frontend): swap subgrids accordingly

* feat(frontend): fix syncing issues

* feat(frontend): fix syncing issues

* feat(frontend): Fix reactive statement
2023-04-19 00:01:03 +02:00
Ruben Fiszel
fa2e38a2f2 only cache on first worker 2023-04-18 21:23:29 +02:00
Faton Ramadani
d17323286a feat(frontend): add toast actions (#1411)
* feat(frontend): add toast actions

* feat(frontend): Fix callback

* feat(frontend): Add start from blank

* feat(frontend): support flow as well
2023-04-18 18:32:04 +02:00
Faton Ramadani
d96d4a524e fix(frontend): fix copy content button width (#1428) 2023-04-18 18:31:40 +02:00
Ruben Fiszel
b8b4308aef minor UX improvements 2023-04-18 10:50:49 +02:00
Ruben Fiszel
d036fee6c8 minor UX improvements 2023-04-18 10:40:40 +02:00
Ruben Fiszel
6954d0882e log how much time took each command child 2023-04-18 08:55:26 +02:00
Ruben Fiszel
e87605d1f5 chore(main): release 1.88.1 (#1425)
* chore(main): release 1.88.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-04-18 08:30:08 +02:00
Ruben Fiszel
7e3a297c49 minor UX improvements 2023-04-18 08:29:21 +02:00
Ruben Fiszel
1144329972 fix(frontend): fix hub list 2023-04-18 08:25:26 +02:00
Ruben Fiszel
cd8f0b5507 revert fix hub list 2023-04-18 08:14:38 +02:00
Ruben Fiszel
26a86ba0d8 improve bash output buffering 2023-04-18 01:42:28 +02:00
Ruben Fiszel
dbd0dc1aa9 chore(main): release 1.88.0 (#1400)
* chore(main): release 1.88.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-04-18 00:54:22 +02:00
Ruben Fiszel
ba978f254e fix hub list 2023-04-18 00:48:08 +02:00
Ruben Fiszel
22cf2d3552 fix togglegroupbutton 2023-04-18 00:37:26 +02:00
Faton Ramadani
48bbbd0e87 feat(frontend): Unify main lists (#1406)
* feat(frontend): add a dev docker-compose file + update readme

* feat(frontend): Merge Hub items into one tab

* feat(frontend): fix search

* feat(frontend):  fix app filter

* feat(frontend):  fix everything

* feat(frontend):  fix everything

* feat(frontend): revert

* feat(frontend): revert

* feat(frontend): Mibrate old components

* feat(frontend): fix build
2023-04-18 00:23:04 +02:00
Ruben Fiszel
21fb185301 Revert "fix(frontend): Keep selected tab during renaming (#1409)" (#1424)
This reverts commit 82cd048ef4.
2023-04-18 00:18:49 +02:00
Ádám Kovács
82cd048ef4 fix(frontend): Keep selected tab during renaming (#1409) 2023-04-18 00:16:27 +02:00
dependabot[bot]
3f429a4a07 chore(deps-dev): bump stylelint-config-recommended in /frontend (#1417)
Bumps [stylelint-config-recommended](https://github.com/stylelint/stylelint-config-recommended) from 9.0.0 to 12.0.0.
- [Release notes](https://github.com/stylelint/stylelint-config-recommended/releases)
- [Changelog](https://github.com/stylelint/stylelint-config-recommended/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint-config-recommended/compare/9.0.0...12.0.0)

---
updated-dependencies:
- dependency-name: stylelint-config-recommended
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-18 00:16:09 +02:00
dependabot[bot]
04fa114720 chore(deps-dev): bump typescript from 4.9.5 to 5.0.4 in /frontend (#1419)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.5 to 5.0.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.9.5...v5.0.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-18 00:15:53 +02:00
Ruben Fiszel
88496a06c0 update package 2023-04-17 23:38:34 +02:00
dependabot[bot]
6c91deb40c chore(deps-dev): bump @sveltejs/package from 1.0.2 to 2.0.2 in /frontend (#1418)
Bumps [@sveltejs/package](https://github.com/sveltejs/kit/tree/HEAD/packages/package) from 1.0.2 to 2.0.2.
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/master/packages/package/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/package@2.0.2/packages/package)

---
updated-dependencies:
- dependency-name: "@sveltejs/package"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 23:26:33 +02:00
dependabot[bot]
c924f560d5 chore(deps-dev): bump @sveltejs/kit from 1.15.2 to 1.15.6 in /frontend (#1422)
Bumps [@sveltejs/kit](https://github.com/sveltejs/kit/tree/HEAD/packages/kit) from 1.15.2 to 1.15.6.
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/master/packages/kit/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/kit@1.15.6/packages/kit)

---
updated-dependencies:
- dependency-name: "@sveltejs/kit"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 19:13:33 +00:00
dependabot[bot]
deb2c48522 chore(deps-dev): bump monaco-editor-workers in /frontend (#1423)
Bumps [monaco-editor-workers](https://github.com/TypeFox/monaco-components/tree/HEAD/packages/monaco-editor-workers) from 0.36.0 to 0.37.0.
- [Release notes](https://github.com/TypeFox/monaco-components/releases)
- [Changelog](https://github.com/TypeFox/monaco-components/blob/main/packages/monaco-editor-workers/CHANGELOG.md)
- [Commits](https://github.com/TypeFox/monaco-components/commits/HEAD/packages/monaco-editor-workers)

---
updated-dependencies:
- dependency-name: monaco-editor-workers
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 19:09:14 +00:00
dependabot[bot]
608b71db39 chore(deps-dev): bump @sveltejs/adapter-static in /frontend (#1421)
Bumps [@sveltejs/adapter-static](https://github.com/sveltejs/kit/tree/HEAD/packages/adapter-static) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/master/packages/adapter-static/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/adapter-static@2.0.2/packages/adapter-static)

---
updated-dependencies:
- dependency-name: "@sveltejs/adapter-static"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 19:05:37 +00:00
dependabot[bot]
51f27ca1e8 chore(deps-dev): bump @typescript-eslint/parser in /frontend (#1420)
Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.57.0 to 5.59.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.59.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 19:05:23 +00:00
dependabot[bot]
53dac61fb1 chore(deps): bump @tanstack/svelte-table in /frontend (#1416)
Bumps [@tanstack/svelte-table](https://github.com/tanstack/table) from 8.8.4 to 8.8.5.
- [Release notes](https://github.com/tanstack/table/releases)
- [Commits](https://github.com/tanstack/table/compare/v8.8.4...v8.8.5)

---
updated-dependencies:
- dependency-name: "@tanstack/svelte-table"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 19:01:12 +00:00
dependabot[bot]
12159b7f3f chore(deps-dev): bump svelte-check from 3.1.4 to 3.2.0 in /frontend (#1415)
Bumps [svelte-check](https://github.com/sveltejs/language-tools) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte-check-3.1.4...svelte-check-3.2.0)

---
updated-dependencies:
- dependency-name: svelte-check
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-17 19:00:44 +00:00
Ruben Fiszel
2077c6e5eb fix fullscreen editor 2023-04-17 20:27:38 +02:00
Ruben Fiszel
b75b28c3bf add more script builer exit options 2023-04-17 09:13:57 +02:00
Ruben Fiszel
6b49f79cc6 add more script builer exit options 2023-04-16 11:09:01 +02:00
Ruben Fiszel
b0bea9416a fix refreshFlow loop 2023-04-16 00:44:34 +02:00
Ruben Fiszel
b9175ba14d fix refreshFlow loop 2023-04-16 00:40:54 +02:00
Ruben Fiszel
ffeb8e0874 sqlx prepare 2023-04-15 23:48:48 +02:00
Ruben Fiszel
5aa01c567f minor UX improvements 2023-04-15 23:32:13 +02:00
Ruben Fiszel
29fc777c76 minor UX improvements 2023-04-15 23:21:18 +02:00
Ruben Fiszel
4018aa7828 minor UX improvements 2023-04-15 23:10:36 +02:00
Ruben Fiszel
9e1e9a8d3a rework ownership permissions 2023-04-15 23:03:16 +02:00
Ádám Kovács
b2a40a0580 fix(frontend): Queued-running jobs preview (#1414)
* fix(frontend): Run preview queued jobs

* styling

* wording
2023-04-15 13:36:54 +02:00
Ádám Kovács
accdc1ac59 fix(frontend): Handle scheduled runs in preview (#1413) 2023-04-15 12:03:12 +02:00
Ádám Kovács
4ab023f950 feat(frontend): Add runs preview popup (#1405)
* feat(frontend): Add runs preview popup

* fix(frontend): Remove events from closed drawer

* remove comment

* limit open previews to one

* handle running jobs

* update styling

* position correctly

---------

Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-04-15 08:02:04 +00:00
Faton Ramadani
98060ce55d fix(frontend): fix enum sync (#1410)
* fix(frontend): fix enum sync

* Update SchemaEditor.svelte

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-04-15 11:09:40 +02:00
Ruben Fiszel
33437bb847 performance: process completed job in background (#1396)
* compile

* improve
2023-04-15 11:06:51 +02:00
Ruben Fiszel
a85ad82b3a add merge group to npm check 2023-04-15 11:03:51 +02:00
Ruben Fiszel
d049a13f3c fix grant for input table 2023-04-14 18:34:41 +02:00
Ruben Fiszel
e828d2673e feat(frontend): cancellable inline script editor run 2023-04-14 01:08:37 +02:00
Ruben Fiszel
5058d158fc fix python tabSize issue 2023-04-13 23:12:07 +02:00
Ruben Fiszel
cb7e686dd9 feat(backend): install python scripts on save 2023-04-13 22:57:53 +02:00
Ruben Fiszel
11b9c8fadb do a test run on first iteration 2023-04-13 21:54:42 +02:00
Ádám Kovács
ac489ac2da fix(frontend): Fix app file uploads (#1408)
* fix(frontend): Image upload

* fix

* handle map input error
2023-04-13 21:00:12 +02:00
Ruben Fiszel
4942691a51 consistent workspace query arg 2023-04-13 19:37:58 +02:00
Ruben Fiszel
5c36ca8763 improve saved inputs 2023-04-13 18:32:08 +02:00
Ruben Fiszel
34f48aa1e3 split worker.rs into more files 2023-04-13 17:44:47 +02:00
Faton Ramadani
75a0482ef0 fix(frontend): fix buttons width (#1407)
* fix(frontend): fix buttons width

* fix(frontend): fix order
2023-04-13 16:42:09 +02:00
Faton Ramadani
568f59eefb feat(frontend): Remove gap when button label is empty (#1402) 2023-04-13 09:28:18 +02:00
Ruben Fiszel
8928cfa3d7 fix refreshOn 2023-04-13 09:22:52 +02:00
Ruben Fiszel
a5499c26f3 fix(backend): deno uses --no-check 2023-04-13 00:22:46 +02:00
Faton Ramadani
7dc7ecef55 feat(frontend): Update airtable instructions (#1403) 2023-04-12 23:54:23 +02:00
Ruben Fiszel
a5f6d73f7d fix(backend): do not fail on schedule not existing anymore 2023-04-12 20:06:50 +02:00
Ruben Fiszel
670c84b901 exclude deno/gen/file from global cache 2023-04-12 19:18:48 +02:00
Oliver Veal
92a293488e feat: inputs library on run page
* display previous script inputs on script run page

* parallelise loading

* parallelise loading

* also working for flows

* separate endpoints for scripts and flows

* Splitpanes and Saved Inputs (UI)

* Saved inputs API endpoints

* Editable Input name

* Narrow width styling

* feat(frontend): Add a toggle to open the saved inputs (#1401)

* feat(frontend): Add a toggle to open the saved inputs

* feat(frontend): Add a toggle to open the saved inputs

* feat(frontend): Move toggle

* update all

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-04-12 17:29:06 +02:00
Ruben Fiszel
0cd1e65e46 frontend apps rename improvements 2023-04-12 14:38:13 +02:00
Faton Ramadani
6aa1008933 fix(frontend): Remove output when deleting a component (#1397) 2023-04-12 10:28:54 +02:00
Ruben Fiszel
9434bbb18b fix script explorer 2023-04-11 22:12:28 +02:00
Ruben Fiszel
e6632a32c9 chore(main): release 1.87.0 (#1375)
* chore(main): release 2.0.0

* Apply automatic changes

* Update version.txt

* Update CHANGELOG.md

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-04-11 21:11:11 +02:00
Ruben Fiszel
54c4d03173 fix search input for app propagation 2023-04-11 20:04:34 +02:00
Ruben Fiszel
3932e5dfb9 add GOPRIVATE and NETRC for private modules 2023-04-11 19:55:38 +02:00
Ruben Fiszel
9b3d6a3dd9 fix hub compatible export 2023-04-11 18:33:45 +02:00
Faton Ramadani
58d4b556eb fix(frontend): Add missing stopPropagation (#1394)
* fix(frontend): Add missing stopPropagation

* fix(frontend): fix component selection
2023-04-11 16:22:22 +02:00
Ruben Fiszel
8552c92837 fix relative url deno loading2 2023-04-11 15:57:59 +02:00
Ruben Fiszel
955a213a50 fix(backend): nested deno relative imports 2023-04-11 15:16:55 +02:00
Ruben Fiszel
e82f5388b6 compile 2023-04-11 13:40:58 +02:00
Ádám Kovács
8a44f8e779 fix(frontend): Fix icon picker input (#1389) 2023-04-11 13:29:55 +02:00
Kai Jellinghaus
d45e6c94ab feat(backend): Redis based queue (#1324)
* Merge?

* Fix V8 breaking change

* WIP

* WIP

* Cleanup

* Move to git reference

* Fix Merge conflict

* update

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-04-11 12:24:13 +02:00
Ruben Fiszel
60da67a725 restore int default argument parsing in dneo 2023-04-11 12:15:16 +02:00
Ruben Fiszel
0718931616 fix tests + scheduled_for uses now instead of system time 2023-04-11 11:48:14 +02:00
Faton Ramadani
41831d58ed fix(frontend): Fix mac shortcuts (#1381)
* fix(frontend): fix app init issue

* fix(frontend): Fix mac shortcuts

* Update NonRunnableComponent.svelte

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-04-11 08:52:40 +02:00
Ruben Fiszel
36816877b4 remove initialized 2023-04-11 08:51:09 +02:00
dependabot[bot]
0040e15805 chore(deps-dev): bump @types/vscode from 1.74.0 to 1.77.0 in /frontend (#1358)
Bumps [@types/vscode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/vscode) from 1.74.0 to 1.77.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/vscode)

---
updated-dependencies:
- dependency-name: "@types/vscode"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-11 08:24:34 +02:00
dependabot[bot]
72317e9b54 chore(deps-dev): bump svelte2tsx from 0.6.10 to 0.6.11 in /frontend (#1382)
Bumps [svelte2tsx](https://github.com/sveltejs/language-tools) from 0.6.10 to 0.6.11.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte2tsx-0.6.10...svelte2tsx-0.6.11)

---
updated-dependencies:
- dependency-name: svelte2tsx
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-11 08:24:19 +02:00
dependabot[bot]
4cdad376b3 chore(deps): bump python from 3.11.2-slim-buster to 3.11.3-slim-buster (#1383)
Bumps python from 3.11.2-slim-buster to 3.11.3-slim-buster.

---
updated-dependencies:
- dependency-name: python
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-11 08:24:02 +02:00
dependabot[bot]
866228b663 chore(deps-dev): bump eslint from 8.37.0 to 8.38.0 in /frontend (#1384)
Bumps [eslint](https://github.com/eslint/eslint) from 8.37.0 to 8.38.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.37.0...v8.38.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-11 08:23:42 +02:00
dependabot[bot]
7eacca4caa chore(deps-dev): bump pdfjs-dist from 3.4.120 to 3.5.141 in /frontend (#1385)
Bumps [pdfjs-dist](https://github.com/mozilla/pdfjs-dist) from 3.4.120 to 3.5.141.
- [Release notes](https://github.com/mozilla/pdfjs-dist/releases)
- [Commits](https://github.com/mozilla/pdfjs-dist/commits)

---
updated-dependencies:
- dependency-name: pdfjs-dist
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-11 08:23:21 +02:00
dependabot[bot]
1526537f56 chore(deps): bump svelte-select from 5.5.2 to 5.6.0 in /frontend (#1386)
Bumps [svelte-select](https://github.com/rob-balfre/svelte-select) from 5.5.2 to 5.6.0.
- [Release notes](https://github.com/rob-balfre/svelte-select/releases)
- [Changelog](https://github.com/rob-balfre/svelte-select/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rob-balfre/svelte-select/compare/v5.5.2...v5.6.0)

---
updated-dependencies:
- dependency-name: svelte-select
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-11 08:22:03 +02:00
Ruben Fiszel
1f705cab2c fix(cli): overwrite archived scripts 2023-04-11 08:21:37 +02:00
Ruben Fiszel
f2d3c8208b feat(backend): add instance events webhook 2023-04-11 01:45:56 +02:00
Ruben Fiszel
1b04537c9a more app fixes 2023-04-10 22:34:09 +02:00
Ruben Fiszel
23e374b10d more app fixes 2023-04-10 21:57:07 +02:00
Ruben Fiszel
5fc72ea2e6 fix app first debounce for improve trigger on load 2023-04-10 20:27:37 +02:00
Ruben Fiszel
3f5df1ee41 fix home + refreshOnStart 2023-04-10 18:02:27 +02:00
Ádám Kovács
3dabac153f feat(frontend)!: Add option to return file names (#1380) 2023-04-10 17:32:03 +02:00
Ruben Fiszel
d0e0e1fdf2 fix(frontend): fix app init issue 2023-04-10 17:27:48 +02:00
Faton Ramadani
8e9c491650 fix(frontend): Fix frontend dependencies (#1379)
* fix(frontend): Fix frontend dependencies

* fix(frontend): Fix frontend dependencies

* fix(frontend): Fix frontend dependencies
2023-04-10 15:34:34 +02:00
Ruben Fiszel
df4c6289ac improve metrics 2023-04-10 11:58:44 +02:00
Ruben Fiszel
72c8d3921d improve metrics 2023-04-10 11:53:32 +02:00
Ruben Fiszel
e911869d99 perf: parallelize more operations for deno jobs 2023-04-10 10:55:56 +02:00
Ruben Fiszel
e1712e63a6 improve token lock 2023-04-10 08:00:41 +02:00
Faton Ramadani
2031e1ebd0 fix(frontend): fix popover configuration to avoid content shift (#1377) 2023-04-10 07:24:57 +02:00
Faton Ramadani
de8dc1e9cd fix(frontend): remove stopPropagation that was preventing components dnd (#1378) 2023-04-10 07:23:15 +02:00
Ruben Fiszel
de87d7ac27 fetch token in the background 2023-04-10 01:16:15 +02:00
Ruben Fiszel
2b003c684f make create_token_for_owner not a transaction anymore 2023-04-09 21:47:05 +02:00
Ruben Fiszel
3097510550 only register prometheus metrics if they are enabled 2023-04-09 15:39:25 +02:00
Ruben Fiszel
0c0b2d88cc deno optimization v0 2023-04-09 14:10:56 +02:00
Ruben Fiszel
1ffed41cf9 fix backend tests 2023-04-09 11:20:15 +02:00
Ruben Fiszel
dac61d1c98 feat(backend): extend cached resolution for go 2023-04-09 10:58:45 +02:00
Ruben Fiszel
facb67093c feat(python): cache dependency resolution 2023-04-08 23:25:46 +02:00
Ruben Fiszel
341a9662b7 add debug log line on execute 2023-04-08 22:21:22 +02:00
Ruben Fiszel
e80454e7fd chore(main): release 1.86.0 (#1352)
* chore(main): release 1.86.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-04-08 22:01:22 +02:00
Ruben Fiszel
3a232dbb57 feat(cli): add getFullResource 2023-04-08 21:57:40 +02:00
Ruben Fiszel
ee45f1ca7b show status code when possible 2023-04-08 20:09:27 +02:00
Ruben Fiszel
bbb6ee978d reduce verbosity of cache sync 2023-04-08 15:55:09 +02:00
Ruben Fiszel
5961995e80 reduce verbosity of cache sync 2023-04-08 15:48:07 +02:00
Ruben Fiszel
78f5fd275e remove deno nsjail in favor of deno sandboxing 2023-04-08 15:25:10 +02:00
Ruben Fiszel
a7c4c5d0a8 use skeleton for workers page 2023-04-08 14:08:56 +02:00
Ruben Fiszel
617220d75a update caddyfile 2023-04-08 14:00:51 +02:00
Ruben Fiszel
09042583c7 update self-host 2023-04-08 13:52:31 +02:00
Ruben Fiszel
2e80404e5e allow back navigation for home tabs 2023-04-08 13:20:46 +02:00
Ruben Fiszel
8ef29099f8 fix README and fix inline editor 2023-04-08 13:05:40 +02:00
Ruben Fiszel
1097dccfe5 change default recomputeOnInputChanges 2023-04-08 12:33:03 +02:00
Ádám Kovács
76a2a1db36 fix(frontend): Minor fixes (#1374)
* fixes

* reverse wm logo spin

* remove component tab label

* updates
2023-04-08 09:52:41 +02:00
Ruben Fiszel
65721b3b20 fix lsp relative imports 2023-04-08 00:11:10 +02:00
Ruben Fiszel
7675f08b7b feat(frontend): add impersonate api + local resolution of import by lsp v0 2023-04-07 22:54:55 +02:00
Ádám Kovács
b962ae3578 various app updates (#1373) 2023-04-07 13:58:02 +02:00
Ruben Fiszel
34a8b01b76 feat(frontend): add flow expand button 2023-04-07 12:36:29 +02:00
Ruben Fiszel
179382afbd improve further monaco assistant 2023-04-07 09:16:10 +02:00
Ruben Fiszel
37ee631363 experimental: make deno a separate language in the editor (#1370)
* all

* all

* all
2023-04-07 07:47:21 +02:00
Ruben Fiszel
dba37c2771 fix open drawer script builder 2023-04-07 01:44:36 +02:00
Ruben Fiszel
33f2bad8d9 add GOPATH to go mod tidy 2023-04-07 00:49:57 +02:00
Faton Ramadani
368cdefd91 Menu refactor (#1372)
* wip menu refactor

* wip

* wip

* feat(frontend): finish menu refactor

* feat(frontend): finish menu refactor
2023-04-07 00:08:53 +02:00
Ruben Fiszel
266b5b00da fix(frontend): make croninput a builder rather than a tab 2023-04-06 23:57:42 +02:00
Ruben Fiszel
8fe68c832b set schema on script template change 2023-04-06 23:28:03 +02:00
Faton Ramadani
92be102a07 feat(frontend): Improve login + toasts (#1363)
* feat(frontend): Improve login + toasts

* feat(frontend): Improve workspace selection

* feat(frontend): restore package.lock

* feat(frontend): restore package.lock

* feat(frontend): Set gray background + smal fixes

* feat(frontend): fix login modal margin

* feat(frontend): update color
2023-04-06 17:23:58 +02:00
Faton Ramadani
a344928f25 fix(frontend): Fix button poppup (#1368)
Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-04-06 16:09:26 +02:00
Faton Ramadani
f214d5f96b feat(frontend): Tone down text + display whole text (#1366) 2023-04-06 16:07:34 +02:00
Faton Ramadani
4af39f081b fix(frontend): Fix connected property (#1371)
* fix(frontend): Fix connected property

* fix(frontend): fix connected property

* fix(frontend): fix connected property
2023-04-06 16:02:10 +02:00
Ruben Fiszel
3a6b655ba8 fix server starting failed 2023-04-06 11:46:47 +02:00
Ruben Fiszel
2f156d09bf fix loading script from hub 2023-04-06 09:13:15 +02:00
Ruben Fiszel
b84be60c53 feat(frontend): make script editor a single page 2023-04-06 01:00:42 +02:00
Ruben Fiszel
eef9017a05 remove import from template 2023-04-05 22:14:15 +02:00
Ruben Fiszel
eff61bb8d3 fix(backend): allow longer name/company 2023-04-05 22:01:18 +02:00
Ruben Fiszel
8a594a89ad fix(backend): allow cors 2023-04-05 20:36:01 +02:00
Ruben Fiszel
fb60768cf3 fix star hover issue 2023-04-05 19:38:20 +02:00
Ruben Fiszel
8f7a11b896 feat(frontend): add workspace to ctx 2023-04-05 19:31:12 +02:00
Ruben Fiszel
0b4da1a97c minor schedule nits 2023-04-05 19:21:13 +02:00
Ruben Fiszel
f6d14f7fc3 minor schedule nits 2023-04-05 19:16:00 +02:00
Ruben Fiszel
449e7de71a fix search outputs in apps with null object 2023-04-05 18:53:57 +02:00
Ruben Fiszel
95ed99a1d2 fix search outputs in apps with null object 2023-04-05 18:52:41 +02:00
Ruben Fiszel
8c72722710 fix(backend): inline script app python fix 2023-04-05 18:26:27 +02:00
Oliver Veal
17176bb8d1 feat: improved cron/schedule editor (#1362)
* basic cron schedule editing ui

* schedules run in a user-specified timezone

* fix other uses of CronInput component

* use now() from database to schedule next job

* offset -> IANA timezone conversion on db migration

* sqlx ci

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-04-05 16:37:24 +02:00
Ruben Fiszel
4fb7468cf3 do no keep tar around and move it from the tmp folder 2023-04-05 15:02:37 +02:00
Faton Ramadani
51fc436456 fix(frontend): Fix flow templateEditor (#1367) 2023-04-05 13:06:56 +02:00
Ruben Fiszel
7f9050b285 feat(backend): lowercase all emails in relevant endpoints (#1361)
* all

* also modify invite_user
2023-04-05 11:36:17 +02:00
Ruben Fiszel
94eecea02b feat(backend): add /ready endpoint for workers 2023-04-05 10:34:25 +02:00
jneeee
4ec035b09a fix: no need to map internal ports to hosts (#1365) 2023-04-05 08:01:43 +02:00
Ruben Fiszel
922682c4d0 initialize cache if from tar 2023-04-04 16:31:47 +02:00
Faton Ramadani
831ff60bdf App input (#1353)
* feat(frontend): record frontend errors

* feat(frontend): display result

* feat(frontend): Fix name shadowing

* feat(frontend): fix typo

* fix(frontend): better display frontend errors

* fix(frontend): wip

* wip

* feat(frontend): text input

* feat(frontend): enable double click to open + disabled mode when input is computed or connected

* feat(frontend): fix monaco setCode

* feat(frontend): revert package.json changes

* feat(frontend): fix syncing issues

* feat(frontend): adapt style

* feat(frontend): fix event propagation
2023-04-04 16:00:50 +02:00
Ruben Fiszel
b86ca29fde fix polar handling 2023-04-04 14:25:27 +02:00
Ruben Fiszel
15c75d9d00 feat(backend): add GET endpoint to trigger scripts 2023-04-04 13:56:55 +02:00
Ruben Fiszel
096bf2022c kill the background bucket sync if necessary 2023-04-04 11:33:07 +02:00
Ruben Fiszel
bc4dd0eeaa only sync after the cache has been initialized 2023-04-04 11:03:25 +02:00
Ruben Fiszel
ae219eb3be create the first dirs properly 2023-04-04 09:29:08 +02:00
Ruben Fiszel
b851a5c65a first sync of the cache is at least after the first sync duration 2023-04-04 09:06:19 +02:00
Ruben Fiszel
bc36f5b309 log the entirecache.tar length 2023-04-04 08:32:20 +02:00
Ruben Fiszel
5b0a4d7838 only copy cache from bucket in background the first time 2023-04-04 08:24:02 +02:00
dependabot[bot]
f358aa5fe2 chore(deps-dev): bump cssnano from 5.1.15 to 6.0.0 in /frontend (#1359)
Bumps [cssnano](https://github.com/cssnano/cssnano) from 5.1.15 to 6.0.0.
- [Release notes](https://github.com/cssnano/cssnano/releases)
- [Commits](https://github.com/cssnano/cssnano/compare/cssnano@5.1.15...cssnano@6.0.0)

---
updated-dependencies:
- dependency-name: cssnano
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-04 01:34:22 +02:00
Ruben Fiszel
3e5ff8682a feat: do cache bucket syncing in background + check tar before pushing it (#1360)
* all

* improve tar caching
2023-04-04 01:34:11 +02:00
dependabot[bot]
0cbefd8214 chore(deps-dev): bump @sveltejs/adapter-static in /frontend (#1357)
Bumps [@sveltejs/adapter-static](https://github.com/sveltejs/kit/tree/HEAD/packages/adapter-static) from 1.0.6 to 2.0.1.
- [Release notes](https://github.com/sveltejs/kit/releases)
- [Changelog](https://github.com/sveltejs/kit/blob/master/packages/adapter-static/CHANGELOG.md)
- [Commits](https://github.com/sveltejs/kit/commits/@sveltejs/adapter-static@2.0.1/packages/adapter-static)

---
updated-dependencies:
- dependency-name: "@sveltejs/adapter-static"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-03 21:07:56 +02:00
Ruben Fiszel
517b2c9cca fix(backend): always flush bash output 2023-04-03 20:07:43 +02:00
Ruben Fiszel
7a9091fed6 fix(backend): always flush bash output 2023-04-03 19:56:55 +02:00
Faton Ramadani
2819b09ce5 fix(frontend): Add FlowGraph display on Safari (#1351) 2023-04-03 16:39:57 +02:00
Ruben Fiszel
ef0165e419 chore(main): release 1.85.0 (#1348)
* chore(main): release 1.85.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-04-03 13:30:18 +02:00
Ruben Fiszel
be97be2c58 update lsp to not report imports errors 2023-04-03 13:26:00 +02:00
Ádám Kovács
daf827666b fix(frontend): PDF reader header positioning (#1350) 2023-04-03 11:56:38 +02:00
Ruben Fiszel
8c53598aba fix(backend): improve handling subflow with many depth using tailrec 2023-04-03 08:37:24 +02:00
Ruben Fiszel
6f33d549f0 improve mem handling for update_flow_status 2023-04-03 01:13:39 +02:00
Ruben Fiszel
390a988d4c fix(backend): improve subflow processing 2023-04-03 00:32:13 +02:00
Ruben Fiszel
8a8316c316 remove unecessary debug inputtransform 2023-04-02 22:20:05 +02:00
Ruben Fiszel
c638c511ca set ready to undefined for agGridTable 2023-04-02 18:29:49 +02:00
dependabot[bot]
59403fbe5d chore(deps): bump actions/setup-go from 3 to 4 (#1309)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 3 to 4.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-02 17:42:56 +02:00
Ruben Fiszel
7eed0b4666 update highlight + fix transform editor suggestions 2023-04-02 17:41:43 +02:00
Ruben Fiszel
4127ffe00c chore: update search library 2023-04-02 17:16:23 +02:00
Ruben Fiszel
3d9dfa645b update svelte-awsome 2023-04-02 17:08:37 +02:00
Ruben Fiszel
7c0de93b3d remove all frontend warnings and unused imports 2023-04-02 17:02:57 +02:00
Ruben Fiszel
de1e29492c feat(frontend): add agGrid api hooks + ready 2023-04-02 16:21:04 +02:00
Ádám Kovács
0b8a08cb49 feat(frontend): Add ID renaming popup (#1344)
* feat(frontend): Add id renaming popup

* fix(frontend): State reset

* actually do it

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-04-02 15:46:24 +02:00
Ruben Fiszel
4f7c45118b remove backend warnings & fix test 2023-04-02 13:56:16 +02:00
Ruben Fiszel
cdbab5c807 remove all frontend warnings 2023-04-02 13:52:15 +02:00
Ruben Fiszel
d4927cf757 signatures that cannot be parsed return 200 2023-04-02 12:47:38 +02:00
Ruben Fiszel
492f22526a refresh folders more aggressively in case a non non just created one 2023-04-02 12:08:52 +02:00
Ruben Fiszel
89c2fb41dd can read all folders if admin or superadmin + refresh user in background 2023-04-02 10:35:22 +02:00
Ruben Fiszel
018b051781 feat: add local cache for folder path used + invalidate cache on folder creation 2023-04-01 19:17:29 +02:00
Ruben Fiszel
c19be7a2fa ci: extract to s3 directly 2023-04-01 15:38:58 +02:00
Ruben Fiszel
aa3a3f6612 ci: extract to s3 directly 2023-04-01 15:36:26 +02:00
Ruben Fiszel
5b8c6bb35d fix compile 2023-04-01 15:07:32 +02:00
Ruben Fiszel
8d487c0ddb fix lack of suggestions in flow editor 2023-04-01 14:53:45 +02:00
Ruben Fiszel
efea19496f update vite and sveltekit 2023-04-01 13:22:12 +02:00
Ruben Fiszel
ab99950c5d fix cycle in imports 2023-04-01 01:40:19 +02:00
Ruben Fiszel
2062dc6c44 chore(main): release 1.84.1 (#1345)
* chore(main): release 1.84.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-31 21:07:04 +02:00
Ruben Fiszel
b6d5eef547 fix(cli): overwrite instead of smart diff 2023-03-31 21:02:37 +02:00
Ruben Fiszel
46d2c86b37 when pulling, overwrite or not but do not merge 2023-03-31 21:01:40 +02:00
Ruben Fiszel
8d73c9276e chore(main): release 1.84.0 (#1336)
* chore(main): release 1.84.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-31 20:53:24 +02:00
Faton Ramadani
57f8dd9570 feat(frontend): Display frontend execution result in Debug Runs (#1341)
* feat(frontend): record frontend errors

* feat(frontend): display result

* feat(frontend): Fix name shadowing

* feat(frontend): fix typo

* fix(frontend): better display frontend errors
2023-03-31 15:20:16 +02:00
Ruben Fiszel
5a8e00d285 remove unecessary deno lock file 2023-03-31 11:53:31 +02:00
Ruben Fiszel
f217a2c368 fix input_transform -> input_transforms tests 2023-03-31 11:27:37 +02:00
Ádám Kovács
2779891411 fix(frontend): Export python code as string (#1339) 2023-03-31 11:09:53 +02:00
Ryan Rich
dfd2abc764 fix(backend): backend compatability on macos (#1340) 2023-03-31 09:00:54 +02:00
Ruben Fiszel
624279e568 fix compile 2023-03-31 00:30:10 +02:00
Ruben Fiszel
cd1f9b6baa fix(frontend): improve app tables 2023-03-31 00:19:14 +02:00
Ruben Fiszel
8b4e828e64 add license 2023-03-30 19:48:18 +02:00
Ruben Fiszel
2e7871439a consistent sort + minor nits 2023-03-30 17:27:21 +02:00
Ruben Fiszel
82578ef836 minor ux nits 2023-03-30 16:15:02 +02:00
Ruben Fiszel
b3254938fe fix(frontend): improve loading of big jobs in run form 2023-03-30 13:14:39 +02:00
Ruben Fiszel
71619acdfa fix(frontend): improve loading of big args in job details 2023-03-30 12:59:11 +02:00
Ruben Fiszel
c7506e4dae feat(backend): reduce memory allocation for big forloops of flows 2023-03-30 11:52:54 +02:00
Ruben Fiszel
2368da2146 feat: add the ability to edit previous versions 2023-03-30 08:25:00 +02:00
Ruben Fiszel
7fc97e274e only decrypt secret value 2023-03-30 07:58:51 +02:00
Ruben Fiszel
4f75a5840a redeploy 2023-03-30 01:41:37 +02:00
Ruben Fiszel
8b80b3cb74 fix cancel job 2023-03-30 01:20:54 +02:00
Ruben Fiszel
31d0d102eb use requests for . imports 2023-03-30 01:07:24 +02:00
Ruben Fiszel
fbe5c18da0 feat: add force cancel 2023-03-30 00:42:13 +02:00
Ruben Fiszel
8d0d996bbb fix flow connection 2023-03-29 22:01:12 +02:00
Ruben Fiszel
2b09fead4f Update deploy-to-s3.yml (#1338) 2023-03-29 20:31:09 +02:00
Ruben Fiszel
fccb3d8088 truncate file too big 2023-03-29 20:04:31 +02:00
Ruben Fiszel
9aaeaf4ee0 truncate file too big 2023-03-29 20:03:17 +02:00
Ádám Kovács
01564f0a1c feat(frontend): App component style input grouping (#1334)
* feat(frontend): App component style input grouping

* fix: default value

* fix

* update styling

* fix property toggling

---------

Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-03-29 19:24:20 +02:00
Ruben Fiszel
78085a8a12 deploy main to s3 2023-03-29 17:09:56 +02:00
Ruben Fiszel
5abd9854ad deploy main to s3 2023-03-29 17:05:42 +02:00
Ruben Fiszel
85e9aa983b deploy main to s3 2023-03-29 16:50:30 +02:00
Ruben Fiszel
9853380df6 deploy main to s3 2023-03-29 16:46:36 +02:00
Ruben Fiszel
5aa14562a0 handle space and uppercase in script_path 2023-03-29 16:16:14 +02:00
Ruben Fiszel
c07a17ff8a improve focusedGrid in tabs and drawers 2023-03-29 10:34:31 +02:00
Faton Ramadani
5ac646e859 feat(frontend): improve input connection UI (#1333)
* feat(frontend): improve input connection UI

* feat(frontend): prevent pointerup from bubbling + refactor the code

* feat(frontend): remove unnecessary alert + fix null display

* feat(frontend): restore hoveredComponent when connecting + properly open deeply nested component

* feat(frontend): fix ObjectViewer display
2023-03-29 09:05:50 +02:00
Ruben Fiszel
bb61cef0e5 fix(backend): add a refresh button to workspace script/hub 2023-03-29 01:06:24 +02:00
Ruben Fiszel
f73664759f chore(main): release 1.83.1 (#1335)
* chore(main): release 1.83.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-28 23:38:12 +02:00
Ruben Fiszel
569a55e45b fix(cli): plain secrets might be undefined 2023-03-28 23:32:41 +02:00
Ruben Fiszel
5d53967ba4 fix compile issue swc_common 2023-03-28 23:13:43 +02:00
Ruben Fiszel
a24a3b4787 chore(main): release 1.83.0 (#1327)
* chore(main): release 1.83.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-28 22:50:27 +02:00
Ruben Fiszel
98d51e219d fix(cli): add --plain-secrets 2023-03-28 22:46:43 +02:00
Ruben Fiszel
11431a75f4 fix python imports 2023-03-28 21:51:12 +02:00
Ruben Fiszel
32ef18bffe fix tests 2023-03-28 21:40:36 +02:00
Ruben Fiszel
8497d1d1c0 fix autogen script names 2023-03-28 21:07:21 +02:00
Ruben Fiszel
015f8e893f fix autogen script names 2023-03-28 20:43:51 +02:00
Ruben Fiszel
07ab2dbb0a fix autogen script names 2023-03-28 20:39:58 +02:00
Ruben Fiszel
a5500ea40a feat(backend): allow relative imports for python 2023-03-28 20:27:40 +02:00
Ruben Fiszel
5eab9431bd fix integer handling as field type 2023-03-28 17:36:21 +02:00
Ruben Fiszel
33c07d3e63 feat(frontend): add pagination 2023-03-28 16:58:43 +02:00
Ruben Fiszel
5f335d2464 more flow logs 2023-03-28 14:01:47 +02:00
Ruben Fiszel
c0d72e2881 improve logging to trace job from root_job and fetching flow details from a separate workspace 2023-03-28 07:58:35 +02:00
Ruben Fiszel
e40f16c969 minor backend fixes 2023-03-27 22:57:29 +02:00
Ruben Fiszel
1d63877a69 improve flow renaming 2023-03-27 21:16:43 +02:00
Ruben Fiszel
6764c519b2 add more sanity checks to api 2023-03-27 21:07:34 +02:00
Ruben Fiszel
3463bfe36f fix array list removal 2023-03-27 20:51:52 +02:00
Ruben Fiszel
2b31653a8a feat(frontend): add textareacomponent + fix multiselect style + select multi components 2023-03-27 18:33:50 +02:00
Ruben Fiszel
449d3ae5dd feat(frontend): add recompute as a primitive 2023-03-27 17:41:37 +02:00
Ruben Fiszel
cfa3f9ce7c fix recomputeOthers 2023-03-27 15:49:24 +02:00
Ruben Fiszel
201aa6d088 improve app setup 2023-03-27 15:24:13 +02:00
Ruben Fiszel
021fa23f9f feat(backend): execute /bin/bash instead of /bin/sh for bash scripts 2023-03-27 13:08:34 +02:00
Ruben Fiszel
b95afaa9bb feat(frontend): use rich json editor for arrays of objects and for object in ArgInput 2023-03-27 13:03:06 +02:00
Ruben Fiszel
83e982e84d minor fix 2023-03-27 11:54:30 +02:00
Ádám Kovács
fa457bb709 fix(frontend): Revert app upload input (#1330)
* fix(frontend): Revert app upload input

* fix default value
2023-03-27 11:51:30 +02:00
Faton Ramadani
75306c8316 fix(frontend): Small app fixes (#1331)
* fix(frontend): wip

* fix(frontend): wip

* fix(frontend): merge main

* fix(frontend): fix build

* fix(frontend): revert css

* fix(frontend): fix alignement + remove id from  if deleted

* fix(frontend): fix connection height

* fix(frontend): done
2023-03-27 11:50:40 +02:00
Ruben Fiszel
eaac598af3 feat(backend): improve relative importsfor deno 2023-03-27 08:45:35 +02:00
Ruben Fiszel
00b70d9aaa feat(backend): increase timeout for premium workspace 2023-03-26 18:56:40 +02:00
Ruben Fiszel
9b09fac27a add more variants to shadow 2023-03-26 18:17:47 +02:00
Ruben Fiszel
6ed7268258 many apps small fixes 2023-03-26 18:14:37 +02:00
Ruben Fiszel
014765c83b fix redraw issues 2023-03-25 20:35:28 +01:00
Ruben Fiszel
577dec5c57 feat(frontend): multiselect components for apps 2023-03-25 16:54:50 +01:00
Ruben Fiszel
9ab087a20c make cancel api an optauthed 2023-03-25 08:39:56 +01:00
Ruben Fiszel
1a4867302f fix(frontend): persist description for schemas 2023-03-25 08:28:27 +01:00
Ruben Fiszel
8e3d8acc80 fix(apps): improve app table actionButtons behavior under many clicks 2023-03-25 07:59:32 +01:00
Ádám Kovács
ac2486219c feat(frontend): Add quick style settings to app editor (#1308)
* feat(frontend): Add app secondary settings menu

* refactor(frontend): Separate color picker

* save

* feat(frontend): Add quick style options

* fix(frontend): Handle overflow

* feat(frontend): Add suggestions to quick styles

* save wip

* feat(frontend): Add UI for quick styling

* fix(frontend): Handle multi value properties

* fix(frontend): Convenience updates

* feat(frontend): Add styling properties to components

* fix(frontend): Parse inner colors

* fix(frontend): Multi value sync

* fix(frontend): Correct unit handling

* fix(frontend): Correct multivalue handling

* remove comments

* fix color picker label

* feat(frontend): Add box-shadow property

* feat(frontend): Add concise unit selector

* feat(frontend): Update app labels

* remove unused imports

* fix width

* fix(frontend): App freezing

* fix(frontend): Remove unused imports

* fix(frontend): Conditional chaining

* fix

* revert

* minor updates

* feat(frontend): Add 'apply style to all' button

* fix(frontend): Update styling properties

* fix(frontend): Styling menu typography update
2023-03-24 18:26:16 +01:00
Faton Ramadani
a527cb8222 fix(frontend): add a modal that is always mounted to make sure compon… (#1328)
* fix(frontend): add a modal that is always mounted to make sure component binding are properly set

* fix(frontend): remove uselss open prop
2023-03-24 17:30:04 +01:00
Ádám Kovács
da24e9ab06 fix(frontend): Disable app keyboard navigation on focused inputs (#1326) 2023-03-24 16:48:34 +01:00
Ruben Fiszel
4dc00c2587 improve require super_admin check error 2023-03-24 14:55:56 +01:00
Ruben Fiszel
45c52f7723 make superadmin_secret work also for apis 2023-03-24 14:53:28 +01:00
Ruben Fiszel
70a7089352 make superadmin_email permission be inherited by ephemeral tokens 2023-03-24 13:22:56 +01:00
Ruben Fiszel
895609f0d2 fix backend compile 2023-03-24 12:54:20 +01:00
Ruben Fiszel
dd06c05046 chore(main): release 1.82.0 (#1316)
* chore(main): release 1.82.0

* Apply automatic changes

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-24 12:33:33 +01:00
Ruben Fiszel
a86fad6a9e fix change versions for cli 2023-03-24 12:25:30 +01:00
Ruben Fiszel
f7c30b5d2f fix(backend): do not consider FlowPreview as potential zombie job 2023-03-24 12:12:51 +01:00
Ruben Fiszel
b999c9894b fix(cli): improve diff speed + fix replacing cli 2023-03-24 09:28:45 +01:00
Ruben Fiszel
a2de6c7d5f recompute others for modal work even if no script attached 2023-03-23 21:10:18 +01:00
Ruben Fiszel
15812b4cec fix compile 2023-03-23 21:05:51 +01:00
Faton Ramadani
b22600e9c3 Fix settings panel v2 (#1325)
* fix(frontend): fix settings panel

* fix(frontend): fix settings panel

* fix(frontend): fix settings panel
2023-03-23 20:55:57 +01:00
Faton Ramadani
c15bc8a7bf fix(frontend): Fix AppTable error display + clear errors when removing a component + properly detect that latest component run had an error (#1322) 2023-03-23 20:54:02 +01:00
Faton Ramadani
30b8e474df fix(frontend): fix settings panel (#1323)
* fix(frontend): fix settings panel

* fix(frontend): fix settings panel

* fix(frontend): fix settings panel
2023-03-23 20:53:07 +01:00
Ruben Fiszel
f420999363 fix recomputeOthers 2023-03-23 17:55:21 +01:00
Ruben Fiszel
984c9a1191 fix backend timeout issues 2023-03-23 17:22:35 +01:00
Ruben Fiszel
a2df650936 fix backend timeout issues 2023-03-23 15:59:28 +01:00
Ruben Fiszel
c0076c652d fix same worker query 2023-03-23 15:57:52 +01:00
Faton Ramadani
addabcceb0 fix(frontend): Fix transformer (#1321) 2023-03-23 14:20:15 +01:00
Ruben Fiszel
47a7f7163a feat(backend): introduce RESTART_ZOMBIE_JOBS and ZOMBIE_JOB_TIMEOUT 2023-03-23 12:47:49 +01:00
Ruben Fiszel
34e25f0f96 fix(backend): increase dynamic js timeout + improve client passing 2023-03-23 10:32:09 +01:00
Ruben Fiszel
93ce252954 fix caddyfile to re-enable lsp 2023-03-22 21:55:59 +01:00
Ruben Fiszel
d3effe953b re-enable transformers 2023-03-22 21:53:28 +01:00
Ruben Fiszel
d935dba28b fix add property not in portal 2023-03-22 21:47:59 +01:00
Ruben Fiszel
58167a16cd refresh in more cases 2023-03-22 21:37:49 +01:00
Ruben Fiszel
9e9683c6f7 refresh in more cases 2023-03-22 21:29:24 +01:00
Ruben Fiszel
7511f0b18e add red toggle 2023-03-22 20:06:38 +01:00
Ruben Fiszel
c5d305bad8 fix runnableComponent even if not changed on inputs 2023-03-22 20:01:17 +01:00
Ruben Fiszel
b4008e62fd clarify trigger list 2023-03-22 19:41:33 +01:00
Ruben Fiszel
bb227b69c8 add keys to switch scripts 2023-03-22 19:33:37 +01:00
Ruben Fiszel
5518eab7b7 fix disappearing scripts 2023-03-22 19:30:11 +01:00
Faton Ramadani
a47031a41e fix(frontend): fix refresh with manual dependencies (#1319)
* fix(frontend): fix refresh with manual dependencies

* fix(frontend): fix id generation

* fix(frontend): wip

* fix(frontend): wip

* fix(frontend): Fix binding + hide toggle for frontend scripts
2023-03-22 18:27:38 +01:00
Faton Ramadani
e193a0bcdf fix(frontend): remove unnecessary div (#1318) 2023-03-22 14:40:29 +01:00
Ruben Fiszel
2df1373a69 fix compile error 2023-03-22 12:03:48 +01:00
Ruben Fiszel
c6bf67605d chore(main): release 1.81.0 (#1314)
* chore(main): release 1.81.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-21 23:15:55 +01:00
Faton Ramadani
0086f99dcc fix(frontend): fix tabs height (#1315) 2023-03-21 23:15:22 +01:00
Ruben Fiszel
bba09fdaeb fix(cli): make --skip-pull work even if no state is present 2023-03-21 23:14:56 +01:00
Ruben Fiszel
942d2b2244 remove do from acceptable ids 2023-03-21 21:20:21 +01:00
Ruben Fiszel
8a2e6365a0 improve load time for tabs 2023-03-21 20:56:54 +01:00
Ruben Fiszel
527f4b543a improve load time for text and button components 2023-03-21 19:55:35 +01:00
Ruben Fiszel
2593218cbf feat(apps): add action on form/button/formbutton 2023-03-21 18:22:20 +01:00
dependabot[bot]
bfb5c1b5a4 chore(deps-dev): bump svelte2tsx from 0.6.1 to 0.6.10 in /frontend (#1311)
Bumps [svelte2tsx](https://github.com/sveltejs/language-tools) from 0.6.1 to 0.6.10.
- [Release notes](https://github.com/sveltejs/language-tools/releases)
- [Commits](https://github.com/sveltejs/language-tools/compare/svelte2tsx-0.6.1...svelte2tsx-0.6.10)

---
updated-dependencies:
- dependency-name: svelte2tsx
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-21 13:05:04 +01:00
Faton Ramadani
a7c4f1a12e fix(frontend): Remove action outline on preview mode (#1313) 2023-03-21 13:04:43 +01:00
Ruben Fiszel
7cb363845e chore(main): release 1.80.1 (#1312)
* chore(main): release 1.80.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-21 02:13:02 +01:00
Ruben Fiszel
652d3c3889 fix initialization for app with forms 2023-03-21 02:11:34 +01:00
Ruben Fiszel
42f6d2e0ee fix(cli): add support for non metadataed scripts 2023-03-21 02:01:34 +01:00
Ruben Fiszel
d2cccd98e0 chore(main): release 1.80.0 (#1305)
* chore(main): release 1.80.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-21 01:00:29 +01:00
Ruben Fiszel
cc4d61b6bd small fix 2023-03-20 19:54:04 +01:00
Ruben Fiszel
fbdda1a4dd make top bar togglable 2023-03-20 19:25:39 +01:00
Faton Ramadani
48413a78c5 feat(frontend): App set tab (#1307)
* feat(frontend): Set tab

* feat(frontend): Set tab

* feat(frontend): fix styling

* feat(frontend): update how set Tab is stored

* feat(frontend): clean up

* feat(frontend): update setTab to an array structure

* feat(frontend): revert

* feat(frontend): support all components

* feat(frontend): fix typing

* feat(frontend): group success side effects

* feat(frontend): add missing tooltip + remove duplicate code
2023-03-20 19:09:56 +01:00
Ruben Fiszel
be1d987b41 fix table action input fields 2023-03-20 16:04:50 +01:00
Ruben Fiszel
0f64859961 fix minor app issues 2023-03-20 15:27:30 +01:00
Ruben Fiszel
b762de1eae revert caddyfileremote change 2023-03-20 14:04:18 +01:00
Ruben Fiszel
b00bde0a63 fix preview of ontextfocus 2023-03-20 14:01:34 +01:00
Ruben Fiszel
f972e4bb06 improve drag for apps 2023-03-20 10:58:20 +01:00
Faton Ramadani
29b1cc6ff0 fix(frontend): add missing optional chaining (#1306) 2023-03-20 09:49:11 +01:00
Ruben Fiszel
b51246411f use skeleton for loading in apps 2023-03-20 08:49:51 +01:00
Ruben Fiszel
f26c7ff62b minor app improvements 2023-03-20 08:35:44 +01:00
Ruben Fiszel
211ad52edb minor app improvements 2023-03-20 08:26:02 +01:00
Ruben Fiszel
1392bebf87 improve move animation 2023-03-19 23:12:01 +01:00
Ruben Fiszel
874cf412a1 minor app fixes 2023-03-19 22:37:00 +01:00
Ruben Fiszel
b497c3463f minor app fixes 2023-03-19 15:35:40 +01:00
Ruben Fiszel
fbe2f0ca93 fix when loading is set to true 2023-03-19 15:25:46 +01:00
Ruben Fiszel
0abacac06c feat(apps): add transformers for data sources 2023-03-19 15:16:31 +01:00
Ruben Fiszel
8fab191a7f apps load when all outputs are initialized 2023-03-18 20:25:21 +01:00
Ruben Fiszel
f8fad8326d more typescript type safety tricks 2023-03-18 18:15:15 +01:00
Ruben Fiszel
3b84672363 minor app fixes 2023-03-18 16:25:34 +01:00
Ruben Fiszel
e45917c020 fix lock + reactivity on ctrl + fix optionValuesKeys 2023-03-18 15:52:46 +01:00
Ruben Fiszel
d570ef58ac improve type definition of apps and sync them with static components + purge app content of unecessary data 2023-03-18 15:29:42 +01:00
Faton Ramadani
cf2d031e8e fix(frontend): App button triggered by (#1304)
* feat(frontend): add trigger list

* feat(frontend): add trigger list

* feat(frontend): add support for refreshOn

* feat(frontend): add support for refreshOn

* feat(frontend): rework

* feat(frontend): rework

* feat(frontend): code cleanup

* fix(frontend): add support for triggerOnAppLoad
2023-03-17 21:55:40 +01:00
Ruben Fiszel
9657cc9c7e fix compile error after deno upgrade 2023-03-17 21:45:54 +01:00
Ruben Fiszel
200adec32f chore(main): release 1.79.0 (#1295)
* chore(main): release 1.79.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-17 21:10:44 +01:00
Ruben Fiszel
7625782038 fix apps bar not being persistent 2023-03-17 21:08:45 +01:00
Ruben Fiszel
4242f1bb63 fix cli failing on script with non json files 2023-03-17 21:01:44 +01:00
Ruben Fiszel
f1e718e718 fix cli failing on script with non json files 2023-03-17 20:58:13 +01:00
Ruben Fiszel
f3dfad5b94 fix loading nested resource in client fetched resources 2023-03-17 20:54:37 +01:00
Faton Ramadani
078cb1bf3e feat(frontend): App component triggers (#1303)
* feat(frontend): add trigger list

* feat(frontend): add trigger list

* feat(frontend): add support for refreshOn

* feat(frontend): add support for refreshOn

* feat(frontend): rework

* feat(frontend): rework

* feat(frontend): code cleanup
2023-03-17 20:51:00 +01:00
Ruben Fiszel
97e3bb4aa8 fix reactivity for static inputs 2023-03-17 20:50:34 +01:00
Faton Ramadani
c1e43de4ea Fix sub grid (#1302)
* fix(frontend): fix horizontal splitpanes

* fix(frontend): fix subgrid height

* fix(frontend): fix subgrid height
2023-03-17 15:56:26 +01:00
Faton Ramadani
ea3dab411b fix(frontend): fix horizontal splitpanes (#1301) 2023-03-17 15:46:45 +01:00
Ruben Fiszel
a76f6f7bd9 apps rich configuration v0 + resource picker clear fix for apps 2023-03-17 12:25:03 +01:00
Ruben Fiszel
4305670d90 fix app inputs wrt to subgrids 2023-03-16 16:50:01 +01:00
Ruben Fiszel
597e38ef36 feat(frontend): add listeners for frontend scripts 2023-03-16 14:56:16 +01:00
Ruben Fiszel
ca3e3624c0 fix key left navigation 2023-03-16 12:48:31 +01:00
Ádám Kovács
c1dd35c3f0 fix(frontend): App panel styling (#1284)
* fix(frontend): App panel styling

* remove

* revert

---------

Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-03-16 12:42:41 +01:00
Faton Ramadani
bd927a27ed feat(frontend): Component control (#1293)
* fix(frontend): fix app tabs

* fix(frontend): app controls

* fix(frontend): app controls

* fix(frontend): align output panel

* fix(frontend): clean up

* fix(frontend): refactor events

* fix(frontend): fix display

* fix(frontend): fix indentation

* fix(frontend): merge main
2023-03-16 12:42:10 +01:00
Faton Ramadani
00927210fd fix(frontend): fix map render (#1297)
* fix(frontend): fix map render

* fix(frontend): fix map render
2023-03-16 12:39:12 +01:00
Ádám Kovács
bd3ee81b14 fix(frontend): Display app context search on top (#1300)
Fixing z-index issue of the search bar in the outputs panel
2023-03-16 12:38:35 +01:00
Ádám Kovács
bac831b23c fix(frontend): Hide archive toggle with empty list (#1296) 2023-03-16 12:36:56 +01:00
Faton Ramadani
c3ba1a6ab9 feat(frontend): add table actions navigation (#1298)
* feat(frontend): add table actions navigation

* feat(frontend): add table actions navigation

* feat(frontend): add table actions navigation
2023-03-16 12:36:33 +01:00
Ruben Fiszel
52157faf72 chore(main): release 1.78.0 (#1292)
* chore(main): release 1.78.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-16 03:11:38 +01:00
Ruben Fiszel
a9e8aa0f1c update cli error message for folders 2023-03-16 03:10:45 +01:00
Ruben Fiszel
50c1c614ef context panel transitions 2023-03-16 03:00:01 +01:00
Ruben Fiszel
11567d6280 feat(frontend): app textcomponent editable + tooltip 2023-03-16 02:34:39 +01:00
Ruben Fiszel
a6e1510405 fix minor flow UX 2023-03-16 01:18:11 +01:00
Ruben Fiszel
b7d8fd1a4d apps minor fixes 2023-03-16 00:55:45 +01:00
Ruben Fiszel
e27de7fb5d lightarginput for apps forms 2023-03-16 00:13:09 +01:00
Ruben Fiszel
99ec12e10c various minor fixes 2023-03-15 23:31:35 +01:00
Ruben Fiszel
9bfd471439 context panel refactor 2023-03-15 22:24:13 +01:00
Ruben Fiszel
dbdfd62638 fix(frontend): remove staticOutputs from apps 2023-03-15 17:22:46 +01:00
Ruben Fiszel
6f890f2120 fix(frontend): improve rendering performance after component moving 2023-03-15 12:35:11 +01:00
Ruben Fiszel
183a4591df fix(backend): whitelist for include_header was ignored in some cases 2023-03-14 23:47:57 +01:00
Ruben Fiszel
646c0f23da chore(main): release 1.77.0 (#1286)
* chore(main): release 1.77.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-14 22:27:08 +01:00
Ádám Kovács
dea12e8870 fix(frontend): Update setting accordion (#1285)
* fix(frontend): Update setting accordion

* remove empty tooltip

---------

Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-03-14 22:24:23 +01:00
Ryan Rich
944795f6ee feat(deno): add support for custom npm repo (#1291)
* feat(deno): add support for custom npm repo

* feat(deno): add support for custom npm repo

* feat(deno): fix comment being on wrong line

* feat(deno): review feedback
2023-03-14 22:23:44 +01:00
Ruben Fiszel
65d4bc519c add env build configuration 2023-03-14 22:20:45 +01:00
Ruben Fiszel
4d3507aec2 add .env.production to .gitignore 2023-03-14 22:19:08 +01:00
Ruben Fiszel
1d395ccc17 add env build configuration 2023-03-14 22:16:22 +01:00
hcourdent
3a7129de4b Added tooltips to App editor (#1289) 2023-03-14 22:05:34 +01:00
Ruben Fiszel
2f0acb9ffa feat(apps): state can be used as input in apps 2023-03-14 20:44:14 +01:00
Ruben Fiszel
81f989837b improve reactivity of apps 2023-03-14 18:46:31 +01:00
Faton Ramadani
c71a577fea fix(frontend): fix app tabs (#1288) 2023-03-14 16:11:07 +01:00
Faton Ramadani
bc870bd03e fix(frontend): fix container deletion (#1287)
* fix(frontend): fix container deletion

* fix(frontend): fix container deletion
2023-03-14 14:57:44 +01:00
Faton Ramadani
751edcf9b8 feat(frontend): app components output panel (#1283)
* feat(frontend): hierarchical output panel WIP

* feat(frontend): wip

* feat(frontend): working animations

* feat(frontend): working animations

* feat(frontend): wip

* feat(frontend): wip

* feat(frontend): improving connection

* feat(frontend): fix search

* feat(frontend): output panel v2

* feat(frontend): support table actions

* feat(frontend): support table actions

* feat(frontend): support background script

* feat(frontend): fix background scripts

* feat(frontend): simplify code

* feat(frontend): fix animation

* feat(frontend): fix wording

* feat(frontend): fix bg script click

* feat(frontend): fix bg script click

* feat(frontend): fix bg script click
2023-03-14 14:42:40 +01:00
Ruben Fiszel
c2a97c53cf feat(frontend): add setTab to frontend scripts 2023-03-14 14:42:26 +01:00
Ruben Fiszel
eb73f2a687 fix(backend): do not cache reference to workspace scripts 2023-03-14 14:16:07 +01:00
Ruben Fiszel
cd645d0935 feat(apps): tabs can be made pages or invisible + better frontend scripts reactivity 2023-03-14 12:34:08 +01:00
Ruben Fiszel
ac9bd7ef8c fix flow viewer select event 2023-03-14 00:11:37 +01:00
Ruben Fiszel
5dae6577b8 chore(main): release 1.76.0 (#1280)
* chore(main): release 1.76.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-13 23:41:53 +01:00
Ruben Fiszel
372f53b7fe improve refresh and background script behavior 2023-03-13 23:38:14 +01:00
Ruben Fiszel
5662fa0d09 fix compile 2023-03-13 20:59:27 +01:00
Ruben Fiszel
c958480ce8 fix(backend): improve worker ping api 2023-03-13 20:28:11 +01:00
Ruben Fiszel
f0b1b1f752 feat(frontend): add frontend (JS) scripts to apps 2023-03-13 19:29:35 +01:00
Ruben Fiszel
b8e6767cca improve error messages for no workspace 2023-03-13 16:44:38 +01:00
Ruben Fiszel
75f87e7e11 feat(frontend): disabled for action buttons can now depend on row 2023-03-13 14:36:42 +01:00
Ádám Kovács
3e5a179eb8 fix(frontend): General fixes and updates (#1281)
* fix(frontend): App icon select double click issue

* fix(frontend): Update script metadata page

* fix(frontend): Set dropdown default icon to vertical dots

* fix(frontend): Clean up

* fix(frontend): Update table styles

* fix(frontend): Add spacing to secondary menu items

* fix(frontend): Scale down full path

* fix(frontend): Table loading state

* fix(frontend): Hide script kind setting by default
2023-03-13 14:17:57 +01:00
Ruben Fiszel
c082c6350e fix runs reload 2023-03-13 13:00:23 +01:00
Ruben Fiszel
cfd489a550 feat(frontend): improve drag-n-drop behavior 2023-03-13 12:44:39 +01:00
Ruben Fiszel
1f4ae53fb4 integrate svelte-grid in codebase 2023-03-13 10:01:02 +01:00
Ruben Fiszel
0dcbf270da small app fixes 2023-03-12 21:32:41 +01:00
Faton Ramadani
82c139ed09 feat(frontend): Copy, Cut and Paste (#1279)
* feat(frontend): add copy, paste and cut

* feat(frontend): simplify code

* feat(frontend): add apple modifiers

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-03-12 20:58:06 +01:00
Ruben Fiszel
0789bef120 chore(main): release 1.75.0 (#1278)
* chore(main): release 1.75.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-11 20:54:54 +01:00
Ruben Fiszel
1a7dc0a3bd more cli fixes 2023-03-11 20:53:34 +01:00
Ruben Fiszel
ce323709a9 fix(cli): many small fixes 2023-03-11 20:16:56 +01:00
Ruben Fiszel
61a5e1f1ac feat(frontend): make runs filters synced with query args 2023-03-11 17:13:49 +01:00
Ruben Fiszel
3b44f9a72c feat: add filter jobs by args or result 2023-03-11 15:30:46 +01:00
Ruben Fiszel
b349308ff7 handle better linked variables renaming 2023-03-11 11:25:47 +01:00
Ruben Fiszel
f87b722a21 apps improvements 2023-03-10 23:27:55 +01:00
Ruben Fiszel
0e9be7f300 fix for app viewer 2023-03-10 20:26:49 +01:00
Ruben Fiszel
8681e83b57 feat(apps): add resource picker 2023-03-10 20:01:00 +01:00
Ruben Fiszel
bc440f8d41 feat(frontend-apps): add variable picker for static string input on apps 2023-03-10 18:41:27 +01:00
Ruben Fiszel
1d5c194f09 feat(bash): add default argument handling for bash 2023-03-10 15:04:34 +01:00
Ruben Fiszel
7a9d230459 disable playwright for now 2023-03-10 12:54:00 +01:00
Ruben Fiszel
4d5e2499cf cleanup .workflows 2023-03-10 12:48:02 +01:00
Ruben Fiszel
686275fd46 trim tailwindcss 2023-03-10 12:44:08 +01:00
Ruben Fiszel
99399f4f77 fix serde test 2023-03-10 12:19:56 +01:00
Ruben Fiszel
6e09194313 fix compile 2023-03-10 12:12:10 +01:00
Ruben Fiszel
7c825c212d fix(backend): add killpill for lines reading 2023-03-10 12:04:05 +01:00
Ruben Fiszel
480fd781b6 worker ping at least every 5s even when running long jobs 2023-03-10 01:38:12 +01:00
Ruben Fiszel
4f2079f624 trim tailwind safelist 2023-03-10 01:06:55 +01:00
Ruben Fiszel
43c45d930c chore(main): release 1.74.2 (#1277)
* chore(main): release 1.74.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-10 00:55:13 +01:00
Faton Ramadani
8d5c5b88a3 fix(frontend): fix splitpanes navigation (#1276) 2023-03-10 00:32:33 +01:00
Ruben Fiszel
cc8bedd0c7 make frontend configurable through consts.ts 2023-03-09 22:54:25 +01:00
Ruben Fiszel
74c3d6443c chore(main): release 1.74.1 (#1275)
* chore(main): release 1.74.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-09 22:45:53 +01:00
Ruben Fiszel
c7be313210 fix importjson 2023-03-09 22:42:47 +01:00
Ruben Fiszel
ae53bafaf6 fix(apps): proper reactivity for non rendered static components 2023-03-09 22:29:19 +01:00
Ruben Fiszel
2ea15d5035 fix(ci): make windmill compile again by pinning swc deps 2023-03-09 22:20:31 +01:00
Ruben Fiszel
0f187d66dd show backtrace for cook 2023-03-09 21:22:36 +01:00
Ruben Fiszel
6691b19b24 chore(main): release 1.74.0 (#1269)
* chore(main): release 1.74.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-09 19:58:21 +01:00
Ruben Fiszel
2f9ccff65c app nits 2023-03-09 19:56:47 +01:00
Ruben Fiszel
09db6fd867 fix key navigation 2023-03-09 19:41:12 +01:00
Ruben Fiszel
fd52740d5d improve reactivity check for big objects on app 2023-03-09 18:34:36 +01:00
Faton Ramadani
6b0fb75d23 feat(frontend): Add key navigation in app editor (#1273)
* feat(frontend): add expand

* feat(frontend): fix container height

* feat(frontend): remove code duplication

* feat(frontend): add historic

* feat(frontend): add key navigation

* feat(frontend): simplfiy

* feat(frontend): add support for subgrids

* feat(frontend): update key navigation

* feat(frontend): update key navigation

* feat(frontend): fix nested component

* feat(frontend): fix build

* feat(frontend): remove code duplication

* feat(frontend): support tabs

* feat(frontend): support tabs

* feat(frontend): Fix AppTabs + handle tab navigation

* feat(frontend): support splitpanes
2023-03-09 18:23:12 +01:00
Ruben Fiszel
b1a45b1e70 feat(frontend): add hash to ctx in apps 2023-03-09 14:57:43 +01:00
Ruben Fiszel
b2de531a46 fix(frontend): simplify input bindings 2023-03-09 14:25:08 +01:00
Ruben Fiszel
a4adcb5192 fix(frontend): add confirmation modal to delete script/flow/app 2023-03-09 13:19:03 +01:00
Ruben Fiszel
0c2cf92dd3 feat: add delete by path for scripts 2023-03-09 12:44:49 +01:00
Ruben Fiszel
e6344dac6d fix(cli): improve visibility of the active workspace 2023-03-09 11:21:16 +01:00
Ruben Fiszel
8fb2454e83 enforce on_behalf_of by the backend, not frontend 2023-03-09 11:12:28 +01:00
Ádám Kovács
3b6ae0cc49 fix(frontend): Minor changes (#1272)
* fix(frontend): Output seach fixed on top

* fix(frontend): Use undo-redo component in flows
2023-03-09 09:42:51 +01:00
Ruben Fiszel
96ff2eebc1 fix publishing app as a superadmin 2023-03-09 02:08:52 +01:00
Ruben Fiszel
ed29d51c36 fix app json import 2023-03-09 01:16:57 +01:00
Ádám Kovács
88e537ad1f feat(frontend): Add color picker input to app (#1270)
* feat(frontend): Add color picker input to app

* fix(frontend): Add color input to dividers
2023-03-08 22:57:34 +01:00
Faton Ramadani
b854ee3439 feat(frontend): add expand (#1268)
* feat(frontend): add expand

* feat(frontend): fix container height

* feat(frontend): remove code duplication

* feat(frontend): add historic
2023-03-08 22:56:30 +01:00
Ádám Kovács
0a5e181a3a fix(frontend): Clean up app editor (#1267)
* fix(frontend): Clean up app editor

* fix(frontend): Add outputs search empty state

* fix(frontend): Add remove button to icon input

* label

* fix(frontend): Iconed app button
2023-03-08 19:02:19 +01:00
Ruben Fiszel
8cc59225d8 improve resource picker 2023-03-08 19:00:26 +01:00
Ruben Fiszel
9c41346dde fix subtle plotly import bug 2023-03-08 18:27:19 +01:00
Ruben Fiszel
41a398f50e fix frontend build error 2023-03-08 16:59:14 +01:00
Ruben Fiszel
3436061ad4 make windmill compatible with arm64 2023-03-08 16:55:00 +01:00
Ruben Fiszel
569b5d2516 improve rendering performances for non visible elements 2023-03-08 16:39:16 +01:00
Ruben Fiszel
a08cdd7b86 chore(main): release 1.73.1 (#1266)
* chore(main): release 1.73.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-08 00:41:42 +01:00
Ruben Fiszel
719d475262 fix(frontend): load flow is not initialized 2023-03-08 00:37:58 +01:00
Ruben Fiszel
5b3e1183e5 revert import on tailwind colors for faster builds 2023-03-08 00:20:12 +01:00
Ruben Fiszel
7ed301b186 chore(main): release 1.73.0 (#1257)
* chore(main): release 1.73.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-07 22:35:56 +01:00
Ruben Fiszel
46b6e4371b improve undo/redo + keybindings 2023-03-07 21:16:15 +01:00
Ruben Fiszel
e0d3465b07 fix z-stacking on chrome for flow builder 2023-03-07 19:27:35 +01:00
Ruben Fiszel
7f8fe8dc17 fix z-stacking on chrome for flow builder 2023-03-07 19:23:41 +01:00
Faton Ramadani
24f58efd99 feat(frontend): add a way to automatically resize (#1259)
* feat(frontend): add a way to automatically resize (wip) + add automatic resizable component

* feat(frontend): fix text resize

* feat(frontend): remvove useless softWrap

* feat(frontend): remove useless softWrap

* feat(frontend): Fix recomputeIds + app table

* feat(frontend): Fix app preview error display
2023-03-07 16:53:29 +01:00
Ruben Fiszel
67d8009dcf fix multiple app nits 2023-03-07 15:51:02 +01:00
Ruben Fiszel
95ccc9edf8 fix z-index for flowbuilder 2023-03-07 14:57:51 +01:00
Ruben Fiszel
9e4d90ad37 feat(frontend): add history to flows and apps 2023-03-07 14:47:17 +01:00
Ádám Kovács
c638897fdc fix(frontend): Side menu z-index issue (#1265) 2023-03-07 09:53:19 +01:00
Ruben Fiszel
71305e5154 show archived + fix graphs 2023-03-07 01:59:35 +01:00
Ruben Fiszel
9e9f8efb8e feat(frontend): add fork/save buttons + consistent styling for slider/range 2023-03-06 22:35:25 +01:00
Ádám Kovács
3e5d09ef0b feat(frontend): Add app PDF viewer (#1254)
* feat(frontend): Add app PDF viewer (wip)

* fix(frontend): Handle file upload

* fix(frontend): Handle multi page pdf

* feat(frontend): Add pdf page numbering

* feat(frontend): Add more pdf viewer controls

* save

* fix(frontend): Pdf loading

* fix(frontend): Resize PDF in small window

* fix(frontend): Minor fixes

* feat(frontend): Add pdf zoom configuration

* fix wip

* save

* bg color

* save progress

* pdf scaling

* feat(frontend): fix zoom synchro

* fix(frontend): Pdf scroll tracking

* fix(frontend): Double scrollbar

* nits

* fixes

---------

Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-03-06 20:17:36 +01:00
Ruben Fiszel
614fb5022a feat(frontend): add ability to move nodes 2023-03-06 18:41:20 +01:00
Ruben Fiszel
0beadfd1ac fix z-index of inputransformform 2023-03-06 16:04:32 +01:00
Ruben Fiszel
25580c1272 add trigger button 2023-03-06 14:11:17 +01:00
Faton Ramadani
2557e136bd fix(frontend): fix app map reactivity (#1260) 2023-03-06 11:26:00 +01:00
Ruben Fiszel
200cb69d82 make default branch non removable for branchone 2023-03-06 11:19:56 +01:00
Ruben Fiszel
9ee261fe1a Update docker-compose.yml 2023-03-06 10:39:00 +01:00
Ruben Fiszel
8e563a42f5 Update docker-compose.yml with oauth example 2023-03-06 10:38:01 +01:00
Faton Ramadani
a999eb2112 fix(frontend): fix branch deletion (#1261)
* fix(frontend): fix branch deletion

* fix(frontend): fix branch deletion

* fix(frontend): fix branch deletion
2023-03-06 09:01:19 +01:00
Ruben Fiszel
e5dbe7076c handle larger sized graphs 2023-03-06 08:33:53 +01:00
Ruben Fiszel
2ac51b0af0 feat(frontend): refactor entire flow builder UX 2023-03-05 23:00:43 +01:00
Ruben Fiszel
f3232062c3 make tailwind inputs class configurable 2023-03-03 22:32:35 +01:00
Ruben Fiszel
b11a5a2df6 only bind the staticoutputs of the first row 2023-03-03 18:00:09 +01:00
Ruben Fiszel
e2c4545240 fix(frontend): arginput + apppreview fixes 2023-03-03 17:34:08 +01:00
Faton Ramadani
70dd6f759c App small fixes (#1258)
* fix(frontend): Fix runnable editor

* fix(frontend): remove isopenstore

* fix(frontend): add output searchbar

* fix(frontend): fix build

* fix(frontend): add missing clear button
2023-03-03 15:15:29 +01:00
Ruben Fiszel
dcfb29fb80 fix sqlx offline 2023-03-03 13:04:24 +01:00
Faton Ramadani
94f1aadef2 feat(frontend): Fix object viewer style (#1255)
Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-03-03 12:47:55 +01:00
Ruben Fiszel
58300eb6ac introduce root_job and leaf_jobs for efficient result_by_id 2023-03-03 12:44:44 +01:00
Ashutosh Narang
304dea4b74 update build instructions (#1256) 2023-03-03 11:19:12 +01:00
Ruben Fiszel
f4fe71e074 chore(main): release 1.72.0 (#1250)
* chore(main): release 1.72.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-03-03 11:12:18 +01:00
Ruben Fiszel
fd4e18f62f fix minSize for app splitpanes to 20 2023-03-03 01:08:20 +01:00
Ruben Fiszel
e428662481 feat(frontend): add creatable select 2023-03-03 01:06:36 +01:00
Ruben Fiszel
b796aeef7a calculate all previous ids inside flows 2023-03-02 20:54:44 +01:00
Ruben Fiszel
55eb48c553 fix(frontend): background script not showing inputs 2023-03-02 17:54:05 +01:00
Ruben Fiszel
a43139fe53 flow improvements 2023-03-02 17:37:51 +01:00
Ruben Fiszel
c4463bb029 fix(backend): improve result retrieval 2023-03-02 16:33:24 +01:00
Ruben Fiszel
cc6eaaf473 fix tailwind JIT for devmode + graph fixes 2023-03-02 14:49:36 +01:00
Ádám Kovács
ed25d9f186 feat(frontend): Add app map component (#1251)
* feat(frontend): Add app map component (wip)

* fix(frontend): Revert

* feat(frontend): sync map configuration (#1252)

* fix(frontend): Map markers

* fix(frontend): Switching between input types

* fix(frontend): Customize map controls

* feat(frontend): Fix output + add set region button

* feat(frontend): Fix output + add set region button

* feat(frontend): Fix output + add set region button

* feat(frontend): Only display set region button on edit mode

---------

Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-03-02 14:25:30 +01:00
Ruben Fiszel
35ea2b27b1 fix(cli): fix workspace option + run script/flow + whoami 2023-03-02 13:21:50 +01:00
Ruben Fiszel
2c1e3b3372 UX nits 2023-03-02 12:08:20 +01:00
Ruben Fiszel
4101d587de remove slide causing issues 2023-03-02 11:59:10 +01:00
Ruben Fiszel
e6ff3ab6cc remove slide causing issues 2023-03-02 11:49:57 +01:00
Ruben Fiszel
8fc6c39129 remove bg-gray-50 from viewed apps 2023-03-02 11:06:11 +01:00
Ruben Fiszel
fcb5cf4d41 revert caddyfileremote target change 2023-03-02 10:39:01 +01:00
Ruben Fiszel
2679386bf8 fix(frontend): fix table bindings 2023-03-02 09:54:30 +01:00
Ryan Rich
580388ce19 Add support for binding server listener to a specific IP address (#1253) 2023-03-02 08:01:50 +01:00
Ruben Fiszel
4e6e66d7b1 fix splitpanes 2023-03-02 02:31:39 +01:00
Faton Ramadani
f4d79ee263 feat(frontend): app splitpanes (#1248)
* feat(frontend): app splitpanes

* feat(frontend): app splitpanes vertical

* feat(frontend): support both splitpanes

* done

* done

* default select value

* container height

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-03-02 01:30:07 +01:00
Ruben Fiszel
38fb3450c8 fix apps tabs + make inputvalue more resilient 2023-03-01 22:15:25 +01:00
Ruben Fiszel
94b20d2f5e fix(frontend): rework app reactivity 2023-03-01 21:33:23 +01:00
Ruben Fiszel
1753cb7da6 fix(frontend): rework app reactivity 2023-03-01 20:01:59 +01:00
Ruben Fiszel
2a75cd250e fix(backend): incorrect get_result_by_id for list_result job 2023-03-01 12:43:00 +01:00
Ruben Fiszel
29f3fe2663 update sqlx-data.json 2023-03-01 12:01:22 +01:00
Ruben Fiszel
4c913dc4b6 feat(backend): get_result_by_id do a downward pass to find node at any depth (#1249)
* downwardRec

* downwardRec

* any node

* any node

* any node
2023-03-01 11:33:48 +01:00
Ruben Fiszel
5c40ff4290 Update LICENSE 2023-03-01 09:53:26 +01:00
Ruben Fiszel
2bbe112444 handle more undefined cases in app 2023-03-01 08:46:20 +01:00
Ruben Fiszel
90a12f6131 drawer focus 2023-03-01 01:21:32 +01:00
Ruben Fiszel
f3f95fa865 active grid border-dashed for apps 2023-03-01 01:18:10 +01:00
Ruben Fiszel
26784464a4 revert pips change 2023-02-28 22:53:44 +01:00
Ruben Fiszel
c96e2351d9 chore(main): release 1.71.0 (#1242)
* chore(main): release 1.71.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-28 22:51:57 +01:00
Ruben Fiszel
ddb4916a2e fix app fields 2023-02-28 22:41:21 +01:00
Ádám Kovács
1bb5ed9ae0 fix(frontend): Add more app custom css (#1247)
* fix(frontend): Add number input custom css

* fix(frontend): Add currency input custom css

* fix(frontend): Add slider custom css

* fix(frontend): Add range custom css

* fix(frontend): Add password input custom css

* fix(frontend): Add date input custom css

* fix(frontend): Add tabs custom css

* fix(frontend): Minor stylings

* fix(frontend): Add icon custom css

* fix(frontend): Add dividers custom css

* fix(frontend): Add file input custom css

* fix(frontend): Add image custom css
2023-02-28 21:05:58 +01:00
Ruben Fiszel
b5b32f00b3 fix overflow-y on debug runs 2023-02-28 19:54:20 +01:00
Ruben Fiszel
c06311faf8 add workspace_add events 2023-02-28 19:41:01 +01:00
Ruben Fiszel
8a639b6e7d select input fix 2023-02-28 19:28:36 +01:00
Ruben Fiszel
05f568fb8c display startup info in all cases 2023-02-28 17:52:47 +01:00
Ruben Fiszel
e515c70e71 fix incorrect user sttings redirect 2023-02-28 16:57:00 +01:00
Ruben Fiszel
6adc875610 feat(frontend): drawer for editing workspace scripts in flows 2023-02-28 15:51:56 +01:00
Faton Ramadani
8a0d1158c4 feat(frontend): App drawer (#1246)
* feat(frontend): app drawer

* feat(frontend): app drawer

* feat(frontend): app drawer

* feat(frontend): app drawer wip

* feat(frontend): drawer wip

* feat(frontend): drawer wip

* feat(frontend): app missing prop

* feat(frontend): revert drawer changes

* feat(frontend): highlight subgrid
2023-02-28 15:49:57 +01:00
Ruben Fiszel
ea2ebfa92e fix compile issue 2023-02-28 11:18:09 +01:00
dependabot[bot]
ba856be10d chore(deps): bump docker/metadata-action from 3 to 4 (#1243)
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 3 to 4.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/metadata-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-28 11:02:14 +01:00
dependabot[bot]
333b873ee9 chore(deps): bump docker/build-push-action from 3 to 4 (#1186)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3 to 4.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-28 11:02:00 +01:00
dependabot[bot]
2785b05064 chore(deps-dev): bump @playwright/test in /frontend (#1244)
Bumps [@playwright/test](https://github.com/Microsoft/playwright) from 1.29.2 to 1.31.1.
- [Release notes](https://github.com/Microsoft/playwright/releases)
- [Commits](https://github.com/Microsoft/playwright/compare/v1.29.2...v1.31.1)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-28 11:01:33 +01:00
Faton Ramadani
a67f10eeb6 fix(frontend): Fix deeply nested move (#1245)
* fix(frontend): Fix deeply nested move

* fix(frontend): update comment
2023-02-28 10:53:51 +01:00
Ruben Fiszel
287b2db22f feat(cli): add autocompletions 2023-02-28 10:32:34 +01:00
Ádám Kovács
a4e4d188ad fix(frontend): Add more app custom css (#1229)
* fix(frontend): Add container custom css

* fix(frontend): Add form custom css

* fix(frontend): Add form button custom css

* feat(frontend): Add css quick reset button

* feat(frontend): Filter component css by usage

* fix(frontend): Save state of unused component display

* fix(frontend): Add pie chart custom css

* fix(frontend): Add bar chart custom css

* fix(frontend): Update vega lite and plotly loading

* fix(frontend): Add html and timeseries custom css

* fix(frontend): Add scatter chart custom css

* fix(frontend): Add table custom css

* fix(frontend): Revert container custom styles

* fix(frontend): Add toggle custom css

* fix(frontend): Add text input custom css

* fix(frontend): Update

* fix(frontend): Remove undefined css customizations
2023-02-28 09:21:56 +01:00
Ruben Fiszel
2244e83b9d fix(frontend): invisible subgrids have h-0 + app policies fix 2023-02-27 18:38:22 +01:00
Ruben Fiszel
42d1cd6456 fix(frontend): display currently selected filter even if not in list 2023-02-27 16:20:31 +01:00
Ruben Fiszel
4b64e75bd1 add back all tailwind colors to tailwind config 2023-02-27 15:11:23 +01:00
Ruben Fiszel
51a7eaaeb0 rename counters 2023-02-27 14:52:24 +01:00
Ruben Fiszel
8589b70ccf apps improvements 2023-02-27 14:37:32 +01:00
Ruben Fiszel
0bf6f23c9e fix setup app to use updated version of the CLI 2023-02-27 14:16:57 +01:00
Ruben Fiszel
e56869092a feat(backend): use counter for sleep/execution/pull durations 2023-02-27 12:00:32 +01:00
Ruben Fiszel
6b8758f4a5 chore(main): release 1.70.1 (#1241) 2023-02-27 10:30:41 +01:00
Ruben Fiszel
fbc929ba1b chore(main): release 1.70.1 (#1239)
* chore(main): release 1.70.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-27 10:07:26 +01:00
Faton Ramadani
97602ac6db fix(frontend): Fix inline scripts list (#1240) 2023-02-27 10:06:42 +01:00
Faton Ramadani
8ee9d67f4f fix(frontend): Fix subgrid lock (#1232)
* fix(frontend): Fix subgrid lock

* feat(frontend): restore
2023-02-27 10:00:18 +01:00
Ruben Fiszel
4bf6e753f1 fix findGridItemById 2023-02-27 09:56:17 +01:00
Faton Ramadani
70eab303bd fix(frontend): Disable move in nested subgrid (#1238)
* fix(frontend): Disable move in nested subgrid

* fix(frontend): Disable move in nested subgrid
2023-02-27 09:50:39 +01:00
Ruben Fiszel
c051ffeb42 fix(cli): make cli resilient to systems without openable browsers 2023-02-27 09:48:52 +01:00
Ruben Fiszel
ebb68e5320 chore(main): release 1.70.0 (#1236)
* chore(main): release 1.70.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-27 09:25:03 +01:00
Ruben Fiszel
04a076f1db fix(cli): bump cli to non broken client 1.69.3 2023-02-27 09:24:18 +01:00
Ruben Fiszel
ebd2e0323e fix stripe checkout 2023-02-27 08:49:36 +01:00
Ruben Fiszel
cd25570003 fix minor editor bugs 2023-02-27 00:53:49 +01:00
Ruben Fiszel
e95f8ef6bf add none color for buttons 2023-02-27 00:27:20 +01:00
Ruben Fiszel
c3d1c8ac39 fix many apps bugs 2023-02-26 23:43:00 +01:00
Ruben Fiszel
d38aff2fe2 fix: app setup and sync now uses 1.69.3 2023-02-26 14:09:16 +01:00
Ruben Fiszel
95851ea486 minor app nits 2023-02-26 13:58:51 +01:00
Ruben Fiszel
b690d801d4 feat(apps): add ag grid 2023-02-25 13:11:50 +01:00
Faton Ramadani
104e4ac5e7 feat(frontend): move to other grid (#1230)
* feat(frontend): move to other grid

* feat(frontend): wip

* feat(frontend): Fix component move

* fix(frontend): Fix build

* feat(frontend): Fix moving

* fix(frontend): Simplify code
2023-02-25 11:31:12 +01:00
Faton Ramadani
e87f4fc44b fix(frontend): Fix duplication (#1237) 2023-02-25 10:18:21 +01:00
Ruben Fiszel
e1f686d850 fix(frontend): fix graph viewer id assignment 2023-02-25 08:48:24 +01:00
Ruben Fiszel
7da7dac3ac chore(main): release 1.69.3 (#1234) 2023-02-24 21:11:58 +01:00
Ruben Fiszel
c2e5afd4e0 fix(deno): fix denoify buffer handling 2023-02-24 21:09:37 +01:00
Ruben Fiszel
ad9c386f41 making slider/range values connectable 2023-02-24 20:50:01 +01:00
Ruben Fiszel
a4e3f98b7d chore(main): release 1.69.2 (#1233)
* chore(main): release 1.69.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-24 19:57:50 +01:00
Ruben Fiszel
dd28308c3c fix(app): fix all nested behavior 2023-02-24 19:52:20 +01:00
Ruben Fiszel
833c2655ea push 2023-02-24 19:52:20 +01:00
Faton Ramadani
a8295d0b5a fix(frontend): Fix findGridItem 2023-02-24 19:52:20 +01:00
Ruben Fiszel
897e2f6b53 flatten 2023-02-24 19:52:20 +01:00
Faton Ramadani
5bb77edf45 fix(frontend): Fix findGridItem 2023-02-24 19:52:20 +01:00
Faton Ramadani
8ddcf4d9c1 fix(frontend): Fix next id 2023-02-24 19:52:20 +01:00
Faton Ramadani
33ebe2da8e fix(frontend): wip 2023-02-24 19:52:20 +01:00
Ruben Fiszel
b3ee747014 pushed 2023-02-24 19:52:20 +01:00
Faton Ramadani
fa105b4cae fix(frontend): gridtab 2023-02-24 19:52:20 +01:00
Faton Ramadani
483407cdf0 fix(frontend): duplicate 2023-02-24 19:52:20 +01:00
Faton Ramadani
008c30fcaa fix(frontend): delete grid item 2023-02-24 19:52:20 +01:00
Ruben Fiszel
3387bb0d83 script editor panel 2023-02-24 19:52:20 +01:00
Ruben Fiszel
e08e7e4ae6 settings panel 2023-02-24 19:52:20 +01:00
Faton Ramadani
ea1b2c29b9 fix(frontend): rewrote utils 2023-02-24 19:52:20 +01:00
Ruben Fiszel
4ad6fbefd3 flatten 2023-02-24 19:52:20 +01:00
Ruben Fiszel
397ecd64d4 chore(main): release 1.69.1 (#1231)
* chore(main): release 1.69.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-24 17:26:53 +01:00
Ruben Fiszel
dd7e8c742c fix(deno): remove mysql support waiting for deno fix 2023-02-24 17:19:13 +01:00
Ruben Fiszel
2f78132e08 fix(deno): remove mysql support waiting for deno fix 2023-02-24 17:11:53 +01:00
Ruben Fiszel
0041411c06 subgrids editor panel iter 1 2023-02-24 14:48:28 +01:00
Ruben Fiszel
54955b710c fix subgrids final2 2023-02-24 13:11:06 +01:00
Ruben Fiszel
1eb5a0d1d3 fix subgrids final 2023-02-24 11:59:28 +01:00
Ruben Fiszel
ddda14c52b app fixes 2023-02-24 11:39:50 +01:00
Ruben Fiszel
5123c9365c fix subgrids final 2023-02-24 07:27:22 +01:00
Ruben Fiszel
834e7b1d1c todo: improve deleting tab 2023-02-24 01:04:26 +01:00
Ruben Fiszel
6e9a5b026e tab rework v2 2023-02-23 23:39:57 +01:00
Ruben Fiszel
7ad8879b09 fix binding 2023-02-23 22:14:23 +01:00
Ruben Fiszel
27cac3ffe6 fix(frontend): containers and tab fixes v1 2023-02-23 21:42:21 +01:00
Ruben Fiszel
705703a5e2 fix(frontend): containers and tab fixes v1 2023-02-23 21:01:47 +01:00
Ruben Fiszel
fac31c6628 fix(frontend): containers and tab fixes v1 2023-02-23 19:59:23 +01:00
Ruben Fiszel
90c0e140a1 chore(main): release 1.69.0 (#1226)
* chore(main): release 1.69.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-23 18:07:56 +01:00
Ruben Fiszel
d543650b31 fix(cli): .wmillignore whitelist behavior 2023-02-23 18:02:42 +01:00
Faton Ramadani
089a6b6ae5 feat(frontend): Duplicate component (#1228)
* feat(frontend): Duplicate component

* feat(frontend): add missing types
2023-02-23 17:43:27 +01:00
Faton Ramadani
857ee5f318 feat(frontend): Properly delete tab content (#1227) 2023-02-23 16:02:15 +01:00
Faton Ramadani
6ad876ebb4 feat(frontend): Support deeply nested components (#1225) 2023-02-23 15:33:14 +01:00
Ádám Kovács
ab4137640e refactor(frontend): Reorganise app components (#1224)
* refactor(frontend): Reorganise app components

* refactor(frontend): Restructure app component
2023-02-23 14:15:45 +01:00
Ruben Fiszel
2bd8fabcf7 chore(main): release 1.68.0 (#1223)
* chore(main): release 1.68.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-23 13:42:42 +01:00
Ruben Fiszel
3b7160e84a fix(cli): better ergonomics around workspaces 2023-02-23 13:31:08 +01:00
Ruben Fiszel
40c12e6139 fix(cli): better ergonomics around workspace add 2023-02-23 13:19:14 +01:00
Ádám Kovács
6044e3b6ef feat(frontend): Add more app component CSS customisation (#1218)
* fix(frontend): Update app style editor

* fix(frontend): Update component custom css typings

* fix(frontend): Generalise custom CSS inputs

* feat(frontend): Add display CSS customization
2023-02-23 11:42:32 +01:00
Ruben Fiszel
18ff5c7cef chore(main): release 1.67.4 (#1222)
* chore(main): release 1.67.4

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-23 09:06:34 +01:00
Ruben Fiszel
e54dc3ff97 fix(backend): workflow check for has_failure_module 2023-02-23 09:01:02 +01:00
Ruben Fiszel
4d5aae69c8 chore(main): release 1.67.3 (#1221)
* chore(main): release 1.67.3

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-23 08:34:22 +01:00
Ruben Fiszel
ec57c5977f fix(cli): ignone non wmill looking files 2023-02-23 08:26:22 +01:00
Ruben Fiszel
df1b724626 do not create default variables on workspace creation 2023-02-23 08:07:35 +01:00
Ruben Fiszel
268dfbf831 chore(main): release 1.67.2 (#1220)
* chore(main): release 1.67.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-23 08:00:15 +01:00
Ruben Fiszel
969e89f8bb fix(cli): ignone non wmill looking files 2023-02-23 07:40:04 +01:00
Ruben Fiszel
5997503961 chore(main): release 1.67.1 (#1219) 2023-02-22 23:47:37 +01:00
Ruben Fiszel
3fa24adad0 fix(cli): coloring nits 2023-02-22 23:46:08 +01:00
Ruben Fiszel
7471be1d81 update rustpython parser 2023-02-22 23:43:06 +01:00
Ruben Fiszel
d64e1c116a nits on cli output 2023-02-22 23:28:50 +01:00
Ruben Fiszel
9267b1fb90 nits on webhook sync 2023-02-22 22:44:19 +01:00
Ruben Fiszel
6528a68668 chore(main): release 1.67.0 (#1216)
* chore(main): release 1.67.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-02-22 22:39:14 +01:00
Ruben Fiszel
4fd4d17a0d update README 2023-02-22 21:49:13 +01:00
Ruben Fiszel
0548803ab7 fix flow rendering 2023-02-22 21:27:58 +01:00
Ruben Fiszel
0085b46c1e fix(cli): add --fail-conflicts to ci push 2023-02-22 21:00:48 +01:00
Kai Jellinghaus
81ffd49bef Remove Stripe (#1217) 2023-02-22 19:15:10 +01:00
Faton Ramadani
dbc59e9521 feat(frontend): Add app sub grids (#1208)
* feat(frontend): Add app sub grids

* feat(frontend): remove temp file

* feat(frontend): update package.json

* feat(frontend): fix build

* fixes

* feat(frontend): wip

* feat(frontend): wip

* feat(frontend): update dependencies

* feat(frontend): update dependencies

* feat(frontend): fix scrolling issues

* feat(frontend): fix preview + delete

* feat(frontend): done

* feat(frontend): remove dead code

* feat(frontend): fix selection

* feat(frontend): add container

* feat(frontend): fix package.json

* feat(frontend): fix package.json

* feat(frontend): fix package.json

* feat(frontend): fix package.json

* feat(frontend): fix package.json

* feat(frontend): restore npm package

* feat(frontend): add missing dependencies

* feat(frontend): remove missing dependencies

* feat(frontend): fix package.json

* feat(frontend): fix package.json

* feat(frontend): fix package.json

* feat(frontend): revert

* feat(frontend): fix package-lock

* feat(frontend): fix package-lock

* fix package-lock.json

* update

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-02-22 17:52:10 +01:00
812 changed files with 321650 additions and 29142 deletions

View File

@@ -29,7 +29,6 @@ FROM mcr.microsoft.com/vscode/devcontainers/rust:bullseye
RUN apt update \
&& apt-get install -y \
lld \
python3 \
libprotobuf-dev \
libnl-route-3-dev \

9
.env
View File

@@ -1,2 +1,9 @@
DB_PASSWORD=changeme
WM_BASE_URL=localhost
# this is the url that your instance is publicly exposed to
WM_BASE_URL=http://localhost
# To use another port than :80, setup the Caddyfile and the caddy section of the docker-compose to your needs: https://caddyserver.com/docs/getting-started
# License key for enterprise edition
# WM_LICENSE_KEY="<id>.<expiry>.<signature>"

View File

@@ -26,7 +26,7 @@ RUN apt-get update && apt-get install -y git libssl-dev pkg-config
RUN apt-get -y update \
&& apt-get install -y \
curl lld
curl
ENV SQLX_OFFLINE=true

View File

@@ -4,7 +4,7 @@ VERSION=$1
echo "Updating versions to: $VERSION"
sed -i -e "/^version =/s/= .*/= \"$VERSION\"/" backend/Cargo.toml
sed -i -e "/^const VERSION =/s/= .*/= \"v$VERSION\";/" cli/main.ts
sed -i -e "/^export const VERSION =/s/= .*/= \"v$VERSION\";/" cli/main.ts
sed -i -e "/version: /s/: .*/: $VERSION/" backend/windmill-api/openapi.yaml
sed -i -e "/version: /s/: .*/: $VERSION/" openflow.openapi.yaml
sed -i -e "/\"version\": /s/: .*,/: \"$VERSION\",/" frontend/package.json

View File

@@ -1,5 +0,0 @@
localhost {
bind 0.0.0.0
reverse_proxy /ws/* http://0.0.0.0:3001
reverse_proxy /* http://0.0.0.0:8000
}

View File

@@ -1,53 +0,0 @@
version: '3.7'
x-uffizzi:
ingress:
service: windmill
port: 8000
services:
db:
image: postgres:14
environment:
POSTGRES_PASSWORD: changeme
POSTGRES_DB: windmill
windmill:
image: '${WINDMILL_IMAGE}'
ports:
- 8000:8000
entrypoint: ['/bin/sh', '-c']
command: 'echo ${OAUTH_JSON_BASE64} | base64 --decode > /usr/src/app/oauth.json && ./windmill'
environment:
- DATABASE_URL=postgres://postgres:changeme@localhost/windmill?sslmode=disable
- BASE_URL=${EXPECTED_URL}
- BASE_INTERNAL_URL=http://localhost:8000
- RUST_LOG=info
- NUM_WORKERS=3
- KEEP_JOB_DIR=false
- DENO_PATH=/usr/bin/deno
- PYTHON_PATH=/usr/local/bin/python3
- METRICS_ADDR=false
- OAUTH_JSON_BASE64=${OAUTH_JSON_BASE64}
volumes:
- worker_dependency_cache:/tmp/windmill/cache
deploy:
resources:
limits:
memory: 250M
lsp:
image: '${LSP_IMAGE}'
ports:
- 3001:3001
# caddy:
# image: caddy:2.5.2-alpine
# restart: unless-stopped
# volumes:
# - ./.github/uffizzi/caddy:/etc/caddy
# environment:
# - BASE_URL=localhost
volumes:
worker_dependency_cache:

View File

@@ -13,7 +13,7 @@ jobs:
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v1.3.6
uses: dependabot/fetch-metadata@v1.5.0
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"
- name: Enable auto-merge for Dependabot PRs

View File

@@ -40,4 +40,4 @@ jobs:
backend -> target
- name: cargo test
timeout-minutes: 10
run: mkdir frontend/build && cd backend && touch windmill-api/openapi-deref.yaml && DATABASE_URL=postgres://postgres:changeme@postgres:5432/windmill DISABLE_NSJAIL=false cargo test --all -- --nocapture
run: mkdir frontend/build && cd backend && touch windmill-api/openapi-deref.yaml && DATABASE_URL=postgres://postgres:changeme@postgres:5432/windmill cargo test --all -- --nocapture

79
.github/workflows/build_ws.yml vendored Normal file
View File

@@ -0,0 +1,79 @@
env:
REGISTRY: ghcr.io
ECR_REGISTRY: 976079455550.dkr.ecr.us-east-1.amazonaws.com
IMAGE_NAME: ${{ github.repository }}-multiplayer
name: Publish websocket multiplayer server
on:
workflow_dispatch:
permissions:
contents: read
id-token: write
packages: write
jobs:
publish_multiplayer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: depot/setup-action@v1
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Login to registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push publicly
uses: depot/build-push-action@v1
with:
context: .
file: ./docker/DockerfileMultiplayer
platforms: linux/amd64,linux/arm64
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
${{ steps.meta.outputs.tags }}
labels: |
${{ steps.meta.outputs.labels }}
org.opencontainers.image.licenses=AGPLv3
publish_privately:
needs: [publish_multiplayer]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to ECR
uses: docker/login-action@v2
with:
registry: ${{ env.ECR_REGISTRY }}
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Push image to ECR
run: |
docker buildx imagetools create \
--tag ${{ env.ECR_REGISTRY }}/${{ env.IMAGE_NAME }}:latest \
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest

View File

@@ -1,20 +0,0 @@
name: Deploy to windmill.dev
on:
push:
branches: [main]
paths:
- "community/**"
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy to windmill.dev
uses: windmill-labs/windmill-gh-action-deploy@v2.0.0
with:
dry_run: false
input_dir: community
windmill_workspace: starter
windmill_token: ${{ secrets.WINDMILL_API_TOKEN }}

View File

@@ -18,10 +18,10 @@ permissions:
contents: read
id-token: write
packages: write
jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
@@ -50,7 +50,6 @@ jobs:
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
- name: Build and push publicly
uses: depot/build-push-action@v1
with:
@@ -63,9 +62,9 @@ jobs:
labels: |
${{ steps.meta-public.outputs.labels }}
org.opencontainers.image.licenses=AGPLv3
build_ee:
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
@@ -109,40 +108,61 @@ jobs:
${{ steps.meta-ee-public.outputs.labels }}
org.opencontainers.image.licenses=Windmill-Enterprise-License
# disabled until we make it 100% reliable and add more meaningful tests
# playwright:
# runs-on: [self-hosted, new]
# needs: [build]
# services:
# postgres:
# image: postgres
# env:
# POSTGRES_DB: windmill
# POSTGRES_USER: admin
# POSTGRES_PASSWORD: changeme
# ports:
# - 5432:5432
# options: >-
# --health-cmd pg_isready
# --health-interval 10s
# --health-timeout 5s
# --health-retries 5
# steps:
# - uses: actions/checkout@v3
# - name: "Docker"
# run: echo "::set-output name=id::$(docker run --network=host --rm -d -p 8000:8000 --privileged -it -e DATABASE_URL=postgres://admin:changeme@localhost:5432/windmill -e BASE_INTERNAL_URL=http://localhost:8000 ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest)"
# id: docker-container
# - uses: actions/setup-node@v3
# with:
# node-version: 16
# - name: "Playwright run"
# timeout-minutes: 2
# run: cd frontend && npm ci @playwright/test && npx playwright install && export BASE_URL=http://localhost:8000 && npm run test
# - name: "Clean up"
# run: docker kill ${{ steps.docker-container.outputs.id }}
# if: always()
playwright:
runs-on: [self-hosted, new]
needs: [build]
services:
postgres:
image: postgres
env:
POSTGRES_DB: windmill
POSTGRES_USER: admin
POSTGRES_PASSWORD: changeme
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
deploy_s3:
needs: [build_ee]
runs-on: ubuntu-latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
steps:
- uses: actions/checkout@v3
- name: "Docker"
run: echo "::set-output name=id::$(docker run --network=host --rm -d -p 8000:8000 --privileged -it -e DATABASE_URL=postgres://admin:changeme@localhost:5432/windmill -e BASE_INTERNAL_URL=http://localhost:8000 ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest)"
id: docker-container
- uses: actions/setup-node@v3
with:
node-version: 16
- name: "Playwright run"
timeout-minutes: 2
run: cd frontend && npm ci @playwright/test && npx playwright install && export BASE_URL=http://localhost:8000 && npm run test
- name: "Clean up"
run: docker kill ${{ steps.docker-container.outputs.id }}
if: always()
node-version: 18
- uses: shrink/actions-docker-extract@v2
id: extract
with:
image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-ee:latest
path: "/static_frontend/."
- uses: reggionick/s3-deploy@v3
with:
folder: ${{ steps.extract.outputs.destination }}
bucket: windmill-frontend
bucket-region: us-east-1
publish_privately_heavy:
needs: [build_ee]
runs-on: [self-hosted, new]
@@ -182,7 +202,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push privately
uses: docker/build-push-action@v3
uses: docker/build-push-action@v4
if: github.event_name != 'pull_request'
with:
context: .
@@ -191,8 +211,12 @@ jobs:
tags: |
${{ steps.meta-heavy.outputs.tags }}
labels: ${{ steps.meta-heavy.outputs.labels }}
cache-from: type=registry,ref=${{ env.LOCAL_REGISTRY }}/${{ env.IMAGE_NAME }}-heavy:buildcache
cache-to: type=registry,ref=${{ env.LOCAL_REGISTRY }}/${{ env.IMAGE_NAME }}-heavy:buildcache,mode=max
cache-from:
type=registry,ref=${{ env.LOCAL_REGISTRY }}/${{ env.IMAGE_NAME
}}-heavy:buildcache
cache-to:
type=registry,ref=${{ env.LOCAL_REGISTRY }}/${{ env.IMAGE_NAME
}}-heavy:buildcache,mode=max
publish_privately_helm:
runs-on: [self-hosted, new]
@@ -204,7 +228,6 @@ jobs:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to registry
uses: docker/login-action@v2
@@ -220,9 +243,9 @@ jobs:
registry: ${{ env.ECR_REGISTRY }}
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Build and push privately
uses: docker/build-push-action@v3
uses: docker/build-push-action@v4
if: github.event_name != 'pull_request'
with:
context: .
@@ -230,5 +253,9 @@ jobs:
file: ./docker/DockerfileHelm
tags: |
${{ env.ECR_REGISTRY }}/${{ env.IMAGE_NAME }}:helm
cache-from: type=registry,ref=${{ env.LOCAL_REGISTRY }}/${{ env.IMAGE_NAME }}-helm:buildcache
cache-to: type=registry,ref=${{ env.LOCAL_REGISTRY }}/${{ env.IMAGE_NAME }}-helm:buildcache,mode=max
cache-from:
type=registry,ref=${{ env.LOCAL_REGISTRY }}/${{ env.IMAGE_NAME
}}-helm:buildcache
cache-to:
type=registry,ref=${{ env.LOCAL_REGISTRY }}/${{ env.IMAGE_NAME
}}-helm:buildcache,mode=max

View File

@@ -4,6 +4,8 @@ on:
types: [opened,synchronize,reopened,closed]
paths:
- "frontend/**"
merge_group:
jobs:
npm_check:
runs-on: ubuntu-latest

View File

@@ -13,7 +13,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-go@v3
- uses: actions/setup-go@v4
- name: generate_go
run: |
go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.11.0

View File

@@ -10,9 +10,15 @@ on:
- "v*"
workflow_dispatch:
permissions:
contents: read
id-token: write
packages: write
jobs:
publish_pypi:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
container:
image: ghcr.io/windmill-labs/python-client-builder
steps:
@@ -24,26 +30,25 @@ jobs:
cd python-client
./publish.sh
publish_lsp:
needs: [publish_pypi]
runs-on: [self-hosted, new]
runs-on: ubuntu-latest
steps:
- name: Sleep for 30 seconds waiting for pypi to update index
run: sleep 30s
- name: Sleep for 300 seconds waiting for pypi to update index
if: startsWith(github.ref, 'refs/tags/v')
run: sleep 300
shell: bash
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- uses: depot/setup-action@v1
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
${{ env.ECR_REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
@@ -57,6 +62,30 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push publicly
uses: depot/build-push-action@v1
with:
context: "{{defaultContext}}:lsp"
platforms: linux/amd64,linux/arm64
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
${{ steps.meta.outputs.tags }}
labels: |
${{ steps.meta.outputs.labels }}
org.opencontainers.image.licenses=AGPLv3
publish_lsp_private:
needs: [publish_lsp]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to ECR
uses: docker/login-action@v2
with:
@@ -64,17 +93,9 @@ jobs:
username: ${{ secrets.AWS_ACCESS_KEY_ID }}
password: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Build and push publicly
uses: docker/build-push-action@v3
with:
context: "{{defaultContext}}:lsp"
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
${{ env.ECR_REGISTRY }}/${{ env.IMAGE_NAME }}:latest
${{ steps.metalocal.outputs.tags }}
${{ steps.meta.outputs.tags }}
registry.uffizzi.com/windmill-lsp:60d
labels: ${{ steps.metalocal.outputs.labels }}
cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache
cache-to: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
- name: Push image to ECR
run: |
docker buildx imagetools create \
--tag ${{ env.ECR_REGISTRY }}/${{ env.IMAGE_NAME }}:latest \
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest

View File

@@ -1,93 +0,0 @@
name: Build PR Image
on:
pull_request:
types: [opened,synchronize,reopened,closed]
paths:
- "backend/**"
- ".github/uffizzi/**"
- ".github/workflows/**"
workflow_dispatch:
jobs:
build-windmill:
name: Build and Push `windmill`
runs-on: ubuntu-latest
if: ${{ (github.event_name != 'pull_request' || github.event.action != 'closed')}}
outputs:
tags: ${{ steps.meta.outputs.tags }}
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Generate UUID image name
id: uuid
run: echo "UUID_TAG_APP=$(uuidgen)" >> $GITHUB_ENV
- name: Docker metadata
id: meta
uses: docker/metadata-action@v3
with:
images: registry.uffizzi.com/${{ env.UUID_TAG_APP }}
tags: type=raw,value=60d
- name: Build and Push Image to registry.uffizzi.com ephemeral registry
uses: docker/build-push-action@v2
with:
push: true
context: ./
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
render-compose-file:
name: Render Docker Compose File
# Pass output of this workflow to another triggered by `workflow_run` event.
runs-on: ubuntu-latest
needs:
- build-windmill
outputs:
compose-file-cache-key: ${{ steps.hash.outputs.hash }}
steps:
- name: Checkout git repo
uses: actions/checkout@v3
- name: Render Compose File
run: |
WINDMILL_IMAGE=${{ needs.build-windmill.outputs.tags }}
export WINDMILL_IMAGE
LSP_IMAGE=registry.uffizzi.com/windmill-lsp:60d
export LSP_IMAGE
envsubst '${WINDMILL_IMAGE} ${LSP_IMAGE}' < ./.github/uffizzi/docker-compose.uffizzi.yml > docker-compose.rendered.yml
cat docker-compose.rendered.yml
- name: Upload Rendered Compose File as Artifact
uses: actions/upload-artifact@v3
with:
name: preview-spec
path: docker-compose.rendered.yml
retention-days: 2
- name: Serialize PR Event to File
run: |
cat << EOF > event.json
${{ toJSON(github.event) }}
EOF
- name: Upload PR Event as Artifact
uses: actions/upload-artifact@v3
with:
name: preview-spec
path: event.json
retention-days: 2
delete-preview:
name: Call for Preview Deletion
runs-on: ubuntu-latest
if: ${{ github.event.action == 'closed' }}
steps:
# If this PR is closing, we will not render a compose file nor pass it to the next workflow.
- name: Serialize PR Event to File
run: echo '${{ toJSON(github.event) }}' > event.json
- name: Upload PR Event as Artifact
uses: actions/upload-artifact@v3
with:
name: preview-spec
path: event.json
retention-days: 2

View File

@@ -1,115 +0,0 @@
name: Deploy Uffizzi Preview
on:
workflow_run:
workflows:
- "Build PR Image"
types:
- completed
jobs:
cache-compose-file:
name: Cache Compose File
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
outputs:
compose-file-cache-key: ${{ env.COMPOSE_FILE_HASH }}
pr-number: ${{ env.PR_NUMBER }}
steps:
- name: 'Download artifacts'
# Fetch output (zip archive) from the workflow run that triggered this workflow.
uses: actions/github-script@v6
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "preview-spec"
})[0];
if (matchArtifact === undefined) {
throw TypeError('Build Artifact not found!');
}
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/preview-spec.zip`, Buffer.from(download.data));
- name: 'Unzip artifact'
run: unzip preview-spec.zip
- name: Read Event into ENV
run: |
echo 'EVENT_JSON<<EOF' >> $GITHUB_ENV
cat event.json >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- name: Read PR Number From Event Object
id: pr
run: echo "PR_NUMBER=${{ fromJSON(env.EVENT_JSON).number }}" >> $GITHUB_ENV
- name: Predict Deployment URL
id: url
# Replace dots in the repo name with the plus sign
run: |
REPO=$(echo ${{ github.repository }} | sed 's/\./+/g')
echo "EXPECTED_URL=https://app.uffizzi.com/github.com/$REPO/pull/$PR_NUMBER" >> $GITHUB_ENV
- name: Re-Render Compose File
run: |
OAUTH_JSON_BASE64=${{ secrets.OAUTH_JSON_BASE64 }}
export OAUTH_JSON_BASE64
envsubst '${OAUTH_JSON_BASE64} ${EXPECTED_URL}' < docker-compose.rendered.yml > docker-compose.uffizzi.yml
# cat docker-compose.uffizzi.yml
- name: Hash Rendered Compose File
id: hash
# If the previous workflow was triggered by a PR close event, we will not have a compose file artifact.
if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
run: echo "COMPOSE_FILE_HASH=$(md5sum docker-compose.uffizzi.yml | awk '{ print $1 }')" >> $GITHUB_ENV
- name: Cache Rendered Compose File
if: ${{ fromJSON(env.EVENT_JSON).action != 'closed' }}
uses: actions/cache@v3
with:
path: docker-compose.uffizzi.yml
key: ${{ env.COMPOSE_FILE_HASH }}
- name: DEBUG - Print Job Outputs
if: ${{ runner.debug }}
run: |
echo "PR number: ${{ env.PR_NUMBER }}"
echo "Compose file hash: ${{ env.COMPOSE_FILE_HASH }}"
cat event.json
deploy-uffizzi-preview:
name: Use Remote Workflow to Preview on Uffizzi
needs:
- cache-compose-file
if: ${{ github.event.workflow_run.conclusion == 'success' }}
uses: UffizziCloud/preview-action/.github/workflows/reusable.yaml@v2
with:
# If this workflow was triggered by a PR close event, cache-key will be an empty string
# and this reusable workflow will delete the preview deployment.
compose-file-cache-key: ${{ needs.cache-compose-file.outputs.compose-file-cache-key }}
compose-file-cache-path: docker-compose.uffizzi.yml
server: https://app.uffizzi.com
pr-number: ${{ needs.cache-compose-file.outputs.pr-number }}
permissions:
contents: read
pull-requests: write
id-token: write
playwright:
runs-on: ubuntu-latest
needs:
- deploy-uffizzi-preview
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 16
- name: "Playwright run"
timeout-minutes: 2
run: cd frontend && npm ci @playwright/test && npx playwright install && export BASE_URL=${{ needs.deploy-uffizzi-preview.outputs.url }} && npm run test

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,6 @@
{
auto_https off
}
http://{$BASE_URL} {
bind {$ADDRESS}
{$BASE_URL} {
bind {$ADDRESS}
reverse_proxy /ws/* http://lsp:3001
# reverse_proxy /ws_mp/* http://multiplayer:3002
reverse_proxy /* http://windmill_server:8000
https://{$BASE_URL} {
bind {$ADDRESS}
reverse_proxy /ws/* http://localhost:3001
}
}
}

View File

@@ -28,7 +28,7 @@ RUN apt-get update && apt-get install -y git libssl-dev pkg-config npm
RUN apt-get -y update \
&& apt-get install -y \
curl lld nodejs npm
curl nodejs npm
RUN rustup component add rustfmt
@@ -39,7 +39,7 @@ WORKDIR /windmill
ENV SQLX_OFFLINE=true
ENV CARGO_INCREMENTAL=1
FROM node:19-alpine as frontend
FROM node:20-alpine as frontend
# install dependencies
WORKDIR /frontend
@@ -52,13 +52,13 @@ RUN mkdir /backend
COPY /backend/windmill-api/openapi.yaml /backend/windmill-api/openapi.yaml
COPY /openflow.openapi.yaml /openflow.openapi.yaml
COPY /backend/windmill-api/build_openapi.sh /backend/windmill-api/build_openapi.sh
RUN cd /backend/windmill-api && . ./build_openapi.sh
COPY /backend/parsers/windmill-parser-wasm/pkg/ /backend/parsers/windmill-parser-wasm/pkg/
RUN npm run generate-backend-client
ENV NODE_OPTIONS "--max-old-space-size=8192"
RUN npm run build
RUN npm run check
FROM rust_base AS planner
@@ -73,7 +73,7 @@ ARG features=""
COPY --from=planner /windmill/recipe.json recipe.json
RUN CARGO_NET_GIT_FETCH_WITH_CLI=true cargo chef cook --release --features "$features" --recipe-path recipe.json
RUN CARGO_NET_GIT_FETCH_WITH_CLI=true RUST_BACKTRACE=1 cargo chef cook --release --features "$features" --recipe-path recipe.json
COPY ./openflow.openapi.yaml /openflow.openapi.yaml
COPY ./backend ./
@@ -85,7 +85,8 @@ COPY .git/ .git/
RUN CARGO_NET_GIT_FETCH_WITH_CLI=true cargo build --release --features "$features"
FROM python:3.11.2-slim-buster
FROM python:3.11.3-slim-buster
ARG TARGETPLATFORM
ARG APP=/usr/src/app
@@ -123,16 +124,26 @@ ENV TZ=Etc/UTC
RUN /usr/local/bin/python3 -m pip install pip-tools
COPY --from=frontend /frontend/build /static_frontend
COPY --from=builder /windmill/target/release/windmill ${APP}/windmill
COPY --from=nsjail /nsjail/nsjail /bin/nsjail
COPY --from=denoland/deno:latest /usr/bin/deno /usr/bin/deno
COPY --from=denoland/deno:1.33.3 /usr/bin/deno /usr/bin/deno
# docker does not support conditional COPY and we want to use the same Dockerfile for both amd64 and arm64 and privilege the official image
COPY --from=lukechannings/deno:v1.33.3 /usr/bin/deno /usr/bin/deno-arm
RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then rm /usr/bin/deno-arm; elif [ "$TARGETPLATFORM" = "linux/arm64" ]; then mv /usr/bin/deno-arm /usr/bin/deno; fi
# add the docker client to call docker from a worker if enabled
COPY --from=docker:dind /usr/local/bin/docker /usr/local/bin/
RUN mkdir -p ${APP}
RUN ln -s ${APP}/windmill /usr/local/bin/windmill
WORKDIR ${APP}
EXPOSE 8000
CMD ["./windmill"]
CMD ["windmill"]

14
LICENSE
View File

@@ -1,12 +1,16 @@
Source code in this repository is variously licensed under the Apache License
Version 2.0 (see file ./LICENSE-APACHE),or the AGPLv3 License (see file ./LICENSE-AGPL)
Version 2.0 (see file ./LICENSE-APACHE), or the AGPLv3 License (see file ./LICENSE-AGPL)
Every file is under copyright (c) Windmill Labs, Inc 2022 unless otherwise specified.
Every file is under License AGPL unless otherwise specified
or belonging to one of the below cases:
The files under backend/ are AGPL Licensed.
The files under frontend/ are AGPL Licensed.
The files under python-client/ are Apache 2.0 Licensed.
The files under community/ are Apache 2.0 Licensed.
The files under backend/ are AGPLv3 Licensed.
The files under frontend/ are AGPLv3 Licensed.
The files under python-client/ deno-client/ go-client/ are Apache 2.0 Licensed.
The openapi files, including the OpenFlow spec is Apache 2.0 Licensed.
All third party components incorporated into the Windmill Software are licensed under the
original license provided by the owner of the applicable component.

267
README.md
View File

@@ -1,60 +1,55 @@
<p align="center">
<a href="https://app.windmill.dev"><img src="./imgs/windmill-banner.png" alt="windmill.dev"></a>
<a href="https://www.windmill.dev/"><img src="./imgs/windmill-banner.png" alt="windmill.dev"></a>
</p>
<p align="center">
<em>.</em>
</p>
<p align=center>
Open-source developer infrastructure for internal tools. Self-hostable alternative to Airplane, Pipedream, Superblocks and a simplified Temporal with autogenerated UIs to trigger workflows and scripts as internal apps. Scripts are turned into UIs and no-code modules, no-code modules can be composed into very rich flows, and script and flows can be triggered from internal UIs made with a low-code builder. The script languages supported are: Python, Typescript, Go, Bash, SQL.
Open-source developer infrastructure for internal tools. Self-hostable alternative to Airplane, Pipedream, Superblocks and a simplified Temporal with autogenerated UIsm and custom UIs to trigger workflows and scripts as internal apps.
<p align=center>
Scripts are turned into UIs and no-code modules, no-code modules can be composed into very rich flows, and script and flows can be triggered from internal UIs made with a low-code builder. The script languages supported are: Python, Typescript, Go, Bash, SQL.
</p>
<p align="center">
<a href="https://github.com/windmill-labs/windmill/blob/main/LICENSE-AGPL" target="_blank">
<img src="https://img.shields.io/badge/License-AGPLv3-blue.svg" alt="Package version">
</a>
<a href="https://github.com/windmill-labs/windmill/actions/workflows/docker-image.yml" target="_blank">
<img src="https://github.com/windmill-labs/windmill/actions/workflows/docker-image.yml/badge.svg" alt="Docker Image CI">
</a>
<a href="https://pypi.org/project/wmill" target="_blank">
<img src="https://img.shields.io/pypi/v/wmill?color=%2334D058&label=pypi%20package" alt="Package version">
</a>
</p>
<p align="center">
<a href="https://img.shields.io/github/commit-activity/m/windmill-labs/windmill" target="_blank">
<img src="https://img.shields.io/github/commit-activity/m/windmill-labs/windmill" alt="Commit activity">
</a>
<a href="https://discord.gg/V7PM2YHsPB" target="_blank">
<img src="https://discordapp.com/api/guilds/930051556043276338/widget.png" alt="Discord Shield"/>
</a>
</p>
---
<p align="center">
<a href="https://app.windmill.dev">Try it</a> - <a href="https://docs.windmill.dev/docs/intro/">Docs</a> - <a href="https://discord.gg/V7PM2YHsPB">Discord</a> - <a href="https://hub.windmill.dev">Hub</a> - <a href="https://docs.windmill.dev/docs/misc/contributing">Contributor's guide</a>
</p>
**Try it (personal workspaces are free forever)**: <https://app.windmill.dev>
# Windmill - Turn scripts into workflows and UIs that you can share and run at scale
**Documentation**: <https://www.windmill.dev>
Windmill is <b>fully open-sourced (AGPLv3)</b> and Windmill Labs offers
dedicated instance and commercial support and licenses.
**Discord**: <https://discord.gg/V7PM2YHsPB>
![Windmill Diagram](./imgs/stacks.svg)
**Hub**: <https://hub.windmill.dev>
https://github.com/windmill-labs/windmill/assets/122811744/0b132cd1-ee67-4505-822f-0c7ee7104252
**Contributor's guide**: <https://docs.windmill.dev/docs/misc/contributing>
**Roadmap**: <https://github.com/orgs/windmill-labs/projects/2>
You can show your support for the project by starring this repo.
Windmill Labs offers commercial licenses, an enterprise edition, local hub
mirrors, and support: contact ruben@windmill.dev.
---
# Windmill
Windmill is <b>fully open-sourced (AGPLv3)</b>
![Windmill Diagram](/imgs/stacks.svg)
https://user-images.githubusercontent.com/275584/218350457-bc2fdc3b-e667-4da5-a2bd-3bacc1f0ec79.mp4
- [Windmill](#windmill)
- [Windmill - Turn scripts into workflows and UIs that you can share and run at scale](#windmill---turn-scripts-into-workflows-and-uis-that-you-can-share-and-run-at-scale)
- [Main Concepts](#main-concepts)
- [Show me some actual script code](#show-me-some-actual-script-code)
- [CLI](#cli)
- [Running scripts locally](#running-scripts-locally)
- [Layout](#layout)
- [Stack](#stack)
- [Security](#security)
- [Sandboxing](#sandboxing)
@@ -78,8 +73,8 @@ https://user-images.githubusercontent.com/275584/218350457-bc2fdc3b-e667-4da5-a2
## Main Concepts
1. Define a minimal and generic script in Python, Typescript, Go or Bash that
solves a specific task. Here sending an email with SMTP. The code can be
defined in the provided Web IDE or synchronized with your own github repo:
solves a specific task. Here sending a POST request. The code can be defined
in the provided Web IDE or synchronized with your own github repo:
![Step 1](./imgs/windmill-editor.png)
2. Your scripts parameters are automatically parsed and generate a frontend.
@@ -87,12 +82,12 @@ https://user-images.githubusercontent.com/275584/218350457-bc2fdc3b-e667-4da5-a2
3. Make it flow! You can chain your scripts or scripts made by the community
shared on [WindmillHub](https://hub.windmill.dev).
![Step 4](./imgs/windmill-flow.png)
![Step 3](./imgs/windmill-flow.png)
4. Build complex UI on top of your scripts and flows.
![Step 5](./imgs/windmill-builder.png)
![Step 4](./imgs/windmill-builder.png)
Scripts and flows can also be triggered by a cron schedule '*/5 * * * *' or
Scripts and flows can also be triggered by a cron schedule '_/5 _ \* \* \*' or
through webhooks.
You can build your entire infra on top of Windmill!
@@ -100,53 +95,49 @@ You can build your entire infra on top of Windmill!
## Show me some actual script code
```typescript
import * as wmill from "https://deno.land/x/windmill@v1.62.0/mod.ts"
import * as wmill from "https://deno.land/x/windmill@v1.62.0/mod.ts";
//import any dependency from npm
import cowsay from 'npm:cowsay@1.5.0'
import cowsay from "npm:cowsay@1.5.0";
export async function main(
a: number,
// unions generate enums
b: "my" | "enum",
// default parameters prefill the field
d = "default arg",
// nested objects work c = { nested: "object" },
// permissioned and typed json
db: wmill.Resource<"postgresql">) {
a: number,
// unions generate enums
b: "my" | "enum",
// default parameters prefill the field
d = "default arg",
// nested objects work c = { nested: "object" },
// permissioned and typed json
db: wmill.Resource<"postgresql">
) {
const email = Deno.env.get("WM_EMAIL");
// variables are permissioned and by path
let variable = await wmill.getVariable("f/company-folder/my_secret");
const lastTimeRun = await wmill.getState();
// logs are printed and always inspectable
console.log(cowsay.say({ text: "hello " + email + " " + lastTimeRun }));
await wmill.setState(Date.now());
const email = Deno.env.get('WM_EMAIL')
// variables are permissioned and by path
let variable = await wmill.getVariable('f/company-folder/my_secret')
const lastTimeRun = await wmill.getState()
// logs are printed and always inspectable
console.log(cowsay.say({ text: "hello " + email + " " + lastTimeRun }))
await wmill.setState(Date.now())
// return is serialized as JSON
return { foo: d, variable };
// return is serialized as JSON
return { foo: d, variable };
}
```
## CLI
We have a powerful CLI to interact with the windmill platform and sync your
scripts from local files, github repos and to run scripts and flows on the instance from local commands. See
[more details](https://github.com/windmill-labs/windmill/tree/main/cli)
scripts from local files, github repos and to run scripts and flows on the
instance from local commands. See
[more details](https://github.com/windmill-labs/windmill/tree/main/cli).
![CLI Screencast](./cli/vhs/output/setup.gif)
### Running scripts locally
You can run your script locally easily, you simply need to pass the right environment variables for the `wmill` client library to fetch resource and variables from your instance if necessary. See more: <https://docs.windmill.dev/docs/advanced/local_development/>
## Layout
- `backend/`: Rust backend
- `frontend`: Svelte frontend
- `lsp/`: Lsp asssistant for the monaco editor
- `<lang>-client/`: Windmill client for the given `<lang>`
You can run your script locally easily, you simply need to pass the right
environment variables for the `wmill` client library to fetch resources and
variables from your instance if necessary. See more:
<https://docs.windmill.dev/docs/advanced/local_development/>.
## Stack
@@ -173,7 +164,7 @@ You can run your script locally easily, you simply need to pass the right enviro
Windmill uses [nsjail](https://github.com/google/nsjail) on top of the deno
sandboxing. It is production multi-tenant grade secure. Do not take our word for
it, take [fly.io's one](https://fly.io/blog/sandboxing-and-workload-isolation/)
it, take [fly.io's one](https://fly.io/blog/sandboxing-and-workload-isolation/).
### Secrets, credentials and sensitive values
@@ -203,30 +194,34 @@ back to the database is ~50ms. A typical lightweight deno job will take around
We only provide docker-compose setup here. For more advanced setups, like
compiling from source or using without a postgres super user, see
[documentation](https://docs.windmill.dev/docs/advanced/self_host)
[documentation](https://docs.windmill.dev/docs/advanced/self_host).
### Docker compose
`docker compose up` with the following docker-compose is sufficient:
<https://github.com/windmill-labs/windmill/blob/main/docker-compose.yml>
```
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml -o docker-compose.yml
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/Caddyfile -o Caddyfile
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/.env -o .env
docker compose up -d --pull always
```
Go to http://localhost et voilà :)
The default super-admin user is: admin@windmill.dev / changeme.
The default super-admin user is: admin@windmill.dev / changeme
From there, you can create other users (do not forget to change the password!)
From there, you can follow the setup app and create other users.
### Kubernetes (k8s) and Helm charts
We publish helm charts at:
<https://github.com/windmill-labs/windmill-helm-charts>
<https://github.com/windmill-labs/windmill-helm-charts>.
### Postgres without superuser
If you do not want, or cannot (for instance, in AWS Aurora or Cloud sql) use a postgres superuser,
you can run `./init-db-as-superuser.sql` to init the required users for windmill.
If you do not want, or cannot (for instance, in AWS Aurora or Cloud sql) use a
postgres superuser, you can run `./init-db-as-superuser.sql` to init the
required users for Windmill.
### Commercial license
@@ -241,9 +236,9 @@ be AGPLv3 or you must get a commercial license. Contact us at
<ruben@windmill.dev> if you have any doubts.
In addition, a commercial license grants you a dedicated engineer to transition
your current infrastructure to Windmill, support with tight SLA, audit logs
export features, SSO, unlimited users creation, advanced permission managing
features such as groups and the ability to create more than one workspace.
your current infrastructure to Windmill, support with tight SLA, and our global
cache sync for high-performance/no dependency cache miss of cluster from 10+
nodes to 200+ nodes.
### OAuth for self-hosting
@@ -265,6 +260,10 @@ and mount it at `/usr/src/app/oauth.json`.
The redirect url for the oauth clients is:
`<instance_url>/user/login_callback/<client>`
Even if you setup oauth, you will still want to **login as admin@windmill.dev /
changeme** to setup your instance as a super-admin and give yourself admin
rights.
[The list of all possible "connect an app" oauth clients](https://github.com/windmill-labs/windmill/blob/main/backend/oauth_connect.json)
To add more "connect an app" OAuth clients to the Windmill project, read the
@@ -300,52 +299,69 @@ You may also add your own custom OAuth2 IdP and OAuth2 Resource provider:
### Resource types
You will also want to import all the approved resource types from
[WindmillHub](https://hub.windmill.dev). A setup script will prompt
you to have it being synced automatically everyday.
[WindmillHub](https://hub.windmill.dev). A setup script will prompt you to have
it being synced automatically everyday.
## Environment Variables
| Environment Variable name | Default | Description | Api Server/Worker/All |
| ------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| DATABASE_URL | | The Postgres database url. | All |
| DISABLE_NSJAIL | true | Disable Nsjail Sandboxing | Worker |
| PORT | 8000 | Exposed port | Server | |
| NUM_WORKERS | 3 | The number of worker per Worker instance (set to 1 on Eks to have 1 pod = 1 worker, set to 0 for an API only instance) | Worker |
| DISABLE_SERVER | false | Binary would operate as a worker only instance | Worker |
| METRICS_ADDR | None | The socket addr at which to expose Prometheus metrics at the /metrics path. Set to "true" to expose it on port 8001 | All |
| JSON_FMT | false | Output the logs in json format instead of logfmt | All |
| BASE_URL | http://localhost:8000 | The base url that is exposed publicly to access your instance | Server |
| BASE_INTERNAL_URL | http://localhost:8000 | The base url that is reachable by your workers to talk to the Servers. This help avoiding going through the external load balancer for VPC-internal requests. | Worker |
| TIMEOUT | 300 | The timeout in seconds for the execution of a script | Worker |
| SLEEP_QUEUE | 50 | The number of ms to sleep in between the last check for new jobs in the DB. It is multiplied by NUM_WORKERS such that in average, for one worker instance, there is one pull every SLEEP_QUEUE ms. | Worker |
| MAX_LOG_SIZE | 500000 | The maximum number of characters a job can emit (log + result) | Worker |
| DISABLE_NUSER | false | If Nsjail is enabled, disable the nsjail's `clone_newuser` setting | Worker |
| KEEP_JOB_DIR | false | Keep the job directory after the job is done. Useful for debugging. | Worker |
| LICENSE_KEY (EE only) | None | License key checked at startup for the Enterprise Edition of Windmill | Worker |
| S3_CACHE_BUCKET (EE only) | None | The S3 bucket to sync the cache of the workers to | Worker |
| TAR_CACHE_RATE (EE only) | 100 | The rate at which to tar the cache of the workers. 100 means every 100th job in average (uniformly randomly distributed). | Worker |
| SLACK_SIGNING_SECRET | None | The signing secret of your Slack app. See [Slack documentation](https://api.slack.com/authentication/verifying-requests-from-slack) | Server |
| COOKIE_DOMAIN | None | The domain of the cookie. If not set, the cookie will be set by the browser based on the full origin | Server | |
| DENO_PATH | /usr/bin/deno | The path to the deno binary. | Worker |
| PYTHON_PATH | /usr/local/bin/python3 | The path to the python binary. | Worker |
| GO_PATH | /usr/bin/go | The path to the go binary. | Worker |
| PIP_INDEX_URL | None | The index url to pass for pip. | Worker |
| PIP_EXTRA_INDEX_URL | None | The extra index url to pass to pip. | Worker |
| PIP_TRUSTED_HOST | None | The trusted host to pass to pip. | Worker |
| PATH | None | The path environment variable, usually inherited | Worker |
| HOME | None | The home directory to use for Go and Bash , usually inherited | Worker |
| DATABASE_CONNECTIONS | 50 (Server)/3 (Worker) | The max number of connections in the database connection pool | All |
| SUPERADMIN_SECRET | None | A token that would let the caller act as a virtual superadmin superadmin@windmill.dev | Server |
| TIMEOUT_WAIT_RESULT | 20 | The number of seconds to wait before timeout on the 'run_wait_result' endpoint | Worker |
| QUEUE_LIMIT_WAIT_RESULT | None | The number of max jobs in the queue before rejecting immediately the request in 'run_wait_result' endpoint. Takes precedence on the query arg. If none is specified, there are no limit. | Worker |
| DENO_AUTH_TOKENS | None | Custom DENO_AUTH_TOKENS to pass to worker to allow the use of private modules | Worker |
| DENO_FLAGS | None | Override the flags passed to deno (default --allow-all) to tighten permissions. Minimum permissions needed are "--allow-read=args.json --allow-write=result.json" | Worker |
| PIP_LOCAL_DEPENDENCIES | None | Specify dependencies that are installed locally and do not need to be solved nor installed again | |
| ADDITIONAL_PYTHON_PATHS | None | Specify python paths (separated by a :) to be appended to the PYTHONPATH of the python jobs. To be used with PIP_LOCAL_DEPENDENCIES to use python codebases within Windmill | Worker |
| INCLUDE_HEADERS | None | Whitelist of headers that are passed to jobs as args (separated by a comma) | Server |
| WHITELIST_WORKSPACES | None | Whitelist of workspaces this worker takes job from | Worker |
| BLACKLIST_WORKSPACES | None | Blacklist of workspaces this worker takes job from | Worker |
| NEW_USER_WEBHOOK | None | Webhook to notify of a new user added, signup/invite. Can hook back to windmill to send emails | Server |
| Environment Variable name | Default | Description | Api Server/Worker/All |
| ----------------------------------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| DATABASE_URL | | The Postgres database url. | All |
| DISABLE_NSJAIL | true | Disable Nsjail Sandboxing | Worker |
| SERVER_BIND_ADDR | 0.0.0.0 | IP Address on which to bind listening socket | Server |
| PORT | 8000 | Exposed port | Server |
| NUM_WORKERS | 3 | The number of worker per Worker instance (set to 1 on Eks to have 1 pod = 1 worker, set to 0 for an API only instance) | Worker |
| DISABLE_SERVER | false | Binary would operate as a worker only instance | Worker |
| METRICS_ADDR | None | The socket addr at which to expose Prometheus metrics at the /metrics path. Set to "true" to expose it on port 8001 | All |
| JSON_FMT | false | Output the logs in json format instead of logfmt | All |
| BASE_URL | http://localhost:8000 | The base url that is exposed publicly to access your instance | Server |
| BASE_INTERNAL_URL | http://localhost:8000 | The base url that is reachable by your workers to talk to the Servers. This help avoiding going through the external load balancer for VPC-internal requests. | Worker |
| TIMEOUT | 300 | The maximum time of execution of a script. When reached, the job is failed as having timedout. | Worker |
| ZOMBIE_JOB_TIMEOUT | 30 | The timeout after which a job is considered to be zombie if the worker did not send pings about processing the job (every server check for zombie jobs every 30s) | Server |
| RESTART_ZOMBIE_JOBS | true | If true then a zombie job is restarted (in-place with the same uuid and some logs), if false the zombie job is failed | Server |
| SLEEP_QUEUE | 50 | The number of ms to sleep in between the last check for new jobs in the DB. It is multiplied by NUM_WORKERS such that in average, for one worker instance, there is one pull every SLEEP_QUEUE ms. | Worker |
| MAX_LOG_SIZE | 500000 | The maximum number of characters a job can emit (log + result) | Worker |
| DISABLE_NUSER | false | If Nsjail is enabled, disable the nsjail's `clone_newuser` setting | Worker |
| KEEP_JOB_DIR | false | Keep the job directory after the job is done. Useful for debugging. | Worker |
| LICENSE_KEY (EE only) | None | License key checked at startup for the Enterprise Edition of Windmill | Worker |
| S3_CACHE_BUCKET (EE only) | None | The S3 bucket to sync the cache of the workers to | Worker |
| TAR_CACHE_RATE (EE only) | 100 | The rate at which to tar the cache of the workers. 100 means every 100th job in average (uniformly randomly distributed). | Worker |
| SLACK_SIGNING_SECRET | None | The signing secret of your Slack app. See [Slack documentation](https://api.slack.com/authentication/verifying-requests-from-slack) | Server |
| COOKIE_DOMAIN | None | The domain of the cookie. If not set, the cookie will be set by the browser based on the full origin | Server |
| DENO_PATH | /usr/bin/deno | The path to the deno binary. | Worker |
| PYTHON_PATH | /usr/local/bin/python3 | The path to the python binary. | Worker |
| GO_PATH | /usr/bin/go | The path to the go binary. | Worker |
| GOPRIVATE | | The GOPRIVATE env variable to use private go modules | Worker |
| GOPROXY | | The GOPROXY env variable to use | Worker |
| NETRC | | The netrc content to use a private go registry | Worker |
| PIP_INDEX_URL | None | The index url to pass for pip. | Worker |
| PIP_EXTRA_INDEX_URL | None | The extra index url to pass to pip. | Worker |
| PIP_TRUSTED_HOST | None | The trusted host to pass to pip. | Worker |
| PATH | None | The path environment variable, usually inherited | Worker |
| HOME | None | The home directory to use for Go and Bash , usually inherited | Worker |
| DATABASE_CONNECTIONS | 50 (Server)/3 (Worker) | The max number of connections in the database connection pool | All |
| SUPERADMIN_SECRET | None | A token that would let the caller act as a virtual superadmin superadmin@windmill.dev | Server |
| TIMEOUT_WAIT_RESULT | 20 | The number of seconds to wait before timeout on the 'run_wait_result' endpoint | Worker |
| QUEUE_LIMIT_WAIT_RESULT | None | The number of max jobs in the queue before rejecting immediately the request in 'run_wait_result' endpoint. Takes precedence on the query arg. If none is specified, there are no limit. | Worker |
| DENO_AUTH_TOKENS | None | Custom DENO_AUTH_TOKENS to pass to worker to allow the use of private modules | Worker |
| DENO_FLAGS | None | Override the flags passed to deno (default --allow-all) to tighten permissions. Minimum permissions needed are "--allow-read=args.json --allow-write=result.json" | Worker |
| NPM_CONFIG_REGISTRY | None | Registry to use for NPM dependencies, set if you have a private repository you need to use instead of the default public NPM registry | Worker |
| PIP_LOCAL_DEPENDENCIES | None | Specify dependencies that are installed locally and do not need to be solved nor installed again | |
| ADDITIONAL_PYTHON_PATHS | None | Specify python paths (separated by a :) to be appended to the PYTHONPATH of the python jobs. To be used with PIP_LOCAL_DEPENDENCIES to use python codebases within Windmill | Worker |
| INCLUDE_HEADERS | None | Whitelist of headers that are passed to jobs as args (separated by a comma) | Server |
| WHITELIST_WORKSPACES | None | Whitelist of workspaces this worker takes job from | Worker |
| BLACKLIST_WORKSPACES | None | Blacklist of workspaces this worker takes job from | Worker |
| INSTANCE_EVENTS_WEBHOOK | None | Webhook to notify of events such as new user added, signup/invite. Can hook back to windmill to send emails |
| GLOBAL_CACHE_INTERVAL | 10\*60 | (Enterprise Edition only) Interval in seconds in between bucket sync of the cache. This interval \* 2 is the time at which you're guaranteed all the worker's caches are synced together. | Worker |
| WORKER_TAGS | 'deno,go,python3,bash,flow,hub,dependency' | The worker groups assigned to that workers | Worker |
| CUSTOM_TAGS | None | The custom tags assignable to scripts. | Server |
| JOB_RETENTION_SECS | 60*60*24\*60 //60 days | The time in seconds after which jobs get deleted. Set to 0 or -1 to never delete |
| WAIT_RESULT_FAST_POLL_INTERVAL_MS | 50 | The time in between polling for the run_wait_result endpoints in fast poll mode | Server |
| WAIT_RESULT_SLOW_POLL_INTERVAL_MS | 200 | The time in between polling for the run_wait_result endpoints in fast poll mode | Server |
| WAIT_RESULT_FAST_POLL_DURATION_SECS | 2 | The duration of fast poll mode before switching to slow poll | Server |
| EXIT_AFTER_NO_JOB_FOR_SECS | None | Exit worker if no job is received after duration in secs if defined | Worker |
| OAUTH_JSON_AS_BASE64 | None | Base64 encoded JSON of the OAuth configuration. e.g `OAUTH_JSON_AS_BASE64=$(base64 oauth.json \| tr -d '\n')` to encode it | Server |
| REQUEST_SIZE_LIMIT | 2097152 (2MB) | Max request size which impact the maximum size of resources and payload size of job args | Server |
## Run a local dev setup
@@ -374,15 +390,14 @@ running options.
3. Install deno and python3, have the bins at `/usr/bin/deno` and
`/usr/local/bin/python3`
4. Install [caddy](https://caddyserver.com)
5. Install the [lld linker](https://lld.llvm.org/)
6. Go to `frontend/`:
5. Go to `frontend/`:
1. `npm install`, `npm run generate-backend-client` then `npm run dev`
2. In another shell `npm run build` otherwise the backend will not find the
`frontend/build` folder and will crash
3. In another shell `sudo caddy run --config Caddyfile`
7. Go to `backend/`:
6. Go to `backend/`:
`DATABASE_URL=<DATABASE_URL_TO_YOUR_WINDMILL_DB> RUST_LOG=info cargo run`
8. Et voilà, windmill should be available at `http://localhost/`
7. Et voilà, windmill should be available at `http://localhost/`
## Contributors
@@ -392,4 +407,4 @@ running options.
## Copyright
Windmill Labs, Inc 2022
Windmill Labs, Inc 2023

View File

@@ -1,10 +1,18 @@
[build]
rustflags = [
"--cfg",
"tokio_unstable",
"-C",
"link-arg=-fuse-ld=lld",
"-Clink-arg=-Wl,--no-rosegment",
"tokio_unstable"
]
incremental = true
[target.x86_64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]
[target.aarch64-apple-darwin]
rustflags = [
"-C", "link-arg=-undefined",
"-C", "link-arg=dynamic_lookup",
]

View File

@@ -1,3 +1,10 @@
{
"python.analysis.typeCheckingMode": "basic"
"python.analysis.typeCheckingMode": "basic",
"rust-analyzer.linkedProjects": [
"./windmill-common/Cargo.toml",
"./parsers/windmill-parser-ts-wasm/Cargo.toml",
"./parsers/windmill-parser-ts-wasm/Cargo.toml",
"./parsers/windmill-parser-ts-wasm/Cargo.toml"
],
"rust-analyzer.showUnlinkedFileNotification": false
}

1891
backend/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
[package]
name = "windmill"
version = "1.66.1"
version = "1.110.0"
authors.workspace = true
edition.workspace = true
@@ -14,12 +14,15 @@ members = [
"./windmill-api-client",
"./parsers/windmill-parser",
"./parsers/windmill-parser-ts",
"./parsers/windmill-parser-wasm",
"./parsers/windmill-parser-go",
"./parsers/windmill-parser-bash",
"./parsers/windmill-parser-py",
"./parsers/windmill-parser-py-imports",
]
[workspace.package]
version = "1.66.1"
version = "1.110.0"
authors = ["Ruben Fiszel <ruben@windmill.dev>"]
edition = "2021"
@@ -28,11 +31,7 @@ name = "windmill"
path = "./src/main.rs"
[features]
enterprise = [
"windmill-worker/enterprise",
"windmill-queue/enterprise",
"windmill-api/enterprise",
]
enterprise = ["windmill-worker/enterprise", "windmill-queue/enterprise", "windmill-api/enterprise"]
[dependencies]
anyhow.workspace = true
@@ -52,12 +51,20 @@ git-version.workspace = true
rsa.workspace = true
base64.workspace = true
sha2.workspace = true
rsmq_async.workspace = true
url.workspace = true
lazy_static.workspace = true
once_cell.workspace = true
prometheus.workspace = true
uuid.workspace = true
gethostname.workspace = true
[dev-dependencies]
serde_json.workspace = true
reqwest.workspace = true
windmill-queue.workspace = true
axum.workspace = true
serde.workspace = true
[workspace.dependencies]
windmill-api = { path = "./windmill-api" }
@@ -69,6 +76,7 @@ windmill-audit = { path = "./windmill-audit" }
windmill-parser = { path = "./parsers/windmill-parser" }
windmill-parser-ts = { path = "./parsers/windmill-parser-ts" }
windmill-parser-py = { path = "./parsers/windmill-parser-py" }
windmill-parser-py-imports = { path = "./parsers/windmill-parser-py-imports" }
windmill-parser-go = { path = "./parsers/windmill-parser-go" }
windmill-parser-bash = { path = "./parsers/windmill-parser-bash" }
axum = { version = "^0", features = ["headers"] }
@@ -76,7 +84,7 @@ headers = "^0"
hyper = { version = "^0", features = ["full"] }
tokio = { version = "^1", features = ["full", "tracing"] }
tower = "^0"
tower-http = { version = "^0", features = ["trace"] }
tower-http = { version = "^0", features = ["trace", "cors"] }
tower-cookies = "^0"
serde = "^1"
serde_json = { version = "^1", features = ["preserve_order"] }
@@ -84,6 +92,7 @@ uuid = { version = "^1", features = ["serde", "v4"] }
thiserror = "^1"
anyhow = "^1"
chrono = { version = "^0", features = ["serde"] }
chrono-tz = "^0"
tracing = "^0"
tracing-subscriber = { version = "^0", features = ["env-filter", "json"] }
prometheus = { version = "^0", default-features = false }
@@ -99,7 +108,7 @@ rand = "0.8.5"
rand_core = { version = "^0", features = ["std"] }
magic-crypt = "^3"
git-version = "^0"
rustpython-parser = { git = "https://github.com/RustPython/RustPython" }
rustpython-parser = "0.2.0"
cron = "^0"
lettre = { version = "^0", features = [
"rustls-tls",
@@ -120,13 +129,12 @@ tokio-util = { version = "^0", features = ["io"] }
json-pointer = "^0"
itertools = "^0"
regex = "^1"
deno_core = "^0"
deno_core = "0.188.0"
async-recursion = "^1"
swc_common = "^0"
swc_ecma_parser = "^0"
swc_ecma_ast = "^0"
swc_common = "0.29.39"
swc_ecma_parser = "0.128.2"
swc_ecma_ast = "0.98.1"
base64 = "0.21.0"
unicode-general-category = "^0"
hmac = "0.12.1"
sha2 = "0.10.6"
sqlx = { version = "^0", features = [
@@ -142,6 +150,7 @@ sqlx = { version = "^0", features = [
dotenv = "^0"
ulid = { version = "^1", features = ["uuid"] }
futures = "^0"
futures-core = "^0"
tokio-metrics = "0.1.0"
lazy_static = "1.4.0"
serde_derive = "1.0.147"
@@ -153,3 +162,11 @@ async-stripe = { version = "0.14", features = [
"checkout",
] }
async_zip = { version = "0.0.11", features = ["full"] }
once_cell = "1.17.1"
rsmq_async = { version = "5.1.5" }
gosyn = "0.2.2"
bytes = "1.4.0"
gethostname = "0.4.3"
wasm-bindgen = "0.2"
serde-wasm-bindgen = "0.4"
wasm-bindgen-test = "0.3.0"

View File

@@ -1,6 +1,7 @@
# Windmill Backend
This folder holds all backend components, the [src/](./src/) folder only contains files used to build the "root" binary.
This folder holds all backend components, the [src/](./src/) folder only
contains files used to build the "root" binary.
## Components
@@ -13,3 +14,9 @@ This folder holds all backend components, the [src/](./src/) folder only contain
| [windmill-queue](./windmill-queue/) | Contains job & flow queuing functionality, commonly written to by the API server and read from by workers |
| [windmill-worker](./windmill-worker/) | The worker. Used to process and execute flows & jobs. |
| [parsers](./parsers/) | Contains code to parse signatures in different langauges. |
### Compile sqlx for offline ci
```
cargo sqlx prepare --merged -- --bin windmill --features enterprise
```

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,16 @@
-- Add up migration script here
UPDATE script SET content = 'import wmill from "https://deno.land/x/wmill@v1.70.1/main.ts";
export async function main() {
await run(
"workspace", "add", "__automation", "admins", Deno.env.get("BASE_INTERNAL_URL") + "/", "--token", Deno.env.get("WM_TOKEN"));
await run("hub", "pull");
}
async function run(...cmd: string[]) {
console.log("Running \"" + cmd.join('' '') + "\"");
await wmill.parse(cmd);
}', summary = 'Synchronize Hub Resource types with admins workspace',
description = 'Basic administrative script to sync latest resource types from hub to share to every workspace. Recommended to run at least once. On a schedule by default.'
WHERE hash = -28028598712388162 AND workspace_id = 'admins';

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,3 @@
-- Add up migration script here
ALTER TABLE queue ADD COLUMN root_job uuid;
ALTER TABLE queue ADD COLUMN leaf_jobs jsonb;

View File

@@ -0,0 +1 @@
-- Add down migration script here

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,11 @@
-- Add up migration script here
CREATE POLICY see_extra_perms_user ON app FOR ALL
USING (extra_perms ? CONCAT('u/', current_setting('session.user')))
WITH CHECK ((extra_perms ->> CONCAT('u/', current_setting('session.user')))::boolean);
CREATE POLICY see_extra_perms_groups ON app FOR ALL
USING (extra_perms ?| regexp_split_to_array(current_setting('session.pgroups'), ',')::text[])
WITH CHECK (exists(
SELECT key, value FROM jsonb_each_text(extra_perms)
WHERE SPLIT_PART(key, '/', 1) = 'g' AND key = ANY(regexp_split_to_array(current_setting('session.pgroups'), ',')::text[])
AND value::boolean));

View File

@@ -0,0 +1,2 @@
ALTER TABLE schedule DROP COLUMN timezone;
ALTER TABLE schedule ADD COLUMN offset_ INTEGER NOT NULL DEFAULT 0;

View File

@@ -0,0 +1,26 @@
ALTER TABLE schedule ADD COLUMN timezone VARCHAR(255) NOT NULL DEFAULT 'UTC';
-- INSERT the correct IANA timezone string for each offset value
UPDATE schedule SET timezone = 'Pacific/Honolulu' WHERE offset_ = 600;
UPDATE schedule SET timezone = 'America/Anchorage' WHERE offset_ = 540;
UPDATE schedule SET timezone = 'America/Los_Angeles' WHERE offset_ = 480;
UPDATE schedule SET timezone = 'America/Chicago' WHERE offset_ = 360;
UPDATE schedule SET timezone = 'America/New_York' WHERE offset_ = 300;
UPDATE schedule SET timezone = 'America/Halifax' WHERE offset_ = 240;
UPDATE schedule SET timezone = 'America/Sao_Paulo' WHERE offset_ = 180;
UPDATE schedule SET timezone = 'Atlantic/South_Georgia' WHERE offset_ = 120;
UPDATE schedule SET timezone = 'Atlantic/Cape_Verde' WHERE offset_ = 60;
UPDATE schedule SET timezone = 'Europe/London' WHERE offset_ = 0;
UPDATE schedule SET timezone = 'Europe/Berlin' WHERE offset_ = -60;
UPDATE schedule SET timezone = 'Europe/Athens' WHERE offset_ = -120;
UPDATE schedule SET timezone = 'Europe/Moscow' WHERE offset_ = -180;
UPDATE schedule SET timezone = 'Asia/Dubai' WHERE offset_ = -240;
UPDATE schedule SET timezone = 'Asia/Aqtau' WHERE offset_ = -300;
UPDATE schedule SET timezone = 'Asia/Almaty' WHERE offset_ = -360;
UPDATE schedule SET timezone = 'Asia/Bangkok' WHERE offset_ = -420;
UPDATE schedule SET timezone = 'Asia/Hong_Kong' WHERE offset_ = -480;
UPDATE schedule SET timezone = 'Asia/Tokyo' WHERE offset_ = -540;
UPDATE schedule SET timezone = 'Australia/Sydney' WHERE offset_ = -600;
ALTER TABLE schedule DROP COLUMN offset_;

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,3 @@
-- Add up migration script here
ALTER TABLE password ALTER COLUMN company TYPE VARCHAR(255);
ALTER TABLE password ALTER COLUMN name TYPE VARCHAR(255);

View File

@@ -0,0 +1,2 @@
-- Add down migration script here
DROP TABLE pip_resolution_cache;

View File

@@ -0,0 +1,6 @@
-- Add up migration script here
CREATE TABLE pip_resolution_cache(
hash VARCHAR(255) PRIMARY KEY,
expiration TIMESTAMP NOT NULL,
lockfile TEXT NOT NULL
);

View File

@@ -0,0 +1,2 @@
DROP TABLE IF EXISTS input;
DROP TYPE RUNNABLE_TYPE;

View File

@@ -0,0 +1,13 @@
CREATE TYPE RUNNABLE_TYPE AS ENUM ('ScriptHash', 'ScriptPath', 'FlowPath');
CREATE TABLE IF NOT EXISTS input (
id UUID PRIMARY KEY,
workspace_id VARCHAR(50) NOT NULL REFERENCES workspace(id),
runnable_id VARCHAR(255) NOT NULL,
runnable_type RUNNABLE_TYPE NOT NULL,
name TEXT NOT NULL,
args JSONB NOT NULL,
created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
created_by VARCHAR(50) NOT NULL,
is_public BOOLEAN NOT NULL DEFAULT FALSE
);

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,3 @@
-- Add up migration script here
GRANT ALL ON input TO windmill_user;
GRANT ALL ON input TO windmill_admin;

View File

@@ -0,0 +1,4 @@
-- Add down migration script here
ALTER TABLE script DROP COLUMN tag;
ALTER TABLE completed_job DROP COLUMN tag;
ALTER TABLE queue DROP COLUMN tag;

View File

@@ -0,0 +1,4 @@
-- Add up migration script here
ALTER TABLE script ADD COLUMN tag VARCHAR(50);
ALTER TABLE completed_job ADD COLUMN tag VARCHAR(50) NOT NULL DEFAULT 'other';
ALTER TABLE queue ADD COLUMN tag VARCHAR(50) NOT NULL DEFAULT 'other';

View File

@@ -0,0 +1,3 @@
-- Add down migration script here
DROP TABLE draft;
DROP TYPE DRAFT_TYPE;

View File

@@ -0,0 +1,18 @@
-- Add up migration script here
CREATE TYPE DRAFT_TYPE AS ENUM ('script', 'flow', 'app');
CREATE TABLE draft (
workspace_id VARCHAR(50) NOT NULL REFERENCES workspace(id),
path VARCHAR(255) NOT NULL,
typ DRAFT_TYPE NOT NULL,
value JSONB NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT now(),
PRIMARY KEY (workspace_id, path, typ)
);
GRANT ALL ON draft TO windmill_admin;
GRANT ALL ON draft TO windmill_user;
ALTER TABLE script ADD COLUMN draft_only BOOLEAN;
ALTER TABLE flow ADD COLUMN draft_only BOOLEAN;
ALTER TABLE app ADD COLUMN draft_only BOOLEAN;

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,33 @@
-- Add up migration script here
CREATE TABLE raw_app (
path varchar(255) PRIMARY KEY,
version INTEGER NOT NULL DEFAULT 0,
workspace_id VARCHAR(50) NOT NULL REFERENCES workspace(id),
summary VARCHAR(1000) NOT NULL DEFAULT '',
edited_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),
data TEXT NOT NULL,
extra_perms JSONB NOT NULL DEFAULT '{}'
);
CREATE POLICY see_own ON raw_app FOR ALL
USING (SPLIT_PART(raw_app.path, '/', 1) = 'u' AND SPLIT_PART(raw_app.path, '/', 2) = current_setting('session.user'));
CREATE POLICY see_member ON raw_app FOR ALL
USING (SPLIT_PART(raw_app.path, '/', 1) = 'g' AND SPLIT_PART(raw_app.path, '/', 2) = any(regexp_split_to_array(current_setting('session.groups'), ',')::text[]));
CREATE POLICY see_extra_perms_user ON raw_app FOR ALL
USING (extra_perms ? CONCAT('u/', current_setting('session.user')))
WITH CHECK ((extra_perms ->> CONCAT('u/', current_setting('session.user')))::boolean);
CREATE POLICY see_extra_perms_groups ON raw_app FOR ALL
USING (extra_perms ?| regexp_split_to_array(current_setting('session.pgroups'), ',')::text[])
WITH CHECK (exists(
SELECT key, value FROM jsonb_each_text(extra_perms)
WHERE SPLIT_PART(key, '/', 1) = 'g' AND key = ANY(regexp_split_to_array(current_setting('session.pgroups'), ',')::text[])
AND value::boolean));
CREATE POLICY see_folder_extra_perms_user ON raw_app FOR ALL
USING (SPLIT_PART(raw_app.path, '/', 1) = 'f' AND SPLIT_PART(raw_app.path, '/', 2) = any(regexp_split_to_array(current_setting('session.folders_read'), ',')::text[]))
WITH CHECK (SPLIT_PART(raw_app.path, '/', 1) = 'f' AND SPLIT_PART(raw_app.path, '/', 2) = any(regexp_split_to_array(current_setting('session.folders_write'), ',')::text[]));
ALTER TYPE FAVORITE_KIND ADD VALUE 'raw_app';

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,3 @@
-- Add up migration script here
GRANT ALL ON raw_app TO windmill_admin;
GRANT ALL ON raw_app TO windmill_user;

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,3 @@
-- Add up migration script here
ALTER TABLE app_version
ALTER COLUMN value TYPE json;

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,3 @@
-- Add up migration script here
ALTER TABLE draft
ALTER COLUMN value TYPE json;

View File

@@ -0,0 +1 @@
-- Add down migration script here

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,2 @@
-- Add up migration script here
ALTER TABLE raw_app ENABLE ROW LEVEL SECURITY;

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,3 @@
-- Add up migration script here
alter table capture DROP constraint capture_payload_check;
alter table capture add constraint caputre_payload_too_big check (length(payload::text) < 512 * 1024);

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,3 @@
-- Add up migration script here
alter table capture DROP constraint caputre_payload_too_big;
alter table capture add constraint capture_payload_too_big check (length(payload::text) < 512 * 1024);

View File

@@ -0,0 +1,2 @@
-- Add down migration script here
ALTER TABLE schedule DROP COLUMN on_failure;

View File

@@ -0,0 +1,2 @@
-- Add up migration script here
ALTER TABLE schedule ADD COLUMN on_failure VARCHAR(1000) DEFAULT NULL;

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,11 @@
-- Add up migration script here
do
$$
BEGIN
IF (NOT EXISTS (SELECT workspace_id FROM script WHERE workspace_id = 'demo' UNION ALL SELECT workspace_id FROM flow WHERE workspace_id = 'demo' UNION ALL SELECT workspace_id FROM app WHERE workspace_id = 'demo'))
THEN
DELETE FROM workspace_invite WHERE workspace_id = 'demo';
END IF;
END
$$

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,43 @@
-- Add up migration script here
do
$$
BEGIN
IF (NOT EXISTS (SELECT workspace_id FROM script WHERE workspace_id = 'demo' UNION ALL SELECT workspace_id FROM flow WHERE workspace_id = 'demo' UNION ALL SELECT workspace_id FROM app WHERE workspace_id = 'demo'))
THEN
DELETE FROM usr WHERE workspace_id = 'demo';
DELETE FROM usr_to_group WHERE workspace_id = 'demo';
DELETE FROM queue WHERE workspace_id = 'demo';
DELETE FROM completed_job WHERE workspace_id = 'demo';
DELETE FROM raw_app WHERE workspace_id = 'demo';
DELETE FROM variable WHERE workspace_id = 'demo';
DELETE FROM schedule WHERE workspace_id = 'demo';
DELETE FROM resource WHERE workspace_id = 'demo';
DELETE FROM resource_type WHERE workspace_id = 'demo';
DELETE FROM workspace_key WHERE workspace_id = 'demo';
DELETE FROM group_ WHERE workspace_id = 'demo';
DELETE FROM workspace_settings WHERE workspace_id = 'demo';
DELETE FROM workspace WHERE id = 'demo';
END IF;
IF (NOT EXISTS (SELECT workspace_id FROM script WHERE workspace_id = 'starter' UNION ALL SELECT workspace_id FROM flow WHERE workspace_id = 'starter' UNION ALL SELECT workspace_id FROM app WHERE workspace_id = 'starter'))
THEN
DELETE FROM usr WHERE workspace_id = 'starter';
DELETE FROM usr_to_group WHERE workspace_id = 'starter';
DELETE FROM queue WHERE workspace_id = 'starter';
DELETE FROM completed_job WHERE workspace_id = 'starter';
DELETE FROM raw_app WHERE workspace_id = 'starter';
DELETE FROM variable WHERE workspace_id = 'starter';
DELETE FROM schedule WHERE workspace_id = 'starter';
DELETE FROM resource WHERE workspace_id = 'starter';
DELETE FROM resource_type WHERE workspace_id = 'starter';
DELETE FROM workspace_key WHERE workspace_id = 'starter';
DELETE FROM group_ WHERE workspace_id = 'starter';
DELETE FROM workspace_settings WHERE workspace_id = 'starter';
DELETE FROM workspace WHERE id = 'starter';
END IF;
END
$$

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,15 @@
-- Add up migration script here
UPDATE script SET content = 'import wmill from "https://deno.land/x/wmill@v1.104.0/main.ts";
export async function main() {
await run(
"workspace", "add", "__automation", "admins", Deno.env.get("BASE_INTERNAL_URL") + "/", "--token", Deno.env.get("WM_TOKEN"));
await run("hub", "pull");
}
async function run(...cmd: string[]) {
console.log("Running \"" + cmd.join('' '') + "\"");
await wmill.parse(cmd);
}', summary = 'Synchronize Hub Resource types with instance',
description = 'Basic administrative script to sync latest resource types from hub to share to every workspace. Recommended to run at least once. On a schedule by default.'
WHERE hash = -28028598712388162 AND workspace_id = 'admins';

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,15 @@
-- Add up migration script here
UPDATE script SET content = 'import wmill from "https://deno.land/x/wmill@v1.104.1/main.ts";
export async function main() {
await run(
"workspace", "add", "__automation", "admins", Deno.env.get("BASE_INTERNAL_URL") + "/", "--token", Deno.env.get("WM_TOKEN"));
await run("hub", "pull");
}
async function run(...cmd: string[]) {
console.log("Running \"" + cmd.join('' '') + "\"");
await wmill.parse(cmd);
}', summary = 'Synchronize Hub Resource types with instance',
description = 'Basic administrative script to sync latest resource types from hub to share to every workspace. Recommended to run at least once. On a schedule by default.'
WHERE hash = -28028598712388162 AND workspace_id = 'admins';

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,15 @@
-- Add up migration script here
UPDATE script SET content = 'import wmill from "https://deno.land/x/wmill@v1.105.0/main.ts";
export async function main() {
await run(
"workspace", "add", "__automation", "admins", Deno.env.get("BASE_INTERNAL_URL") + "/", "--token", Deno.env.get("WM_TOKEN"));
await run("hub", "pull");
}
async function run(...cmd: string[]) {
console.log("Running \"" + cmd.join('' '') + "\"");
await wmill.parse(cmd);
}', summary = 'Synchronize Hub Resource types with instance',
description = 'Basic administrative script to sync latest resource types from hub to share to every workspace. Recommended to run at least once. On a schedule by default.'
WHERE hash = -28028598712388162 AND workspace_id = 'admins';

View File

@@ -0,0 +1 @@
-- Add down migration script here

View File

@@ -0,0 +1,18 @@
-- Add up migration script here
DO
$do$
DECLARE
i text;
arr text[] := array['resource', 'script', 'variable', 'schedule', 'flow', 'completed_job'];
BEGIN
FOREACH i IN ARRAY arr
LOOP
EXECUTE FORMAT(
$$
DROP POLICY see_starter ON %1$I;
$$,
i
);
END LOOP;
END
$do$;

View File

@@ -0,0 +1,2 @@
-- Add down migration script here
ALTER TABLE token DROP COLUMN scopes;

View File

@@ -0,0 +1,2 @@
-- Add up migration script here
ALTER TABLE token ADD COLUMN scopes text[];

View File

@@ -0,0 +1,2 @@
-- Add down migration script here
ALTER TABLE script DROP COLUMN envs;

View File

@@ -0,0 +1,2 @@
-- Add up migration script here
ALTER TABLE script ADD COLUMN envs VARCHAR(1000)[];

View File

@@ -10,10 +10,7 @@ path = "./src/lib.rs"
[dependencies]
windmill-parser.workspace = true
windmill-common.workspace = true
phf.workspace = true
unicode-general-category.workspace = true
itertools.workspace = true
anyhow.workspace = true
regex.workspace = true
lazy_static.workspace = true
lazy_static.workspace = true
serde_json.workspace = true

View File

@@ -1,35 +1,48 @@
#![allow(non_snake_case)] // TODO: switch to parse_* function naming
use anyhow::anyhow;
use regex::Regex;
use serde_json::json;
use std::collections::HashMap;
use windmill_parser::{Arg, MainArgSignature, Typ};
pub fn parse_bash_sig(code: &str) -> windmill_common::error::Result<MainArgSignature> {
pub fn parse_bash_sig(code: &str) -> anyhow::Result<MainArgSignature> {
let parsed = parse_file(&code)?;
if let Some(x) = parsed {
let args = x;
Ok(MainArgSignature { star_args: false, star_kwargs: false, args })
} else {
Err(windmill_common::error::Error::BadRequest(
"Error parsing bash script".to_string(),
))
Err(anyhow!("Error parsing bash script".to_string()))
}
}
lazy_static::lazy_static! {
static ref RE: Regex = Regex::new(r#"(?m)^(\w+)="\$(?:(\d+)|\{(\d+):-(.*)\})"$"#).unwrap();
}
fn parse_file(code: &str) -> anyhow::Result<Option<Vec<Arg>>> {
let mut hm = HashMap::new();
let re = Regex::new(r#"(?m)^(\w+)="\$(\d+)"$"#).unwrap();
for cap in re.captures_iter(code) {
hm.insert(cap[2].parse::<i32>()?, cap[1].to_string());
let mut hm: HashMap<i32, (String, Option<String>)> = HashMap::new();
for cap in RE.captures_iter(code) {
hm.insert(
cap.get(2)
.or(cap.get(3))
.and_then(|x| x.as_str().parse::<i32>().ok())
.ok_or_else(|| anyhow!("Impossible to parse arg digit"))?,
(
cap[1].to_string(),
cap.get(4).map(|x| x.as_str().to_string()),
),
);
}
let mut args = vec![];
for i in 1..20 {
if hm.contains_key(&i) {
let (name, default) = hm.get(&i).unwrap();
args.push(Arg {
name: hm[&i].clone(),
name: name.clone(),
typ: Typ::Str(None),
default: None,
default: default.clone().map(|x| json!(x)),
otyp: None,
has_default: false,
});
@@ -43,6 +56,8 @@ fn parse_file(code: &str) -> anyhow::Result<Option<Vec<Arg>>> {
#[cfg(test)]
mod tests {
use serde_json::json;
use super::*;
#[test]
@@ -50,8 +65,7 @@ mod tests {
let code = r#"
token="$1"
image="$2"
digest="${3:-latest}"
foo="$4"
digest="${3:-latest with spaces}"
"#;
//println!("{}", serde_json::to_string()?);
@@ -74,6 +88,13 @@ foo="$4"
typ: Typ::Str(None),
default: None,
has_default: false
},
Arg {
otyp: None,
name: "digest".to_string(),
typ: Typ::Str(None),
default: Some(json!("latest with spaces")),
has_default: false
}
]
}

View File

@@ -10,8 +10,6 @@ path = "./src/lib.rs"
[dependencies]
windmill-parser.workspace = true
windmill-common.workspace = true
phf.workspace = true
unicode-general-category.workspace = true
itertools.workspace = true
anyhow.workspace = true
gosyn.workspace = true

File diff suppressed because it is too large Load Diff

View File

@@ -1,347 +0,0 @@
#![allow(clippy::large_enum_variant)] // TODO: we allow large enum variant for now, let's profile properly to see if we want to box.
use crate::parser_go_token::{Position, Token};
use std::collections::BTreeMap;
// https://pkg.go.dev/go/ast#CommentGroup
#[derive(Debug)]
pub struct CommentGroup {
// List []*Comment // len(List) > 0
}
// https://pkg.go.dev/go/ast#FieldList
#[derive(Debug)]
pub struct FieldList<'a> {
pub opening: Option<Position<'a>>, // position of opening parenthesis/brace, if any
pub list: Vec<Field<'a>>, // field list; or nil
pub closing: Option<Position<'a>>, // position of closing parenthesis/brace, if any
}
// https://pkg.go.dev/go/ast#Field
#[derive(Debug)]
pub struct Field<'a> {
pub doc: Option<CommentGroup>, // associated documentation; or nil
pub names: Option<Vec<Ident<'a>>>, // field/method/(type) parameter names, or type "type"; or nil
pub type_: Option<Expr<'a>>, // field/method/parameter type, type list type; or nil
pub tag: Option<BasicLit<'a>>, // field tag; or nil
pub comment: Option<CommentGroup>, // line comments; or nil
}
// https://pkg.go.dev/go/ast#File
#[derive(Debug)]
pub struct File<'a> {
// package name
pub decls: Vec<Decl<'a>>, // top-level declarations; or nil // list of all comments in the source file
}
// https://pkg.go.dev/go/ast#FuncDecl
#[derive(Debug)]
pub struct FuncDecl<'a> {
pub doc: Option<CommentGroup>, // associated documentation; or nil
pub recv: Option<FieldList<'a>>, // receiver (methods); or nil (functions)
pub name: Ident<'a>, // function/method name
pub type_: FuncType<'a>, // function signature: type and value parameters, results, and position of "func" keyword
pub body: Option<BlockStmt<'a>>, // function body; or nil for external (non-Go) function
}
// https://pkg.go.dev/go/ast#BlockStmt
#[derive(Debug)]
pub struct BlockStmt<'a> {
pub lbrace: Position<'a>, // position of "{"
pub list: Vec<Stmt>,
pub rbrace: Position<'a>, // position of "}", if any (may be absent due to syntax error)
}
// https://pkg.go.dev/go/ast#FuncType
#[derive(Debug)]
pub struct FuncType<'a> {
pub func: Option<Position<'a>>, // position of "func" keyword (token.NoPos if there is no "func")
pub params: FieldList<'a>, // (incoming) parameters; non-nil
pub results: Option<FieldList<'a>>, // (outgoing) results; or nil
}
// https://pkg.go.dev/go/ast#Ident
#[derive(Debug)]
pub struct Ident<'a> {
pub name_pos: Position<'a>, // identifier position
pub name: &'a str, // identifier name
pub obj: Option<Box<Object<'a>>>, // denoted object; or nil
}
// https://pkg.go.dev/go/ast#ValueSpec
#[derive(Debug)]
pub struct ValueSpec<'a> {
pub doc: Option<CommentGroup>, // associated documentation; or nil
pub names: Vec<Ident<'a>>, // value names (len(Names) > 0)
pub type_: Option<Expr<'a>>, // value type; or nil
pub values: Option<Vec<Expr<'a>>>, // initial values; or nil
pub comment: Option<CommentGroup>, // line comments; or nil
}
// https://pkg.go.dev/go/ast#BasicLit
#[derive(Debug)]
pub struct BasicLit<'a> {
pub value_pos: Position<'a>, // literal position
pub kind: Token, // token.INT, token.FLOAT, token.IMAG, token.CHAR, or token.STRING
pub value: &'a str, // literal string; e.g. 42, 0x7f, 3.14, 1e-9, 2.4i, 'a', '\x7f', "foo" or `\m\n\o`
}
// https://pkg.go.dev/go/ast#Object
#[derive(Debug)]
pub struct Object<'a> {
pub kind: ObjKind,
pub name: &'a str, // declared name
pub decl: Option<ObjDecl>, // corresponding Field, XxxSpec, FuncDecl, LabeledStmt, AssignStmt, Scope; or nil
pub data: Option<usize>, // object-specific data; or nil
pub type_: Option<()>, // placeholder for type information; may be nil
}
// https://pkg.go.dev/go/ast#Ellipsis
#[derive(Debug)]
pub struct Ellipsis<'a> {
pub ellipsis: Position<'a>, // position of "..."
pub elt: Option<Box<Expr<'a>>>, // ellipsis element type (parameter lists only); or nil
}
// https://pkg.go.dev/go/ast#Ellipsis
#[derive(Debug)]
pub struct TypeAssertExpr<'a> {
pub x: Box<Expr<'a>>, // expression
pub lparen: Position<'a>, // position of "("
pub type_: Box<Expr<'a>>, // asserted type; nil means type switch X.(type)
pub rparen: Position<'a>, // position of ")"
}
// https://pkg.go.dev/go/ast#SliceExpr
#[derive(Debug)]
pub struct SliceExpr<'a> {
pub x: Box<Expr<'a>>, // expression
pub lbrack: Position<'a>, // position of "["
pub low: Option<Box<Expr<'a>>>, // begin of slice range; or nil
pub high: Option<Box<Expr<'a>>>, // end of slice range; or nil
pub max: Option<Box<Expr<'a>>>, // maximum capacity of slice; or nil
pub slice3: bool, // true if 3-index slice (2 colons present)
pub rbrack: Position<'a>, // position of "]"
}
// https://pkg.go.dev/go/ast#ObjKind
#[derive(Debug)]
pub enum ObjKind {}
#[derive(Debug)]
pub enum ObjDecl {}
// https://pkg.go.dev/go/ast#Decl
#[derive(Debug)]
pub enum Decl<'a> {
FuncDecl(FuncDecl<'a>),
}
// https://pkg.go.dev/go/ast#Scope
#[derive(Debug)]
pub struct Scope<'a> {
pub outer: Option<Box<Scope<'a>>>,
pub objects: BTreeMap<&'a str, Object<'a>>,
}
// https://pkg.go.dev/go/ast#GenDecl
#[derive(Debug)]
pub struct GenDecl<'a> {
pub doc: Option<CommentGroup>, // associated documentation; or nil
pub tok_pos: Position<'a>, // position of Tok
pub tok: Token, // IMPORT, CONST, TYPE, or VAR
pub lparen: Option<Position<'a>>, // position of '(', if any
pub specs: Vec<Spec>,
pub rparen: Option<Position<'a>>, // position of ')', if any
}
// https://pkg.go.dev/go/ast#AssignStmt
#[derive(Debug)]
pub struct AssignStmt<'a> {
pub lhs: Vec<Expr<'a>>,
pub tok_pos: Position<'a>, // position of Tok
pub tok: Token, // assignment token, DEFINE
pub rhs: Vec<Expr<'a>>,
}
// https://pkg.go.dev/go/ast#BinaryExpr
#[derive(Debug)]
pub struct BinaryExpr<'a> {
pub x: Box<Expr<'a>>, // left operand
pub op_pos: Position<'a>, // position of Op
pub op: Token, // operator
pub y: Box<Expr<'a>>, // right operand
}
// https://pkg.go.dev/go/ast#ReturnStmt
#[derive(Debug)]
pub struct ReturnStmt<'a> {
pub return_: Position<'a>, // position of "return" keyword
pub results: Vec<Expr<'a>>, // result expressions; or nil
}
// https://pkg.go.dev/go/ast#TypeSpec
#[derive(Debug)]
pub struct TypeSpec<'a> {
pub doc: Option<CommentGroup>, // associated documentation; or nil
pub name: Option<Ident<'a>>, // type name
pub assign: Option<Position<'a>>, // position of '=', if any
pub type_: Expr<'a>, // *Ident, *ParenExpr, *SelectorExpr, *StarExpr, or any of the *XxxTypes
pub comment: Option<CommentGroup>, // line comments; or nil
}
// https://pkg.go.dev/go/ast#StructType
#[derive(Debug)]
pub struct StructType<'a> {
pub struct_: Position<'a>, // position of "struct" keyword
pub fields: Option<FieldList<'a>>, // list of field declarations
pub incomplete: bool, // true if (source) fields are missing in the Fields list
}
// https://pkg.go.dev/go/ast#StarExpr
#[derive(Debug)]
pub struct StarExpr<'a> {
pub star: Position<'a>, // position of "*"
pub x: Box<Expr<'a>>, // operand
}
// https://pkg.go.dev/go/ast#InterfaceType
#[derive(Debug)]
pub struct InterfaceType<'a> {
pub interface: Position<'a>, // position of "interface" keyword
pub methods: Option<FieldList<'a>>, // list of embedded interfaces, methods, or types
pub incomplete: bool, // true if (source) methods or types are missing in the Methods list
}
// https://pkg.go.dev/go/ast#UnaryExpr
#[derive(Debug)]
pub struct UnaryExpr<'a> {
pub op_pos: Position<'a>, // position of Op
pub op: Token, // operator
pub x: Box<Expr<'a>>, // operand
}
// https://pkg.go.dev/go/ast#CallExpr
#[derive(Debug)]
pub struct CallExpr<'a> {
pub fun: Box<Expr<'a>>, // function expression
pub lparen: Position<'a>, // position of "("
pub args: Option<Vec<Expr<'a>>>, // function arguments; or nil
pub ellipsis: Option<Position<'a>>, // position of "..." (token.NoPos if there is no "...")
pub rparen: Position<'a>, // position of ")"
}
// https://pkg.go.dev/go/ast#SelectorExpr
#[derive(Debug)]
pub struct SelectorExpr<'a> {
pub x: Box<Expr<'a>>, // expression
pub sel: Ident<'a>, // field selector
}
// https://pkg.go.dev/go/ast#ParenExpr
#[derive(Debug)]
pub struct ParenExpr<'a> {
pub lparen: Position<'a>, // position of "("
pub x: Box<Expr<'a>>, // parenthesized expression
pub rparen: Position<'a>, // position of ")"
}
// https://pkg.go.dev/go/ast#FuncLit
#[derive(Debug)]
pub struct FuncLit<'a> {
pub type_: FuncType<'a>, // function type
pub body: BlockStmt<'a>, // function body
}
// https://pkg.go.dev/go/ast#ChanType
#[derive(Debug)]
pub struct ChanType<'a> {
pub begin: Position<'a>, // position of "chan" keyword or "<-" (whichever comes first)
pub arrow: Option<Position<'a>>, // position of "<-" (token.NoPos if there is no "<-")
pub dir: u8, // channel direction
pub value: Box<Expr<'a>>, // value type
}
// htt/opt/visual-studio-code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.htmlps://pkg.go.dev/go/ast#IndexExpr
#[derive(Debug)]
pub struct IndexExpr<'a> {
pub x: Box<Expr<'a>>, // expression
pub lbrack: Position<'a>, // position of "["
pub index: Box<Expr<'a>>, // index expression
pub rbrack: Position<'a>, // position of "]"
}
// https://pkg.go.dev/go/ast#MapType
#[derive(Debug)]
pub struct MapType<'a> {
pub map: Position<'a>,
pub key: Box<Expr<'a>>,
pub value: Box<Expr<'a>>,
}
// https://pkg.go.dev/go/ast#CompositeLit
#[derive(Debug)]
pub struct CompositeLit<'a> {
pub type_: Box<Expr<'a>>, // literal type; or nil
pub lbrace: Position<'a>, // position of "{"
pub elts: Option<Vec<Expr<'a>>>, // list of composite elements; or nil
pub rbrace: Position<'a>, // position of "}"
pub incomplete: bool, // true if (source) expressions are missing in the Elts list
}
// https://pkg.go.dev/go/ast#KeyValueExpr
#[derive(Debug)]
pub struct KeyValueExpr<'a> {
pub key: Box<Expr<'a>>,
pub colon: Position<'a>, // position of ":"
pub value: Box<Expr<'a>>,
}
// https://pkg.go.dev/go/ast#ArrayType
#[derive(Debug)]
pub struct ArrayType<'a> {
pub lbrack: Position<'a>, // position of "["
pub len: Option<Box<Expr<'a>>>, // Ellipsis node for [...]T array types, nil for slice types
pub elt: Box<Expr<'a>>, // element type
}
// https://pkg.go.dev/go/ast#ChanDir
#[derive(Debug)]
pub enum ChanDir {
SEND = 1 << 0,
RECV = 1 << 1,
}
// https://pkg.go.dev/go/ast#Spec
#[derive(Debug)]
pub enum Spec {}
// https://pkg.go.dev/go/ast#Expr
#[derive(Debug)]
pub enum Expr<'a> {
ArrayType(ArrayType<'a>),
BasicLit(BasicLit<'a>),
BinaryExpr(BinaryExpr<'a>),
CallExpr(CallExpr<'a>),
ChanType(ChanType<'a>),
CompositeLit(CompositeLit<'a>),
Ellipsis(Ellipsis<'a>),
FuncLit(FuncLit<'a>),
FuncType(FuncType<'a>),
Ident(Ident<'a>),
IndexExpr(IndexExpr<'a>),
InterfaceType(InterfaceType<'a>),
KeyValueExpr(KeyValueExpr<'a>),
MapType(MapType<'a>),
ParenExpr(ParenExpr<'a>),
SelectorExpr(SelectorExpr<'a>),
SliceExpr(SliceExpr<'a>),
StarExpr(StarExpr<'a>),
StructType(StructType<'a>),
TypeAssertExpr(TypeAssertExpr<'a>),
UnaryExpr(UnaryExpr<'a>),
}
// https://pkg.go.dev/go/ast#Stmt
#[derive(Debug)]
pub enum Stmt {}

View File

@@ -1,948 +0,0 @@
// https://golang.org/ref/spec#Lexical_elements
use crate::parser_go_token::{Position, Token};
use phf::{phf_map, Map};
use std::fmt;
use unicode_general_category::{get_general_category, GeneralCategory};
pub type Step<'a> = (Position<'a>, Token, &'a str);
#[derive(Debug)]
pub enum ScannerError {
HexadecimalNotFound,
OctalNotFound,
UnterminatedComment,
UnterminatedEscapedChar,
UnterminatedRune,
UnterminatedString,
InvalidDirective,
}
impl std::error::Error for ScannerError {}
impl fmt::Display for ScannerError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "scanner error: {:?}", self)
}
}
pub type Result<T> = std::result::Result<T, ScannerError>;
#[derive(Debug)]
pub struct Scanner<'a> {
directory: &'a str,
file: &'a str,
buffer: &'a str,
//
chars: std::iter::Peekable<std::str::Chars<'a>>,
current_char: Option<char>,
current_char_len: usize,
//
offset: usize,
line: usize,
column: usize,
start_offset: usize,
start_line: usize,
start_column: usize,
//
hide_column: bool,
insert_semi: bool,
pending_line_info: Option<LineInfo<'a>>,
}
type LineInfo<'a> = (Option<&'a str>, usize, Option<usize>, bool);
impl<'a> Scanner<'a> {
pub fn new(filename: &'a str, buffer: &'a str) -> Self {
let (directory, file) = filename.rsplit_once('/').unwrap_or(("", filename));
let mut s = Scanner {
directory,
file,
buffer,
//
chars: buffer.chars().peekable(),
current_char: None,
current_char_len: 0,
//
offset: 0,
line: 1,
column: 1,
start_offset: 0,
start_line: 1,
start_column: 1,
//
hide_column: false,
insert_semi: false,
pending_line_info: None,
};
s.next(); // read the first character
s
}
#[allow(clippy::cognitive_complexity)] // Allow complex scan function
pub fn scan(&mut self) -> Result<Step<'a>> {
let insert_semi = self.insert_semi;
self.insert_semi = false;
while let Some(c) = self.current_char {
self.reset_start();
match c {
' ' | '\t' | '\r' => {
self.next();
}
'\n' => {
self.next();
if insert_semi {
return Ok((self.position(), Token::SEMICOLON, "\n"));
}
}
_ => break,
}
}
if let Some(c) = self.current_char {
match c {
'+' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::ADD_ASSIGN, ""));
}
Some('+') => {
self.insert_semi = true;
self.next();
return Ok((self.position(), Token::INC, ""));
}
_ => return Ok((self.position(), Token::ADD, "")),
}
}
'-' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::SUB_ASSIGN, ""));
}
Some('-') => {
self.insert_semi = true;
self.next();
return Ok((self.position(), Token::DEC, ""));
}
_ => return Ok((self.position(), Token::SUB, "")),
}
}
'*' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::MUL_ASSIGN, ""));
}
_ => return Ok((self.position(), Token::MUL, "")),
}
}
'/' => match self.peek() {
Some('=') => {
self.next();
self.next();
return Ok((self.position(), Token::QUO_ASSIGN, ""));
}
Some('/') => {
if insert_semi {
return Ok((self.position(), Token::SEMICOLON, "\n"));
}
return self.scan_line_comment();
}
Some('*') => {
if insert_semi && self.find_line_end() {
return Ok((self.position(), Token::SEMICOLON, "\n"));
}
return self.scan_general_comment();
}
_ => {
self.next();
return Ok((self.position(), Token::QUO, ""));
}
},
'%' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::REM_ASSIGN, ""));
}
_ => return Ok((self.position(), Token::REM, "")),
}
}
'&' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::AND_ASSIGN, ""));
}
Some('&') => {
self.next();
return Ok((self.position(), Token::LAND, ""));
}
Some('^') => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::AND_NOT_ASSIGN, ""));
}
_ => return Ok((self.position(), Token::AND_NOT, "")),
}
}
_ => return Ok((self.position(), Token::AND, "")),
}
}
'|' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::OR_ASSIGN, ""));
}
Some('|') => {
self.next();
return Ok((self.position(), Token::LOR, ""));
}
_ => return Ok((self.position(), Token::OR, "")),
}
}
'^' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::XOR_ASSIGN, ""));
}
_ => return Ok((self.position(), Token::XOR, "")),
}
}
'<' => {
self.next();
match self.current_char {
Some('<') => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::SHL_ASSIGN, ""));
}
_ => return Ok((self.position(), Token::SHL, "")),
}
}
Some('=') => {
self.next();
return Ok((self.position(), Token::LEQ, ""));
}
Some('-') => {
self.next();
return Ok((self.position(), Token::ARROW, ""));
}
_ => return Ok((self.position(), Token::LSS, "")),
}
}
'>' => {
self.next();
match self.current_char {
Some('>') => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::SHR_ASSIGN, ""));
}
_ => {
return Ok((self.position(), Token::SHR, ""));
}
}
}
Some('=') => {
self.next();
return Ok((self.position(), Token::GEQ, ""));
}
_ => return Ok((self.position(), Token::GTR, "")),
}
}
':' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::DEFINE, ""));
}
_ => return Ok((self.position(), Token::COLON, "")),
}
}
'!' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::NEQ, ""));
}
_ => return Ok((self.position(), Token::NOT, "")),
}
}
',' => {
self.next();
return Ok((self.position(), Token::COMMA, ""));
}
'(' => {
self.next();
return Ok((self.position(), Token::LPAREN, ""));
}
')' => {
self.insert_semi = true;
self.next();
return Ok((self.position(), Token::RPAREN, ""));
}
'[' => {
self.next();
return Ok((self.position(), Token::LBRACK, ""));
}
']' => {
self.insert_semi = true;
self.next();
return Ok((self.position(), Token::RBRACK, ""));
}
'{' => {
self.next();
return Ok((self.position(), Token::LBRACE, ""));
}
'}' => {
self.insert_semi = true;
self.next();
return Ok((self.position(), Token::RBRACE, ""));
}
';' => {
self.next();
return Ok((self.position(), Token::SEMICOLON, ";"));
}
'.' => {
self.next();
match self.current_char {
Some('0'..='9') => return self.scan_int_or_float_or_imag(true),
Some('.') => match self.peek() {
Some('.') => {
self.next();
self.next();
return Ok((self.position(), Token::ELLIPSIS, ""));
}
_ => return Ok((self.position(), Token::PERIOD, "")),
},
_ => return Ok((self.position(), Token::PERIOD, "")),
}
}
'=' => {
self.next();
match self.current_char {
Some('=') => {
self.next();
return Ok((self.position(), Token::EQL, ""));
}
_ => return Ok((self.position(), Token::ASSIGN, "")),
}
}
'0'..='9' => return self.scan_int_or_float_or_imag(false),
'\'' => return self.scan_rune(),
'"' => return self.scan_interpreted_string(),
'`' => return self.scan_raw_string(),
_ => return self.scan_pkg_or_keyword_or_ident(),
};
}
self.reset_start();
if insert_semi {
Ok((self.position(), Token::SEMICOLON, "\n"))
} else {
Ok((self.position(), Token::EOF, ""))
}
}
// https://golang.org/ref/spec#Keywords
// https://golang.org/ref/spec#Identifiers
fn scan_pkg_or_keyword_or_ident(&mut self) -> Result<Step<'a>> {
self.next();
while let Some(c) = self.current_char {
if !(is_letter(c) || is_unicode_digit(c)) {
break;
}
self.next()
}
let pos = self.position();
let literal = self.literal();
if literal.len() > 1 {
if let Some(&token) = KEYWORDS.get(literal) {
self.insert_semi = matches!(
token,
Token::BREAK | Token::CONTINUE | Token::FALLTHROUGH | Token::RETURN
);
return Ok((pos, token, literal));
}
}
self.insert_semi = true;
Ok((pos, Token::IDENT, literal))
}
// https://golang.org/ref/spec#Integer_literals
// https://golang.org/ref/spec#Floating-point_literals
// https://golang.org/ref/spec#Imaginary_literals
fn scan_int_or_float_or_imag(&mut self, preceding_dot: bool) -> Result<Step<'a>> {
self.insert_semi = true;
let mut token = Token::INT;
let mut digits = "_0123456789";
let mut exp = "eE";
if !preceding_dot {
if matches!(self.current_char, Some('0')) {
self.next();
match self.current_char {
Some('b' | 'B') => {
digits = "_01";
exp = "";
self.next();
}
Some('o' | 'O') => {
digits = "_01234567";
exp = "";
self.next();
}
Some('x' | 'X') => {
digits = "_0123456789abcdefABCDEF";
exp = "pP";
self.next();
}
_ => {}
};
}
while let Some(c) = self.current_char {
if !digits.contains(c) {
break;
}
self.next();
}
}
if preceding_dot || matches!(self.current_char, Some('.')) {
token = Token::FLOAT;
self.next();
while let Some(c) = self.current_char {
if !digits.contains(c) {
break;
}
self.next();
}
}
if !exp.is_empty() {
if let Some(c) = self.current_char {
if exp.contains(c) {
token = Token::FLOAT;
self.next();
if matches!(self.current_char, Some('-' | '+')) {
self.next();
}
while let Some(c) = self.current_char {
if !matches!(c, '_' | '0'..='9') {
break;
}
self.next();
}
}
}
}
if matches!(self.current_char, Some('i')) {
token = Token::IMAG;
self.next();
}
Ok((self.position(), token, self.literal()))
}
// https://golang.org/ref/spec#Rune_literals
fn scan_rune(&mut self) -> Result<Step<'a>> {
self.insert_semi = true;
self.next();
match self.current_char {
Some('\\') => self.require_escaped_char::<'\''>()?,
Some(_) => self.next(),
_ => return Err(ScannerError::UnterminatedRune),
}
if matches!(self.current_char, Some('\'')) {
self.next();
return Ok((self.position(), Token::CHAR, self.literal()));
}
Err(ScannerError::UnterminatedRune)
}
// https://golang.org/ref/spec#String_literals
fn scan_interpreted_string(&mut self) -> Result<Step<'a>> {
self.insert_semi = true;
self.next();
while let Some(c) = self.current_char {
match c {
'"' => {
self.next();
return Ok((self.position(), Token::STRING, self.literal()));
}
'\\' => self.require_escaped_char::<'"'>()?,
_ => self.next(),
}
}
Err(ScannerError::UnterminatedString)
}
// https://golang.org/ref/spec#String_literals
fn scan_raw_string(&mut self) -> Result<Step<'a>> {
self.insert_semi = true;
self.next();
while let Some(c) = self.current_char {
match c {
'`' => {
self.next();
return Ok((self.position(), Token::STRING, self.literal()));
}
_ => self.next(),
}
}
Err(ScannerError::UnterminatedString)
}
// https://golang.org/ref/spec#Comments
fn scan_general_comment(&mut self) -> Result<Step<'a>> {
self.next();
self.next();
while let Some(c) = self.current_char {
match c {
'*' => {
self.next();
if matches!(self.current_char, Some('/')) {
self.next();
let pos = self.position();
let lit = self.literal();
// look for compiler directives
self.directive(&lit["/*".len()..lit.len() - "*/".len()], true)?;
return Ok((pos, Token::COMMENT, lit));
}
}
_ => self.next(),
}
}
Err(ScannerError::UnterminatedComment)
}
// https://golang.org/ref/spec#Comments
fn scan_line_comment(&mut self) -> Result<Step<'a>> {
self.next();
self.next();
while let Some(c) = self.current_char {
if is_newline(c) {
break;
}
self.next();
}
let pos = self.position();
let lit = self.literal();
// look for compiler directives (at the beginning of line)
if self.start_column == 1 {
self.directive(lit["//".len()..].trim_end(), false)?;
}
Ok((pos, Token::COMMENT, self.literal()))
}
// https://pkg.go.dev/cmd/compile#hdr-Compiler_Directives
fn directive(&mut self, input: &'a str, immediate: bool) -> Result<()> {
if let Some(line_directive) = input.strip_prefix("line ") {
self.pending_line_info = self.parse_line_directive(line_directive)?;
if immediate {
self.consume_pending_line_info();
}
}
Ok(())
}
fn parse_line_directive(&mut self, line_directive: &'a str) -> Result<Option<LineInfo<'a>>> {
if let Some((file, line)) = line_directive.rsplit_once(':') {
let line = line.parse().map_err(|_| ScannerError::InvalidDirective)?;
if let Some((file, l)) = file.rsplit_once(':') {
if let Ok(l) = l.parse() {
//line :line:col
//line filename:line:col
/*line :line:col*/
/*line filename:line:col*/
let file = if !file.is_empty() { Some(file) } else { None };
let col = Some(line);
let line = l;
let hide_column = false;
return Ok(Some((file, line, col, hide_column)));
}
}
//line :line
//line filename:line
/*line :line*/
/*line filename:line*/
Ok(Some((Some(file), line, None, true)))
} else {
Ok(None)
}
}
const fn find_line_end(&self) -> bool {
let buffer = self.buffer.as_bytes();
let mut in_comment = true;
let mut i = self.offset;
let max = self.buffer.len();
while i < max {
let c = buffer[i] as char;
if i < max - 1 {
let n = buffer[i + 1] as char;
if !in_comment && c == '/' && n == '/' {
return true;
}
if c == '/' && n == '*' {
i += 2;
in_comment = true;
continue;
}
if c == '*' && n == '/' {
i += 2;
in_comment = false;
continue;
}
}
if is_newline(c) {
return true;
}
if !in_comment && !matches!(c, ' ' | '\t' | '\r') {
return false;
}
i += 1;
}
!in_comment
}
fn consume_pending_line_info(&mut self) {
if let Some(line_info) = self.pending_line_info.take() {
if let Some(file) = line_info.0 {
self.file = file;
}
self.line = line_info.1;
if let Some(column) = line_info.2 {
self.column = column;
}
self.hide_column = line_info.3;
}
}
fn peek(&mut self) -> Option<char> {
self.chars.peek().copied()
}
fn next(&mut self) {
self.offset += self.current_char_len;
self.column += self.current_char_len;
let last_char = self.current_char;
self.current_char = self.chars.next();
if let Some(c) = self.current_char {
self.current_char_len = c.len_utf8();
if matches!(last_char, Some('\n')) {
self.line += 1;
self.column = 1;
self.consume_pending_line_info();
}
} else {
self.current_char_len = 0
}
}
const fn position(&self) -> Position<'a> {
Position {
directory: self.directory,
file: self.file,
offset: self.start_offset,
line: self.start_line,
column: if self.hide_column {
0
} else {
self.start_column
},
}
}
fn reset_start(&mut self) {
self.start_offset = self.offset;
self.start_line = self.line;
self.start_column = self.column;
}
fn literal(&self) -> &'a str {
&self.buffer[self.start_offset..self.offset]
}
fn require_escaped_char<const DELIM: char>(&mut self) -> Result<()> {
self.next();
let c = self
.current_char
.ok_or(ScannerError::UnterminatedEscapedChar)?;
// TODO: move this to the match when const generics can be referenced in patterns
if c == DELIM {
self.next();
return Ok(());
}
match c {
'a' | 'b' | 'f' | 'n' | 'r' | 't' | 'v' | '\\' => self.next(),
'x' => {
self.next();
self.require_hex_digits::<2>()?
}
'u' => {
self.next();
self.require_hex_digits::<4>()?;
}
'U' => {
self.next();
self.require_hex_digits::<8>()?;
}
'0'..='7' => self.require_octal_digits::<3>()?,
_ => return Err(ScannerError::UnterminatedEscapedChar),
}
Ok(())
}
fn require_octal_digits<const COUNT: usize>(&mut self) -> Result<()> {
for _ in 0..COUNT {
let c = self.current_char.ok_or(ScannerError::OctalNotFound)?;
if !is_octal_digit(c) {
return Err(ScannerError::OctalNotFound);
}
self.next();
}
Ok(())
}
fn require_hex_digits<const COUNT: usize>(&mut self) -> Result<()> {
for _ in 0..COUNT {
let c = self.current_char.ok_or(ScannerError::HexadecimalNotFound)?;
if !is_hex_digit(c) {
return Err(ScannerError::HexadecimalNotFound);
}
self.next();
}
Ok(())
}
}
impl<'a> IntoIterator for Scanner<'a> {
type Item = Result<Step<'a>>;
type IntoIter = IntoIter<'a>;
fn into_iter(self) -> Self::IntoIter {
Self::IntoIter::new(self)
}
}
pub struct IntoIter<'a> {
scanner: Scanner<'a>,
done: bool,
}
impl<'a> IntoIter<'a> {
const fn new(scanner: Scanner<'a>) -> Self {
Self { scanner, done: false }
}
}
impl<'a> Iterator for IntoIter<'a> {
type Item = Result<Step<'a>>;
fn next(&mut self) -> Option<Self::Item> {
if self.done {
return None;
}
match self.scanner.scan() {
Ok((pos, tok, lit)) => {
if tok == Token::EOF {
self.done = true;
}
Some(Ok((pos, tok, lit)))
}
Err(err) => {
self.done = true;
Some(Err(err))
}
}
}
}
// https://golang.org/ref/spec#Letters_and_digits
fn is_letter(c: char) -> bool {
c == '_' || is_unicode_letter(c)
}
//const fn is_decimal_digit(c: char) -> bool {
//matches!(c, '0'..='9')
//}
//const fn is_binary_digit(c: char) -> bool {
//matches!(c, '0'..='1')
//}
const fn is_octal_digit(c: char) -> bool {
matches!(c, '0'..='7')
}
const fn is_hex_digit(c: char) -> bool {
matches!(c, '0'..='9' | 'A'..='F' | 'a'..='f')
}
// https://golang.org/ref/spec#Characters
const fn is_newline(c: char) -> bool {
c == '\n'
}
//const fn is_unicode_char(c: char) -> bool {
//c != '\n'
//}
fn is_unicode_letter(c: char) -> bool {
matches!(
get_general_category(c),
GeneralCategory::UppercaseLetter
| GeneralCategory::LowercaseLetter
| GeneralCategory::TitlecaseLetter
| GeneralCategory::ModifierLetter
| GeneralCategory::OtherLetter
)
}
fn is_unicode_digit(c: char) -> bool {
get_general_category(c) == GeneralCategory::DecimalNumber
}
// https://golang.org/ref/spec#Keywords
static KEYWORDS: Map<&'static str, Token> = phf_map! {
"break" => Token::BREAK,
"case" => Token::CASE,
"chan" => Token::CHAN,
"const" => Token::CONST,
"continue" => Token::CONTINUE,
"default" => Token::DEFAULT,
"defer" => Token::DEFER,
"else" => Token::ELSE,
"fallthrough" => Token::FALLTHROUGH,
"for" => Token::FOR,
"func" => Token::FUNC,
"go" => Token::GO,
"goto" => Token::GOTO,
"if" => Token::IF,
"import" => Token::IMPORT,
"interface" => Token::INTERFACE,
"map" => Token::MAP,
"package" => Token::PACKAGE,
"range" => Token::RANGE,
"return" => Token::RETURN,
"select" => Token::SELECT,
"struct" => Token::STRUCT,
"switch" => Token::SWITCH,
"type" => Token::TYPE,
"var" => Token::VAR,
};
#[cfg(test)]
mod tests {
use super::Scanner;
#[test] // fuzz
fn it_should_return_an_error_on_missing_line_number() {
let input = "/*line :*/";
let mut out: Vec<_> = Scanner::new(file!(), input).into_iter().collect();
assert!(out.pop().unwrap().is_err());
}
}

View File

@@ -1,273 +0,0 @@
// https://cs.opensource.google/go/go/+/refs/tags/go1.17.2:src/go/token/token.go
#![allow(non_camel_case_types)] // For consistency with the Go tokens
use std::fmt;
#[derive(Clone, Copy, Debug, Default)]
pub struct Position<'a> {
pub directory: &'a str,
pub file: &'a str,
pub offset: usize,
pub line: usize,
pub column: usize,
}
impl<'a> fmt::Display for Position<'a> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if self.file.is_empty() {
write!(f, ":{}:{}", self.line, self.column)
} else if self.file.starts_with('/') {
write!(f, "{}:{}:{}", self.file, self.line, self.column)
} else {
write!(
f,
"{}/{}:{}:{}",
self.directory, self.file, self.line, self.column
)
}
}
}
#[derive(Debug, Clone, Copy, Eq, PartialEq)]
pub enum Token {
EOF,
COMMENT,
IDENT, // main
INT, // 12345
FLOAT, // 123.45
IMAG, // 123.45i
CHAR, // 'a'
STRING, // "abc"
ADD, // +
SUB, // -
MUL, // *
QUO, // /
REM, // %
AND, // &
OR, // |
XOR, // ^
SHL, // <<
SHR, // >>
AND_NOT, // &^
ADD_ASSIGN, // +=
SUB_ASSIGN, // -=
MUL_ASSIGN, // *=
QUO_ASSIGN, // /=
REM_ASSIGN, // %=
AND_ASSIGN, // &=
OR_ASSIGN, // |=
XOR_ASSIGN, // ^=
SHL_ASSIGN, // <<=
SHR_ASSIGN, // >>=
AND_NOT_ASSIGN, // &^=
LAND, // &&
LOR, // ||
ARROW, // <-
INC, // ++
DEC, // --
EQL, // ==
LSS, // <
GTR, // >
ASSIGN, // =
NOT, // !
NEQ, // !=
LEQ, // <=
GEQ, // >=
DEFINE, // :=
ELLIPSIS, // ...
LPAREN, // (
LBRACK, // [
LBRACE, // {
COMMA, // ,
PERIOD, // .
RPAREN, // )
RBRACK, // ]
RBRACE, // }
SEMICOLON, // ;
COLON, // :
BREAK,
CASE,
CHAN,
CONST,
CONTINUE,
DEFAULT,
DEFER,
ELSE,
FALLTHROUGH,
FOR,
FUNC,
GO,
GOTO,
IF,
IMPORT,
INTERFACE,
MAP,
PACKAGE,
RANGE,
RETURN,
SELECT,
STRUCT,
SWITCH,
TYPE,
VAR,
}
impl Token {
pub const fn is_assign_op(&self) -> bool {
use Token::*;
matches!(
self,
ADD_ASSIGN
| SUB_ASSIGN
| MUL_ASSIGN
| QUO_ASSIGN
| REM_ASSIGN
| AND_ASSIGN
| OR_ASSIGN
| XOR_ASSIGN
| SHL_ASSIGN
| SHR_ASSIGN
| AND_NOT_ASSIGN
)
}
// https://go.dev/ref/spec#Operator_precedence
pub fn precedence(&self) -> u8 {
use Token::*;
match self {
MUL | QUO | REM | SHL | SHR | AND | AND_NOT => 5,
ADD | SUB | OR | XOR => 4,
EQL | NEQ | LSS | LEQ | GTR | GEQ => 3,
LAND => 2,
LOR => 1,
_ => unreachable!(
"precedence() is only supported for binary operators, called with: {:?}",
self
),
}
}
pub const fn lowest_precedence() -> u8 {
0
}
}
impl From<&Token> for &'static str {
fn from(token: &Token) -> Self {
use Token::*;
match token {
EOF => "EOF",
COMMENT => "COMMENT",
IDENT => "IDENT",
INT => "INT",
FLOAT => "FLOAT",
IMAG => "IMAG",
CHAR => "CHAR",
STRING => "STRING",
ADD => "+",
SUB => "-",
MUL => "*",
QUO => "/",
REM => "%",
AND => "&",
OR => "|",
XOR => "^",
SHL => "<<",
SHR => ">>",
AND_NOT => "&^",
ADD_ASSIGN => "+=",
SUB_ASSIGN => "-=",
MUL_ASSIGN => "*=",
QUO_ASSIGN => "/=",
REM_ASSIGN => "%=",
AND_ASSIGN => "&=",
OR_ASSIGN => "|=",
XOR_ASSIGN => "^=",
SHL_ASSIGN => "<<=",
SHR_ASSIGN => ">>=",
AND_NOT_ASSIGN => "&^=",
LAND => "&&",
LOR => "||",
ARROW => "<-",
INC => "++",
DEC => "--",
EQL => "==",
LSS => "<",
GTR => ">",
ASSIGN => "=",
NOT => "!",
NEQ => "!=",
LEQ => "<=",
GEQ => ">=",
DEFINE => ":=",
ELLIPSIS => "...",
LPAREN => "(",
LBRACK => "[",
LBRACE => "{",
COMMA => ",",
PERIOD => ".",
RPAREN => ")",
RBRACK => "]",
RBRACE => "}",
SEMICOLON => ";",
COLON => ":",
BREAK => "break",
CASE => "case",
CHAN => "chan",
CONST => "const",
CONTINUE => "continue",
DEFAULT => "default",
DEFER => "defer",
ELSE => "else",
FALLTHROUGH => "fallthrough",
FOR => "for",
FUNC => "func",
GO => "go",
GOTO => "goto",
IF => "if",
IMPORT => "import",
INTERFACE => "interface",
MAP => "map",
PACKAGE => "package",
RANGE => "range",
RETURN => "return",
SELECT => "select",
STRUCT => "struct",
SWITCH => "switch",
TYPE => "type",
VAR => "var",
}
}
}

View File

@@ -0,0 +1,20 @@
[package]
name = "windmill-parser-py-imports"
version.workspace = true
edition.workspace = true
authors.workspace = true
[lib]
name = "windmill_parser_py_imports"
path = "./src/lib.rs"
[dependencies]
windmill-parser.workspace = true
windmill-common.workspace = true
rustpython-parser.workspace = true
phf.workspace = true
itertools.workspace = true
regex.workspace = true
serde_json.workspace = true
anyhow.workspace = true
lazy_static.workspace = true

View File

@@ -0,0 +1,459 @@
/*
* Author: Ruben Fiszel
* Copyright: Windmill Labs, Inc 2022
* This file and its contents are licensed under the AGPLv3 License.
* Please see the included NOTICE for copyright information and
* LICENSE-AGPL for a copy of the license.
*/
use itertools::Itertools;
use lazy_static::lazy_static;
use phf::phf_map;
use regex::Regex;
use windmill_common::error;
use rustpython_parser::ast::{Located, StmtKind};
use rustpython_parser::parser::parse_program;
const DEF_MAIN: &str = "def main(";
static PYTHON_IMPORTS_REPLACEMENT: phf::Map<&'static str, &'static str> = phf_map! {
"psycopg2" => "psycopg2-binary",
"psycopg" => "psycopg[binary, pool]",
"yaml" => "pyyaml",
"git" => "GitPython",
"u" => "requests",
"f" => "requests",
"." => "requests",
"shopify" => "ShopifyAPI",
"seleniumwire" => "selenium-wire",
"openbb-terminal" => "openbb[all]",
"riskfolio" => "riskfolio-lib",
"smb" => "pysmb",
"PIL" => "Pillow",
};
fn replace_import(x: String) -> String {
PYTHON_IMPORTS_REPLACEMENT
.get(&x)
.map(|x| x.to_owned())
.unwrap_or(&x)
.to_string()
}
lazy_static! {
static ref RE: Regex = Regex::new(r"^\#\s?(\S+)$").unwrap();
}
pub fn parse_python_imports(code: &str) -> error::Result<Vec<String>> {
let find_requirements = code
.lines()
.find_position(|x| x.starts_with("#requirements:") || x.starts_with("# requirements:"));
if let Some((pos, _)) = find_requirements {
let lines = code
.lines()
.skip(pos + 1)
.map_while(|x| {
RE.captures(x)
.map(|x| x.get(1).unwrap().as_str().to_string())
})
.collect();
Ok(lines)
} else {
let code = code.split(DEF_MAIN).next().unwrap_or("");
let ast = parse_program(code, "main.py").map_err(|e| {
error::Error::ExecutionErr(format!("Error parsing code: {}", e.to_string()))
})?;
let mut imports: Vec<String> = ast
.into_iter()
.filter_map(|x| match x {
Located { node, .. } => match node {
StmtKind::Import { names } => Some(
names
.into_iter()
.map(|x| {
let name = x.node.name;
if name.starts_with('.') {
".".to_string()
} else {
name.split('.').next().unwrap_or("").to_string()
}
})
.map(replace_import)
.collect::<Vec<String>>(),
),
StmtKind::ImportFrom { level: Some(i), .. } if i > 0 => {
Some(vec!["requests".to_string()])
}
StmtKind::ImportFrom { level: _, module: Some(mod_), names: _ } => {
let imprt = mod_.split('.').next().unwrap_or("").replace("_", "-");
Some(vec![replace_import(imprt)])
}
_ => None,
},
})
.flatten()
.filter(|x| !STDIMPORTS.contains(&x.as_str()))
.unique()
.collect();
imports.sort();
Ok(imports)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse_python_imports() -> anyhow::Result<()> {
//let code = "print(2 + 3, fd=sys.stderr)";
let code = "
import os
import wmill
from zanzibar.estonie import talin
import matplotlib.pyplot as plt
from . import tests
def main():
pass
";
let r = parse_python_imports(code)?;
// println!("{}", serde_json::to_string(&r)?);
assert_eq!(r, vec!["matplotlib", "requests", "wmill", "zanzibar"]);
Ok(())
}
#[test]
fn test_parse_python_imports2() -> anyhow::Result<()> {
//let code = "print(2 + 3, fd=sys.stderr)";
let code = "
#requirements:
#burkina=0.4
#nigeria
#
#congo
import os
import wmill
from zanzibar.estonie import talin
def main():
pass
";
let r = parse_python_imports(code)?;
println!("{}", serde_json::to_string(&r)?);
assert_eq!(r, vec!["burkina=0.4", "nigeria"]);
Ok(())
}
}
const STDIMPORTS: [&str; 301] = [
"__future__",
"_abc",
"_aix_support",
"_ast",
"_asyncio",
"_bisect",
"_blake2",
"_bootsubprocess",
"_bz2",
"_codecs",
"_codecs_cn",
"_codecs_hk",
"_codecs_iso2022",
"_codecs_jp",
"_codecs_kr",
"_codecs_tw",
"_collections",
"_collections_abc",
"_compat_pickle",
"_compression",
"_contextvars",
"_crypt",
"_csv",
"_ctypes",
"_curses",
"_curses_panel",
"_datetime",
"_dbm",
"_decimal",
"_elementtree",
"_frozen_importlib",
"_frozen_importlib_external",
"_functools",
"_gdbm",
"_hashlib",
"_heapq",
"_imp",
"_io",
"_json",
"_locale",
"_lsprof",
"_lzma",
"_markupbase",
"_md5",
"_msi",
"_multibytecodec",
"_multiprocessing",
"_opcode",
"_operator",
"_osx_support",
"_overlapped",
"_pickle",
"_posixshmem",
"_posixsubprocess",
"_py_abc",
"_pydecimal",
"_pyio",
"_queue",
"_random",
"_sha1",
"_sha256",
"_sha3",
"_sha512",
"_signal",
"_sitebuiltins",
"_socket",
"_sqlite3",
"_sre",
"_ssl",
"_stat",
"_statistics",
"_string",
"_strptime",
"_struct",
"_symtable",
"_thread",
"_threading_local",
"_tkinter",
"_tracemalloc",
"_uuid",
"_warnings",
"_weakref",
"_weakrefset",
"_winapi",
"_zoneinfo",
"abc",
"aifc",
"antigravity",
"argparse",
"array",
"ast",
"asynchat",
"asyncio",
"asyncore",
"atexit",
"audioop",
"base64",
"bdb",
"binascii",
"binhex",
"bisect",
"builtins",
"bz2",
"cProfile",
"calendar",
"cgi",
"cgitb",
"chunk",
"cmath",
"cmd",
"code",
"codecs",
"codeop",
"collections",
"colorsys",
"compileall",
"concurrent",
"configparser",
"contextlib",
"contextvars",
"copy",
"copyreg",
"crypt",
"csv",
"ctypes",
"curses",
"dataclasses",
"datetime",
"dbm",
"decimal",
"difflib",
"dis",
"distutils",
"doctest",
"email",
"encodings",
"ensurepip",
"enum",
"errno",
"faulthandler",
"fcntl",
"filecmp",
"fileinput",
"fnmatch",
"fractions",
"ftplib",
"functools",
"gc",
"genericpath",
"getopt",
"getpass",
"gettext",
"glob",
"graphlib",
"grp",
"gzip",
"hashlib",
"heapq",
"hmac",
"html",
"http",
"idlelib",
"imaplib",
"imghdr",
"imp",
"importlib",
"inspect",
"io",
"ipaddress",
"itertools",
"json",
"keyword",
"lib2to3",
"linecache",
"locale",
"logging",
"lzma",
"mailbox",
"mailcap",
"marshal",
"math",
"mimetypes",
"mmap",
"modulefinder",
"msilib",
"msvcrt",
"multiprocessing",
"netrc",
"nis",
"nntplib",
"nt",
"ntpath",
"nturl2path",
"numbers",
"opcode",
"operator",
"optparse",
"os",
"ossaudiodev",
"pathlib",
"pdb",
"pickle",
"pickletools",
"pipes",
"pkgutil",
"platform",
"plistlib",
"poplib",
"posix",
"posixpath",
"pprint",
"profile",
"pstats",
"pty",
"pwd",
"py_compile",
"pyclbr",
"pydoc",
"pydoc_data",
"pyexpat",
"queue",
"quopri",
"random",
"re",
"readline",
"reprlib",
"resource",
"rlcompleter",
"runpy",
"sched",
"secrets",
"select",
"selectors",
"shelve",
"shlex",
"shutil",
"signal",
"site",
"smtpd",
"smtplib",
"sndhdr",
"socket",
"socketserver",
"spwd",
"sqlite3",
"sre_compile",
"sre_constants",
"sre_parse",
"ssl",
"stat",
"statistics",
"string",
"stringprep",
"struct",
"subprocess",
"sunau",
"symtable",
"sys",
"sysconfig",
"syslog",
"tabnanny",
"tarfile",
"telnetlib",
"tempfile",
"termios",
"textwrap",
"this",
"threading",
"time",
"timeit",
"tkinter",
"token",
"tokenize",
"trace",
"traceback",
"tracemalloc",
"tty",
"turtle",
"turtledemo",
"types",
"typing",
"unicodedata",
"unittest",
"urllib",
"uu",
"uuid",
"venv",
"warnings",
"wave",
"weakref",
"webbrowser",
"winreg",
"winsound",
"wsgiref",
"xdrlib",
"xml",
"xmlrpc",
"zipapp",
"zipfile",
"zipimport",
"",
];

View File

@@ -10,11 +10,7 @@ path = "./src/lib.rs"
[dependencies]
windmill-parser.workspace = true
windmill-common.workspace = true
rustpython-parser.workspace = true
phf.workspace = true
itertools.workspace = true
regex.workspace = true
serde_json.workspace = true
anyhow.workspace = true
lazy_static.workspace = true

View File

@@ -9,18 +9,12 @@
use std::collections::HashMap;
use itertools::Itertools;
use lazy_static::lazy_static;
use phf::phf_map;
use regex::Regex;
use serde_json::json;
use windmill_common::error;
use windmill_parser::{json_to_typ, Arg, MainArgSignature, Typ};
use rustpython_parser::{
ast::{Constant, ExprKind, Located, StmtKind},
parser,
};
use rustpython_parser::ast::{Constant, ExprKind, Located, StmtKind};
use rustpython_parser::parser::parse_program;
const DEF_MAIN: &str = "def main(";
const FUNCTION_CALL: &str = "<function call>";
@@ -59,16 +53,13 @@ fn filter_non_main(code: &str) -> String {
return filtered_code;
}
pub fn parse_python_signature(code: &str) -> error::Result<MainArgSignature> {
pub fn parse_python_signature(code: &str) -> anyhow::Result<MainArgSignature> {
let filtered_code = filter_non_main(code);
if filtered_code.is_empty() {
return Err(error::Error::BadRequest(
"No main function found".to_string(),
));
return Err(anyhow::anyhow!("No main function found".to_string(),));
}
let ast = parser::parse_program(&filtered_code, "main.py").map_err(|e| {
error::Error::ExecutionErr(format!("Error parsing code: {}", e.to_string()))
})?;
let ast = parse_program(&filtered_code, "main.py")
.map_err(|e| anyhow::anyhow!("Error parsing code: {}", e.to_string()))?;
let param = ast.into_iter().find_map(|x| match x {
Located { node: StmtKind::FunctionDef { name, args, .. }, .. } if &name == "main" => {
Some(*args)
@@ -122,7 +113,7 @@ pub fn parse_python_signature(code: &str) -> error::Result<MainArgSignature> {
.collect(),
})
} else {
Err(error::Error::ExecutionErr(
Err(anyhow::anyhow!(
"main function was not findable".to_string(),
))
}
@@ -136,10 +127,7 @@ fn to_value(et: &ExprKind) -> Option<serde_json::Value> {
.into_iter()
.zip(values)
.map(|(k, v)| {
let key = k
.as_ref()
.map(|x| x.node.clone())
.and_then(|n| to_value(&n))
let key = to_value(&k.node)
.and_then(|x| match x {
serde_json::Value::String(s) => Some(s),
_ => None,
@@ -176,77 +164,6 @@ fn constant_to_value(c: &Constant) -> serde_json::Value {
}
}
static PYTHON_IMPORTS_REPLACEMENT: phf::Map<&'static str, &'static str> = phf_map! {
"psycopg2" => "psycopg2-binary",
"psycopg" => "psycopg[binary, pool]",
"yaml" => "pyyaml",
"git" => "GitPython",
"u" => "requests",
"f" => "requests",
"shopify" => "ShopifyAPI",
"seleniumwire" => "selenium-wire",
"openbb-terminal" => "openbb[all]",
};
fn replace_import(x: String) -> String {
PYTHON_IMPORTS_REPLACEMENT
.get(&x)
.map(|x| x.to_owned())
.unwrap_or(&x)
.to_string()
}
lazy_static! {
static ref RE: Regex = Regex::new(r"^\#\s?(\S+)$").unwrap();
}
pub fn parse_python_imports(code: &str) -> error::Result<Vec<String>> {
let find_requirements = code
.lines()
.find_position(|x| x.starts_with("#requirements:") || x.starts_with("# requirements:"));
if let Some((pos, _)) = find_requirements {
let lines = code
.lines()
.skip(pos + 1)
.map_while(|x| {
RE.captures(x)
.map(|x| x.get(1).unwrap().as_str().to_string())
})
.collect();
Ok(lines)
} else {
let code = code.split(DEF_MAIN).next().unwrap_or("");
let ast = parser::parse_program(code, "main.py").map_err(|e| {
error::Error::ExecutionErr(format!("Error parsing code: {}", e.to_string()))
})?;
let imports = ast
.into_iter()
.filter_map(|x| match x {
Located { node, .. } => match node {
StmtKind::Import { names } => Some(
names
.into_iter()
.map(|x| x.node.name.split('.').next().unwrap_or("").to_string())
.map(replace_import)
.collect::<Vec<String>>(),
),
StmtKind::ImportFrom { level: _, module: Some(mod_), names: _ } => {
let imprt = mod_.split('.').next().unwrap_or("").replace("_", "-");
Some(vec![replace_import(imprt)])
}
_ => None,
},
})
.flatten()
.filter(|x| !STDIMPORTS.contains(&x.as_str()))
.unique()
.collect();
Ok(imports)
}
}
#[cfg(test)]
mod tests {
@@ -434,353 +351,4 @@ def main(test1: str,
Ok(())
}
#[test]
fn test_parse_python_imports() -> anyhow::Result<()> {
//let code = "print(2 + 3, fd=sys.stderr)";
let code = "
import os
import wmill
from zanzibar.estonie import talin
import matplotlib.pyplot as plt
def main():
pass
";
let r = parse_python_imports(code)?;
// println!("{}", serde_json::to_string(&r)?);
assert_eq!(r, vec!["wmill", "zanzibar", "matplotlib"]);
Ok(())
}
#[test]
fn test_parse_python_imports2() -> anyhow::Result<()> {
//let code = "print(2 + 3, fd=sys.stderr)";
let code = "
#requirements:
#burkina=0.4
#nigeria
#
#congo
import os
import wmill
from zanzibar.estonie import talin
def main():
pass
";
let r = parse_python_imports(code)?;
println!("{}", serde_json::to_string(&r)?);
assert_eq!(r, vec!["burkina=0.4", "nigeria"]);
Ok(())
}
}
const STDIMPORTS: [&str; 301] = [
"__future__",
"_abc",
"_aix_support",
"_ast",
"_asyncio",
"_bisect",
"_blake2",
"_bootsubprocess",
"_bz2",
"_codecs",
"_codecs_cn",
"_codecs_hk",
"_codecs_iso2022",
"_codecs_jp",
"_codecs_kr",
"_codecs_tw",
"_collections",
"_collections_abc",
"_compat_pickle",
"_compression",
"_contextvars",
"_crypt",
"_csv",
"_ctypes",
"_curses",
"_curses_panel",
"_datetime",
"_dbm",
"_decimal",
"_elementtree",
"_frozen_importlib",
"_frozen_importlib_external",
"_functools",
"_gdbm",
"_hashlib",
"_heapq",
"_imp",
"_io",
"_json",
"_locale",
"_lsprof",
"_lzma",
"_markupbase",
"_md5",
"_msi",
"_multibytecodec",
"_multiprocessing",
"_opcode",
"_operator",
"_osx_support",
"_overlapped",
"_pickle",
"_posixshmem",
"_posixsubprocess",
"_py_abc",
"_pydecimal",
"_pyio",
"_queue",
"_random",
"_sha1",
"_sha256",
"_sha3",
"_sha512",
"_signal",
"_sitebuiltins",
"_socket",
"_sqlite3",
"_sre",
"_ssl",
"_stat",
"_statistics",
"_string",
"_strptime",
"_struct",
"_symtable",
"_thread",
"_threading_local",
"_tkinter",
"_tracemalloc",
"_uuid",
"_warnings",
"_weakref",
"_weakrefset",
"_winapi",
"_zoneinfo",
"abc",
"aifc",
"antigravity",
"argparse",
"array",
"ast",
"asynchat",
"asyncio",
"asyncore",
"atexit",
"audioop",
"base64",
"bdb",
"binascii",
"binhex",
"bisect",
"builtins",
"bz2",
"cProfile",
"calendar",
"cgi",
"cgitb",
"chunk",
"cmath",
"cmd",
"code",
"codecs",
"codeop",
"collections",
"colorsys",
"compileall",
"concurrent",
"configparser",
"contextlib",
"contextvars",
"copy",
"copyreg",
"crypt",
"csv",
"ctypes",
"curses",
"dataclasses",
"datetime",
"dbm",
"decimal",
"difflib",
"dis",
"distutils",
"doctest",
"email",
"encodings",
"ensurepip",
"enum",
"errno",
"faulthandler",
"fcntl",
"filecmp",
"fileinput",
"fnmatch",
"fractions",
"ftplib",
"functools",
"gc",
"genericpath",
"getopt",
"getpass",
"gettext",
"glob",
"graphlib",
"grp",
"gzip",
"hashlib",
"heapq",
"hmac",
"html",
"http",
"idlelib",
"imaplib",
"imghdr",
"imp",
"importlib",
"inspect",
"io",
"ipaddress",
"itertools",
"json",
"keyword",
"lib2to3",
"linecache",
"locale",
"logging",
"lzma",
"mailbox",
"mailcap",
"marshal",
"math",
"mimetypes",
"mmap",
"modulefinder",
"msilib",
"msvcrt",
"multiprocessing",
"netrc",
"nis",
"nntplib",
"nt",
"ntpath",
"nturl2path",
"numbers",
"opcode",
"operator",
"optparse",
"os",
"ossaudiodev",
"pathlib",
"pdb",
"pickle",
"pickletools",
"pipes",
"pkgutil",
"platform",
"plistlib",
"poplib",
"posix",
"posixpath",
"pprint",
"profile",
"pstats",
"pty",
"pwd",
"py_compile",
"pyclbr",
"pydoc",
"pydoc_data",
"pyexpat",
"queue",
"quopri",
"random",
"re",
"readline",
"reprlib",
"resource",
"rlcompleter",
"runpy",
"sched",
"secrets",
"select",
"selectors",
"shelve",
"shlex",
"shutil",
"signal",
"site",
"smtpd",
"smtplib",
"sndhdr",
"socket",
"socketserver",
"spwd",
"sqlite3",
"sre_compile",
"sre_constants",
"sre_parse",
"ssl",
"stat",
"statistics",
"string",
"stringprep",
"struct",
"subprocess",
"sunau",
"symtable",
"sys",
"sysconfig",
"syslog",
"tabnanny",
"tarfile",
"telnetlib",
"tempfile",
"termios",
"textwrap",
"this",
"threading",
"time",
"timeit",
"tkinter",
"token",
"tokenize",
"trace",
"traceback",
"tracemalloc",
"tty",
"turtle",
"turtledemo",
"types",
"typing",
"unicodedata",
"unittest",
"urllib",
"uu",
"uuid",
"venv",
"warnings",
"wave",
"weakref",
"webbrowser",
"winreg",
"winsound",
"wsgiref",
"xdrlib",
"xml",
"xmlrpc",
"zipapp",
"zipfile",
"zipimport",
"",
];

View File

@@ -4,14 +4,17 @@ version.workspace = true
edition.workspace = true
authors.workspace = true
[lib]
name = "windmill_parser_ts"
path = "./src/lib.rs"
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen.workspace = true
serde-wasm-bindgen.workspace = true
[dependencies]
windmill-parser.workspace = true
windmill-common.workspace = true
deno_core.workspace = true
swc_common.workspace = true
swc_ecma_parser.workspace = true
swc_ecma_ast.workspace = true

View File

@@ -5,22 +5,25 @@
* Please see the included NOTICE for copyright information and
* LICENSE-AGPL for a copy of the license.
*/
use deno_core::{serde_v8, v8, JsRuntime, RuntimeOptions};
use windmill_common::error;
// use deno_core::{serde_v8, v8, JsRuntime, RuntimeOptions};
use serde_json::Value;
use windmill_parser::{json_to_typ, Arg, MainArgSignature, ObjectProperty, Typ};
use swc_common::{sync::Lrc, FileName, SourceMap, SourceMapper, Spanned};
use swc_common::{sync::Lrc, FileName, SourceMap, SourceMapper, Span, Spanned};
use swc_ecma_ast::{
ArrayLit, AssignPat, BigInt, BindingIdent, Bool, Decl, ExportDecl, Expr, FnDecl, Ident, Lit,
ModuleDecl, ModuleItem, Number, ObjectLit, Pat, Str, TsArrayType, TsEntityName, TsKeywordType,
TsKeywordTypeKind, TsLit, TsLitType, TsOptionalType, TsPropertySignature, TsType,
TsTypeElement, TsTypeLit, TsTypeRef, TsUnionOrIntersectionType, TsUnionType,
ModuleDecl, ModuleItem, Number, ObjectLit, Param, Pat, Str, TsArrayType, TsEntityName,
TsKeywordType, TsKeywordTypeKind, TsLit, TsLitType, TsOptionalType, TsPropertySignature,
TsType, TsTypeElement, TsTypeLit, TsTypeRef, TsUnionOrIntersectionType, TsUnionType,
};
use swc_ecma_parser::{lexer::Lexer, Parser, StringInput, Syntax, TsConfig};
pub fn parse_deno_signature(code: &str) -> error::Result<MainArgSignature> {
#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;
pub fn parse_deno_signature(code: &str, skip_dflt: bool) -> anyhow::Result<MainArgSignature> {
let cm: Lrc<SourceMap> = Default::default();
let fm = cm.new_source_file(FileName::Custom("test.ts".into()), code.into());
let fm = cm.new_source_file(FileName::Custom("main.ts".into()), code.into());
let lexer = Lexer::new(
// We want to parse ecmascript
Syntax::Typescript(TsConfig::default()),
@@ -39,11 +42,7 @@ pub fn parse_deno_signature(code: &str) -> error::Result<MainArgSignature> {
let ast = parser
.parse_module()
.map_err(|_| {
error::Error::ExecutionErr(format!(
"Error while parsing code, it is invalid typescript"
))
})?
.map_err(|_| anyhow::anyhow!("Error while parsing code, it is invalid typescript"))?
.body;
// println!("{ast:?}");
@@ -54,73 +53,95 @@ pub fn parse_deno_signature(code: &str) -> error::Result<MainArgSignature> {
})) if &sym.to_string() == "main" => Some(function.params),
_ => None,
});
if let Some(params) = params {
Ok(MainArgSignature {
let r = MainArgSignature {
star_args: false,
star_kwargs: false,
args: params
.into_iter()
.map(|x| match x.pat {
Pat::Ident(ident) => {
let (name, typ, nullable) = binding_ident_to_arg(&ident);
Ok(Arg {
otyp: None,
name,
typ,
default: None,
has_default: ident.id.optional || nullable,
})
}
Pat::Assign(AssignPat { left, right, .. }) => {
let (name, mut typ, _nullable) =
left.as_ident().map(binding_ident_to_arg).ok_or_else(|| {
error::Error::ExecutionErr(format!(
"parameter syntax unsupported: `{}`",
cm.span_to_snippet(left.span())
.unwrap_or_else(|_| cm.span_to_string(left.span()))
))
})?;
let span = match *right {
Expr::Lit(Lit::Str(Str { span, .. })) => Some(span),
Expr::Lit(Lit::Num(Number { span, .. })) => Some(span),
Expr::Lit(Lit::BigInt(BigInt { span, .. })) => Some(span),
Expr::Lit(Lit::Bool(Bool { span, .. })) => Some(span),
Expr::Object(ObjectLit { span, .. }) => Some(span),
Expr::Array(ArrayLit { span, .. }) => Some(span),
_ => None,
};
let expr = span
.and_then(|x| cm.span_to_snippet(x).ok())
.map(|x| serde_json::from_str(&x).map_err(|_| x));
let default = match expr.clone() {
Some(Ok(x)) => Some(x),
Some(Err(x)) => eval_sync(&x).ok(),
None => None,
};
if typ == Typ::Unknown && default.is_some() {
typ = json_to_typ(default.as_ref().unwrap());
}
Ok(Arg { otyp: None, name, typ, default, has_default: true })
}
_ => Err(error::Error::ExecutionErr(format!(
"parameter syntax unsupported: `{}`",
cm.span_to_snippet(x.span())
.unwrap_or_else(|_| cm.span_to_string(x.span()))
))),
})
.collect::<Result<Vec<Arg>, error::Error>>()?,
})
.map(|x| parse_param(x, &cm, skip_dflt))
.collect::<anyhow::Result<Vec<Arg>>>()?,
};
Ok(r)
} else {
Err(error::Error::ExecutionErr(
Err(anyhow::anyhow!(
"main function was not findable (expected to find 'export function main(...)'"
.to_string(),
))
}
}
fn parse_param(x: Param, cm: &Lrc<SourceMap>, skip_dflt: bool) -> anyhow::Result<Arg> {
let r = match x.pat {
Pat::Ident(ident) => {
let (name, typ, nullable) = binding_ident_to_arg(&ident);
Ok(Arg {
otyp: None,
name,
typ,
default: None,
has_default: ident.id.optional || nullable,
})
}
Pat::Assign(AssignPat { left, right, .. }) => {
let (name, mut typ, _nullable) =
left.as_ident().map(binding_ident_to_arg).ok_or_else(|| {
anyhow::anyhow!(
"parameter syntax unsupported: `{}`",
cm.span_to_snippet(left.span())
.unwrap_or_else(|_| cm.span_to_string(left.span()))
)
})?;
let dflt = if skip_dflt {
None
} else {
match *right {
Expr::Lit(Lit::Str(Str { value, .. })) => {
Some(Value::String(value.to_string()))
}
Expr::Lit(Lit::Num(Number { value, .. }))
if (value == (value as u64) as f64) =>
{
Some(serde_json::json!(value as u64))
}
Expr::Lit(Lit::Num(Number { value, .. })) => Some(serde_json::json!(value)),
Expr::Lit(Lit::BigInt(BigInt { value, .. })) => Some(serde_json::json!(value)),
Expr::Lit(Lit::Bool(Bool { value, .. })) => Some(Value::Bool(value)),
Expr::Object(ObjectLit { span, .. }) => eval_span(span, cm),
Expr::Array(ArrayLit { span, .. }) => eval_span(span, cm),
_ => None,
}
};
if typ == Typ::Unknown && dflt.is_some() {
typ = json_to_typ(dflt.as_ref().unwrap());
}
Ok(Arg { otyp: None, name, typ, default: dflt, has_default: true })
}
_ => Err(anyhow::anyhow!(
"parameter syntax unsupported: `{}`",
cm.span_to_snippet(x.span())
.unwrap_or_else(|_| cm.span_to_string(x.span()))
)),
};
r
}
fn eval_span(span: Span, cm: &Lrc<SourceMap>) -> Option<Value> {
let expr = cm
.span_to_snippet(span)
.ok()
.map(|x| serde_json::from_str(&x).map_err(|_| x));
match expr {
Some(Ok(x)) => Some(x),
Some(Err(x)) => eval_sync(&x).ok(),
None => None,
}
}
fn binding_ident_to_arg(BindingIdent { id, type_ann }: &BindingIdent) -> (String, Typ, bool) {
let (typ, nullable) = type_ann
.as_ref()
@@ -233,6 +254,7 @@ fn tstype_to_typ(ts_type: &TsType) -> (Typ, bool) {
),
false,
),
"Date" => (Typ::Datetime, false),
"Base64" => (Typ::Bytes, false),
"Email" => (Typ::Email, false),
"Sql" => (Typ::Sql, false),
@@ -243,211 +265,21 @@ fn tstype_to_typ(ts_type: &TsType) -> (Typ, bool) {
}
}
#[cfg(target_arch = "wasm32")]
#[wasm_bindgen]
extern "C" {
pub fn eval(s: &str) -> JsValue;
pub fn alert(s: &str);
}
#[cfg(target_arch = "wasm32")]
pub fn eval_sync(code: &str) -> Result<serde_json::Value, String> {
let mut context = JsRuntime::new(RuntimeOptions::default());
let code = format!("let x = {}; x", code);
let res = context.execute_script("<anon>", &code);
match res {
Ok(global) => {
let scope = &mut context.handle_scope();
let local = v8::Local::new(scope, global);
let deserialized_value = serde_v8::from_v8::<serde_json::Value>(scope, local);
match deserialized_value {
Ok(value) => Ok(value),
Err(err) => Err(format!("Cannot deserialize value: {:?}", err)),
}
}
Err(err) => Err(format!("Evaling error: {:?}", err)),
}
serde_wasm_bindgen::from_value(eval(format!("let x = {}; x", code).as_str()))
.map_err(|err| format!("Cannot deserialize value: {:?}", err))
}
#[cfg(test)]
mod tests {
use serde_json::json;
// Note this useful idiom: importing names from outer (for mod tests) scope.
use super::*;
#[test]
fn test_parse_deno_sig() -> anyhow::Result<()> {
let code = "
export function main(test1?: string, test2: string = \"burkina\",
test3: wmill.Resource<'postgres'>, b64: Base64, ls: Base64[],
email: Email, literal: \"test\", literal_union: \"test\" | \"test2\",
opt_type?: string | null, opt_type_union: string | null, opt_type_union_union2: string | undefined,
min_object: {a: string, b: number}) {
console.log(42)
}
";
assert_eq!(
parse_deno_signature(code)?,
MainArgSignature {
star_args: false,
star_kwargs: false,
args: vec![
Arg {
otyp: None,
name: "test1".to_string(),
typ: Typ::Str(None),
default: None,
has_default: true
},
Arg {
otyp: None,
name: "test2".to_string(),
typ: Typ::Str(None),
default: Some(json!("burkina")),
has_default: true
},
Arg {
otyp: None,
name: "test3".to_string(),
typ: Typ::Resource("postgres".to_string()),
default: None,
has_default: false
},
Arg {
otyp: None,
name: "b64".to_string(),
typ: Typ::Bytes,
default: None,
has_default: false
},
Arg {
otyp: None,
name: "ls".to_string(),
typ: Typ::List(Box::new(Typ::Bytes)),
default: None,
has_default: false
},
Arg {
otyp: None,
name: "email".to_string(),
typ: Typ::Email,
default: None,
has_default: false
},
Arg {
otyp: None,
name: "literal".to_string(),
typ: Typ::Str(Some(vec!["test".to_string()])),
default: None,
has_default: false
},
Arg {
otyp: None,
name: "literal_union".to_string(),
typ: Typ::Str(Some(vec!["test".to_string(), "test2".to_string()])),
default: None,
has_default: false
},
Arg {
otyp: None,
name: "opt_type".to_string(),
typ: Typ::Str(None),
default: None,
has_default: true
},
Arg {
otyp: None,
name: "opt_type_union".to_string(),
typ: Typ::Str(None),
default: None,
has_default: true
},
Arg {
otyp: None,
name: "opt_type_union_union2".to_string(),
typ: Typ::Str(None),
default: None,
has_default: true
},
Arg {
otyp: None,
name: "min_object".to_string(),
typ: Typ::Object(vec![
ObjectProperty { key: "a".to_string(), typ: Box::new(Typ::Str(None)) },
ObjectProperty { key: "b".to_string(), typ: Box::new(Typ::Float) }
]),
default: None,
has_default: false
}
]
}
);
Ok(())
}
#[test]
fn test_parse_deno_sig_implicit_types() -> anyhow::Result<()> {
let code = "
export function main(test2 = \"burkina\",
bool = true,
float = 4.2,
int = 42,
ls = [\"test\"],
min_object = {a: \"test\", b: 42}) {
console.log(42)
}
";
assert_eq!(
parse_deno_signature(code)?,
MainArgSignature {
star_args: false,
star_kwargs: false,
args: vec![
Arg {
otyp: None,
name: "test2".to_string(),
typ: Typ::Str(None),
default: Some(json!("burkina")),
has_default: true
},
Arg {
otyp: None,
name: "bool".to_string(),
typ: Typ::Bool,
default: Some(json!(true)),
has_default: true
},
Arg {
otyp: None,
name: "float".to_string(),
typ: Typ::Float,
default: Some(json!(4.2)),
has_default: true
},
Arg {
otyp: None,
name: "int".to_string(),
typ: Typ::Int,
default: Some(json!(42)),
has_default: true
},
Arg {
otyp: None,
name: "ls".to_string(),
typ: Typ::List(Box::new(Typ::Str(None))),
default: Some(json!(["test"])),
has_default: true
},
Arg {
otyp: None,
name: "min_object".to_string(),
typ: Typ::Object(vec![
ObjectProperty { key: "a".to_string(), typ: Box::new(Typ::Str(None)) },
ObjectProperty { key: "b".to_string(), typ: Box::new(Typ::Int) }
]),
default: Some(json!({"a": "test", "b": 42})),
has_default: true
}
]
}
);
Ok(())
}
#[cfg(not(target_arch = "wasm32"))]
pub fn eval_sync(_code: &str) -> Result<serde_json::Value, String> {
panic!("eval_sync is only available in wasm32")
}

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