Compare commits

...

341 Commits

Author SHA1 Message Date
Ruben Fiszel
0a585eccd2 chore(main): release 1.167.0 (#2227)
* chore(main): release 1.167.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-09-04 02:39:09 +02:00
Ruben Fiszel
d09788c216 fix(cli): prioritize correctly content file to resolve for ts types 2023-09-04 02:38:39 +02:00
Ruben Fiszel
2906d535a1 fix(cli): prioritize correctly content file to resolve for ts types 2023-09-04 02:34:51 +02:00
Ruben Fiszel
dff1cd9a64 feat: submit result in background thread (unify architecture for dedicated worker) (#2226)
* merge

* all

* all
2023-09-04 01:56:23 +02:00
Ruben Fiszel
76edfd6d9e chore(main): release 1.166.1 (#2225)
* chore(main): release 1.166.1

* Apply automatic changes

* Update CHANGELOG.md

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-09-03 18:19:42 +02:00
Ruben Fiszel
b3d7661114 fix initialization 2023-09-03 18:12:44 +02:00
Ruben Fiszel
12ef348b7f fix initialization 2023-09-03 18:05:23 +02:00
Ruben Fiszel
b0ed0f9648 fix: fix setting is ready for s3 workers 2023-09-03 16:52:44 +02:00
Ruben Fiszel
a4d1c987d4 fix: fix setting is ready for s3 workers 2023-09-03 16:47:05 +02:00
Ruben Fiszel
8f8806a1b9 fix: fix setting is ready for s3 workers 2023-09-03 16:18:23 +02:00
Ruben Fiszel
37ec5107c4 improve webhook curl 2023-09-03 14:55:52 +02:00
Ruben Fiszel
6417c07aa3 chore(main): release 1.166.0 (#2211)
* chore(main): release 1.166.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-09-03 14:03:25 +02:00
Ruben Fiszel
f912f1de86 fix: update wmill python generator thus updating windmill-api 2023-09-03 14:01:51 +02:00
Ruben Fiszel
b35ffd435d fix: fix datetime handling for python 2023-09-03 11:19:22 +02:00
Ruben Fiszel
ffcb977c47 update benchmark action 2023-09-03 10:37:29 +02:00
Ruben Fiszel
0a20c683d2 update benchmark action 2023-09-03 10:35:56 +02:00
Ruben Fiszel
65f193e9e7 update benchmark action 2023-09-03 10:31:48 +02:00
Ruben Fiszel
073b8d7319 update benchmark action 2023-09-03 10:29:49 +02:00
Ruben Fiszel
4316214f32 update benchmark action 2023-09-03 10:23:50 +02:00
Ruben Fiszel
135444d228 add regular benchmarks 2023-09-03 09:57:25 +02:00
Ruben Fiszel
069e2d18d5 perf: improve queue performance (#2222)
* benchs

* progress

* prog

* progress

* progress

* progress

* update

* progress

* progress

* progress

* progress

* progress

* all

* all

* improve queries

* improve queries

* rm imv

* all

* all
2023-09-03 09:44:16 +02:00
Ruben Fiszel
e31d843bf9 bump deno to 1.36.3 2023-09-01 14:53:17 +02:00
Ruben Fiszel
719a7b11da fix: see run detail in a new tab 2023-09-01 09:32:05 +02:00
Faton Ramadani
77f8eac21e feat(frontend): App stepper debug (#2202)
* fix(frontend): Fix overflow issue

* feat(frontend): Add Stepper debug + add last action output

* feat(frontend): revert

* feat(frontend): correctly handled debug mode

* fix(frontend): PR comments
2023-09-01 08:03:45 +02:00
Faton Ramadani
9787edb67c fix(frontend): Fix App Modal z-index (#2210)
* fix(frontend): Fix App Modal z-index

* fix(frontend): fix build
2023-09-01 08:01:26 +02:00
Ruben Fiszel
a34b91b386 chore(main): release 1.165.0 (#2207)
* chore(main): release 1.165.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-09-01 00:05:37 +02:00
Ruben Fiszel
ada88a2bf9 feat: improve queue performance when queue grows large 2023-08-31 23:41:04 +02:00
Ruben Fiszel
41107c7cfa feat: support partial go dependency pinning 2023-08-31 22:12:47 +02:00
Ruben Fiszel
16fa99a4ea clarify cache usage for scripts/flows 2023-08-31 15:19:01 +02:00
Ruben Fiszel
d311d76557 fix: uniformize that all job links specify the workspace 2023-08-31 12:55:28 +02:00
Ruben Fiszel
1998c2c6e0 chore(main): release 1.164.0 (#2205)
* chore(main): release 1.164.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-31 12:30:37 +02:00
Ruben Fiszel
276cd6dac3 feat: add workspace variable to worker tag 2023-08-31 11:00:57 +02:00
Bryan
bb749c14f8 fix(frontend): allow using Docker in Flow (#2201) 2023-08-31 08:52:05 +02:00
Faton Ramadani
482e46e61b Fix run page navigation (#2200)
* fix(frontend): Fix overflow issue

* fix(frontend): Properly handle browser navigation

* fix(frontend): revert changes

* fix(frontend): remove debug code
2023-08-31 00:17:52 +02:00
Ruben Fiszel
00df43c68c make frontend bundlable 2023-08-30 19:31:34 +02:00
Ruben Fiszel
e780131bea reworks consts 2023-08-30 18:43:21 +02:00
Ruben Fiszel
d7580fefb9 chore(main): release 1.163.1 (#2199)
* chore(main): release 1.163.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-30 18:31:44 +02:00
Ruben Fiszel
11e1ecbcda fix: avoid perpetual spinning of recompute all component 2023-08-30 18:27:12 +02:00
Ruben Fiszel
200fc0720e clarify cache usage for scripts/flows 2023-08-30 17:44:40 +02:00
Ruben Fiszel
e6f56d4dec chore(main): release 1.163.0 (#2198)
* chore(main): release 1.163.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-30 17:26:31 +02:00
Ruben Fiszel
380267a965 nits 2023-08-30 17:26:30 +02:00
Ruben Fiszel
61df339343 fix: fix cyclical loop in apps 2023-08-30 17:12:55 +02:00
Ruben Fiszel
a002b242fc reduce barrier sync logs 2023-08-30 14:55:03 +02:00
Ruben Fiszel
cf012114c5 improve global cache to s3 panel 2023-08-30 14:09:54 +02:00
Ruben Fiszel
6200f91ecd fix build 2023-08-30 13:43:40 +02:00
Ruben Fiszel
7c5ea569a8 feat: add global cache configuration 2023-08-30 13:35:41 +02:00
Ruben Fiszel
7f7a97f009 fix premium info computation 2023-08-29 21:41:26 +02:00
Ruben Fiszel
39b30a7ca3 fix premium info computation 2023-08-29 21:27:53 +02:00
Ruben Fiszel
ffb61afc3f fix premium info computation 2023-08-29 21:23:15 +02:00
Ruben Fiszel
1b3f78f585 exclude cache and state from tarball export 2023-08-29 19:36:25 +02:00
Ruben Fiszel
1f56b27598 chore(main): release 1.162.2 (#2197)
* chore(main): release 1.162.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-29 16:45:39 +02:00
Ruben Fiszel
4704899a81 fix: fix incorrect bump 2023-08-29 16:44:05 +02:00
Ruben Fiszel
c6ff9e38da chore(main): release 1.162.1 (#2196) 2023-08-29 16:39:46 +02:00
Ruben Fiszel
6c5a8a3613 fix: fix deps incompatibilities 2023-08-29 16:38:02 +02:00
Ruben Fiszel
2e7862d84f chore(main): release 1.162.0 (#2194)
* chore(main): release 1.162.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-29 15:59:24 +02:00
Ruben Fiszel
bf0014c387 feat: add cache to inline scripts 2023-08-29 15:57:01 +02:00
Faton Ramadani
095969f125 feat(frontend): Filter runs by user (#2187)
* feat(frontend): Filter runs by user

* feat(frontend): Improve UI

* feat(frontend): Add filter by folder

* feat(frontend): Clean up filters

* feat(frontend): Clean up filters

* feat(frontend): add shortcut to filter by folder

* fix(frontend): Fix filters

* fix(frontend): remove logs

* fix(frontend): Fix filter by syncing

* fix(frontend): refactor all filters

* fix(frontend): refactor all filters

* fix(frontend): refactor all filters

* fix(frontend): refactor all filters

* fix(frontend): add missing tooltips

* fix(frontend): correcly set args and result filters + handle status filter
2023-08-29 15:42:56 +02:00
Ruben Fiszel
dfa9ed5c00 improve cache paths 2023-08-29 15:29:55 +02:00
Ruben Fiszel
67f868f08e fix: add setState, getState to client 2023-08-29 15:26:23 +02:00
Ruben Fiszel
81575468e7 fix get latest deployed for path 2023-08-29 15:12:53 +02:00
Ruben Fiszel
30ea354cae fix: relative imports in deno 2023-08-29 15:05:00 +02:00
Ruben Fiszel
03e48a4ca5 feat: add caching to flows and scripts (#2193)
* cachettl

* all
2023-08-29 13:00:20 +02:00
Ruben Fiszel
af2a417902 fix list state preservation across re-renders 2023-08-28 20:42:53 +02:00
Ruben Fiszel
d469802186 chore(main): release 1.161.0 (#2190)
* chore(main): release 1.161.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-28 20:20:48 +02:00
Ruben Fiszel
770a3e8835 fix: allow deno to --write lock when using lockfiles 2023-08-28 20:16:32 +02:00
Ruben Fiszel
6354c95bb7 feat: early stop for flows 2023-08-28 17:46:16 +02:00
Ruben Fiszel
d0d041fde3 feat: concurrency limits for flows 2023-08-28 16:02:48 +02:00
Faton Ramadani
272ff63e40 feat(frontend): rework premium plans (#2155)
* feat(frontend): rework premium plans

* feat(frontend): update premium plan page
2023-08-28 14:26:18 +02:00
Ruben Fiszel
840fbbcbb1 fix: fix refresh init in presence of app stepper 2023-08-28 12:36:54 +02:00
Ruben Fiszel
ba61c7bd77 fix build 2023-08-28 09:44:36 +02:00
Ruben Fiszel
2c7c1025b1 fix compilation 2023-08-28 09:00:13 +02:00
Ruben Fiszel
245904195c fix script_path_start 2023-08-28 02:37:06 +02:00
Ruben Fiszel
1db214f9d0 limit number of groups to 5 in ce 2023-08-28 02:23:36 +02:00
Ruben Fiszel
697f94a73d chore(main): release 1.160.0 (#2189)
* chore(main): release 1.160.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-27 23:15:39 +02:00
Ruben Fiszel
6a7e405454 improve job queue counter clarity 2023-08-27 23:11:04 +02:00
Ruben Fiszel
88838f31bb fix sqlx 2023-08-27 23:05:47 +02:00
Ruben Fiszel
34e2a8001a feat: add parallelism control to forloops 2023-08-27 23:03:19 +02:00
Ruben Fiszel
e2a053c022 fix parrallel forloop and branchall failure handling 2023-08-27 16:05:51 +02:00
Ruben Fiszel
3c4b451655 chore(main): release 1.159.0 (#2183)
* chore(main): release 1.159.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-27 15:50:19 +02:00
Ruben Fiszel
487d56cb0f fix: operation are redacted instead of username which fix audit logs for non admin users 2023-08-27 15:48:38 +02:00
Ruben Fiszel
135f3e121a fix editor bar colors 2023-08-27 15:34:20 +02:00
Ruben Fiszel
033f675484 fix cancel jobs 2023-08-27 15:09:54 +02:00
Ruben Fiszel
0dfdf8fa1b fix: canceling jobs 2023-08-27 14:40:20 +02:00
Ruben Fiszel
b492fd9884 feat: add support for root certificate in postgresql 2023-08-27 11:58:36 +02:00
Ruben Fiszel
a60db77920 use postgresql backend fo r testing connection 2023-08-27 11:25:34 +02:00
Ruben Fiszel
fe1e419fa8 feat: support to set linked secret variable to any field of a newly created resource 2023-08-27 11:03:49 +02:00
Ruben Fiszel
a478272a9b pin approval to 1.158.2+ 2023-08-26 15:26:20 +02:00
Ruben Fiszel
24ac1e25ff fix: fix app table footer label when -1 2023-08-26 12:13:22 +02:00
Ruben Fiszel
519ba1cafb chore(main): release 1.158.2 (#2182)
* chore(main): release 1.158.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-26 11:59:45 +02:00
Ruben Fiszel
69918fe903 fix whitespace 2023-08-26 11:59:19 +02:00
Ruben Fiszel
3142bc932c fix: expose getResumeUrls in windmill-client 2023-08-26 11:54:21 +02:00
Ruben Fiszel
796f6d561b chore(main): release 1.158.1 (#2181)
* chore(main): release 1.158.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-26 11:43:23 +02:00
Ruben Fiszel
7defd451ac fix: fix windmill-client 2023-08-26 11:41:58 +02:00
Ruben Fiszel
7de7b7e9d3 add lockfile in publish to hub from script details page 2023-08-26 11:21:26 +02:00
Ruben Fiszel
d04ecdb098 chore(main): release 1.158.0 (#2180)
* chore(main): release 1.158.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-26 11:19:21 +02:00
Ruben Fiszel
9547a061da feat: add lockfile for deno + use npm module for deno for windmill-client 2023-08-26 11:14:01 +02:00
Ruben Fiszel
81285f2acd chore(main): release 1.157.0 (#2177)
* chore(main): release 1.157.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-26 09:53:39 +02:00
Ruben Fiszel
9c34e5595a remove react-sdk from repo 2023-08-26 09:17:07 +02:00
Ruben Fiszel
f5121e9066 feat: lock inline scripts for apps on deploy 2023-08-26 09:12:19 +02:00
Ruben Fiszel
53976da8ae fix: make workspace error handler picker accept any script 2023-08-25 23:23:09 +02:00
Ruben Fiszel
3b16090ef6 remove tracing 2023-08-25 14:44:47 +02:00
Ruben Fiszel
23a662b94c encode special characters in postgres url 2023-08-25 14:38:30 +02:00
Ruben Fiszel
8427f80f68 fix jq editor bar help 2023-08-25 13:48:09 +02:00
Ruben Fiszel
9e5aba9342 chore(main): release 1.156.1 (#2170)
* chore(main): release 1.156.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-25 13:38:58 +02:00
Ruben Fiszel
7649a53f3c fix: fix python client 2023-08-25 13:37:10 +02:00
Ruben Fiszel
9f5b1939ba fix name refresh on app propagation 2023-08-25 10:52:02 +02:00
Ruben Fiszel
e73c9c90ad chore(main): release 1.156.0 (#2167)
* chore(main): release 1.156.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-24 19:55:52 +02:00
Ruben Fiszel
b8c7c14d21 fix input value initialization 2023-08-24 19:49:02 +02:00
HugoCasa
0dcb425e4a feat: schedule recovery handler (#2126)
* feat: schedule recovery handler

* fix: migration down

* fix: rename

* fix: adjust + add tests

* fix: merge + sqlx prepare

* fix: more complete recovery handler

* feat: schedule error and recovery times

* fix: schedule worker test

* feat: slack schedule handlers

* fix: update schedule handlers
2023-08-24 18:20:35 +02:00
Ruben Fiszel
c5a0c105e3 fix range component bindings when eval to same subscriber 2023-08-24 18:17:04 +02:00
Ruben Fiszel
a3623673a4 chore(main): release 1.155.0 (#2156) 2023-08-24 15:56:07 +02:00
Ruben Fiszel
8a25a86e58 fix: update python client with by_path methods 2023-08-24 15:54:47 +02:00
Ruben Fiszel
5bf647933d more precise error message for missing lock in bun 2023-08-24 14:57:34 +02:00
Ruben Fiszel
7e3e0b709c UX nits 2023-08-24 14:38:51 +02:00
Ruben Fiszel
e7aaa177b7 feat: remove connect in favor of eval 2023-08-24 14:22:31 +02:00
Ruben Fiszel
691e1ecdc7 convert from static to expr automatically on toggle 2023-08-24 11:09:27 +02:00
Ruben Fiszel
431757339b fix: update go to 1.12.0 and deno to 1.36.2 2023-08-24 10:15:52 +02:00
Ruben Fiszel
d1a9e0101d unpin windmill-client 2023-08-24 09:53:56 +02:00
Ruben Fiszel
6eb35edc69 improve websocket destroying 2023-08-24 09:30:54 +02:00
Ruben Fiszel
4825519ac9 fix: bump bun to 0.8.0 2023-08-24 08:08:58 +02:00
Ruben Fiszel
aa490a43cf nit fix 2023-08-24 01:50:33 +02:00
Ruben Fiszel
13d870f163 feat: add templatev2 using new eval 2023-08-24 01:48:40 +02:00
Ruben Fiszel
253956cd44 small fixes 2023-08-24 01:11:42 +02:00
Ruben Fiszel
8ec95062b0 remove connected from runnable inputs 2023-08-24 01:04:26 +02:00
Ruben Fiszel
3a31d65a15 remove connected from runnable inputs 2023-08-24 01:02:26 +02:00
Ruben Fiszel
de3369706d remove connected from runnable inputs 2023-08-24 00:59:03 +02:00
Ruben Fiszel
35bf7b0e53 fix tests 2023-08-23 21:38:06 +02:00
Ruben Fiszel
bcd4a819f4 apt install cmake on dockerfile 2023-08-23 19:59:37 +02:00
Ruben Fiszel
5207a7a6aa feat: eval v2, blazing fast eval triggered only upon the right changes (#2164)
* progress

* progress

* progress

* add suggestions to frontend scripts

* all eval

* remove onlyStatic

* handle better conversions

* handle better conversions

* remove variable picker

* fix pen positioning

* fix v1
2023-08-23 19:50:35 +02:00
Bryan
95ea0e8f87 fix(frontend): fix copyToClipboard on non-HTTPS site (#2046) 2023-08-23 14:53:10 +02:00
Ruben Fiszel
a419bc41bf fix: fix tables not updating inputs on creation 2023-08-23 12:18:07 +02:00
Faton Ramadani
2f9177f6ce fix(frontend): Fix code display + use async/await in fetch examples (#2150)
* fix(frontend): Fix code display + use async/await in fetch examples

* fix(frontend): Fix all fetch code

* fix(frontend): Add missing quote

* fix(frontend): fix async code

* fix(frontend): fix waitForCompletion callback

* fix(frontend): Correcltly encode payload

* fix(frontend): Correcltly encode payload
2023-08-23 11:35:22 +02:00
Ruben Fiszel
fd3027459e improve publish to hub 2023-08-23 10:08:54 +02:00
Ruben Fiszel
d5984703ca store script state in hash and not query 2023-08-23 02:31:39 +02:00
Ruben Fiszel
afc0328e47 chore(main): release 1.154.2 (#2154)
* chore(main): release 1.154.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-22 21:53:41 +02:00
Ruben Fiszel
2c59eeb750 fix request armageddon on flow status update for inner flows 2023-08-22 21:53:44 +02:00
Ruben Fiszel
58bb19a447 fix: fix cancel job for flows in some edge cases 2023-08-22 21:35:35 +02:00
Ruben Fiszel
d7dc8a745c chore(main): release 1.154.1 (#2148)
* chore(main): release 1.154.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-22 19:53:21 +02:00
Ruben Fiszel
9ba54efab1 fix schedule edit issue 2023-08-22 19:30:55 +02:00
Ruben Fiszel
3e018f50e2 improve push method to reduce commit span 2023-08-22 17:26:51 +02:00
Faton Ramadani
d11f28ef63 Fix app list (#2152)
* fix(frontend): Fix app list pagination

* fix(frontend): make minimal changes

* fix(frontend): make minimal changes

* fix(frontend): make minimal changes

* fix(frontend): revert unecessary changes

* fix(frontend): done

* fix(frontend): revert unnecessary changes

* fix(frontend): remove code duplication

* fix(frontend): remove code duplication
2023-08-22 16:46:24 +02:00
Faton Ramadani
d0ed8f0fef fix(frontend): Fix hub navigation (#2151)
* fix(frontend): Fix hub navigation

* fix(frontend): Fix hub navigation
2023-08-22 09:49:09 +02:00
Ruben Fiszel
ab8a27f123 fix: show for-loop settings 2023-08-22 06:24:50 +02:00
Ruben Fiszel
d6318d91ec chore(main): release 1.154.0 (#2138)
* chore(main): release 1.154.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-22 06:05:12 +02:00
Henri Courdent
fbfe2d9c19 Updating GraphQL default (#2142) 2023-08-22 06:04:51 +02:00
bgoosmanviz
77323bb7c8 py imports are normalize underscores to dashes, so fixing mailparser_reply to -reply (#2147) 2023-08-22 01:07:28 +02:00
Ruben Fiszel
aad8c9d324 fix flow lock 2023-08-22 01:04:04 +02:00
bgoosmanviz
40712fc76b py imports replacement mailparser and mailparser_reply (#2146) 2023-08-22 00:44:54 +02:00
Ruben Fiszel
fbc62e8ca5 remove unecessary postgres transactions and improve performance 2023-08-22 00:34:44 +02:00
bgoosmanviz
62cbf98075 Add dateutil => python-dateutil to PYTHON_IMPORTS_REPLACEMENT (#2145) 2023-08-21 23:58:42 +02:00
Henri Courdent
ba1cc9105e Updated default Rest and clear_rest (#2140) 2023-08-21 12:55:57 +02:00
Ruben Fiszel
37499ec117 add download button to expanded graph 2023-08-21 11:11:16 +02:00
Ruben Fiszel
682a105078 fix cycle detector 2023-08-21 10:35:15 +02:00
Faton Ramadani
5545c7c8fb Fix app dateinput timezone (#2127)
* fix(frontend): Fix JSON pane scroll issues

* fix(frontend): Fix AppDateInput timezone issues

* fix(frontend): Use date-fns

* fix(frontend): add disabled to AppRange props
2023-08-21 10:28:09 +02:00
Ruben Fiszel
bcf5d4e5d4 feat: deploy folders as well in the UI deployer 2023-08-21 03:38:36 +02:00
Ruben Fiszel
298a50a9e6 allow auth & content-type in header for cors 2023-08-21 02:23:31 +02:00
Ruben Fiszel
acdb14edfa remove jobs api from being cors 2023-08-21 02:20:49 +02:00
Ruben Fiszel
81484ed565 remove jobs api from being cors 2023-08-21 02:15:49 +02:00
Ruben Fiszel
bdd59c94a9 fix: do not require auth for OPTIONS requests 2023-08-21 02:08:42 +02:00
Ruben Fiszel
bb4d11655d fix python relative imports in diff folders 2023-08-21 01:53:29 +02:00
Henri Courdent
5f686b5cd7 Updated default scripts (#2125) 2023-08-21 00:19:04 +02:00
Ruben Fiszel
127eea3c81 fix: avoid stack-overflow on jsruntime for recursive objects 2023-08-20 22:03:07 +02:00
Ruben Fiszel
a649be730e allow to cancel running jobs, even if a scheduled job 2023-08-20 21:12:46 +02:00
Ruben Fiszel
e86bf467c8 add more details for unreachable 2023-08-20 21:04:46 +02:00
Ruben Fiszel
f153220832 chore(main): release 1.153.0 (#2137)
* chore(main): release 1.153.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-20 19:41:47 +02:00
Ruben Fiszel
5e3daf02b4 fix serving metrics on ee 2023-08-20 19:40:50 +02:00
Ruben Fiszel
09a4e492ea fix tests 2023-08-20 19:27:42 +02:00
Ruben Fiszel
3abf978eac improve indices performances 2023-08-20 19:14:39 +02:00
Ruben Fiszel
a4090f6ad5 improve sql query performances 2023-08-20 18:06:59 +02:00
Ruben Fiszel
e63336e510 fix wrong input history order 2023-08-20 17:25:27 +02:00
Ruben Fiszel
86c25624c5 update vite 2023-08-20 17:11:59 +02:00
Ruben Fiszel
e1469cc64d feat: multiline support in bash 2023-08-20 17:05:29 +02:00
Ruben Fiszel
d602669332 refactor worker-common 2023-08-20 16:55:38 +02:00
Ruben Fiszel
9efca50541 refactor worker-common 2023-08-20 16:44:22 +02:00
Ruben Fiszel
0503942170 refactor default non-cloud-hosted timeout 2023-08-20 16:30:31 +02:00
Ruben Fiszel
da036b2a19 refactor workers 2023-08-20 15:58:43 +02:00
Ruben Fiszel
6a9f5488bb superadmin can also cancel queue 2023-08-20 14:14:01 +02:00
Ruben Fiszel
688db5d5e4 small deno-client fix 2023-08-20 12:49:36 +02:00
Ruben Fiszel
c13428ad08 fix: update deno-client to use new Resource and Variable endpoints 2023-08-20 12:45:05 +02:00
Ruben Fiszel
c5e852dd87 chore(main): release 1.152.0 (#2132)
* chore(main): release 1.152.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-20 12:36:53 +02:00
Ruben Fiszel
2afea50497 feat: prometheus metrics are now ee only 2023-08-20 12:29:05 +02:00
Ruben Fiszel
a2fe6c56e0 improve rendering for string results 2023-08-20 12:17:19 +02:00
Ruben Fiszel
632cb5dff1 improve rendering for string result 2023-08-20 12:16:29 +02:00
Ruben Fiszel
ae43a66d4d add copy to clipboard to display result 2023-08-20 12:11:43 +02:00
Ruben Fiszel
3fc465cff6 reduce default nb of jobs on runs page 2023-08-20 11:51:07 +02:00
Ruben Fiszel
6ef55616e5 reduce default nb of jobs on runs page 2023-08-20 11:36:32 +02:00
Ruben Fiszel
befef02cd9 fix drift usage 2023-08-20 11:34:32 +02:00
Ruben Fiszel
49553dc247 reduce default nb of jobs on runs page 2023-08-20 11:25:36 +02:00
Ruben Fiszel
4a8c257eb3 fix db clock drift direction 2023-08-20 11:19:47 +02:00
Ruben Fiszel
58270d8a86 improve run jobs UX 2023-08-20 10:38:30 +02:00
Ruben Fiszel
38d14823fd confirm modal to cancel all jobs 2023-08-20 10:28:34 +02:00
Ruben Fiszel
fbfd33f0be ux nit 2023-08-20 10:19:56 +02:00
Ruben Fiszel
85d2d47827 fix: improve progress bar UX 2023-08-20 10:17:06 +02:00
Ruben Fiszel
713317288d sqlx 2023-08-20 09:22:08 +02:00
Ruben Fiszel
b9fb206c11 feat: handle drift in every time referencing db times 2023-08-20 04:00:38 +02:00
Ruben Fiszel
75f472381c fix: reinit retry to undefined in flow steps 2023-08-19 01:02:37 +02:00
Ruben Fiszel
08ab79d9ca chore(main): release 1.151.2 (#2122)
* chore(main): release 1.151.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-18 15:44:43 +02:00
Ruben Fiszel
ab26ced90a fix benchmark tool 2023-08-18 15:44:32 +02:00
Ruben Fiszel
bce690fc96 fix benchmark tool 2023-08-18 15:32:45 +02:00
Faton Ramadani
d367716b0a fix(frontend): Fix JSON pane scroll issues (#2123) 2023-08-18 15:29:27 +02:00
Ruben Fiszel
d7ee990379 fix flow_json value to contains full flow 2023-08-18 15:28:59 +02:00
Ruben Fiszel
ba8aee2217 fix flow_json value to contains full flow 2023-08-18 15:27:02 +02:00
Faton Ramadani
be577e561d fix(frontend): Fix app multiselect dark mode (#2121)
* fix(frontend): Fix app multiselect dark mode

* fix(frontend): Fix app multiselect dark mode in CronInput
2023-08-18 15:24:25 +02:00
Ruben Fiszel
ec175c5a0d chore(main): release 1.151.1 (#2116)
* chore(main): release 1.151.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-18 15:00:08 +02:00
Ruben Fiszel
0193fcc1d7 fix: at UTC Time 2023-08-18 14:57:00 +02:00
Ruben Fiszel
67cb4516c9 fix: improve flow progress bar 2023-08-18 14:48:51 +02:00
Ruben Fiszel
7c4f568a8f update flow status even for flows 2023-08-18 01:32:19 +02:00
Ruben Fiszel
237460b121 fix: show help on empty cli args 2023-08-18 00:26:44 +02:00
Ruben Fiszel
ed908edb62 add jq -r to bash getVariable 2023-08-18 00:23:37 +02:00
Ruben Fiszel
b5f8dab6e8 chore(main): release 1.151.0 (#2114)
* chore(main): release 1.151.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-18 00:19:06 +02:00
Ruben Fiszel
a2b1d6997b update hub script 2023-08-18 00:19:15 +02:00
Ruben Fiszel
cb00a1358d fix: fix python get_resource 2023-08-18 00:11:16 +02:00
Faton Ramadani
eea9ce93b9 feat(frontend): Fix workspace switch + always displays confirmation modal on top of splitpanel separator (#2115) 2023-08-17 23:26:06 +02:00
Ruben Fiszel
9bc4e9ae43 update deno 2023-08-17 23:02:48 +02:00
Ruben Fiszel
74b18c8f5d chore(main): release 1.150.0 (#2108)
* chore(main): release 1.150.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-17 22:51:44 +02:00
Ruben Fiszel
2d092d5375 fix: upgrade admins hub sync 2023-08-17 22:51:21 +02:00
Ruben Fiszel
067908c0b5 fix: unify clients to use server-side interpolation to retrieve full resources 2023-08-17 20:16:50 +02:00
Ruben Fiszel
930839aad2 fix: unify clients to use server-side interpolation to retrieve full resources 2023-08-17 20:16:50 +02:00
Ruben Fiszel
e9c19b5b98 fix: unify clients to use server-side interpolation to retrieve full resources 2023-08-17 20:16:50 +02:00
HugoCasa
6733b8552b feat: graphql custom headers (#2111) 2023-08-17 16:19:51 +02:00
HugoCasa
82612c35bd feat: copilot tokens streaming + cancel (#2107)
* feat: copilot tokens streaming + cancel

* fix: UI improvements
2023-08-17 14:21:42 +02:00
HugoCasa
c817af7694 fix: powershell icon (#2109) 2023-08-17 12:18:30 +02:00
Ruben Fiszel
8900cceab5 hide .netrc content 2023-08-17 12:09:34 +02:00
Ruben Fiszel
359845fa9d fix: set NETRC at init and not for every job 2023-08-17 12:00:19 +02:00
Ruben Fiszel
8a3eb8eb52 chore(main): release 1.149.0 (#2084)
* chore(main): release 1.149.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-17 11:41:34 +02:00
Sindre Svendby
f4aac39487 Tanstack init config for width will now be applied to columns (#2095) 2023-08-17 11:33:20 +02:00
Ry Blaisdell
2f8773ea44 make tooltips non-gender specific (#2097) 2023-08-16 20:15:43 +02:00
Faton Ramadani
9b15e409a5 feat(frontend): Add List pagination + add loading state in tables (#2096)
* feat(frontend): Add List pagination + add loading state in tables

* feat(frontend): Use the same configuration as the Table, and managed pagination properly

* feat(frontend): Fix wording + update default code + preconnect page output

* feat(frontend): Fix wording + update default code + preconnect page output

* feat(frontend): fix default code

* feat(frontend): add comment in the default code to explain what the page parameter is

* feat(frontend): revert changes
2023-08-16 15:00:07 +02:00
Ruben Fiszel
c320ea865f fix: fix folder creation if job folder already exist 2023-08-16 14:56:07 +02:00
Ruben Fiszel
0af264f6f8 fix: appgrid refresh selected on row on result changes 2023-08-15 22:20:48 +02:00
Ruben Fiszel
ed6494ff7a fix: fix go envs passing 2023-08-15 21:49:49 +02:00
Faton Ramadani
801f2a8299 fix(frontend): Fix toast when adding a user + set default vscoode the… (#2080)
* fix(frontend): Fix toast when adding a user + set default vscoode theme variable + fix DisplayResult componnet

* fix(frontend): handle both encoding

* fix(frontend): add all editorHoverWidget classes
2023-08-15 10:46:33 +02:00
Ruben Fiszel
f198cd23ef reword 2023-08-15 09:41:53 +02:00
dependabot[bot]
dafc7c24b0 chore(deps-dev): bump eslint from 8.44.0 to 8.47.0 in /frontend (#2075)
Bumps [eslint](https://github.com/eslint/eslint) from 8.44.0 to 8.47.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.44.0...v8.47.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-08-14 19:00:19 +00:00
dependabot[bot]
2c5ef2f988 chore(deps-dev): bump tslib from 2.6.0 to 2.6.1 in /frontend (#2074)
Bumps [tslib](https://github.com/Microsoft/tslib) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/Microsoft/tslib/releases)
- [Commits](https://github.com/Microsoft/tslib/compare/2.6.0...v2.6.1)

---
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-08-14 18:56:55 +00:00
dependabot[bot]
3c4d23f652 chore(deps-dev): bump svelte-awesome from 3.2.0 to 3.2.1 in /frontend (#2073)
Bumps [svelte-awesome](https://github.com/RobBrazier/svelte-awesome) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/RobBrazier/svelte-awesome/releases)
- [Changelog](https://github.com/RobBrazier/svelte-awesome/blob/master/CHANGELOG.md)
- [Commits](https://github.com/RobBrazier/svelte-awesome/compare/v3.2.0...v3.2.1)

---
updated-dependencies:
- dependency-name: svelte-awesome
  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-08-14 18:55:27 +00:00
Ruben Fiszel
fffcca38d9 chore(main): release 1.148.0 (#2051)
* chore(main): release 1.148.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-14 18:36:15 +02:00
HugoCasa
beb4a000e3 feat: add s3 snippets (#2052)
* feat: add s3 snippets

* fix: rename to push pull aggregate

---------

Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2023-08-14 18:23:17 +02:00
Ruben Fiszel
f420dfad3c fix worker initialization on ee 2023-08-14 18:18:37 +02:00
HugoCasa
a3fa174cd4 fix: remove ansi codes from result (#2069)
* fix: remove ansi codes from result

* fix: remove also in error logs
2023-08-14 18:09:52 +02:00
Ruben Fiszel
e31ec608cd fix worker initialization on ee 2023-08-14 18:08:21 +02:00
Ruben Fiszel
50c4911a76 fix tar initialization 2023-08-14 17:52:27 +02:00
Ruben Fiszel
add48677c3 fix tar initialization 2023-08-14 17:49:46 +02:00
Ruben Fiszel
26cb872836 fix tar initialization 2023-08-14 17:49:03 +02:00
Faton Ramadani
c6ef1a6d4f fix(frontend): Fix Dark mode in the sleep helpbox (#2072) 2023-08-14 17:40:00 +02:00
Ruben Fiszel
4b8d38d077 fix tar initialization 2023-08-14 16:16:42 +02:00
HugoCasa
e1b4f0a832 fix: allow multiple db schema explorers (#2054) 2023-08-14 15:13:55 +02:00
Ruben Fiszel
0e77e92d9e be more selective to create global cache 2023-08-14 13:36:41 +02:00
Ruben Fiszel
24a7b60e4c remove bun from the tarcache 2023-08-14 13:12:34 +02:00
HugoCasa
00b1afb1c9 fix: script fix no resource + error handling (#2053) 2023-08-14 12:03:23 +02:00
Ruben Fiszel
1a69ee1b4c update npm lock 2023-08-14 02:33:47 +02:00
Ruben Fiszel
1d8213a25b fix: handle object pat in sig of typescript 2023-08-13 22:06:10 +02:00
Ruben Fiszel
f140d10f08 fix tests 2023-08-13 17:20:29 +02:00
Ruben Fiszel
baaaaa14f1 chore(main): release 1.147.3 (#2050)
* chore(main): release 1.147.3

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-13 16:19:25 +02:00
Ruben Fiszel
73078fa980 fix bun deploy 2023-08-13 16:18:26 +02:00
Ruben Fiszel
46b25f9b55 fix(bun): correctly handle empty deps script bun to deploy 2023-08-13 16:12:10 +02:00
Ruben Fiszel
74e986e2bc chore(main): release 1.147.2 (#2049)
* chore(main): release 1.147.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-13 15:43:38 +02:00
Ruben Fiszel
a6d2dddf7a avoid reconnecting to ws unecessarily with bun 2023-08-13 15:40:34 +02:00
Ruben Fiszel
32842457fe fix(bun): add npm type acquisition 2023-08-13 15:38:05 +02:00
Ruben Fiszel
9859d080e4 fix frontend compile issues 2023-08-13 15:05:18 +02:00
Ruben Fiszel
d1e6e7b2c5 chore(main): release 1.147.1 (#2048) 2023-08-13 14:58:34 +02:00
Ruben Fiszel
23164c8349 fix(bun): only install -p dependencies 2023-08-13 14:41:59 +02:00
Ruben Fiszel
3bc1050258 fix(bun): only install when requirements are missing if using nsjail 2023-08-13 14:29:31 +02:00
Ruben Fiszel
825f234937 fix script builder 2023-08-13 14:26:07 +02:00
Ruben Fiszel
5b94adff54 publish lsp independently 2023-08-13 14:10:30 +02:00
Ruben Fiszel
9efbb9d585 chore(main): release 1.147.0 (#2047)
* chore(main): release 1.147.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-13 13:34:52 +02:00
Ruben Fiszel
891c9dc266 feat: add lsp to bun and remove experimental status 2023-08-13 13:30:51 +02:00
Ruben Fiszel
7585d7c71b chore(main): release 1.146.1 (#2043)
* chore(main): release 1.146.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-13 09:04:25 +02:00
Ruben Fiszel
993a14502f fix(bun): windmill-client does not require set to be initalized 2023-08-13 09:01:33 +02:00
HugoCasa
cddef1a50a fix: powershell escape backticks (#2044)
* fix: powershell escape backticks

* fix: less boilerplate
2023-08-13 01:04:45 +02:00
HugoCasa
c2281ef5da fix: really use bun in flow builder (#2045) 2023-08-13 01:04:11 +02:00
Ruben Fiszel
20d5d01bf4 improve BADF on cloud 2023-08-13 00:47:39 +02:00
Ruben Fiszel
7aedde06b3 improve BADF on cloud 2023-08-13 00:36:44 +02:00
Ruben Fiszel
7a8640a5ad improve BADF on cloud 2023-08-13 00:29:23 +02:00
Ruben Fiszel
4b6df01959 improve BADF on cloud 2023-08-13 00:19:55 +02:00
Ruben Fiszel
c6c03e887f add back bun versioning to client 2023-08-12 23:57:07 +02:00
Ruben Fiszel
9c978281cd fix: enable bun to do resolution as fallback to allow specifier 2023-08-12 23:51:24 +02:00
Ruben Fiszel
419d697bd9 chore(main): release 1.146.0 (#2038)
* chore(main): release 1.146.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-12 21:10:17 +02:00
Ruben Fiszel
be27fe21d6 enable relative path under nsjail too 2023-08-12 20:54:35 +02:00
Ruben Fiszel
2ba132bd05 feat: respect lockfiles for bun 2023-08-12 20:49:36 +02:00
Ruben Fiszel
4dcf7ae088 fix: fix array static input editor initialization 2023-08-12 02:35:57 +02:00
Ruben Fiszel
0449b3be03 chore(main): release 1.145.3 (#2037)
* chore(main): release 1.145.3

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-12 02:00:52 +02:00
Ruben Fiszel
611d42db2c fix: fix bun client 2023-08-12 01:57:32 +02:00
Ruben Fiszel
7181530b31 chore(main): release 1.145.2 (#2036)
* chore(main): release 1.145.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-12 01:27:33 +02:00
Ruben Fiszel
4794bd0b60 fix(bun): remove need for manual setClient 2023-08-12 01:24:42 +02:00
Ruben Fiszel
0fdf38a235 chore(main): release 1.145.1 (#2034)
* chore(main): release 1.145.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-11 19:28:27 +02:00
Ruben Fiszel
169c413c8d fix: sqlx build 2023-08-11 19:26:15 +02:00
Ruben Fiszel
c8d257ec0d chore(main): release 1.145.0 (#2022)
* chore(main): release 1.145.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-11 19:10:28 +02:00
Faton Ramadani
7cdd6db3fe fix(frontend): Handle invalid string defaults for date values. (#2033) 2023-08-11 19:04:49 +02:00
Ruben Fiszel
de8a7279b6 feat: migrate state path to new schema 2023-08-11 18:54:47 +02:00
Faton Ramadani
9fc30bde1f Various fix (#2032)
* fix(frontend): Before legacy code + add confirmation modal when removing a user + fix folder stats

* fix(frontend): Add Date type narrowing

* fix(frontend): Add missing fullscreen in ScriptEditorDrawer

* fix(frontend): Check if we have un-saved changes before navigating to the homepage

* fix(frontend): correctly use the keyed each

* fix(frontend): add DateTimeInput

* fix(frontend): add DateTimeInput

* fix(frontend): add DateTimeInput

* fix(frontend): code cleanup

* fix(frontend): Set default time to 00:00
2023-08-11 18:38:45 +02:00
Faton Ramadani
c2a92b69ef fix(frontend): Fix lagging issues when resizing (#2027) 2023-08-11 15:44:24 +02:00
HugoCasa
a4ba4af478 fix: modify snake case numbers resource types (#2029) 2023-08-11 10:16:23 +02:00
hmacr
27a8e526f7 fix: sync dark-mode icon across multiple renders (#2024)
* fix: sync dark-mode icon across multiple renders

* other: read OS theme setting when the user has no preference

---------

Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-08-11 10:10:28 +02:00
Ruben Fiszel
891d120797 add init migration compatible with rds 2023-08-10 17:30:59 +02:00
Faton Ramadani
7d88a2d13a feat(frontend): Runs rework v2 (#2012)
* wip

* feat(frontend): Add disable prop to App Toggles

* feat(frontend): run page v2

* feat(frontend): column ordering + load more

* feat(frontend): column ordering + load more

* feat(frontend): revert old coode

* feat(frontend): simplify table + fix load more style + add groups

* feat(frontend): Done

* feat(frontend): Fix styling issues

* feat(frontend): Fix styling issues

* feat(frontend): Simplify filters

* feat(frontend): Rework runs done

* feat(frontend): fix drawer

* feat(frontend): rework the filters

* feat(frontend): rework the filters

* feat(frontend): small ui fix

* feat(frontend): correctly display title

* feat(frontend): fix dark mode switch

* feat(frontend): fix reset/clear buttons

* feat(frontend): Rework runs done
2023-08-10 17:24:31 +02:00
HugoCasa
8a1f9a7c6a feat: add native powershell support (#2025)
* feat: add powershell support

* fix: lang build
2023-08-10 13:19:50 +00:00
antrix
dda071ce8c Add google workspace oauth connection config (#2023)
* Add google workspace oauth connection config

Oauth Config to call Google Workspace APIs. 
https://developers.google.com/admin-sdk/directory/v1/guides/authorizing

* update

---------

Co-authored-by: Ruben Fiszel <ruben@rubenfiszel.com>
2023-08-10 11:53:52 +02:00
Ruben Fiszel
0d535e138f make version missing not critical for backward compatibility 2023-08-10 10:30:32 +02:00
Ruben Fiszel
2de4192cac fix: restrict furthermore when the summary is transformed into a path 2023-08-10 09:28:50 +02:00
Ruben Fiszel
20807b85bb chore(main): release 1.144.4 (#2021)
* chore(main): release 1.144.4

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-10 08:35:39 +02:00
Ruben Fiszel
785e172e6e fix: revert monaco update 2023-08-10 08:33:07 +02:00
Ruben Fiszel
99c7867728 chore(main): release 1.144.3 (#2020)
* chore(main): release 1.144.3

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-10 08:23:44 +02:00
Ruben Fiszel
f4de5ea436 fix: revert monaco update 2023-08-10 08:20:51 +02:00
Ruben Fiszel
fb64ba0344 fix: fix monaco initialize api error 2023-08-10 07:11:02 +02:00
Ruben Fiszel
bd59cdf8d4 chore(main): release 1.144.2 (#2019)
* chore(main): release 1.144.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-10 00:32:34 +02:00
Ruben Fiszel
ec54a21e38 rm console.log 2023-08-10 00:31:03 +02:00
Ruben Fiszel
f3b674acd1 fix: make path changeable even if linked to summary 2023-08-10 00:30:27 +02:00
Ruben Fiszel
b427d5d360 chore(main): release 1.144.1 (#2018)
* chore(main): release 1.144.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-10 00:20:41 +02:00
Ruben Fiszel
003da78a46 fix: make path changeable even if linked to summary 2023-08-10 00:17:19 +02:00
dependabot[bot]
7519701418 chore(deps): bump monaco-languageclient from 6.0.3 to 6.3.0 in /frontend (#2004)
* chore(deps): bump monaco-languageclient from 6.0.3 to 6.3.0 in /frontend

Bumps [monaco-languageclient](https://github.com/TypeFox/monaco-languageclient/tree/HEAD/packages/client) from 6.0.3 to 6.3.0.
- [Changelog](https://github.com/TypeFox/monaco-languageclient/blob/main/packages/client/CHANGELOG.md)
- [Commits](https://github.com/TypeFox/monaco-languageclient/commits/HEAD/packages/client)

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

Signed-off-by: dependabot[bot] <support@github.com>

* update

---------

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-08-09 23:19:18 +02:00
dependabot[bot]
c6d1aa6ab1 chore(deps-dev): bump stylelint-config-recommended in /frontend (#1890)
Bumps [stylelint-config-recommended](https://github.com/stylelint/stylelint-config-recommended) from 12.0.0 to 13.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/12.0.0...13.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-08-09 23:17:10 +02:00
Ruben Fiszel
32f9db10a4 fix topHash issue 2023-08-09 22:33:06 +02:00
Ruben Fiszel
bfe4f61275 chore(main): release 1.144.0 (#2011) 2023-08-09 18:33:33 +02:00
HugoCasa
356b1f2242 fix: graphql api not db (#2017)
* fix: graphql api not db

* fix: use api instead of db in test connection gql
2023-08-09 18:31:43 +02:00
Ruben Fiszel
cd7630f10c check dup on flow editor 2023-08-09 17:04:42 +02:00
Ruben Fiszel
3e6b005bb2 fix flow editor 2023-08-09 16:50:30 +02:00
Ruben Fiszel
ead25ecf98 fix flow editor 2023-08-09 16:50:20 +02:00
Ruben Fiszel
fb4cb32644 add snowflake to native workers in docker-compose 2023-08-09 16:21:26 +02:00
HugoCasa
e4534d2dc3 feat: add graphql support (#2014)
* feat: add graphql support

* fix: use custom editor for viewing graphql schema

* fix: graphql parser cargo version

* fix: add graphql where missing
2023-08-09 16:19:57 +02:00
HugoCasa
46ff76fc86 fix: hide AI Gen btn when language not supported (#2016) 2023-08-09 16:02:23 +02:00
Ruben Fiszel
83d1d11a93 fix: make flow editor more resilient to id duplicates 2023-08-09 13:11:04 +02:00
Ruben Fiszel
383793f799 feat: v0 of relative imports in bun 2023-08-09 12:05:36 +02:00
Faton Ramadani
0b8d37a248 fix(frontend): Fix flow preview (#2013)
* fix(frontend): Fix flow preview

* fix(frontend): fix z-index

* fix(frontend): fix z-index

* fix(frontend): clean up Select and MultiSelect styles

* fix(frontend): clean up Select and MultiSelect styles
2023-08-09 10:24:59 +02:00
Ruben Fiszel
933021ad8d feat: implement binary caching for go 2023-08-08 20:54:31 +02:00
Faton Ramadani
40c86e4f4b feat(frontend): Add disable prop to App Toggles (#2010) 2023-08-08 15:26:15 +02:00
Ruben Fiszel
895ed014c4 chore(main): release 1.143.0 (#2008)
* chore(main): release 1.143.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-08 14:20:12 +02:00
Ruben Fiszel
1d1cd31252 fix: fix clear schedule to be workspace specific 2023-08-08 14:10:56 +02:00
Faton Ramadani
c22e3b5402 fix(frontend): Fix auto invite overflow (#2009) 2023-08-08 13:42:29 +02:00
Dave Nicolson
19aa2d88c1 Grammar fixes (#2001)
* Fix typos

* Fix TypeScript capitalization

* Fix log in verb

* Fix log out verb

---------

Co-authored-by: Faton Ramadani <faton.ramadani14@gmail.com>
2023-08-08 12:02:51 +02:00
Ruben Fiszel
b5ba9daffc fix: add BASE_URL and WM_TOKEN to native scripts 2023-08-08 12:02:07 +02:00
Ruben Fiszel
7efe615a0d update openapi 2023-08-08 10:41:54 +02:00
DM-Canteen
f6c9e349fc feat(frontend): add disabled prop to select input (#2007) 2023-08-08 02:09:25 +02:00
Ruben Fiszel
1be293f827 chore(main): release 1.142.0 (#1996)
* chore(main): release 1.142.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <rubenfiszel@users.noreply.github.com>
2023-08-07 21:38:26 +02:00
Ruben Fiszel
e7febc7596 fix: custom config layout get priority for plotly components 2023-08-07 20:26:03 +02:00
Ruben Fiszel
8a07b9482a fix compile 2023-08-07 19:39:25 +02:00
Faton Ramadani
5f3b2eacbf fix(frontend): Download as CSV (#2000)
* fix(frontend): Download as CSV

* fix(frontend): Download as CSV
2023-08-07 18:16:28 +02:00
Faton Ramadani
57110b93c9 feat(frontend): Audit logs rework (#1997)
* feat(frontend): rework settings wup

* feat(frontend): rework settings wop

* feat(frontend): rework settings wip

* feat(frontend): rework workers + folders

* feat(frontend): modify the nord theme

* feat(frontend): folder columns size

* feat(frontend): Fix build

* feat(frontend): rework audit ogs

* feat(frontend): rework audit ogs

* feat(frontend): rework audit structure

* feat(frontend): Add missing filters

* feat(frontend): updating AuditLog openapi

* feat(frontend): desktop view done

* feat(frontend): fix build

* feat(frontend): audit log rework

* feat(frontend): fix filters
2023-08-07 15:22:13 +02:00
HugoCasa
dee1096bc0 feat(frontend): make diff editor editable (#1999) 2023-08-07 12:40:17 +02:00
Ruben Fiszel
933771651e fix: refresh token on login and regularly 2023-08-06 10:27:57 +02:00
Ruben Fiszel
90dfda0d1f feat: add magic tag part 2023-08-05 23:31:10 +02:00
596 changed files with 184223 additions and 94640 deletions

2
.github/Dockerfile vendored
View File

@@ -1,7 +1,7 @@
FROM nikolaik/python-nodejs
RUN npm install -g @apidevtools/swagger-cli
RUN pip install openapi-python-client
RUN pip install openapi-python-client==0.15.1
RUN pip install poetry

View File

@@ -33,7 +33,7 @@ ENV SQLX_OFFLINE=true
RUN mkdir -p /frontend/build
RUN apt-get update \
&& apt-get install -y ca-certificates tzdata libpq5 \
&& apt-get install -y ca-certificates tzdata libpq5 cmake\
make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \
libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libxml2-dev \
libxmlsec1-dev libffi-dev liblzma-dev mecab-ipadic-utf8 libgdbm-dev libc6-dev git libprotobuf-dev=3.6.* libnl-route-3-dev=3.4.* \

View File

@@ -4,4 +4,4 @@ RUN python3 -m pip install pipx poetry
RUN python3 -m pipx ensurepath
ENV PATH="/root/.local/bin:${PATH}"
ENV PATH="/usr/local/bin:${PATH}"
RUN pipx install openapi-python-client==0.11.6 --include-deps
RUN pipx install openapi-python-client==0.15.1 --include-deps

View File

@@ -8,6 +8,7 @@ sed -i -e "/^export const VERSION =/s/= .*/= \"v$VERSION\";/" cli/main.ts
sed -i -e "/^export const VERSION =/s/= .*/= \"v$VERSION\";/" benchmarks/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\",/" typescript-client/package.json
sed -i -e "/\"version\": /s/: .*,/: \"$VERSION\",/" frontend/package.json
sed -i -e "/^version =/s/= .*/= \"$VERSION\"/" python-client/wmill/pyproject.toml
sed -i -e "/^windmill-api =/s/= .*/= \"\\^$VERSION\"/" python-client/wmill/pyproject.toml

View File

@@ -18,7 +18,6 @@ jobs:
runs-on: [self-hosted, new]
container:
image: ghcr.io/windmill-labs/backend-tests
options: --privileged
services:
postgres:
image: postgres
@@ -27,9 +26,7 @@ jobs:
POSTGRES_PASSWORD: changeme
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-cmd pg_isready --health-interval 10s --health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v3
@@ -41,4 +38,8 @@ 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 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

41
.github/workflows/benchmark.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: Run benchmarks
on:
schedule:
- cron: "0 0 */1 * *"
workflow_dispatch:
jobs:
benchmark:
runs-on: [self-hosted, new]
services:
postgres:
image: postgres
env:
POSTGRES_DB: windmill
POSTGRES_PASSWORD: changeme
options: >-
--health-cmd pg_isready --health-interval 10s --health-timeout 5s
--health-retries 5
windmill:
image: ghcr.io/windmill-labs/windmill:main
env:
DATABASE_URL: postgres://postgres:changeme@postgres:5432/windmill
options: >-
--pull always --health-interval 10s --health-timeout 5s
--health-retries 5 --health-cmd "curl
http://localhost:8000/api/version"
ports:
- 8000:8000
steps:
- uses: denoland/setup-deno@v1
with:
deno-version: v1.x
- name: benchmark
timeout-minutes: 10
run:
deno run --unstable -A
https://raw.githubusercontent.com/windmill-labs/windmill/main/benchmarks/benchmark_noop.ts
--host http://localhost:8000 -e admin@windmill.dev -p changeme -j
10000

View File

@@ -3,7 +3,10 @@ env:
IMAGE_NAME: ${{ github.repository }}
name: Build windmill:mssql
on: workflow_dispatch
on:
workflow_dispatch:
schedule:
- cron: "0 0 */4 * *"
concurrency:
group: ${{ github.ref }}-mssql

18
.github/workflows/npm_on_release.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: Publish typescript-client
on:
push:
tags:
- "v*"
jobs:
build_npm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: "16.x"
registry-url: "https://registry.npmjs.org"
- run: cd typescript-client && ./publish.sh
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

84
.github/workflows/publish_lsp.yml vendored Normal file
View File

@@ -0,0 +1,84 @@
env:
REGISTRY: ghcr.io
ECR_REGISTRY: 976079455550.dkr.ecr.us-east-1.amazonaws.com
IMAGE_NAME: ${{ github.repository }}-lsp
name: Publish lsp
on:
push:
tags:
- "v*"
workflow_dispatch:
permissions:
contents: read
id-token: write
packages: write
jobs:
publish_lsp:
runs-on: ubuntu-latest
steps:
- name: Sleep for 900 seconds waiting for pypi to update index
if: startsWith(github.ref, 'refs/tags/v')
run: sleep 900
shell: bash
- 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: "{{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:
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,8 +1,3 @@
env:
REGISTRY: ghcr.io
ECR_REGISTRY: 976079455550.dkr.ecr.us-east-1.amazonaws.com
IMAGE_NAME: ${{ github.repository }}-lsp
name: Publish python-client
on:
push:
@@ -10,11 +5,6 @@ on:
- "v*"
workflow_dispatch:
permissions:
contents: read
id-token: write
packages: write
jobs:
publish_pypi:
runs-on: ubuntu-latest
@@ -29,70 +19,3 @@ jobs:
run: |
cd python-client
./publish.sh
publish_lsp:
runs-on: ubuntu-latest
steps:
- 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
- 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: "{{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:
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,6 +1,519 @@
# Changelog
## [1.167.0](https://github.com/windmill-labs/windmill/compare/v1.166.1...v1.167.0) (2023-09-04)
### Features
* submit result in background thread (unify architecture for dedicated worker) ([#2226](https://github.com/windmill-labs/windmill/issues/2226)) ([dff1cd9](https://github.com/windmill-labs/windmill/commit/dff1cd9a64f755f239eb57599c104c47f4d33b12))
### Bug Fixes
* **cli:** prioritize correctly content file to resolve for ts types ([2906d53](https://github.com/windmill-labs/windmill/commit/2906d535a126f4fe2cfe6dffda46e5fe841056da))
## [1.166.1](https://github.com/windmill-labs/windmill/compare/v1.166.0...v1.166.1) (2023-09-03)
### Bug Fixes
* fix setting is ready for s3 workers ([b0ed0f9](https://github.com/windmill-labs/windmill/commit/b0ed0f964843247d11ecfe586f1565589df95ff6))
## [1.166.0](https://github.com/windmill-labs/windmill/compare/v1.165.0...v1.166.0) (2023-09-03)
### Features
* **frontend:** App stepper debug ([#2202](https://github.com/windmill-labs/windmill/issues/2202)) ([77f8eac](https://github.com/windmill-labs/windmill/commit/77f8eac21e0edfa1eada617d78a498a3a6ae1dce))
### Bug Fixes
* fix datetime handling for python ([b35ffd4](https://github.com/windmill-labs/windmill/commit/b35ffd435de97ed34fcda69490abd734ea3229fa))
* **frontend:** Fix App Modal z-index ([#2210](https://github.com/windmill-labs/windmill/issues/2210)) ([9787edb](https://github.com/windmill-labs/windmill/commit/9787edb67c329265bf179fe304d00cdc1df7042e))
* see run detail in a new tab ([719a7b1](https://github.com/windmill-labs/windmill/commit/719a7b11da81f68452ba9fc22ff456fe1ddde1de))
* update wmill python generator thus updating windmill-api ([f912f1d](https://github.com/windmill-labs/windmill/commit/f912f1de86e91c5cdbc0012e2362467c4965936a))
### Performance Improvements
* improve queue performance ([#2222](https://github.com/windmill-labs/windmill/issues/2222)) ([069e2d1](https://github.com/windmill-labs/windmill/commit/069e2d18d586aa3d407e3b089d1ad94b2b838af0))
## [1.165.0](https://github.com/windmill-labs/windmill/compare/v1.164.0...v1.165.0) (2023-08-31)
### Features
* improve queue performance when queue grows large ([ada88a2](https://github.com/windmill-labs/windmill/commit/ada88a2bf94fec71187bbdb210065de43d4cd3fb))
* support partial go dependency pinning ([41107c7](https://github.com/windmill-labs/windmill/commit/41107c7cfa7b56099a9c8b08cfb16ff3cf840ff2))
### Bug Fixes
* uniformize that all job links specify the workspace ([d311d76](https://github.com/windmill-labs/windmill/commit/d311d76557432a72a5d6d7ab010aeb1fe0e599de))
## [1.164.0](https://github.com/windmill-labs/windmill/compare/v1.163.1...v1.164.0) (2023-08-31)
### Features
* add workspace variable to worker tag ([276cd6d](https://github.com/windmill-labs/windmill/commit/276cd6dac39b7cb181ac46e3edea79a3a3bcff8d))
### Bug Fixes
* **frontend:** allow using Docker in Flow ([#2201](https://github.com/windmill-labs/windmill/issues/2201)) ([bb749c1](https://github.com/windmill-labs/windmill/commit/bb749c14f877f7cb1e8642b881a00aedfeb08f7d))
## [1.163.1](https://github.com/windmill-labs/windmill/compare/v1.163.0...v1.163.1) (2023-08-30)
### Bug Fixes
* avoid perpetual spinning of recompute all component ([11e1ecb](https://github.com/windmill-labs/windmill/commit/11e1ecbcda92f5ab643b776094ef10005d51b579))
## [1.163.0](https://github.com/windmill-labs/windmill/compare/v1.162.2...v1.163.0) (2023-08-30)
### Features
* add global cache configuration ([7c5ea56](https://github.com/windmill-labs/windmill/commit/7c5ea569a8102ef052d42216e2ff8d4c3169a7a5))
### Bug Fixes
* fix cyclical loop in apps ([61df339](https://github.com/windmill-labs/windmill/commit/61df339343767e63cbe7a4e75f1fd4f848dbd7e0))
## [1.162.2](https://github.com/windmill-labs/windmill/compare/v1.162.1...v1.162.2) (2023-08-29)
### Bug Fixes
* fix incorrect bump ([4704899](https://github.com/windmill-labs/windmill/commit/4704899a81cb281b99949c934184e23b199b2ed8))
## [1.162.1](https://github.com/windmill-labs/windmill/compare/v1.162.0...v1.162.1) (2023-08-29)
### Bug Fixes
* fix deps incompatibilities ([6c5a8a3](https://github.com/windmill-labs/windmill/commit/6c5a8a3613b4608e6d2b57e7f40cd4ab2d1af9ae))
## [1.162.0](https://github.com/windmill-labs/windmill/compare/v1.161.0...v1.162.0) (2023-08-29)
### Features
* add cache to inline scripts ([bf0014c](https://github.com/windmill-labs/windmill/commit/bf0014c387361ce358d31c7cbc44a9c4c97606df))
* add caching to flows and scripts ([#2193](https://github.com/windmill-labs/windmill/issues/2193)) ([03e48a4](https://github.com/windmill-labs/windmill/commit/03e48a4ca557cd2c385988d3a935cea38bc6e81e))
* **frontend:** Filter runs by user ([#2187](https://github.com/windmill-labs/windmill/issues/2187)) ([095969f](https://github.com/windmill-labs/windmill/commit/095969f125e9186cb4f02f75e914ef9a70e3abc4))
### Bug Fixes
* add setState, getState to client ([67f868f](https://github.com/windmill-labs/windmill/commit/67f868f08ed10f3f7c185af67bff7080c339e974))
* relative imports in deno ([30ea354](https://github.com/windmill-labs/windmill/commit/30ea354cae91ea040b3112c4138a1e5f0d7ab530))
## [1.161.0](https://github.com/windmill-labs/windmill/compare/v1.160.0...v1.161.0) (2023-08-28)
### Features
* concurrency limits for flows ([d0d041f](https://github.com/windmill-labs/windmill/commit/d0d041fde37ceda5e3a04e5da9c87d6b7e5691b3))
* early stop for flows ([6354c95](https://github.com/windmill-labs/windmill/commit/6354c95bb74c5d1af838234c0146176a0d3e408e))
* **frontend:** rework premium plans ([#2155](https://github.com/windmill-labs/windmill/issues/2155)) ([272ff63](https://github.com/windmill-labs/windmill/commit/272ff63e4072b4c25a46c133b518649f88b7598e))
### Bug Fixes
* allow deno to --write lock when using lockfiles ([770a3e8](https://github.com/windmill-labs/windmill/commit/770a3e8835637af1b1e017ecc1675e526ca40345))
* fix refresh init in presence of app stepper ([840fbbc](https://github.com/windmill-labs/windmill/commit/840fbbcbb1f969ef3b000f9e50d5c5dde8371995))
## [1.160.0](https://github.com/windmill-labs/windmill/compare/v1.159.0...v1.160.0) (2023-08-27)
### Features
* add parallelism control to forloops ([34e2a80](https://github.com/windmill-labs/windmill/commit/34e2a8001afa8bb948bf907383bffbc8aa11901f))
## [1.159.0](https://github.com/windmill-labs/windmill/compare/v1.158.2...v1.159.0) (2023-08-27)
### Features
* add support for root certificate in postgresql ([b492fd9](https://github.com/windmill-labs/windmill/commit/b492fd98846ff4b4e073bb41de91dd84f0bd7031))
* support to set linked secret variable to any field of a newly created resource ([fe1e419](https://github.com/windmill-labs/windmill/commit/fe1e419fa83db6a9db59aac23490e52cd3649f51))
### Bug Fixes
* canceling jobs ([0dfdf8f](https://github.com/windmill-labs/windmill/commit/0dfdf8fa1be88d601f7dbf7b348aaf8a3ae8e2fd))
* fix app table footer label when -1 ([24ac1e2](https://github.com/windmill-labs/windmill/commit/24ac1e25ff87eef591e9f766bd0e7991b3668723))
* operation are redacted instead of username which fix audit logs for non admin users ([487d56c](https://github.com/windmill-labs/windmill/commit/487d56cb0fedde47c77cdb7a4b5424b51c4a2e10))
## [1.158.2](https://github.com/windmill-labs/windmill/compare/v1.158.1...v1.158.2) (2023-08-26)
### Bug Fixes
* expose getResumeUrls in windmill-client ([3142bc9](https://github.com/windmill-labs/windmill/commit/3142bc932c8ca915b9dda8879d31ef19ecfaa07f))
## [1.158.1](https://github.com/windmill-labs/windmill/compare/v1.158.0...v1.158.1) (2023-08-26)
### Bug Fixes
* fix windmill-client ([7defd45](https://github.com/windmill-labs/windmill/commit/7defd451ac847b9824d503d0b7685344221ff564))
## [1.158.0](https://github.com/windmill-labs/windmill/compare/v1.157.0...v1.158.0) (2023-08-26)
### Features
* add lockfile for deno + use npm module for deno for windmill-client ([9547a06](https://github.com/windmill-labs/windmill/commit/9547a061da0b80a4bc278ee09a0004d410ec7410))
## [1.157.0](https://github.com/windmill-labs/windmill/compare/v1.156.1...v1.157.0) (2023-08-26)
### Features
* lock inline scripts for apps on deploy ([f5121e9](https://github.com/windmill-labs/windmill/commit/f5121e9066e1a93ad6f928daad891a08ae840d81))
### Bug Fixes
* make workspace error handler picker accept any script ([53976da](https://github.com/windmill-labs/windmill/commit/53976da8ae70de3f8e251564220312541604d77b))
## [1.156.1](https://github.com/windmill-labs/windmill/compare/v1.156.0...v1.156.1) (2023-08-25)
### Bug Fixes
* fix python client ([7649a53](https://github.com/windmill-labs/windmill/commit/7649a53f3c792ceba8f2a0fc8535c512b25bf969))
## [1.156.0](https://github.com/windmill-labs/windmill/compare/v1.155.0...v1.156.0) (2023-08-24)
### Features
* schedule recovery handler ([#2126](https://github.com/windmill-labs/windmill/issues/2126)) ([0dcb425](https://github.com/windmill-labs/windmill/commit/0dcb425e4a9cf241ed301f794680b36a7f17cc34))
## [1.155.0](https://github.com/windmill-labs/windmill/compare/v1.154.2...v1.155.0) (2023-08-24)
### Features
* add templatev2 using new eval ([13d870f](https://github.com/windmill-labs/windmill/commit/13d870f16370a74fe481a1701eda27109a776c75))
* eval v2, blazing fast eval triggered only upon the right changes ([#2164](https://github.com/windmill-labs/windmill/issues/2164)) ([5207a7a](https://github.com/windmill-labs/windmill/commit/5207a7a6aa1520c987d26d5c1f99f653c1c81cf6))
* remove connect in favor of eval ([e7aaa17](https://github.com/windmill-labs/windmill/commit/e7aaa177b72749ca9d0d78c452ec8e47d6514186))
### Bug Fixes
* bump bun to 0.8.0 ([4825519](https://github.com/windmill-labs/windmill/commit/4825519ac94a4992cf21fbf4a21fbea8038058d9))
* fix tables not updating inputs on creation ([a419bc4](https://github.com/windmill-labs/windmill/commit/a419bc41bfadce1ac75383d1824ff9fef3404aad))
* **frontend:** Fix code display + use async/await in fetch examples ([#2150](https://github.com/windmill-labs/windmill/issues/2150)) ([2f9177f](https://github.com/windmill-labs/windmill/commit/2f9177f6cec0a676c774ee426482f55227e6e388))
* **frontend:** fix copyToClipboard on non-HTTPS site ([#2046](https://github.com/windmill-labs/windmill/issues/2046)) ([95ea0e8](https://github.com/windmill-labs/windmill/commit/95ea0e8f87195816dde3f9554b3cb92791b63a37))
* update go to 1.12.0 and deno to 1.36.2 ([4317573](https://github.com/windmill-labs/windmill/commit/431757339bbfff6d67f484439d87255acc5c62ff))
* update python client with by_path methods ([8a25a86](https://github.com/windmill-labs/windmill/commit/8a25a86e586485e7949bb208fa94db906e983b6c))
## [1.154.2](https://github.com/windmill-labs/windmill/compare/v1.154.1...v1.154.2) (2023-08-22)
### Bug Fixes
* fix cancel job for flows in some edge cases ([58bb19a](https://github.com/windmill-labs/windmill/commit/58bb19a4471ce8cfced4b144fca40069b5ce0820))
## [1.154.1](https://github.com/windmill-labs/windmill/compare/v1.154.0...v1.154.1) (2023-08-22)
### Bug Fixes
* **frontend:** Fix hub navigation ([#2151](https://github.com/windmill-labs/windmill/issues/2151)) ([d0ed8f0](https://github.com/windmill-labs/windmill/commit/d0ed8f0fefe3176b9bab621a6b3e9231254504e2))
* show for-loop settings ([ab8a27f](https://github.com/windmill-labs/windmill/commit/ab8a27f123fbca187eee3b372d512797f8a03916))
## [1.154.0](https://github.com/windmill-labs/windmill/compare/v1.153.0...v1.154.0) (2023-08-21)
### Features
* deploy folders as well in the UI deployer ([bcf5d4e](https://github.com/windmill-labs/windmill/commit/bcf5d4e5d42a7d17e2d1932b030cca101d9de9b4))
### Bug Fixes
* avoid stack-overflow on jsruntime for recursive objects ([127eea3](https://github.com/windmill-labs/windmill/commit/127eea3c8144b14b8f78a196f5c2cd245d2caad9))
* do not require auth for OPTIONS requests ([bdd59c9](https://github.com/windmill-labs/windmill/commit/bdd59c94a9bde10e808427ef529d1b6ab6e78a45))
## [1.153.0](https://github.com/windmill-labs/windmill/compare/v1.152.0...v1.153.0) (2023-08-20)
### Features
* multiline support in bash ([e1469cc](https://github.com/windmill-labs/windmill/commit/e1469cc64d672b5fc42edac313bc11a017812511))
### Bug Fixes
* update deno-client to use new Resource and Variable endpoints ([c13428a](https://github.com/windmill-labs/windmill/commit/c13428ad089999e38768b86bfd251d747759dc69))
## [1.152.0](https://github.com/windmill-labs/windmill/compare/v1.151.2...v1.152.0) (2023-08-20)
### Features
* handle drift in every time referencing db times ([b9fb206](https://github.com/windmill-labs/windmill/commit/b9fb206c112798f3776ba0e6da70e86e7c769a1f))
* prometheus metrics are now ee only ([2afea50](https://github.com/windmill-labs/windmill/commit/2afea504977f9cd08d62c5f85be1fd2cefe8a691))
### Bug Fixes
* improve progress bar UX ([85d2d47](https://github.com/windmill-labs/windmill/commit/85d2d4782779d981a131f48db6e1058fe79daeef))
* reinit retry to undefined in flow steps ([75f4723](https://github.com/windmill-labs/windmill/commit/75f472381cfa73d77295b29a202efbd58c79918d))
## [1.151.2](https://github.com/windmill-labs/windmill/compare/v1.151.1...v1.151.2) (2023-08-18)
### Bug Fixes
* **frontend:** Fix app multiselect dark mode ([#2121](https://github.com/windmill-labs/windmill/issues/2121)) ([be577e5](https://github.com/windmill-labs/windmill/commit/be577e561dff33a404bb6f29f178b01f20aa0121))
* **frontend:** Fix JSON pane scroll issues ([#2123](https://github.com/windmill-labs/windmill/issues/2123)) ([d367716](https://github.com/windmill-labs/windmill/commit/d367716b0a8198573b26a3c82ac7e4fd9cefe753))
## [1.151.1](https://github.com/windmill-labs/windmill/compare/v1.151.0...v1.151.1) (2023-08-18)
### Bug Fixes
* at UTC Time ([0193fcc](https://github.com/windmill-labs/windmill/commit/0193fcc1d7c24147e553a0e3f9f0ab8d6f5d5996))
* improve flow progress bar ([67cb451](https://github.com/windmill-labs/windmill/commit/67cb4516c913926c1755e46bc7acf46340fdb692))
* show help on empty cli args ([237460b](https://github.com/windmill-labs/windmill/commit/237460b121846d160a40e849bf85fabbb7c14fdc))
## [1.151.0](https://github.com/windmill-labs/windmill/compare/v1.150.0...v1.151.0) (2023-08-17)
### Features
* **frontend:** Fix workspace switch + always displays confirmation modal on top of splitpanel separator ([#2115](https://github.com/windmill-labs/windmill/issues/2115)) ([eea9ce9](https://github.com/windmill-labs/windmill/commit/eea9ce93b918115e9ed6b951d000049ca66bd5fd))
### Bug Fixes
* fix python get_resource ([cb00a13](https://github.com/windmill-labs/windmill/commit/cb00a1358d0e47575d8315e70695a9693190f211))
## [1.150.0](https://github.com/windmill-labs/windmill/compare/v1.149.0...v1.150.0) (2023-08-17)
### Features
* copilot tokens streaming + cancel ([#2107](https://github.com/windmill-labs/windmill/issues/2107)) ([82612c3](https://github.com/windmill-labs/windmill/commit/82612c35bd4cd15af21582f9650b615d3e12c06c))
* graphql custom headers ([#2111](https://github.com/windmill-labs/windmill/issues/2111)) ([6733b85](https://github.com/windmill-labs/windmill/commit/6733b8552b1128663c8fb8086c85ad0406d9b999))
### Bug Fixes
* powershell icon ([#2109](https://github.com/windmill-labs/windmill/issues/2109)) ([c817af7](https://github.com/windmill-labs/windmill/commit/c817af769457a069617fafb2d3fcf38a85212690))
* set NETRC at init and not for every job ([359845f](https://github.com/windmill-labs/windmill/commit/359845fa9dd14e8445cc95e73cc646dce1f45ddb))
* unify clients to use server-side interpolation to retrieve full resources ([067908c](https://github.com/windmill-labs/windmill/commit/067908c0b59f1e73222cad0e5f214f3605006ef3))
* unify clients to use server-side interpolation to retrieve full resources ([930839a](https://github.com/windmill-labs/windmill/commit/930839aad22eaeee0737f1d057b8cfb538d26d3f))
* unify clients to use server-side interpolation to retrieve full resources ([e9c19b5](https://github.com/windmill-labs/windmill/commit/e9c19b5b985c0e03524b2d12b1f26a0e6fdc6e0b))
## [1.149.0](https://github.com/windmill-labs/windmill/compare/v1.148.0...v1.149.0) (2023-08-17)
### Features
* **frontend:** Add List pagination + add loading state in tables ([#2096](https://github.com/windmill-labs/windmill/issues/2096)) ([9b15e40](https://github.com/windmill-labs/windmill/commit/9b15e409a5b902874d0cf1566b57db6fc23a87ec))
### Bug Fixes
* appgrid refresh selected on row on result changes ([0af264f](https://github.com/windmill-labs/windmill/commit/0af264f6f8d0ff018094b97a2af9fe6f02e6ccfe))
* fix folder creation if job folder already exist ([c320ea8](https://github.com/windmill-labs/windmill/commit/c320ea865f1632e517d4c597491517da89ff77e7))
* fix go envs passing ([ed6494f](https://github.com/windmill-labs/windmill/commit/ed6494ff7a1f6102eaad8c0052c1ac3f82d4cadf))
* **frontend:** Fix toast when adding a user + set default vscoode the… ([#2080](https://github.com/windmill-labs/windmill/issues/2080)) ([801f2a8](https://github.com/windmill-labs/windmill/commit/801f2a8299956f0debe95bb13faef798a0ea0b08))
## [1.148.0](https://github.com/windmill-labs/windmill/compare/v1.147.3...v1.148.0) (2023-08-14)
### Features
* add s3 snippets ([#2052](https://github.com/windmill-labs/windmill/issues/2052)) ([beb4a00](https://github.com/windmill-labs/windmill/commit/beb4a000e3631a1b0a27a68923361652317aec63))
### Bug Fixes
* allow multiple db schema explorers ([#2054](https://github.com/windmill-labs/windmill/issues/2054)) ([e1b4f0a](https://github.com/windmill-labs/windmill/commit/e1b4f0a8328bc62a19e693bac99589711d08d566))
* **frontend:** Fix Dark mode in the sleep helpbox ([#2072](https://github.com/windmill-labs/windmill/issues/2072)) ([c6ef1a6](https://github.com/windmill-labs/windmill/commit/c6ef1a6d4fbe5661f6b9018121e21061952908d0))
* handle object pat in sig of typescript ([1d8213a](https://github.com/windmill-labs/windmill/commit/1d8213a25ba90f3d4af952e03c74196f8ce908ab))
* remove ansi codes from result ([#2069](https://github.com/windmill-labs/windmill/issues/2069)) ([a3fa174](https://github.com/windmill-labs/windmill/commit/a3fa174cd46ce1bd67a69f7781dbdfa0719d3d06))
* script fix no resource + error handling ([#2053](https://github.com/windmill-labs/windmill/issues/2053)) ([00b1afb](https://github.com/windmill-labs/windmill/commit/00b1afb1c90773408d1dc3233a25fa93e24d4da0))
## [1.147.3](https://github.com/windmill-labs/windmill/compare/v1.147.2...v1.147.3) (2023-08-13)
### Bug Fixes
* **bun:** correctly handle empty deps script bun to deploy ([46b25f9](https://github.com/windmill-labs/windmill/commit/46b25f9b550f5f8e804cabeeeb575daea46cba31))
## [1.147.2](https://github.com/windmill-labs/windmill/compare/v1.147.1...v1.147.2) (2023-08-13)
### Bug Fixes
* **bun:** add npm type acquisition ([3284245](https://github.com/windmill-labs/windmill/commit/32842457fef73f654ca89c3a232265927cf40961))
## [1.147.1](https://github.com/windmill-labs/windmill/compare/v1.147.0...v1.147.1) (2023-08-13)
### Bug Fixes
* **bun:** only install -p dependencies ([23164c8](https://github.com/windmill-labs/windmill/commit/23164c83494ee6f42e77b181de0df26b4fba22dc))
* **bun:** only install when requirements are missing if using nsjail ([3bc1050](https://github.com/windmill-labs/windmill/commit/3bc1050258bd7a9ba2be739144260037d2274b87))
## [1.147.0](https://github.com/windmill-labs/windmill/compare/v1.146.1...v1.147.0) (2023-08-13)
### Features
* add lsp to bun and remove experimental status ([891c9dc](https://github.com/windmill-labs/windmill/commit/891c9dc266edea4f5239f1a82c884437b7df89e4))
## [1.146.1](https://github.com/windmill-labs/windmill/compare/v1.146.0...v1.146.1) (2023-08-13)
### Bug Fixes
* **bun:** windmill-client does not require set to be initalized ([993a145](https://github.com/windmill-labs/windmill/commit/993a14502fb16387b174d1af19c87d3ae65c317c))
* enable bun to do resolution as fallback to allow specifier ([9c97828](https://github.com/windmill-labs/windmill/commit/9c978281cdbfefa7d11213a181ffcbfdfac8115e))
* powershell escape backticks ([#2044](https://github.com/windmill-labs/windmill/issues/2044)) ([cddef1a](https://github.com/windmill-labs/windmill/commit/cddef1a50a48e7cb60a69762a579b95e0018aa17))
* really use bun in flow builder ([#2045](https://github.com/windmill-labs/windmill/issues/2045)) ([c2281ef](https://github.com/windmill-labs/windmill/commit/c2281ef5da7aa0222e70c5f6ca91d066d79d3862))
## [1.146.0](https://github.com/windmill-labs/windmill/compare/v1.145.3...v1.146.0) (2023-08-12)
### Features
* respect lockfiles for bun ([2ba132b](https://github.com/windmill-labs/windmill/commit/2ba132bd05fc1b01e6de19ac13e98100f55f8895))
### Bug Fixes
* fix array static input editor initialization ([4dcf7ae](https://github.com/windmill-labs/windmill/commit/4dcf7ae088d336171d58aa8914c6b58ec522cc14))
## [1.145.3](https://github.com/windmill-labs/windmill/compare/v1.145.2...v1.145.3) (2023-08-11)
### Bug Fixes
* fix bun client ([611d42d](https://github.com/windmill-labs/windmill/commit/611d42db2caa7cf366d7c67ee1434d8de2be8a97))
## [1.145.2](https://github.com/windmill-labs/windmill/compare/v1.145.1...v1.145.2) (2023-08-11)
### Bug Fixes
* **bun:** remove need for manual setClient ([4794bd0](https://github.com/windmill-labs/windmill/commit/4794bd0b60268db7c679b2faa2692f6fceb5769f))
## [1.145.1](https://github.com/windmill-labs/windmill/compare/v1.145.0...v1.145.1) (2023-08-11)
### Bug Fixes
* sqlx build ([169c413](https://github.com/windmill-labs/windmill/commit/169c413c8d0519e7c11d4d0847585aff59da23e5))
## [1.145.0](https://github.com/windmill-labs/windmill/compare/v1.144.4...v1.145.0) (2023-08-11)
### Features
* add native powershell support ([#2025](https://github.com/windmill-labs/windmill/issues/2025)) ([8a1f9a7](https://github.com/windmill-labs/windmill/commit/8a1f9a7c6aadf735f3d6f118fbc8a344a675ec6a))
* **frontend:** Runs rework v2 ([#2012](https://github.com/windmill-labs/windmill/issues/2012)) ([7d88a2d](https://github.com/windmill-labs/windmill/commit/7d88a2d13ade2265532a222ca2b0e804bd3b2e02))
* migrate state path to new schema ([de8a727](https://github.com/windmill-labs/windmill/commit/de8a7279b644cd1eb7999b9da2900b760acd7297))
### Bug Fixes
* **frontend:** Fix lagging issues when resizing ([#2027](https://github.com/windmill-labs/windmill/issues/2027)) ([c2a92b6](https://github.com/windmill-labs/windmill/commit/c2a92b69ef0b5acacbda38261e654fe7d7cf36f6))
* **frontend:** Handle invalid string defaults for date values. ([#2033](https://github.com/windmill-labs/windmill/issues/2033)) ([7cdd6db](https://github.com/windmill-labs/windmill/commit/7cdd6db3feeb99a0055ab187348aabfc7a979915))
* modify snake case numbers resource types ([#2029](https://github.com/windmill-labs/windmill/issues/2029)) ([a4ba4af](https://github.com/windmill-labs/windmill/commit/a4ba4af478d2cebf1b4840091446be65f2f9d224))
* restrict furthermore when the summary is transformed into a path ([2de4192](https://github.com/windmill-labs/windmill/commit/2de4192cac84336e0b812862b7dca3769a0ba4fc))
* sync dark-mode icon across multiple renders ([#2024](https://github.com/windmill-labs/windmill/issues/2024)) ([27a8e52](https://github.com/windmill-labs/windmill/commit/27a8e526f79c6b0d7e0d8f8ceb34d4355b5df46b))
## [1.144.4](https://github.com/windmill-labs/windmill/compare/v1.144.3...v1.144.4) (2023-08-10)
### Bug Fixes
* revert monaco update ([785e172](https://github.com/windmill-labs/windmill/commit/785e172e6eb83c107cad2c843a15234a6c6f9f6b))
## [1.144.3](https://github.com/windmill-labs/windmill/compare/v1.144.2...v1.144.3) (2023-08-10)
### Bug Fixes
* fix monaco initialize api error ([fb64ba0](https://github.com/windmill-labs/windmill/commit/fb64ba034442fa52ecf2fb88c8974ba184b58ef9))
* revert monaco update ([f4de5ea](https://github.com/windmill-labs/windmill/commit/f4de5ea436b2bdf8c92e27ce43f684116f47d1ff))
## [1.144.2](https://github.com/windmill-labs/windmill/compare/v1.144.1...v1.144.2) (2023-08-09)
### Bug Fixes
* make path changeable even if linked to summary ([f3b674a](https://github.com/windmill-labs/windmill/commit/f3b674acd1a0e76c12c321fa7d9d131716622ae5))
## [1.144.1](https://github.com/windmill-labs/windmill/compare/v1.144.0...v1.144.1) (2023-08-09)
### Bug Fixes
* make path changeable even if linked to summary ([003da78](https://github.com/windmill-labs/windmill/commit/003da78a46cce3a3376e375a74b9e5f31f4b6256))
## [1.144.0](https://github.com/windmill-labs/windmill/compare/v1.143.0...v1.144.0) (2023-08-09)
### Features
* add graphql support ([#2014](https://github.com/windmill-labs/windmill/issues/2014)) ([e4534d2](https://github.com/windmill-labs/windmill/commit/e4534d2dc329d307ca7690ab58bf3b063ad81539))
* **frontend:** Add disable prop to App Toggles ([#2010](https://github.com/windmill-labs/windmill/issues/2010)) ([40c86e4](https://github.com/windmill-labs/windmill/commit/40c86e4f4b5a511fc8059051f326e930f9bc7839))
* implement binary caching for go ([933021a](https://github.com/windmill-labs/windmill/commit/933021ad8d1d7cf70f9b3f56e1671046675dec3c))
* v0 of relative imports in bun ([383793f](https://github.com/windmill-labs/windmill/commit/383793f7991ff4c1024e1b86b418f01f2557d5e0))
### Bug Fixes
* **frontend:** Fix flow preview ([#2013](https://github.com/windmill-labs/windmill/issues/2013)) ([0b8d37a](https://github.com/windmill-labs/windmill/commit/0b8d37a2486df5756148645a630213d16e5998bc))
* graphql api not db ([#2017](https://github.com/windmill-labs/windmill/issues/2017)) ([356b1f2](https://github.com/windmill-labs/windmill/commit/356b1f2242d7bbe4c71e021cb441e29b652c5126))
* hide AI Gen btn when language not supported ([#2016](https://github.com/windmill-labs/windmill/issues/2016)) ([46ff76f](https://github.com/windmill-labs/windmill/commit/46ff76fc86884e11986edc998e06f37c43102d1f))
* make flow editor more resilient to id duplicates ([83d1d11](https://github.com/windmill-labs/windmill/commit/83d1d11a934843d91c76912018a3c057a97de101))
## [1.143.0](https://github.com/windmill-labs/windmill/compare/v1.142.0...v1.143.0) (2023-08-08)
### Features
* **frontend:** add disabled prop to select input ([#2007](https://github.com/windmill-labs/windmill/issues/2007)) ([f6c9e34](https://github.com/windmill-labs/windmill/commit/f6c9e349fc82a74efed6fb8ddb6d79889b8b031b))
### Bug Fixes
* add BASE_URL and WM_TOKEN to native scripts ([b5ba9da](https://github.com/windmill-labs/windmill/commit/b5ba9daffce8891ba54697cd595ac935a7266e4d))
* fix clear schedule to be workspace specific ([1d1cd31](https://github.com/windmill-labs/windmill/commit/1d1cd31252c6619441219cdb2bb6ba064d029ac9))
* **frontend:** Fix auto invite overflow ([#2009](https://github.com/windmill-labs/windmill/issues/2009)) ([c22e3b5](https://github.com/windmill-labs/windmill/commit/c22e3b54025153a9d28831c2fdacc9bd6d558c2c))
## [1.142.0](https://github.com/windmill-labs/windmill/compare/v1.141.0...v1.142.0) (2023-08-07)
### Features
* add magic tag part ([90dfda0](https://github.com/windmill-labs/windmill/commit/90dfda0d1f00e1f11a82d12d2466eb2252c6e5fb))
* **frontend:** Audit logs rework ([#1997](https://github.com/windmill-labs/windmill/issues/1997)) ([57110b9](https://github.com/windmill-labs/windmill/commit/57110b93c942024099538143f695c6c9294d0097))
* **frontend:** make diff editor editable ([#1999](https://github.com/windmill-labs/windmill/issues/1999)) ([dee1096](https://github.com/windmill-labs/windmill/commit/dee1096bc0cb094932320c4a7801106a0eba2d59))
### Bug Fixes
* custom config layout get priority for plotly components ([e7febc7](https://github.com/windmill-labs/windmill/commit/e7febc759676c1f0f5030874abc7382ec87d47a2))
* **frontend:** Download as CSV ([#2000](https://github.com/windmill-labs/windmill/issues/2000)) ([5f3b2ea](https://github.com/windmill-labs/windmill/commit/5f3b2eacbf1d10fe870074ea079ce66e6dca0d5d))
* refresh token on login and regularly ([9337716](https://github.com/windmill-labs/windmill/commit/933771651e9dde1c3489aaa9f31d9331ac4d5f7f))
## [1.141.0](https://github.com/windmill-labs/windmill/compare/v1.140.1...v1.141.0) (2023-08-05)

View File

@@ -73,7 +73,7 @@ ARG features=""
COPY --from=planner /windmill/recipe.json recipe.json
RUN apt-get update && apt-get install -y libxml2-dev libxmlsec1-dev clang libclang-dev
RUN apt-get update && apt-get install -y libxml2-dev libxmlsec1-dev clang libclang-dev cmake
RUN CARGO_NET_GIT_FETCH_WITH_CLI=true RUST_BACKTRACE=1 cargo chef cook --release --features "$features" --recipe-path recipe.json
@@ -96,8 +96,8 @@ SHELL ["/bin/bash", "-c"]
RUN apt update -y
RUN apt install -y unzip curl
RUN [ "$TARGETPLATFORM" == "linux/arm64" ] && curl -Lsf https://github.com/LukeChannings/deno-arm64/releases/download/v1.35.0/deno-linux-arm64.zip -o deno.zip || true
RUN [ "$TARGETPLATFORM" == "linux/amd64" ] && curl -Lsf https://github.com/denoland/deno/releases/download/v1.35.0/deno-x86_64-unknown-linux-gnu.zip -o deno.zip || true
RUN [ "$TARGETPLATFORM" == "linux/arm64" ] && curl -Lsf https://github.com/LukeChannings/deno-arm64/releases/download/v1.36.3/deno-linux-arm64.zip -o deno.zip || true
RUN [ "$TARGETPLATFORM" == "linux/amd64" ] && curl -Lsf https://github.com/denoland/deno/releases/download/v1.36.3/deno-x86_64-unknown-linux-gnu.zip -o deno.zip || true
RUN unzip deno.zip && rm deno.zip
@@ -149,13 +149,13 @@ RUN set -eux; \
arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \
case "$arch" in \
'amd64') \
targz='go1.19.3.linux-amd64.tar.gz'; \
targz='go1.21.0.linux-amd64.tar.gz'; \
;; \
'arm64') \
targz='go1.19.3.linux-arm64.tar.gz'; \
targz='go1.21.0.linux-arm64.tar.gz'; \
;; \
'armhf') \
targz='go1.19.3.linux-armv6l.tar.gz'; \
targz='go1.21.0.linux-armv6l.tar.gz'; \
;; \
*) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \
esac; \
@@ -177,7 +177,7 @@ RUN chmod 755 /usr/bin/deno
COPY --from=nsjail /nsjail/nsjail /bin/nsjail
COPY --from=oven/bun:0.7.1 /usr/local/bin/bun /usr/bin/bun
COPY --from=oven/bun:0.8.0 /usr/local/bin/bun /usr/bin/bun
# add the docker client to call docker from a worker if enabled
COPY --from=docker:dind /usr/local/bin/docker /usr/local/bin/

View File

@@ -8,7 +8,7 @@
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. Scripts can be generated by an AI assistant powered by OpenAI.
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. Scripts can be generated by an AI assistant powered by OpenAI.
</p>
<p align="center">
@@ -73,7 +73,7 @@ https://github.com/windmill-labs/windmill/assets/122811744/0b132cd1-ee67-4505-82
## Main Concepts
1. Define a minimal and generic script in Python, Typescript, Go or Bash that
1. Define a minimal and generic script in Python, TypeScript, Go or Bash that
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)
@@ -85,7 +85,7 @@ https://github.com/windmill-labs/windmill/assets/122811744/0b132cd1-ee67-4505-82
shared on [WindmillHub](https://hub.windmill.dev).
![Step 3](./imgs/windmill-flow.png)
4. Build complex UI on top of your scripts and flows.
4. Build complex UIs on top of your scripts and flows.
![Step 4](./imgs/windmill-builder.png)
Scripts and flows can also be triggered by a cron schedule '_/5 _ \* \* \*' or
@@ -170,9 +170,10 @@ variables from your instance if necessary. See more:
### Sandboxing
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/).
Windmill uses [nsjail](https://github.com/google/nsjail) and deno's sandboxing
capabilities. 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/).
### Secrets, credentials and sensitive values
@@ -335,10 +336,11 @@ it being synced automatically everyday.
| PORT | 8000 | Exposed port | Server |
| NUM_WORKERS | 1 | The number of worker per Worker instance (Set to 0 for API/Server instances, Set to 1 for normal workers, and > 1 for workers dedicated to native jobs) | Worker |
| DISABLE_SERVER | false | Disable the external API, 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 |
| METRICS_ADDR | None | (ee only) 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 |
| TIMEOUT | 300 | The maximum time of execution of a script. When reached, the job is failed as having timedout. | Worker |
| TIMEOUT | 60 _ 60 _ 24 \* 7 (1 week) | The maximum time of execution of a script. When reached, the job is failed as having timedout. |
| SCRIPT_TOKEN_EXPIRY | 900 | The default duration period of the ephemeral-token generated at the beginning of a script | 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 |
@@ -367,7 +369,7 @@ it being synced automatically everyday.
| 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 |
| DENO_EXTRA_IMPORT_MAP | None | extra import map to use to run deno scripts (format: `key:value,key:value`) | Worker |
| DENO_EXTRA_IMPORT_MAP | None | extra import map to use to run deno scripts (format: `key=value,key=value`) | 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 |

3
backend/.gitignore vendored
View File

@@ -1,4 +1,5 @@
target/
.env
oauth.json
windmill-api/openapi-deref.yaml
windmill-api/openapi-deref.yaml
tracing.folded

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "select tag, concurrent_limit, concurrency_time_window_s from script where hash = $1 AND workspace_id = $2",
"query": "select tag, concurrent_limit, concurrency_time_window_s, cache_ttl from script where hash = $1 AND workspace_id = $2",
"describe": {
"columns": [
{
@@ -17,6 +17,11 @@
"ordinal": 2,
"name": "concurrency_time_window_s",
"type_info": "Int4"
},
{
"ordinal": 3,
"name": "cache_ttl",
"type_info": "Int4"
}
],
"parameters": {
@@ -26,10 +31,11 @@
]
},
"nullable": [
true,
true,
true,
true
]
},
"hash": "8f0d98661f2a32659f37a123320d14288ce88c9d6e6279bdc36334410023f5e1"
"hash": "0694f4be1a7966126f20afbd9ee094088db8ce98aefdbe96144c42e38e5bd813"
}

View File

@@ -1,29 +0,0 @@
{
"db_name": "PostgreSQL",
"query": "SELECT COALESCE(j.min_started_at, q.min_started_at) AS min_started_at, COALESCE(completed_count, 0) + COALESCE(running_count, 0) AS total_count\n FROM\n (SELECT script_path, MIN(started_at) as min_started_at, COUNT(*) as completed_count\n FROM completed_job\n WHERE script_path = $1 AND started_at + INTERVAL '1 MILLISECOND' * duration_ms > (now() - INTERVAL '1 second' * $2)\n GROUP BY script_path) as j\n FULL OUTER JOIN\n (SELECT script_path, MIN(started_at) as min_started_at, COUNT(*) as running_count\n FROM queue\n WHERE script_path = $1 AND running = true\n GROUP BY script_path) as q\n ON q.script_path = j.script_path",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "min_started_at",
"type_info": "Timestamptz"
},
{
"ordinal": 1,
"name": "total_count",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Text",
"Float8"
]
},
"nullable": [
true,
true
]
},
"hash": "077b925c0a9f19a3859ca7eb0bc9049fc7c303daf469c049cf03570d22310d74"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE schedule SET schedule = $1, timezone = $2, args = $3, on_failure = $4 WHERE path = $5 AND workspace_id = $6 RETURNING *",
"query": "UPDATE schedule SET schedule = $1, timezone = $2, args = $3, on_failure = $4, on_failure_times = $5, on_failure_exact = $6, on_failure_extra_args = $7, on_recovery = $8, on_recovery_times = $9, on_recovery_extra_args = $10 WHERE path = $11 AND workspace_id = $12 RETURNING *",
"describe": {
"columns": [
{
@@ -72,6 +72,36 @@
"ordinal": 13,
"name": "on_failure",
"type_info": "Varchar"
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
}
],
"parameters": {
@@ -80,6 +110,12 @@
"Varchar",
"Jsonb",
"Varchar",
"Int4",
"Bool",
"Json",
"Varchar",
"Int4",
"Json",
"Text",
"Text"
]
@@ -98,8 +134,14 @@
false,
true,
false,
true,
true,
true,
true,
true,
true,
true
]
},
"hash": "1e0769c59ada78848e034250c11be0ca2e8c49b96a0066b9ab67f5a205ec456d"
"hash": "0be97088e8ca1e8be9bf4ea45f830cceedd598a3221c522a1f9026d2d48a0ffb"
}

View File

@@ -0,0 +1,20 @@
{
"db_name": "PostgreSQL",
"query": "SELECT COUNT(*) FROM group_ WHERE name != 'all'",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "count",
"type_info": "Int8"
}
],
"parameters": {
"Left": []
},
"nullable": [
null
]
},
"hash": "18bdd06f4791c652addb4783f419f5d020c1d23278f583c6be6314768f9bf25a"
}

View File

@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT value FROM global_settings WHERE name = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "value",
"type_info": "Jsonb"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "1c1577b9963d907c4245a027fece57285ce64ac41a84681b32deb71e452334c1"
}

View File

@@ -0,0 +1,12 @@
{
"db_name": "PostgreSQL",
"query": "VACUUM queue",
"describe": {
"columns": [],
"parameters": {
"Left": []
},
"nullable": []
},
"hash": "1e232d4b978d133ba542d0abe5afaa0031f630c5336c0b805590b5ea4508ed04"
}

View File

@@ -44,7 +44,8 @@
"http",
"graphql",
"postgresql",
"noop"
"noop",
"appdependencies"
]
}
}
@@ -69,7 +70,10 @@
"Nativets",
"bun",
"mysql",
"bigquery"
"bigquery",
"snowflake",
"graphql",
"powershell"
]
}
}

View File

@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "SELECT value FROM app_version WHERE id = $1",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "value",
"type_info": "Json"
}
],
"parameters": {
"Left": [
"Int8"
]
},
"nullable": [
false
]
},
"hash": "29fce7e56bb4a874b4c1e3a6454273203aab7344abd03df4d86e4c5f5b9a394a"
}

View File

@@ -0,0 +1,30 @@
{
"db_name": "PostgreSQL",
"query": "SELECT COALESCE(j.min_started_at, q.min_started_at) AS min_started_at, COALESCE(completed_count, 0) AS completed_count\n FROM\n (SELECT script_path, MIN(started_at) as min_started_at, COUNT(*) as completed_count\n FROM completed_job\n WHERE script_path = $1 AND job_kind != 'dependencies' AND started_at + INTERVAL '1 MILLISECOND' * duration_ms > (now() - INTERVAL '1 second' * $2) AND workspace_id = $3 AND canceled = false\n GROUP BY script_path) as j\n FULL OUTER JOIN\n (SELECT script_path, MIN(started_at) as min_started_at\n FROM queue\n WHERE script_path = $1 AND job_kind != 'dependencies' AND running = true AND workspace_id = $3 AND canceled = false\n GROUP BY script_path) as q\n ON q.script_path = j.script_path",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "min_started_at",
"type_info": "Timestamptz"
},
{
"ordinal": 1,
"name": "completed_count",
"type_info": "Int8"
}
],
"parameters": {
"Left": [
"Text",
"Float8",
"Text"
]
},
"nullable": [
true,
true
]
},
"hash": "330e85c6fe52355971262d3a44c2b75a95b1d042b9e0995186aa5a2d0b7ee552"
}

View File

@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "\n UPDATE queue\n SET suspend = $1, suspend_until = now() + interval '14 day', running = true\n WHERE id = $2\n ",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Int4",
"Uuid"
]
},
"nullable": []
},
"hash": "3c83e6adf21b7a8572529f9175cf6d2d30ea8c921ae2bf751b6825a3e453a012"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "SELECT usr.username \n FROM usr_to_group LEFT JOIN usr ON usr_to_group.usr = usr.username \n WHERE group_ = $1 AND usr.workspace_id = $2 AND usr_to_group.workspace_id = $2",
"query": "SELECT usr.username \n FROM usr_to_group LEFT JOIN usr ON usr_to_group.usr = usr.username AND usr_to_group.workspace_id = $2\n WHERE group_ = $1 AND usr.workspace_id = $2 AND usr_to_group.workspace_id = $2",
"describe": {
"columns": [
{
@@ -19,5 +19,5 @@
false
]
},
"hash": "c2d6cb56c1dea4498e2aab9ea9301dbbaa127602a38f57f5add4108fdc209b1a"
"hash": "3fdfcab1a54c166b1d8d43215d61268a251160db4630f0342522091668f36af0"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "SELECT resource.*, (now() > account.expires_at) as is_expired, account.refresh_token != '' as is_refreshed,\n account.refresh_error,\n variable.path IS NOT NULL as is_linked,\n variable.is_oauth as \"is_oauth?\",\n variable.account\n FROM resource\n LEFT JOIN variable ON variable.path = resource.path AND variable.workspace_id = resource.workspace_id\n LEFT JOIN account ON variable.account = account.id AND account.workspace_id = resource.workspace_id\n WHERE resource.path = $1 AND resource.workspace_id = $2",
"query": "SELECT resource.*, (now() > account.expires_at) as is_expired, account.refresh_token != '' as is_refreshed,\n account.refresh_error,\n variable.path IS NOT NULL as is_linked,\n variable.is_oauth as \"is_oauth?\",\n variable.account\n FROM resource\n LEFT JOIN variable ON variable.path = resource.path AND variable.workspace_id = $2\n LEFT JOIN account ON variable.account = account.id AND account.workspace_id = $2\n WHERE resource.path = $1 AND resource.workspace_id = $2",
"describe": {
"columns": [
{
@@ -85,5 +85,5 @@
true
]
},
"hash": "7f443f5be90622eed3e878ada0ae8ca71902adb88861bc8a39713fc8942e652c"
"hash": "41f2c271514ee254739c3a097871526adcecdd8729f28c15e0db8cd28eaa8cf0"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "SELECT * FROM resource WHERE workspace_id = $1",
"query": "SELECT * FROM resource WHERE workspace_id = $1 AND resource_type != 'state' AND resource_type != 'cache'",
"describe": {
"columns": [
{
@@ -48,5 +48,5 @@
false
]
},
"hash": "fa258894bd90ea6586669e5810c5c6bcb42d5e1e68fab27fb185d06962b6454a"
"hash": "45e4d13f5806122faecdb1d9ab18159555b652869a036b006f4a151e999b17b7"
}

View File

@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE concurrency_counter SET counter = counter - 1 WHERE concurrency_id = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Text"
]
},
"nullable": []
},
"hash": "467247beca4dae321ab3acc3a99f655412761157cda54bbd3e58cada3de3396c"
}

View File

@@ -0,0 +1,38 @@
{
"db_name": "PostgreSQL",
"query": "SELECT success, result, started_at FROM completed_job WHERE workspace_id = $1 AND schedule_path = $2 AND script_path = $3 AND id != $4 ORDER BY created_at DESC LIMIT $5",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "success",
"type_info": "Bool"
},
{
"ordinal": 1,
"name": "result",
"type_info": "Jsonb"
},
{
"ordinal": 2,
"name": "started_at",
"type_info": "Timestamptz"
}
],
"parameters": {
"Left": [
"Text",
"Text",
"Text",
"Uuid",
"Int8"
]
},
"nullable": [
false,
true,
false
]
},
"hash": "4a3917318d967d96c4b6e70786a034302f04da9d1e9eec59b1eb6052c2d947be"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO script (workspace_id, hash, path, parent_hashes, summary, description, content, created_by, schema, is_template, extra_perms, lock, language, kind, tag, draft_only, envs, concurrent_limit, concurrency_time_window_s) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::text::json, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19)",
"query": "INSERT INTO script (workspace_id, hash, path, parent_hashes, summary, description, content, created_by, schema, is_template, extra_perms, lock, language, kind, tag, draft_only, envs, concurrent_limit, concurrency_time_window_s, cache_ttl) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::text::json, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20)",
"describe": {
"columns": [],
"parameters": {
@@ -31,7 +31,10 @@
"Nativets",
"bun",
"mysql",
"bigquery"
"bigquery",
"snowflake",
"graphql",
"powershell"
]
}
}
@@ -54,10 +57,11 @@
"Bool",
"VarcharArray",
"Int4",
"Int4",
"Int4"
]
},
"nullable": []
},
"hash": "9ee1423945740c17dedc2fc7ea7e7183380c43d0feeb615c651aa486eef3bd53"
"hash": "52dbe77fad5729e9e121609eeb6a3573e6d0e1d1c16e29b15c7ad810536e249c"
}

View File

@@ -20,7 +20,10 @@
"Nativets",
"bun",
"mysql",
"bigquery"
"bigquery",
"snowflake",
"graphql",
"powershell"
]
}
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "DELETE FROM queue WHERE schedule_path = $1 AND running = false AND job_kind = $2",
"query": "DELETE FROM queue WHERE schedule_path = $1 AND running = false AND job_kind = $2 AND workspace_id = $3",
"describe": {
"columns": [],
"parameters": {
@@ -22,14 +22,16 @@
"http",
"graphql",
"postgresql",
"noop"
"noop",
"appdependencies"
]
}
}
}
},
"Text"
]
},
"nullable": []
},
"hash": "1b9a418e1a6bda6abde432112a4e94bfef3708a57a8fa31670a61e001aaf2fd6"
"hash": "6dbf0275e52d937a114ba305c6646d313f6ef05062ac55f7397caf8c02ccec5e"
}

View File

@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE app_version SET value = $1 WHERE id = $2",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Json",
"Int8"
]
},
"nullable": []
},
"hash": "6fb904692513c453989ffedb14b1eb737da453e9fcac6cfa098296d6c211d2a9"
}

View File

@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE concurrency_counter SET counter = counter - 1 WHERE concurrency_id = $1 RETURNING counter",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "counter",
"type_info": "Int4"
}
],
"parameters": {
"Left": [
"Text"
]
},
"nullable": [
false
]
},
"hash": "71879f3644dde27f2d93e5511e420579dfd2ffab72bb8480a1622b68703d4ea7"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "SELECT schedule.*, t.jobs FROM schedule, LATERAL ( SELECT ARRAY (SELECT json_build_object('id', id, 'success', success, 'duration_ms', duration_ms) FROM completed_job WHERE\n completed_job.schedule_path = schedule.path AND schedule.workspace_id = completed_job.workspace_id AND parent_job IS NULL ORDER BY created_at DESC LIMIT 20) AS jobs ) t\n WHERE schedule.workspace_id = $1 ORDER BY schedule.edited_at desc LIMIT $2 OFFSET $3",
"query": "SELECT schedule.*, t.jobs FROM schedule, LATERAL ( SELECT ARRAY (SELECT json_build_object('id', id, 'success', success, 'duration_ms', duration_ms) FROM completed_job WHERE\n completed_job.schedule_path = schedule.path AND completed_job.workspace_id = $1 AND parent_job IS NULL ORDER BY started_at DESC LIMIT 20) AS jobs ) t\n WHERE schedule.workspace_id = $1 ORDER BY schedule.edited_at desc LIMIT $2 OFFSET $3",
"describe": {
"columns": [
{
@@ -75,6 +75,36 @@
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
},
{
"ordinal": 20,
"name": "jobs",
"type_info": "JsonArray"
}
@@ -101,8 +131,14 @@
true,
false,
true,
true,
true,
true,
true,
true,
true,
null
]
},
"hash": "dc4316a8646dc642ed12c12d8673aa1ed44c551b3174c49655defacdf49880c7"
"hash": "7a00843921db4ac1eb20a1045e83363587c1a2cb62d2df25d5564ae78a03b097"
}

View File

@@ -0,0 +1,47 @@
{
"db_name": "PostgreSQL",
"query": "SELECT value, account, (now() > account.expires_at) as is_expired, is_secret, path from variable\n LEFT JOIN account ON variable.account = account.id WHERE variable.path = $1 AND variable.workspace_id = $2",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "value",
"type_info": "Varchar"
},
{
"ordinal": 1,
"name": "account",
"type_info": "Int4"
},
{
"ordinal": 2,
"name": "is_expired",
"type_info": "Bool"
},
{
"ordinal": 3,
"name": "is_secret",
"type_info": "Bool"
},
{
"ordinal": 4,
"name": "path",
"type_info": "Varchar"
}
],
"parameters": {
"Left": [
"Text",
"Text"
]
},
"nullable": [
false,
true,
null,
false,
false
]
},
"hash": "7a92837ad2a1181580c1e0d059fd6bc0ece84d3c315635de52bd2b364c238a71"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "select hash, tag, concurrent_limit, concurrency_time_window_s from script where path = $1 AND workspace_id = $2 AND\n created_at = (SELECT max(created_at) FROM script WHERE path = $1 AND workspace_id = $2 AND\n deleted = false AND archived = false AND lock IS not NULL AND lock_error_logs IS NULL)",
"query": "select hash, tag, concurrent_limit, concurrency_time_window_s, cache_ttl from script where path = $1 AND workspace_id = $2 AND\n created_at = (SELECT max(created_at) FROM script WHERE path = $1 AND workspace_id = $2 AND\n deleted = false AND lock IS not NULL AND lock_error_logs IS NULL)",
"describe": {
"columns": [
{
@@ -22,6 +22,11 @@
"ordinal": 3,
"name": "concurrency_time_window_s",
"type_info": "Int4"
},
{
"ordinal": 4,
"name": "cache_ttl",
"type_info": "Int4"
}
],
"parameters": {
@@ -34,8 +39,9 @@
false,
true,
true,
true,
true
]
},
"hash": "7435be9a71a6b30980d180047486a47d69e36132d40ef0f53448e96a9866842b"
"hash": "8062bb1ac475c4a2a016d9dfa63c95765356fe7744b817ad0c320a54a33b24f3"
}

View File

@@ -0,0 +1,22 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO concurrency_counter VALUES ($1, 1)\n ON CONFLICT (concurrency_id) \n DO UPDATE SET counter = concurrency_counter.counter + 1\n RETURNING concurrency_counter.counter",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "counter",
"type_info": "Int4"
}
],
"parameters": {
"Left": [
"Varchar"
]
},
"nullable": [
false
]
},
"hash": "86652246b20f9bd023d3419ec382176780a87f32673b53de6f899564c1494147"
}

View File

@@ -72,6 +72,36 @@
"ordinal": 13,
"name": "on_failure",
"type_info": "Varchar"
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
}
],
"parameters": {
@@ -95,6 +125,12 @@
false,
true,
false,
true,
true,
true,
true,
true,
true,
true
]
},

View File

@@ -1,8 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE queue SET canceled = true, canceled_by = $1, canceled_reason = $2, scheduled_for = now(), suspend = 0 WHERE id = $3 AND workspace_id = $4 ",
"query": "UPDATE queue SET canceled = true, canceled_by = $1, canceled_reason = $2, scheduled_for = now(), suspend = 0 WHERE id = $3 AND workspace_id = $4 RETURNING id",
"describe": {
"columns": [],
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
}
],
"parameters": {
"Left": [
"Varchar",
@@ -11,7 +17,9 @@
"Text"
]
},
"nullable": []
"nullable": [
false
]
},
"hash": "b201a427430e732c45f57e0ebeba7ff9c2cbbd9f6b15266dcea789586b09e1e8"
"hash": "960dce02871e9697d7aca2fcd5a75eefc3db7179e49fbf20c7e62cbcb235683e"
}

View File

@@ -72,6 +72,36 @@
"ordinal": 13,
"name": "on_failure",
"type_info": "Varchar"
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
}
],
"parameters": {
@@ -96,6 +126,12 @@
false,
true,
false,
true,
true,
true,
true,
true,
true,
true
]
},

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO schedule (workspace_id, path, schedule, timezone, edited_by, script_path, is_flow, args, enabled, email, on_failure) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) RETURNING *",
"query": "INSERT INTO schedule (workspace_id, path, schedule, timezone, edited_by, script_path, is_flow, args, enabled, email, on_failure, on_failure_times, on_failure_exact, on_failure_extra_args, on_recovery, on_recovery_times, on_recovery_extra_args) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17) RETURNING *",
"describe": {
"columns": [
{
@@ -72,6 +72,36 @@
"ordinal": 13,
"name": "on_failure",
"type_info": "Varchar"
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
}
],
"parameters": {
@@ -86,7 +116,13 @@
"Jsonb",
"Bool",
"Varchar",
"Varchar"
"Varchar",
"Int4",
"Bool",
"Json",
"Varchar",
"Int4",
"Json"
]
},
"nullable": [
@@ -103,8 +139,14 @@
false,
true,
false,
true,
true,
true,
true,
true,
true,
true
]
},
"hash": "80e632cb6618cde2bac2c12d0afc796a4a1768f902d0540af33fe6f442cf583a"
"hash": "9b9afb9d5ef57b70de1207c4546b5547e579d978d899325d821a5aee1df1a9fc"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "SELECT coalesce(COUNT(*), 0) as \"database_length!\" FROM queue WHERE workspace_id = $1",
"query": "SELECT coalesce(COUNT(*), 0) as \"database_length!\" FROM queue WHERE workspace_id = $1 AND scheduled_for <= now() AND running = false",
"describe": {
"columns": [
{
@@ -18,5 +18,5 @@
null
]
},
"hash": "c4fb68ce79c1cec23cadc515285578ca18398504cf703091d06191ff68d95399"
"hash": "9da1bf41c433c1f781bcc8ea5d86fd796b7ff92434f5ed4682c4445a02c2c720"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO queue\n (workspace_id, id, running, parent_job, created_by, permissioned_as, scheduled_for, \n script_hash, script_path, raw_code, raw_lock, args, job_kind, schedule_path, raw_flow, flow_status, is_flow_step, language, started_at, same_worker, pre_run_error, email, visible_to_owner, root_job, tag, concurrent_limit, concurrency_time_window_s, timeout)\n VALUES ($1, $2, $3, $4, $5, $6, COALESCE($7, now()), $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, CASE WHEN $3 THEN now() END, $19, $20, $21, $22, $23, $24, $25, $26, $27) RETURNING id",
"query": "INSERT INTO queue\n (workspace_id, id, running, parent_job, created_by, permissioned_as, scheduled_for, \n script_hash, script_path, raw_code, raw_lock, args, job_kind, schedule_path, raw_flow, flow_status, is_flow_step, language, started_at, same_worker, pre_run_error, email, visible_to_owner, root_job, tag, concurrent_limit, concurrency_time_window_s, timeout, flow_step_id, cache_ttl)\n VALUES ($1, $2, $3, $4, $5, $6, COALESCE($7, now()), $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, CASE WHEN $3 THEN now() END, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29) RETURNING id",
"describe": {
"columns": [
{
@@ -39,7 +39,8 @@
"http",
"graphql",
"postgresql",
"noop"
"noop",
"appdependencies"
]
}
}
@@ -62,7 +63,10 @@
"Nativets",
"bun",
"mysql",
"bigquery"
"bigquery",
"snowflake",
"graphql",
"powershell"
]
}
}
@@ -75,6 +79,8 @@
"Varchar",
"Int4",
"Int4",
"Int4",
"Varchar",
"Int4"
]
},
@@ -82,5 +88,5 @@
false
]
},
"hash": "a967861c22e597ecaa6f4869ceb74b93076cc9b4ee6ddfd8f89d5eaf933ed3c7"
"hash": "9e8c3ff3d6b31e366e15beda1e96e03e870ccc3b353401439bc0ed8ff219249b"
}

View File

@@ -0,0 +1,14 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE queue SET suspend = suspend - 1 WHERE parent_job = $1",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Uuid"
]
},
"nullable": []
},
"hash": "a4ae245dcf7e4b930cd45701db0b7c45f2a5797e8b6724bade5b964d4334c098"
}

View File

@@ -0,0 +1,15 @@
{
"db_name": "PostgreSQL",
"query": "INSERT INTO global_settings (name, value) VALUES ($1, $2) ON CONFLICT (name) DO UPDATE SET value = $2, updated_at = now()",
"describe": {
"columns": [],
"parameters": {
"Left": [
"Varchar",
"Jsonb"
]
},
"nullable": []
},
"hash": "a59b70164dc87224d09a04d5469ca217eb19a15a250c3b83ca63f606f89b9681"
}

View File

@@ -72,6 +72,36 @@
"ordinal": 13,
"name": "on_failure",
"type_info": "Varchar"
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
}
],
"parameters": {
@@ -94,6 +124,12 @@
false,
true,
false,
true,
true,
true,
true,
true,
true,
true
]
},

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "SELECT app.id, app.path, app.summary, app.versions, app.policy,\n app.extra_perms, app_version.value, \n app_version.created_at, app_version.created_by,\n app.draft_only, draft.value as \"draft?\"\n from app\n INNER JOIN app_version ON\n app_version.id = app.versions[array_upper(app.versions, 1)]\n LEFT JOIN draft ON \n app.path = draft.path AND app.workspace_id = draft.workspace_id AND draft.typ = 'app' \n WHERE app.path = $1 AND app.workspace_id = $2",
"query": "SELECT app.id, app.path, app.summary, app.versions, app.policy,\n app.extra_perms, app_version.value, \n app_version.created_at, app_version.created_by,\n app.draft_only, draft.value as \"draft?\"\n from app\n INNER JOIN app_version ON\n app_version.id = app.versions[array_upper(app.versions, 1)]\n LEFT JOIN draft ON \n app.path = draft.path AND draft.workspace_id = $2 AND draft.typ = 'app' \n WHERE app.path = $1 AND app.workspace_id = $2",
"describe": {
"columns": [
{
@@ -79,5 +79,5 @@
false
]
},
"hash": "f07e4fb9d3b346c6c0a93133d428691a2e17a0c7eef5c593732ad7297d366ad4"
"hash": "aedba9cff117a7069dfd56602110b7f66903d6afb4f87fbffe0175982ea8741f"
}

View File

@@ -72,6 +72,36 @@
"ordinal": 13,
"name": "on_failure",
"type_info": "Varchar"
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
}
],
"parameters": {
@@ -95,6 +125,12 @@
false,
true,
false,
true,
true,
true,
true,
true,
true,
true
]
},

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "select hash, tag, concurrent_limit, concurrency_time_window_s from script where path = $1 AND workspace_id = $2 AND\n created_at = (SELECT max(created_at) FROM script WHERE path = $1 AND workspace_id = $2 AND\n deleted = false AND archived = false)",
"query": "select hash, tag, concurrent_limit, concurrency_time_window_s, cache_ttl from script where path = $1 AND workspace_id = $2 AND\n created_at = (SELECT max(created_at) FROM script WHERE path = $1 AND workspace_id = $2 AND\n deleted = false AND archived = false)",
"describe": {
"columns": [
{
@@ -22,6 +22,11 @@
"ordinal": 3,
"name": "concurrency_time_window_s",
"type_info": "Int4"
},
{
"ordinal": 4,
"name": "cache_ttl",
"type_info": "Int4"
}
],
"parameters": {
@@ -34,8 +39,9 @@
false,
true,
true,
true,
true
]
},
"hash": "9289709b2727425be0e7f1e341d6acd46e1e79d5018f6a18cb41d50ca3f4ba11"
"hash": "cf21b61aa5b5e47744235c860e2d9b90d7654a4b5d0ec32085b178399f701bfc"
}

View File

@@ -72,6 +72,36 @@
"ordinal": 13,
"name": "on_failure",
"type_info": "Varchar"
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
}
],
"parameters": {
@@ -95,6 +125,12 @@
false,
true,
false,
true,
true,
true,
true,
true,
true,
true
]
},

View File

@@ -0,0 +1,23 @@
{
"db_name": "PostgreSQL",
"query": "UPDATE queue SET canceled = true, canceled_by = $2, scheduled_for = now(), suspend = 0 WHERE workspace_id = $1 AND schedule_path IS NULL RETURNING id",
"describe": {
"columns": [
{
"ordinal": 0,
"name": "id",
"type_info": "Uuid"
}
],
"parameters": {
"Left": [
"Text",
"Varchar"
]
},
"nullable": [
false
]
},
"hash": "e25829ed40f35a0f59a9838d030a7f888ca88441e069e73a52d75450aecae70e"
}

View File

@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
"query": "select path, tag, concurrent_limit, concurrency_time_window_s from script where hash = $1 AND workspace_id = $2",
"query": "select path, tag, concurrent_limit, concurrency_time_window_s, cache_ttl from script where hash = $1 AND workspace_id = $2",
"describe": {
"columns": [
{
@@ -22,6 +22,11 @@
"ordinal": 3,
"name": "concurrency_time_window_s",
"type_info": "Int4"
},
{
"ordinal": 4,
"name": "cache_ttl",
"type_info": "Int4"
}
],
"parameters": {
@@ -34,8 +39,9 @@
false,
true,
true,
true,
true
]
},
"hash": "d164caec6637ab53d8c2e0faad653a458f31a976bb23c3a43d35b8476b066954"
"hash": "ebac391c83dae67831502fbe3f1034210afce7902a69f7c42bb68160e0464d71"
}

View File

@@ -72,6 +72,36 @@
"ordinal": 13,
"name": "on_failure",
"type_info": "Varchar"
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
}
],
"parameters": {
@@ -95,6 +125,12 @@
false,
true,
false,
true,
true,
true,
true,
true,
true,
true
]
},

View File

@@ -38,7 +38,8 @@
"http",
"graphql",
"postgresql",
"noop"
"noop",
"appdependencies"
]
}
}
@@ -59,7 +60,8 @@
"http",
"graphql",
"postgresql",
"noop"
"noop",
"appdependencies"
]
}
}

View File

@@ -72,6 +72,36 @@
"ordinal": 13,
"name": "on_failure",
"type_info": "Varchar"
},
{
"ordinal": 14,
"name": "on_recovery",
"type_info": "Varchar"
},
{
"ordinal": 15,
"name": "on_failure_times",
"type_info": "Int4"
},
{
"ordinal": 16,
"name": "on_failure_exact",
"type_info": "Bool"
},
{
"ordinal": 17,
"name": "on_failure_extra_args",
"type_info": "Json"
},
{
"ordinal": 18,
"name": "on_recovery_times",
"type_info": "Int4"
},
{
"ordinal": 19,
"name": "on_recovery_extra_args",
"type_info": "Json"
}
],
"parameters": {
@@ -93,6 +123,12 @@
false,
true,
false,
true,
true,
true,
true,
true,
true,
true
]
},

956
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.141.0"
version = "1.167.0"
authors.workspace = true
edition.workspace = true
@@ -22,7 +22,7 @@ members = [
]
[workspace.package]
version = "1.141.0"
version = "1.167.0"
authors = ["Ruben Fiszel <ruben@windmill.dev>"]
edition = "2021"
@@ -36,7 +36,8 @@ incremental = true
[features]
enterprise = ["windmill-worker/enterprise", "windmill-queue/enterprise", "windmill-api/enterprise"]
benchmark = ["windmill-api/benchmark"]
benchmark = ["windmill-api/benchmark", "windmill-worker/benchmark", "windmill-queue/benchmark"]
flamegraph = ["windmill-common/flamegraph", "windmill-worker/flamegraph"]
[dependencies]
anyhow.workspace = true
@@ -85,6 +86,7 @@ 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" }
windmill-parser-sql = { path = "./parsers/windmill-parser-sql" }
windmill-parser-graphql = { path = "./parsers/windmill-parser-graphql" }
axum = { version = "^0", features = ["headers"] }
headers = "^0"
@@ -130,17 +132,18 @@ tokio-util = { version = "^0", features = ["io"] }
json-pointer = "^0"
itertools = "^0"
regex = "^1"
deno_fetch = "0.133.0"
deno_console = "0.109.0"
deno_url = "0.109.0"
deno_webidl = "0.109.0"
deno_web = "0.140.0"
deno_core = "0.191.0"
deno_ast = { version = "0.27.2", features = ["transpiling"] }
deno_fetch = "0.139.0"
deno_console = "0.115.0"
deno_url = "0.115.0"
deno_webidl = "0.115.0"
deno_web = "0.146.0"
deno_core = "0.200.0"
deno_ast = { version = "0.28.0", features = ["transpiling"] }
async-recursion = "^1"
swc_common = "0.31.12"
swc_ecma_parser = "0.136.2"
swc_ecma_ast = "0.106.2"
swc_common = "0.31.21"
swc_ecma_parser = "0.137.15"
swc_ecma_ast = "0.107.7"
swc_ecma_visit = "0.93.7"
base64 = "0.21.0"
hmac = "0.12.1"
sha2 = "0.10.6"
@@ -186,4 +189,4 @@ samael = { version = "0.0.12", features = ["xmlsec"] }
gcp_auth = "0.9.0"
rust_decimal = {version = "1.31.0", features = ["db-postgres"]}
jsonwebtoken = "8.3.0"
pem = "3.0.1"
pem = "3.0.1"

View File

@@ -0,0 +1,56 @@
DO
$do$
BEGIN
CREATE ROLE windmill_user;
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'error creating the windmill_user role: %', SQLERRM;
END
$do$;
DO
$do$
BEGIN
GRANT ALL
ON ALL TABLES IN SCHEMA public
TO windmill_user;
GRANT ALL PRIVILEGES
ON ALL SEQUENCES IN SCHEMA public
TO windmill_user;
ALTER DEFAULT PRIVILEGES
IN SCHEMA public
GRANT ALL ON TABLES TO windmill_user;
ALTER DEFAULT PRIVILEGES
IN SCHEMA public
GRANT ALL ON SEQUENCES TO windmill_user;
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'error granting proper permission to windmill_user: %', SQLERRM;
END
$do$;
DO
$do$
BEGIN
CREATE ROLE windmill_admin WITH BYPASSRLS;
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'error creating the windmill_admin role: %', SQLERRM;
END
$do$;
DO
$do$
BEGIN
GRANT windmill_user TO windmill_admin;
EXCEPTION WHEN OTHERS THEN
RAISE NOTICE 'error granting windmill_user to windmill_admin: %', SQLERRM;
END
$do$;

View File

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

View File

@@ -0,0 +1,2 @@
-- Add up migration script here
ALTER TYPE SCRIPT_LANG ADD VALUE IF NOT EXISTS 'graphql';

View File

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

View File

@@ -0,0 +1,2 @@
-- Add up migration script here
ALTER TYPE SCRIPT_LANG ADD VALUE IF NOT EXISTS 'powershell';

View File

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

View File

@@ -0,0 +1,2 @@
-- Add up migration script here
ALTER TABLE queue ADD COLUMN flow_step_id VARCHAR(255);

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.150.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.151.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,2 @@
-- Add down migration script here
ALTER TABLE schedule DROP COLUMN on_recovery;

View File

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

View File

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

View File

@@ -0,0 +1,25 @@
-- Add up migration script here
CREATE INDEX IF NOT EXISTS scheduled_root_job ON completed_job (workspace_id, schedule_path, started_at) WHERE parent_job is NULL;
CREATE INDEX IF NOT EXISTS root_job_index_by_path ON completed_job (workspace_id, script_path, job_kind, created_at) WHERE parent_job is NULL;
CREATE INDEX IF NOT EXISTS root_job_index ON completed_job (workspace_id, job_kind, created_at) WHERE parent_job is NULL;
DROP INDEX IF EXISTS index_completed_on_script_hash;
DROP INDEX IF EXISTS index_completed_on_script_path;
DROP INDEX IF EXISTS index_completed_on_schedule_path;
DROP INDEX IF EXISTS index_completed_on_workspace_id;
DROP INDEX IF EXISTS index_completed_on_created_at;
DROP INDEX IF EXISTS index_queue_on_script_path;
DROP INDEX IF EXISTS index_queue_on_script_hash;
DROP INDEX IF EXISTS index_queue_on_workspace_id;
DROP INDEX IF EXISTS index_queue_on_scheduled_for;
DROP INDEX IF EXISTS index_queue_on_tag;
DROP INDEX IF EXISTS index_queue_on_running;
DROP INDEX IF EXISTS index_queue_on_created;
CREATE INDEX IF NOT EXISTS root_queue_index_by_path ON queue (workspace_id, created_at);
CREATE INDEX IF NOT EXISTS root_queue_index ON queue (job_kind, tag, scheduled_for, created_at) WHERE running is false;
CREATE INDEX IF NOT EXISTS root_queue_index_suspended ON queue (job_kind, tag, suspend_until, suspend, scheduled_for, created_at) WHERE suspend_until is not null;
CREATE INDEX IF NOT EXISTS concurrency_limit_stats_queue ON queue (workspace_id, script_path, started_at) WHERE concurrent_limit is not null;
CREATE INDEX IF NOT EXISTS concurrency_limit_stats_completed_job ON completed_job (workspace_id, script_path, started_at);

View File

@@ -0,0 +1,7 @@
-- Add down migration script here
ALTER TABLE schedule
DROP COLUMN on_failure_times,
DROP COLUMN on_failure_exact,
DROP COLUMN on_failure_extra_args,
DROP COLUMN on_recovery_times,
DROP COLUMN on_recovery_extra_args;

View File

@@ -0,0 +1,7 @@
-- Add up migration script here
ALTER TABLE schedule
ADD COLUMN on_failure_times INTEGER,
ADD COLUMN on_failure_exact BOOLEAN,
ADD COLUMN on_failure_extra_args json,
ADD COLUMN on_recovery_times INTEGER,
ADD COLUMN on_recovery_extra_args json;

View File

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

View File

@@ -0,0 +1,2 @@
-- Add up migration script here
ALTER TYPE JOB_KIND ADD VALUE IF NOT EXISTS 'appdependencies';

View File

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

View File

@@ -0,0 +1,3 @@
-- Add up migration script here
ALTER TABLE script ADD COLUMN cache_ttl INTEGER;
ALTER TABLE queue ADD COLUMN cache_ttl INTEGER;

View File

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

View File

@@ -0,0 +1,6 @@
-- Add up migration script here
CREATE TABLE global_settings (
name VARCHAR(255) PRIMARY KEY,
value JSONB NOT NULL,
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);

View File

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

View File

@@ -0,0 +1,2 @@
-- Add up migration script here
CREATE INDEX IF NOT EXISTS queue_sort ON queue (scheduled_for, created_at) WHERE running = false;

View File

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

View File

@@ -0,0 +1,13 @@
-- Add up migration script here
DROP INDEX IF EXISTS queue_sort;
CREATE INDEX IF NOT EXISTS queue_sort ON queue (scheduled_for, created_at, tag) WHERE running = false;
CREATE TABLE IF NOT EXISTS concurrency_counter (
concurrency_id VARCHAR(1000) PRIMARY KEY,
counter INTEGER NOT NULL
);
DROP INDEX IF EXISTS root_queue_index_suspended;
DROP INDEX IF EXISTS queue_suspended;
CREATE INDEX IF NOT EXISTS queue_suspended ON queue (created_at, suspend_until, suspend, tag) WHERE suspend_until is not null;

View File

@@ -69,6 +69,20 @@
"prompt": "consent"
}
},
"gworkspace": {
"auth_url": "https://accounts.google.com/o/oauth2/v2/auth",
"token_url": "https://oauth2.googleapis.com/token",
"scopes": [
"https://www.googleapis.com/auth/admin.directory.group",
"https://www.googleapis.com/auth/admin.directory.user",
"https://www.googleapis.com/auth/admin.directory.user.security",
"https://www.googleapis.com/auth/admin.directory.orgunit"
],
"extra_params": {
"access_type": "offline",
"prompt": "consent"
}
},
"basecamp": {
"auth_url": "https://launchpad.37signals.com/authorization/new",
"token_url": "https://launchpad.37signals.com/authorization/token",

1
backend/out.json Normal file
View File

@@ -0,0 +1 @@
{"completed":true,"result":{"error":{"name":"Exception","stack":" File \"/tmp/u/ruben/gentle_script.py\", line 35, in main\n print(wmill.get_variable(\"u/admin/adorable_postgresql\"))\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n File \"/tmp/windmill/cache/pip/wmill==1.166.0/wmill/client.py\", line 336, in get_variable\n raise Exception(\n","message":"Variable at path u/admin/adorable_postgresql does not exist or you do not have read permissions on it"}}}

View File

@@ -8,7 +8,7 @@ use std::collections::HashMap;
use windmill_parser::{Arg, MainArgSignature, Typ};
pub fn parse_bash_sig(code: &str) -> anyhow::Result<MainArgSignature> {
let parsed = parse_file(&code)?;
let parsed = parse_bash_file(&code)?;
if let Some(x) = parsed {
let args = x;
Ok(MainArgSignature { star_args: false, star_kwargs: false, args })
@@ -17,13 +17,26 @@ pub fn parse_bash_sig(code: &str) -> anyhow::Result<MainArgSignature> {
}
}
lazy_static::lazy_static! {
static ref RE: Regex = Regex::new(r#"(?m)^(\w+)="\$(?:(\d+)|\{(\d+):-(.*)\})"(?:([\t ]*#.*)?)$"#).unwrap();
pub fn parse_powershell_sig(code: &str) -> anyhow::Result<MainArgSignature> {
let parsed = parse_powershell_file(&code)?;
if let Some(x) = parsed {
let args = x;
Ok(MainArgSignature { star_args: false, star_kwargs: false, args })
} else {
Err(anyhow!("Error parsing powershell script".to_string()))
}
}
fn parse_file(code: &str) -> anyhow::Result<Option<Vec<Arg>>> {
lazy_static::lazy_static! {
static ref RE_BASH: Regex = Regex::new(r#"(?m)^(\w+)="\$(?:(\d+)|\{(\d+):-(.*)\})"(?:[\t ]*)?(?:#.*)?$"#).unwrap();
static ref RE_POWERSHELL_PARAM: Regex = Regex::new(r#"(?m)param[\t ]*\(([^)]*)\)"#).unwrap();
static ref RE_POWERSHELL_ARGS: Regex = Regex::new(r#"(?:\[(\w+)\])?\$(\w+)[\t ]*(?:=[\t ]*(?:(?:(?:"|')([^"\n\r\$]*)(?:"|'))|([\d.]+)))?"#).unwrap();
}
fn parse_bash_file(code: &str) -> anyhow::Result<Option<Vec<Arg>>> {
let mut hm: HashMap<i32, (String, Option<String>)> = HashMap::new();
for cap in RE.captures_iter(code) {
for cap in RE_BASH.captures_iter(code) {
hm.insert(
cap.get(2)
.or(cap.get(3))
@@ -53,6 +66,39 @@ fn parse_file(code: &str) -> anyhow::Result<Option<Vec<Arg>>> {
Ok(Some(args))
}
fn parse_powershell_file(code: &str) -> anyhow::Result<Option<Vec<Arg>>> {
let param_wrapper = RE_POWERSHELL_PARAM.captures(code);
let mut args = vec![];
if let Some(param_wrapper) = param_wrapper {
let param_wrapper = param_wrapper.get(1).unwrap().as_str();
for cap in RE_POWERSHELL_ARGS.captures_iter(param_wrapper) {
let typ = cap
.get(1)
.map(|x| x.as_str().to_string())
.unwrap_or("string".to_string());
let name = cap.get(2).unwrap().as_str().to_string();
let default = cap
.get(3)
.or(cap.get(4))
.map(|x| json!(x.as_str().to_string()));
args.push(Arg {
name: name,
typ: match typ.as_str() {
"string" => Typ::Str(None),
"int" | "long" => Typ::Int,
"decimal" | "double" | "single" => Typ::Float,
_ => Typ::Str(None),
},
default: default.clone(),
otyp: None,
has_default: default.is_some(),
});
}
}
Ok(Some(args))
}
#[cfg(test)]
mod tests {

View File

@@ -12,4 +12,6 @@ path = "./src/lib.rs"
windmill-parser.workspace = true
itertools.workspace = true
anyhow.workspace = true
gosyn.workspace = true
gosyn.workspace = true
lazy_static.workspace = true
regex.workspace = true

View File

@@ -6,8 +6,13 @@ use gosyn::{
};
use itertools::Itertools;
use regex::Regex;
use windmill_parser::{Arg, MainArgSignature, ObjectProperty, Typ};
lazy_static::lazy_static! {
pub static ref REQUIRE_PARSE: Regex = Regex::new(r"//require (.*)\n").unwrap();
}
pub fn parse_go_sig(code: &str) -> anyhow::Result<MainArgSignature> {
let filtered_code = filter_non_main(code);
let file = parse_source(&filtered_code).map_err(|x| anyhow::anyhow!(x.to_string()))?;
@@ -46,7 +51,14 @@ pub fn parse_go_imports(code: &str) -> anyhow::Result<Vec<String>> {
})
.collect();
imports.sort();
Ok(imports)
Ok([
imports,
REQUIRE_PARSE
.captures_iter(code)
.map(|x| x[1].to_string())
.collect_vec(),
]
.concat())
}
fn get_name(param: &Field) -> String {

View File

@@ -0,0 +1,16 @@
[package]
name = "windmill-parser-graphql"
version.workspace = true
edition.workspace = true
authors.workspace = true
[lib]
name = "windmill_parser_graphql"
path = "./src/lib.rs"
[dependencies]
windmill-parser.workspace = true
anyhow.workspace = true
regex.workspace = true
lazy_static.workspace = true
serde_json.workspace = true

View File

@@ -0,0 +1,110 @@
#![allow(non_snake_case)] // TODO: switch to parse_* function naming
use anyhow::anyhow;
use regex::Regex;
use serde_json::json;
use windmill_parser::{Arg, MainArgSignature, Typ};
pub fn parse_graphql_sig(code: &str) -> anyhow::Result<MainArgSignature> {
let parsed = parse_graphql_file(&code)?;
if let Some(x) = parsed {
let args = x;
Ok(MainArgSignature { star_args: false, star_kwargs: false, args })
} else {
Err(anyhow!("Error parsing sql".to_string()))
}
}
lazy_static::lazy_static! {
static ref RE_ARG_GRAPHQL: Regex = Regex::new(r#"\$(\w+)\s*:\s*(?:(\w+)!?|\[(\w+)!?\])!?\s*(?:=\s*(\w+)\s*)?"#).unwrap();
}
fn parse_graphql_file(code: &str) -> anyhow::Result<Option<Vec<Arg>>> {
let mut args: Vec<Arg> = vec![];
for cap in RE_ARG_GRAPHQL.captures_iter(code) {
let name = cap.get(1).map(|x| x.as_str().to_string()).unwrap();
let mut typ = cap.get(2).map(|x| x.as_str().to_string());
let parsed_typ = if typ.is_none() {
let inner_typ = cap.get(3).map(|x| x.as_str().to_string());
typ = inner_typ.clone().map(|x| format!("[{}]", x.to_string()));
Typ::List(Box::new(parse_graphql_typ(inner_typ.unwrap().as_str())))
} else {
parse_graphql_typ(typ.clone().unwrap().as_str())
};
let default = cap.get(4).map(|x| x.as_str().to_string());
let has_default = default.is_some();
let parsed_default = default.and_then(|x| match parsed_typ {
Typ::Int => x.parse::<i64>().ok().map(|x| json!(x)),
Typ::Float => x.parse::<f64>().ok().map(|x| json!(x)),
_ => Some(json!(x)),
});
args.push(Arg {
name,
typ: parsed_typ,
default: parsed_default,
otyp: Some(typ.unwrap()),
has_default,
});
}
Ok(Some(args))
}
pub fn parse_graphql_typ(typ: &str) -> Typ {
match typ {
"String" | "ID" => Typ::Str(None),
"Int" => Typ::Int,
"Boolean" => Typ::Bool,
"Float" => Typ::Float,
_ => Typ::Object(vec![]),
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse_graphql_sig() -> anyhow::Result<()> {
let code = r#"
query($s: String, $arr: [String]) {
books {
title
}
}
"#;
//println!("{}", serde_json::to_string()?);
assert_eq!(
parse_graphql_sig(code)?,
MainArgSignature {
star_args: false,
star_kwargs: false,
args: vec![
Arg {
otyp: Some("String".to_string()),
name: "s".to_string(),
typ: Typ::Str(None),
default: None,
has_default: false
},
Arg {
otyp: Some("[String]".to_string()),
name: "arr".to_string(),
typ: Typ::List(Box::new(Typ::Str(None))),
default: None,
has_default: false
},
]
}
);
Ok(())
}
}

View File

@@ -32,6 +32,9 @@ static PYTHON_IMPORTS_REPLACEMENT: phf::Map<&'static str, &'static str> = phf_ma
"smb" => "pysmb",
"PIL" => "Pillow",
"googleapiclient" => "google-api-python-client",
"dateutil" => "python-dateutil",
"mailparser" => "mail-parser",
"mailparser-reply" => "mail-parser-reply",
};
fn replace_import(x: String) -> String {
@@ -145,19 +148,20 @@ pub async fn parse_python_imports(
.collect();
for n in nimports.iter() {
let nested = if n.starts_with("relative:") {
let rpath = n.replace("relative:", "");
let code = sqlx::query_scalar!(
r#"
SELECT content FROM script WHERE path = $1 AND workspace_id = $2
AND created_at = (SELECT max(created_at) FROM script WHERE path = $1 AND
workspace_id = $2)
"#,
n.replace("relative:", ""),
&rpath,
w_id
)
.fetch_optional(db)
.await?
.unwrap_or_else(|| "".to_string());
parse_python_imports(&code, w_id, path, db).await?
parse_python_imports(&code, w_id, &rpath, db).await?
} else {
vec![replace_import(n.to_string())]
};

View File

@@ -2556,4 +2556,27 @@ import numpy as np
'{}',
'',
'',
'f/foo/baz', -28028598712388161, 'python3', '');
'f/foo/baz', -28028598712388161, 'python3', '');
INSERT INTO public.script(workspace_id, created_by, content, schema, summary, description, path, hash, language, lock) VALUES (
'test-workspace',
'system',
'
import difffolder
from .bar import main
',
'{}',
'',
'',
'f/foobar/baz', -28028598712388160, 'python3', '');
INSERT INTO public.script(workspace_id, created_by, content, schema, summary, description, path, hash, language, lock) VALUES (
'test-workspace',
'system',
'
import innerdifffolder
',
'{}',
'',
'',
'f/foobar/bar', -28028598712388159, 'python3', '');

View File

@@ -57,7 +57,7 @@ from f.foo.bar import main1
from .baz import main2
from ..foo.bar import main3
import f.foo.bar as bar
from ..foobar.baz import main4
def main():
pass
@@ -65,7 +65,17 @@ def main():
";
let r = parse_python_imports(code, "test-workspace", "f/foo/bar", &db).await?;
println!("{}", serde_json::to_string(&r)?);
assert_eq!(r, ["numpy", "pandas", "pandas2", "requests"]);
assert_eq!(
r,
[
"difffolder",
"innerdifffolder",
"numpy",
"pandas",
"pandas2",
"requests"
]
);
Ok(())
}

View File

@@ -18,6 +18,8 @@ windmill-parser.workspace = true
swc_common.workspace = true
swc_ecma_parser.workspace = true
swc_ecma_ast.workspace = true
swc_ecma_visit.workspace = true
serde_json.workspace = true
anyhow.workspace = true
convert_case.workspace = true
convert_case.workspace = true
regex.workspace = true

View File

@@ -1,4 +1,5 @@
use convert_case::{Case, Casing};
use regex::Regex;
/*
* Author: Ruben Fiszel
* Copyright: Windmill Labs, Inc 2022
@@ -8,21 +9,78 @@ use convert_case::{Case, Casing};
*/
// use deno_core::{serde_v8, v8, JsRuntime, RuntimeOptions};
use serde_json::Value;
use std::collections::HashSet;
use swc_ecma_visit::{noop_visit_type, Visit, VisitWith};
use windmill_parser::{json_to_typ, Arg, MainArgSignature, ObjectProperty, Typ};
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, Param, Pat, Str, TsArrayType, TsEntityName,
TsKeywordType, TsKeywordTypeKind, TsLit, TsLitType, TsOptionalType, TsParenthesizedType,
TsPropertySignature, TsType, TsTypeElement, TsTypeLit, TsTypeRef, TsUnionOrIntersectionType,
TsUnionType,
MemberExpr, MemberProp, ModuleDecl, ModuleItem, Number, ObjectLit, ObjectPat, Param, Pat, Str,
TsArrayType, TsEntityName, TsKeywordType, TsKeywordTypeKind, TsLit, TsLitType, TsOptionalType,
TsParenthesizedType, TsPropertySignature, TsType, TsTypeAnn, TsTypeElement, TsTypeLit,
TsTypeRef, TsUnionOrIntersectionType, TsUnionType,
};
use swc_ecma_parser::{lexer::Lexer, Parser, StringInput, Syntax, TsConfig};
use swc_ecma_parser::{lexer::Lexer, EsConfig, Parser, StringInput, Syntax, TsConfig};
#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;
struct OutputFinder {
idents: HashSet<(String, String)>,
}
impl Visit for OutputFinder {
noop_visit_type!();
fn visit_member_expr(&mut self, m: &MemberExpr) {
m.obj.visit_with(self);
if let MemberProp::Computed(c) = &m.prop {
c.visit_with(self);
}
match m {
MemberExpr { obj, prop: MemberProp::Ident(Ident { sym, .. }), .. } => {
match *obj.to_owned() {
Expr::Ident(Ident { sym: sym_i, .. }) => {
self.idents.insert((sym_i.to_string(), sym.to_string()));
}
_ => (),
}
}
_ => (),
}
}
}
pub fn parse_expr_for_ids(code: &str) -> anyhow::Result<Vec<(String, String)>> {
let cm: Lrc<SourceMap> = Default::default();
let fm = cm.new_source_file(FileName::Custom("main.ts".into()), code.into());
let lexer = Lexer::new(
// We want to parse ecmascript
Syntax::Es(EsConfig { jsx: false, ..Default::default() }),
// EsVersion defaults to es5
Default::default(),
StringInput::from(&*fm),
None,
);
let mut parser = Parser::new_from(lexer);
let mut err_s = "".to_string();
for e in parser.take_errors() {
err_s += &e.into_kind().msg().to_string();
}
let expr = parser
.parse_module()
.map_err(|_| anyhow::anyhow!("Error while parsing code, it is invalid TypeScript"))?;
let mut visitor = OutputFinder { idents: HashSet::new() };
swc_ecma_visit::visit_module(&mut visitor, &expr);
Ok(visitor.idents.into_iter().collect())
}
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("main.ts".into()), code.into());
@@ -44,7 +102,7 @@ pub fn parse_deno_signature(code: &str, skip_dflt: bool) -> anyhow::Result<MainA
let ast = parser
.parse_module()
.map_err(|_| anyhow::anyhow!("Error while parsing code, it is invalid typescript"))?
.map_err(|_| anyhow::anyhow!("Error while parsing code, it is invalid TypeScript"))?
.body;
let params = ast.into_iter().find_map(|x| match x {
@@ -55,13 +113,14 @@ pub fn parse_deno_signature(code: &str, skip_dflt: bool) -> anyhow::Result<MainA
_ => None,
});
let mut c: u16 = 0;
if let Some(params) = params {
let r = MainArgSignature {
star_args: false,
star_kwargs: false,
args: params
.into_iter()
.map(|x| parse_param(x, &cm, skip_dflt))
.map(|x| parse_param(x, &cm, skip_dflt, &mut c))
.collect::<anyhow::Result<Vec<Arg>>>()?,
};
Ok(r)
@@ -73,7 +132,12 @@ pub fn parse_deno_signature(code: &str, skip_dflt: bool) -> anyhow::Result<MainA
}
}
fn parse_param(x: Param, cm: &Lrc<SourceMap>, skip_dflt: bool) -> anyhow::Result<Arg> {
fn parse_param(
x: Param,
cm: &Lrc<SourceMap>,
skip_dflt: bool,
counter: &mut u16,
) -> anyhow::Result<Arg> {
let r = match x.pat {
Pat::Ident(ident) => {
let (name, typ, nullable) = binding_ident_to_arg(&ident);
@@ -85,15 +149,25 @@ fn parse_param(x: Param, cm: &Lrc<SourceMap>, skip_dflt: bool) -> anyhow::Result
has_default: ident.id.optional || nullable,
})
}
// Pat::Object(ObjectPat { ... }) = todo!()
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: `{}`",
let (name, mut typ, _nullable) = match *left {
Pat::Ident(ident) => binding_ident_to_arg(&ident),
Pat::Object(ObjectPat { type_ann, .. }) => {
let (typ, nullable) = eval_type_ann(&type_ann);
*counter += 1;
let name = format!("anon{}", counter);
(name, typ, nullable)
}
_ => {
return Err(anyhow::anyhow!(
"parameter syntax unsupported: `{}`: {:#?}",
cm.span_to_snippet(left.span())
.unwrap_or_else(|_| cm.span_to_string(left.span()))
)
})?;
.unwrap_or_else(|_| cm.span_to_string(left.span())),
*left
))
}
};
let dflt = if skip_dflt {
None
@@ -121,10 +195,17 @@ fn parse_param(x: Param, cm: &Lrc<SourceMap>, skip_dflt: bool) -> anyhow::Result
}
Ok(Arg { otyp: None, name, typ, default: dflt, has_default: true })
}
Pat::Object(ObjectPat { type_ann, .. }) => {
let (typ, nullable) = eval_type_ann(&type_ann);
*counter += 1;
let name = format!("anon{}", counter);
Ok(Arg { otyp: None, name, typ, default: None, has_default: nullable })
}
_ => Err(anyhow::anyhow!(
"parameter syntax unsupported: `{}`",
"parameter syntax unsupported: `{}`: {:#?}",
cm.span_to_snippet(x.span())
.unwrap_or_else(|_| cm.span_to_string(x.span()))
.unwrap_or_else(|_| cm.span_to_string(x.span())),
x.pat
)),
};
r
@@ -143,16 +224,26 @@ fn eval_span(span: Span, cm: &Lrc<SourceMap>) -> Option<Value> {
}
}
fn binding_ident_to_arg(BindingIdent { id, type_ann }: &BindingIdent) -> (String, Typ, bool) {
let (typ, nullable) = type_ann
fn eval_type_ann(type_ann: &Option<Box<TsTypeAnn>>) -> (Typ, bool) {
return type_ann
.as_ref()
.map(|x| tstype_to_typ(&*x.type_ann))
.unwrap_or((Typ::Unknown, false));
}
fn binding_ident_to_arg(BindingIdent { id, type_ann }: &BindingIdent) -> (String, Typ, bool) {
let (typ, nullable) = eval_type_ann(type_ann);
(id.sym.to_string(), typ, nullable)
}
fn to_snake_case(s: &str) -> String {
let r = s.to_case(Case::Snake);
// s_3 => s3
let re = Regex::new(r"_(\d)").unwrap();
re.replace_all(&r, "$1").to_string()
}
fn tstype_to_typ(ts_type: &TsType) -> (Typ, bool) {
// log(&format!("{:?}", ts_type));
match ts_type {
TsType::TsKeywordType(t) => (
match t.kind {
@@ -262,7 +353,7 @@ fn tstype_to_typ(ts_type: &TsType) -> (Typ, bool) {
"Base64" => (Typ::Bytes, false),
"Email" => (Typ::Email, false),
"Sql" => (Typ::Sql, false),
x @ _ => (Typ::Resource(x.to_case(Case::Snake)), false),
x @ _ => (Typ::Resource(to_snake_case(x)), false),
}
}
_ => (Typ::Unknown, false),
@@ -274,8 +365,8 @@ fn tstype_to_typ(ts_type: &TsType) -> (Typ, bool) {
extern "C" {
pub fn eval(s: &str) -> JsValue;
pub fn alert(s: &str);
// #[wasm_bindgen(js_namespace = console)]
// fn log(s: &str);
#[wasm_bindgen(js_namespace = console)]
fn log(s: &str);
}

View File

@@ -21,6 +21,7 @@ windmill-parser-bash.workspace = true
windmill-parser-sql.workspace = true
windmill-parser-py.workspace = true
windmill-parser-ts.workspace = true
windmill-parser-graphql.workspace = true
wasm-bindgen.workspace = true
serde_json.workspace = true
getrandom = { workspace = true, features = ["js"] }

View File

@@ -3,7 +3,7 @@
"collaborators": [
"Ruben Fiszel <ruben@windmill.dev>"
],
"version": "1.138.1",
"version": "1.154.3",
"files": [
"windmill_parser_wasm_bg.wasm",
"windmill_parser_wasm.js",
@@ -14,4 +14,4 @@
"sideEffects": [
"./snippets/*"
]
}
}

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