diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e3da3695f..eff72ae1a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,39 @@ # Changelog +## [1.69.3](https://github.com/windmill-labs/windmill/compare/v1.69.2...v1.69.3) (2023-02-24) + + +### Bug Fixes + +* **deno:** fix denoify buffer handling ([c2e5afd](https://github.com/windmill-labs/windmill/commit/c2e5afd4e07fb63375832f308da8c744616ee188)) + +## [1.69.2](https://github.com/windmill-labs/windmill/compare/v1.69.1...v1.69.2) (2023-02-24) + + +### Bug Fixes + +* **app:** fix all nested behavior ([dd28308](https://github.com/windmill-labs/windmill/commit/dd28308c3cf1877ba3f19dcd2bd20bf1c7896a99)) +* **frontend:** delete grid item ([008c30f](https://github.com/windmill-labs/windmill/commit/008c30fcaad64af512407f9889a9881fafac0868)) +* **frontend:** duplicate ([483407c](https://github.com/windmill-labs/windmill/commit/483407cdf0e1ed61de180a904934e950fed4adc3)) +* **frontend:** Fix findGridItem ([a8295d0](https://github.com/windmill-labs/windmill/commit/a8295d0b5acd08cec42b7939d907df5c25132644)) +* **frontend:** Fix findGridItem ([5bb77ed](https://github.com/windmill-labs/windmill/commit/5bb77edf45740a75e969b1bef31580271c9d5505)) +* **frontend:** Fix next id ([8ddcf4d](https://github.com/windmill-labs/windmill/commit/8ddcf4d9c1a8d6dd20ee241a3f308811c49e58f1)) +* **frontend:** gridtab ([fa105b4](https://github.com/windmill-labs/windmill/commit/fa105b4caeaa2d0e9704a48f6caf8d846839c23e)) +* **frontend:** rewrote utils ([ea1b2c2](https://github.com/windmill-labs/windmill/commit/ea1b2c29b95282df347ef9c5973917fa3880e843)) +* **frontend:** wip ([33ebe2d](https://github.com/windmill-labs/windmill/commit/33ebe2da8e81476be62a2567d5012573a8a010b6)) + +## [1.69.1](https://github.com/windmill-labs/windmill/compare/v1.69.0...v1.69.1) (2023-02-24) + + +### Bug Fixes + +* **deno:** remove mysql support waiting for deno fix ([dd7e8c7](https://github.com/windmill-labs/windmill/commit/dd7e8c742c83f6a1d13e4343ca626c0b5efc06fb)) +* **deno:** remove mysql support waiting for deno fix ([2f78132](https://github.com/windmill-labs/windmill/commit/2f78132e081bdf3d7468e022f0e981ebfa52cfb3)) +* **frontend:** containers and tab fixes v1 ([27cac3f](https://github.com/windmill-labs/windmill/commit/27cac3ffe69c4dac160e9e55ffd1eb8ea348d487)) +* **frontend:** containers and tab fixes v1 ([705703a](https://github.com/windmill-labs/windmill/commit/705703a5e2f2dc7ceb4c215221f72bf624799841)) +* **frontend:** containers and tab fixes v1 ([fac31c6](https://github.com/windmill-labs/windmill/commit/fac31c6628b289ad6aae92434e312c4be281a4d2)) + ## [1.69.0](https://github.com/windmill-labs/windmill/compare/v1.68.0...v1.69.0) (2023-02-23) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 7b00928672..50be07df5b 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -255,9 +255,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fb79c228270dcf2426e74864cabc94babb5dbab01a4314e702d2f16540e1591" +checksum = "2bd379e511536bad07447f899300aa526e9bae8e6f66dc5e5ca45d7587b7c1ec" dependencies = [ "async-trait", "axum-core", @@ -282,7 +282,7 @@ dependencies = [ "sync_wrapper", "tokio", "tower", - "tower-http", + "tower-http 0.3.5", "tower-layer", "tower-service", ] @@ -553,9 +553,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade" +checksum = "350b9cf31731f9957399229e9b2adc51eeabdfbe9d71d9a0552275fd12710d09" dependencies = [ "os_str_bytes", ] @@ -987,9 +987,9 @@ dependencies = [ [[package]] name = "ena" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7402b94a93c24e742487327a7cd839dc9d36fec9de9fb25b09f2dae459f36c3" +checksum = "b2e5d13ca2353ab7d0230988629def93914a8c4015f621f9b13ed2955614731d" dependencies = [ "log", ] @@ -2149,18 +2149,18 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0072973714303aa6e3631c7e8e777970cf4bdd25dc4932e41031027b8bcc4e" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0629cbd6b897944899b1f10496d9c4a7ac5878d45fd61bc22e9e79bfbbc29597" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -3003,7 +3003,7 @@ dependencies = [ [[package]] name = "rustpython-ast" version = "0.2.0" -source = "git+https://github.com/RustPython/RustPython#c4b67896662b16b5699a779c0e52aa0ca2587fec" +source = "git+https://github.com/RustPython/RustPython#f51764f8d0c33e8e3b423e8a80dba00926715360" dependencies = [ "num-bigint", "rustpython-compiler-core", @@ -3012,7 +3012,7 @@ dependencies = [ [[package]] name = "rustpython-compiler-core" version = "0.2.0" -source = "git+https://github.com/RustPython/RustPython#c4b67896662b16b5699a779c0e52aa0ca2587fec" +source = "git+https://github.com/RustPython/RustPython#f51764f8d0c33e8e3b423e8a80dba00926715360" dependencies = [ "bincode", "bitflags", @@ -3029,7 +3029,7 @@ dependencies = [ [[package]] name = "rustpython-parser" version = "0.2.0" -source = "git+https://github.com/RustPython/RustPython#c4b67896662b16b5699a779c0e52aa0ca2587fec" +source = "git+https://github.com/RustPython/RustPython#f51764f8d0c33e8e3b423e8a80dba00926715360" dependencies = [ "ahash", "anyhow", @@ -3823,9 +3823,9 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.108" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56e159d99e6c2b93995d171050271edb50ecc5288fbc7cc17de8fdce4e58c14" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -4168,6 +4168,24 @@ dependencies = [ "tower", "tower-layer", "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1d42a9b3f3ec46ba828e8d376aec14592ea199f70a06a548587ecd1c4ab658" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "pin-project-lite", + "tower-layer", + "tower-service", "tracing", ] @@ -4766,7 +4784,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.69.0" +version = "1.69.2" dependencies = [ "anyhow", "axum", @@ -4793,7 +4811,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.69.0" +version = "1.69.2" dependencies = [ "anyhow", "argon2", @@ -4832,7 +4850,7 @@ dependencies = [ "tokio-util", "tower", "tower-cookies", - "tower-http", + "tower-http 0.4.0", "tracing", "tracing-subscriber", "urlencoding", @@ -4848,7 +4866,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.69.0" +version = "1.69.2" dependencies = [ "base64 0.21.0", "chrono", @@ -4863,7 +4881,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.69.0" +version = "1.69.2" dependencies = [ "chrono", "serde", @@ -4876,7 +4894,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.69.0" +version = "1.69.2" dependencies = [ "anyhow", "axum", @@ -4901,7 +4919,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.69.0" +version = "1.69.2" dependencies = [ "serde", "serde_json", @@ -4909,7 +4927,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.69.0" +version = "1.69.2" dependencies = [ "anyhow", "itertools", @@ -4923,7 +4941,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.69.0" +version = "1.69.2" dependencies = [ "anyhow", "itertools", @@ -4935,7 +4953,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.69.0" +version = "1.69.2" dependencies = [ "anyhow", "itertools", @@ -4950,7 +4968,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.69.0" +version = "1.69.2" dependencies = [ "anyhow", "deno_core", @@ -4964,7 +4982,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.69.0" +version = "1.69.2" dependencies = [ "anyhow", "chrono", @@ -4987,7 +5005,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.69.0" +version = "1.69.2" dependencies = [ "anyhow", "async-recursion", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 9a9bf9e5cb..c6cc851f15 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.69.0" +version = "1.69.2" authors.workspace = true edition.workspace = true @@ -19,7 +19,7 @@ members = [ ] [workspace.package] -version = "1.69.0" +version = "1.69.2" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/migrations/20230226130307_update_included_scripts_with_deno_changes.down.sql b/backend/migrations/20230226130307_update_included_scripts_with_deno_changes.down.sql new file mode 100644 index 0000000000..d2f607c5b8 --- /dev/null +++ b/backend/migrations/20230226130307_update_included_scripts_with_deno_changes.down.sql @@ -0,0 +1 @@ +-- Add down migration script here diff --git a/backend/migrations/20230226130307_update_included_scripts_with_deno_changes.up.sql b/backend/migrations/20230226130307_update_included_scripts_with_deno_changes.up.sql new file mode 100644 index 0000000000..e69de29bb2 diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index d48cf9c1ff..a47cb9a350 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.69.0 + version: 1.69.2 title: Windmill API contact: diff --git a/cli/main.ts b/cli/main.ts index 54a9876f12..32e6c54776 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -13,7 +13,7 @@ import sync from "./sync.ts"; import { tryResolveVersion } from "./context.ts"; import { GlobalOptions } from "./types.ts"; -const VERSION = "v1.69.0"; +const VERSION = "v1.69.2"; let command: any = new Command() .name("wmill") diff --git a/deno-client/build.sh b/deno-client/build.sh index f2c8849bb1..37bac778b6 100755 --- a/deno-client/build.sh +++ b/deno-client/build.sh @@ -4,8 +4,9 @@ set -e npm ci --ignore-scripts npx --yes openapi-typescript-codegen --input ../backend/windmill-api/openapi.yaml \ --output ./src --useOptions \ - && sed -i '213 i \\ request.referrerPolicy = \"no-referrer\"\n' src/core/request.ts -npx --yes denoify + && sed -i '213 i \\ request.referrerPolicy = \"no-referrer\"\n' src/core/request.ts + npx --yes denoify rm -rf windmill-api mv deno_dist windmill-api +sed -i 's/buffer DENOIFY: UNKNOWN NODE BUILTIN/node:buffer/' ./windmill-api/core/request.ts rm -rf src/ diff --git a/deno-client/mod.ts b/deno-client/mod.ts index 41d8860282..0d3ceec648 100644 --- a/deno-client/mod.ts +++ b/deno-client/mod.ts @@ -14,7 +14,6 @@ BigInt.prototype.toJSON = function () { }; export { pgSql, pgClient } from './pg.ts' -export { mySql, mysqlClient } from './mysql.ts' export type Sql = string export type Email = string diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 915eb24f12..f9e7979aef 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill", - "version": "1.69.0", + "version": "1.69.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "windmill", - "version": "1.69.0", + "version": "1.69.2", "dependencies": { "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", @@ -14,11 +14,13 @@ "@popperjs/core": "^2.11.6", "@redocly/json-to-json-schema": "^0.0.1", "@tanstack/svelte-table": "^8.7.6", + "ag-grid-svelte": "^0.1.4", "async-mutex": "^0.4.0", "chart.js": "^3.9.1", "chartjs-adapter-date-fns": "^3.0.0", "chartjs-plugin-zoom": "^2.0.0", "date-fns": "^2.29.3", + "fast-equals": "^4.0.3", "highlight.js": "^11.7.0", "lucide-svelte": "^0.115.0", "monaco-editor": "0.33.0", @@ -43,7 +45,7 @@ "@types/vscode": "~1.74.0", "@typescript-eslint/eslint-plugin": "^5.49.0", "@typescript-eslint/parser": "^5.48.0", - "@windmill-labs/svelte-grid": "^5.1.3", + "@windmill-labs/svelte-grid": "^5.1.4", "@windmill-labs/svelvet": "^4.0.20", "@zerodevx/svelte-toast": "^0.8.1", "autoprefixer": "^10.4.13", @@ -1263,9 +1265,9 @@ } }, "node_modules/@windmill-labs/svelte-grid": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@windmill-labs/svelte-grid/-/svelte-grid-5.1.3.tgz", - "integrity": "sha512-SzfuJ2qYkBYC73x3l+x9l7WcgU+kMlRoFkCgSCOfggi3z5zJU9eX1VYsV1wDjtQVU9OUaAciv1xlUR4OPxrFlg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@windmill-labs/svelte-grid/-/svelte-grid-5.1.4.tgz", + "integrity": "sha512-alxQ8su/osmHodl1JMta+0dvlc2qnYwiXsoeC8Ys8hrLywD03y5tjxYV0L0WXvOnMKG1S9GbqGuDVCk+UmVuKg==", "dev": true }, "node_modules/@windmill-labs/svelvet": { @@ -1357,6 +1359,23 @@ "node": ">=0.4.0" } }, + "node_modules/ag-grid-community": { + "version": "28.2.1", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-28.2.1.tgz", + "integrity": "sha512-DMZh/xD/FqYP17qJ1M92PolTYe+hrKuEaf+A4h13O6qn2x/xZQrTRGW5DgnQLR/uLMe1XXZQPKR3UKgAlKo69A==", + "peer": true + }, + "node_modules/ag-grid-svelte": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/ag-grid-svelte/-/ag-grid-svelte-0.1.4.tgz", + "integrity": "sha512-yKJKZ1o3aE9dgaK4WtmjG+vA9GKqErznvFisDnzi+PPGWXDCSNWuoDGCUpEFJtHKrfooLoUZZHYHi8I9sZ+BCA==", + "dependencies": { + "svelte": "^3.55.0" + }, + "peerDependencies": { + "ag-grid-community": "^28" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -2971,6 +2990,11 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-equals": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz", + "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==" + }, "node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", @@ -7904,9 +7928,9 @@ } }, "@windmill-labs/svelte-grid": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@windmill-labs/svelte-grid/-/svelte-grid-5.1.3.tgz", - "integrity": "sha512-SzfuJ2qYkBYC73x3l+x9l7WcgU+kMlRoFkCgSCOfggi3z5zJU9eX1VYsV1wDjtQVU9OUaAciv1xlUR4OPxrFlg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@windmill-labs/svelte-grid/-/svelte-grid-5.1.4.tgz", + "integrity": "sha512-alxQ8su/osmHodl1JMta+0dvlc2qnYwiXsoeC8Ys8hrLywD03y5tjxYV0L0WXvOnMKG1S9GbqGuDVCk+UmVuKg==", "dev": true }, "@windmill-labs/svelvet": { @@ -7980,6 +8004,20 @@ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true }, + "ag-grid-community": { + "version": "28.2.1", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-28.2.1.tgz", + "integrity": "sha512-DMZh/xD/FqYP17qJ1M92PolTYe+hrKuEaf+A4h13O6qn2x/xZQrTRGW5DgnQLR/uLMe1XXZQPKR3UKgAlKo69A==", + "peer": true + }, + "ag-grid-svelte": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/ag-grid-svelte/-/ag-grid-svelte-0.1.4.tgz", + "integrity": "sha512-yKJKZ1o3aE9dgaK4WtmjG+vA9GKqErznvFisDnzi+PPGWXDCSNWuoDGCUpEFJtHKrfooLoUZZHYHi8I9sZ+BCA==", + "requires": { + "svelte": "^3.55.0" + } + }, "ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -9151,6 +9189,11 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-equals": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz", + "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==" + }, "fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", diff --git a/frontend/package.json b/frontend/package.json index 9072b434fc..f6105601f6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill", - "version": "1.69.0", + "version": "1.69.2", "scripts": { "dev": "vite dev", "build": "vite build", @@ -25,7 +25,7 @@ "@types/vscode": "~1.74.0", "@typescript-eslint/eslint-plugin": "^5.49.0", "@typescript-eslint/parser": "^5.48.0", - "@windmill-labs/svelte-grid": "^5.1.3", + "@windmill-labs/svelte-grid": "^5.1.4", "@windmill-labs/svelvet": "^4.0.20", "@zerodevx/svelte-toast": "^0.8.1", "autoprefixer": "^10.4.13", @@ -66,11 +66,13 @@ "@popperjs/core": "^2.11.6", "@redocly/json-to-json-schema": "^0.0.1", "@tanstack/svelte-table": "^8.7.6", + "ag-grid-svelte": "^0.1.4", "async-mutex": "^0.4.0", "chart.js": "^3.9.1", "chartjs-adapter-date-fns": "^3.0.0", "chartjs-plugin-zoom": "^2.0.0", "date-fns": "^2.29.3", + "fast-equals": "^4.0.3", "highlight.js": "^11.7.0", "lucide-svelte": "^0.115.0", "monaco-editor": "0.33.0", diff --git a/frontend/src/global.d.ts b/frontend/src/global.d.ts index 036deecb9c..ae6c077144 100644 --- a/frontend/src/global.d.ts +++ b/frontend/src/global.d.ts @@ -44,7 +44,7 @@ declare module '@windmill-labs/svelte-grid' { fastStart?: boolean throttleUpdate?: number throttleResize?: number - + onTopId?: string scroller?: undefined sensor?: number } @@ -60,7 +60,7 @@ declare module '@windmill-labs/svelte-grid' { mount: CustomEvent<> }, Slots - > {} + > { } } declare module '@windmill-labs/svelte-grid/build/helper/index.mjs' { diff --git a/frontend/src/lib/components/Editor.svelte b/frontend/src/lib/components/Editor.svelte index d79578f32a..2418cdd0e6 100644 --- a/frontend/src/lib/components/Editor.svelte +++ b/frontend/src/lib/components/Editor.svelte @@ -138,8 +138,18 @@ export function setCode(ncode: string): void { code = ncode - if (editor) { - editor.setValue(ncode) + if (editor?.getModel()) { + // editor.setValue(ncode) + editor.pushUndoStop() + + editor.executeEdits('set', [ + { + range: editor.getModel()!.getFullModelRange(), // full range + text: ncode + } + ]) + + editor.pushUndoStop() } } diff --git a/frontend/src/lib/components/ScriptBuilder.svelte b/frontend/src/lib/components/ScriptBuilder.svelte index 539295c6ea..a27bcee543 100644 --- a/frontend/src/lib/components/ScriptBuilder.svelte +++ b/frontend/src/lib/components/ScriptBuilder.svelte @@ -24,6 +24,7 @@ export let initialPath: string = '' export let template: 'pgsql' | 'mysql' | 'script' = 'script' export let initialArgs: Record = {} + export let lockedLanguage = false const langs: [string, SupportedLanguage][] = [ ['Typescript', Script.language.DENO], @@ -214,7 +215,13 @@ bind:value={script.summary} placeholder="Short summary to be displayed when listed" /> +

Language

+ {#if lockedLanguage} +
+ As a forked script, the language '{script.language}' cannot be modified. +
+ {/if}
{#each langs as [label, lang]} {@const isPicked = script.language == lang && template == 'script'} @@ -228,6 +235,7 @@ template = 'script' initContent(lang, script.kind, template) }} + disabled={lockedLanguage} > {label} @@ -237,6 +245,7 @@ variant="border" color={template == 'pgsql' ? 'blue' : 'dark'} btnClasses={template == 'pgsql' ? '!border-2 !bg-blue-50/75' : 'm-[1px]'} + disabled={lockedLanguage} on:click={() => { script.language = Script.language.DENO template = 'pgsql' @@ -245,7 +254,7 @@ > PostgreSQL - + -->
@@ -82,4 +100,7 @@ .app-select .value-container { padding: 0 !important; } + .svelte-select-list { + z-index: 1000 !important; + } diff --git a/frontend/src/lib/components/apps/components/inputs/AppSliderInputs.svelte b/frontend/src/lib/components/apps/components/inputs/AppSliderInputs.svelte index 62f67fc9ff..eca1dfa48f 100644 --- a/frontend/src/lib/components/apps/components/inputs/AppSliderInputs.svelte +++ b/frontend/src/lib/components/apps/components/inputs/AppSliderInputs.svelte @@ -13,8 +13,7 @@ export let verticalAlignment: 'top' | 'center' | 'bottom' | undefined = undefined export const staticOutputs: string[] = ['result'] - const { worldStore } = getContext('AppEditorContext') - let values: [number] = [0] + const { worldStore, selectedComponent } = getContext('AppEditorContext') let min = 0 let max = 42 let step = 1 @@ -22,7 +21,12 @@ $: outputs = $worldStore?.outputsById[id] as { result: Output } - $: if (values) { + + let values: [number] = [outputs?.result.peak() ?? 0] + + $: values && handleValues() + + function handleValues() { // Disallow 'e' character in numbers // if(value && value.toString().includes('e')) { // value = +value.toString().replaceAll('e', '') @@ -40,7 +44,7 @@
{min} -
+
($selectedComponent = id)}>
{max} diff --git a/frontend/src/lib/components/apps/components/layout/AppContainer.svelte b/frontend/src/lib/components/apps/components/layout/AppContainer.svelte index 134b3a9149..aee860292e 100644 --- a/frontend/src/lib/components/apps/components/layout/AppContainer.svelte +++ b/frontend/src/lib/components/apps/components/layout/AppContainer.svelte @@ -7,12 +7,12 @@ export let id: string export let configuration: Record - export let subGrids: GridItem[][] | undefined = undefined export let componentContainerHeight: number + let noPadding: boolean | undefined = undefined export const staticOutputs: string[] = [] - const { focusedGrid, selectedComponent } = getContext('AppEditorContext') + const { app, focusedGrid, selectedComponent } = getContext('AppEditorContext') let gridContent: string[] | undefined = undefined @@ -27,12 +27,12 @@ - -{#if subGrids && subGrids[0]} + +{#if $app.subgrids?.[`${id}-0`]} { $selectedComponent = id diff --git a/frontend/src/lib/components/apps/components/layout/AppTabs.svelte b/frontend/src/lib/components/apps/components/layout/AppTabs.svelte index 47ea2e333a..13acc43025 100644 --- a/frontend/src/lib/components/apps/components/layout/AppTabs.svelte +++ b/frontend/src/lib/components/apps/components/layout/AppTabs.svelte @@ -8,14 +8,12 @@ import InputValue from '../helpers/InputValue.svelte' export let id: string - export let configuration: Record - export let subGrids: GridItem[][] | undefined = undefined export let componentContainerHeight: number export let tabs: string[] export const staticOutputs: string[] = ['selectedTabIndex'] - const { worldStore, focusedGrid, selectedComponent } = + const { app, worldStore, focusedGrid, selectedComponent } = getContext('AppEditorContext') let selected: string = '' @@ -36,6 +34,7 @@ } $: selectedIndex >= 0 && handleTabSelection() + let tabHeight: number = 0 function onFocus() { @@ -52,7 +51,7 @@
-
+
{#each tabs ?? [] as res} @@ -61,14 +60,17 @@ {/each}
- {#if subGrids && subGrids[selectedIndex]} - { - $selectedComponent = id - }} - /> + {#if $app.subgrids} + {#each tabs ?? [] as res, i} + { + $selectedComponent = id + }} + /> + {/each} {/if}
diff --git a/frontend/src/lib/components/apps/editor/AppEditor.svelte b/frontend/src/lib/components/apps/editor/AppEditor.svelte index 9e17e342d8..6bd55e8b98 100644 --- a/frontend/src/lib/components/apps/editor/AppEditor.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditor.svelte @@ -36,6 +36,7 @@ import UnsavedConfirmationModal from '$lib/components/common/confirmationModal/UnsavedConfirmationModal.svelte' import { page } from '$app/stores' import CssSettings from './componentsPanel/CssSettings.svelte' + import { findGridItem } from './appUtils' export let app: App export let path: string diff --git a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte index d81a9eccf4..6403b020a1 100644 --- a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte @@ -467,8 +467,8 @@
{`Sub grid: ${$focusedGrid.parentComponentId} (${$focusedGrid.subGridIndex})`}
+{:else} +

No grids available

+{/if} diff --git a/frontend/src/lib/components/apps/types.ts b/frontend/src/lib/components/apps/types.ts index 547594602a..1e68cc53e6 100644 --- a/frontend/src/lib/components/apps/types.ts +++ b/frontend/src/lib/components/apps/types.ts @@ -59,7 +59,8 @@ export interface BaseAppComponent extends Partial { * *For example when the component has a popup like `Select`* */ softWrap?: boolean - subGrids?: GridItem[][] + // Number of subgrids + numberOfSubgrids?: number } export type ComponentSet = { @@ -99,6 +100,7 @@ export type App = { fields: Record }> css?: Record<'viewer' | 'grid' | AppComponent['type'], ComponentCustomCSS> + subgrids?: Record } export type ConnectingInput = { @@ -132,7 +134,6 @@ export type AppEditorContext = { } export type FocusedGrid = { parentComponentId: string; subGridIndex: number } - export type EditorMode = 'dnd' | 'preview' export type EditorBreakpoint = 'sm' | 'lg' diff --git a/frontend/src/lib/components/apps/utils.ts b/frontend/src/lib/components/apps/utils.ts index f2658caf5f..ffebd5c7c5 100644 --- a/frontend/src/lib/components/apps/utils.ts +++ b/frontend/src/lib/components/apps/utils.ts @@ -2,32 +2,20 @@ import type { Schema } from '$lib/common' import { FlowService, ScriptService } from '$lib/gen' import { inferArgs } from '$lib/infer' import { emptySchema } from '$lib/utils' -import type { AppComponent, AppComponentConfig } from './editor/component' - -import { - components as componentsRecord, - getRecommendedDimensionsByComponent -} from './editor/component' -import { gridColumns } from './gridUtils' -import gridHelp from '@windmill-labs/svelte-grid/src/utils/helper' +import type { AppComponent } from './editor/component' import type { AppInput, InputType, ResultAppInput, StaticAppInput } from './inputType' import type { Output } from './rx' import type { App, GridItem } from './types' -import { getNextId } from '../flows/flowStateUtils' -export function deleteComponent(parentItems: GridItem[] | undefined, component: AppComponent, app: App, staticOutputs: Record, runnableComponents: Record) { - (component.subGrids ?? []).forEach((subgrid) => { - if (subgrid) { - subgrid.forEach((item) => { - console.log(item) - if (item.data) { - console.log(item.data) - deleteComponent(undefined, item.data, app, staticOutputs, runnableComponents) - } - }) - } - }) +/* +export function deleteComponent( + subgrid: string | undefined, + component: AppComponent, + app: App, + staticOutputs: Record, + runnableComponents: Record +) { if (parentItems) { let index = parentItems.findIndex((item) => item.data?.id === component.id) if (index != -1) { @@ -56,6 +44,33 @@ export function deleteComponent(parentItems: GridItem[] | undefined, component: } } } + +*/ + +export function allItems( + grid: GridItem[], + subgrids: Record | undefined +): GridItem[] { + if (subgrids == undefined) { + return grid + } + return [...grid, ...Object.values(subgrids).flat()] +} + +export function allItemsWithParent( + grid: GridItem[], + subgrids: Record | undefined +): [GridItem, string | undefined][] { + const items: [GridItem, string | undefined][] = grid.map((item) => [item, undefined]) + if (subgrids == undefined) { + return items + } + return [ + ...items, + ...Object.entries(subgrids).flatMap(([k, v]) => v.map((g) => [g, k] as [GridItem, string])) + ] +} + export async function loadSchema( workspace: string, path: string, @@ -258,101 +273,3 @@ export function toPascalCase(text: string) { export function toKebabCase(text: string) { return text.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase() } - -export function findParent(root: GridItem[], id: string): GridItem | undefined { - for (const a of root) { - if (a.id === id) { - return a - } - - if (a.data.subGrids) { - // Recursively search the sub-grids - for (const subGrid of a.data.subGrids) { - const result = findParent(subGrid, id) - if (result) { - return result - } - } - } - } - - return undefined -} - -export function insertNewGridItem( - root: GridItem[], - id: string, - subGridIndex: number, - newId: string, - data: AppComponent -): GridItem[] { - const parentA = findParent(root, id) - - if (!parentA) { - throw new Error(`Parent A object with ID ${id} not found.`) - } - - const subGrid = parentA.data.subGrids[subGridIndex] - - if (!subGrid) { - throw new Error(`Sub-grid with index ${subGridIndex} not found.`) - } - - const newItem = createNewGridItem(subGrid ?? [], newId, data) - subGrid.push(newItem) - return root -} - -// The grid is needed to find a space for the new component -export function createNewGridItem(grid: GridItem[], id: string, data: AppComponent): GridItem { - const appComponent = data - - appComponent.id = id - - const newComponent = { - fixed: false, - resizable: true, - draggable: true, - customDragger: false, - customResizer: false, - x: 0, - y: 0 - } - - let newData: AppComponent = JSON.parse(JSON.stringify(appComponent)) - - const newItem: GridItem = { - data: newData, - id: id - } - - gridColumns.forEach((column) => { - const rec = getRecommendedDimensionsByComponent(appComponent.type, column) - - newItem[column] = { - ...newComponent, - min: { w: 1, h: 1 }, - max: { w: column, h: 100 }, - w: rec.w, - h: rec.h - } - const position = gridHelp.findSpace(newItem, grid, column) as { x: number; y: number } - newItem[column] = { ...newItem[column], ...position } - }) - - return newItem -} - -export function recursiveGetIds(gridItem: GridItem): string[] { - const subGrids = gridItem.data.subGrids ?? [] - const subGridIds = subGrids - .map((subGrid: GridItem[]) => subGrid?.map(recursiveGetIds) ?? []) - .flat(Infinity) - return [gridItem.data.id, ...subGridIds] -} - -export function getNextGridItemId(grid: GridItem[] = []): string { - const gridItemIds = grid.map(recursiveGetIds).flat() - const id = getNextId(gridItemIds) - return id -} diff --git a/frontend/src/lib/components/common/button/Button.svelte b/frontend/src/lib/components/common/button/Button.svelte index 280b9bb69c..846504286d 100644 --- a/frontend/src/lib/components/common/button/Button.svelte +++ b/frontend/src/lib/components/common/button/Button.svelte @@ -29,6 +29,11 @@ const dispatch = createEventDispatcher() // Order of classes: border, border modifier, bg, bg modifier, text, text modifier, everything else const colorVariants: Record> = { + none: { + border: '', + contained: '' + }, + blue: { border: 'border-frost-500 hover:border-frost-700 focus:border-frost-700 bg-white hover:bg-frost-100 focus:bg-frost-100 text-frost-500 hover:text-frost-700 focus:text-frost-700 focus:ring-frost-300', diff --git a/frontend/src/lib/components/common/button/model.ts b/frontend/src/lib/components/common/button/model.ts index c3d4fcae14..578a34bb28 100644 --- a/frontend/src/lib/components/common/button/model.ts +++ b/frontend/src/lib/components/common/button/model.ts @@ -1,4 +1,4 @@ -export const BUTTON_COLORS = ['blue', 'red', 'dark', 'light', 'green', 'gray'] as const +export const BUTTON_COLORS = ['blue', 'red', 'dark', 'light', 'green', 'gray', 'none'] as const export namespace ButtonType { diff --git a/frontend/src/lib/components/flows/content/FlowInputs.svelte b/frontend/src/lib/components/flows/content/FlowInputs.svelte index b7b7755dd1..81a5370228 100644 --- a/frontend/src/lib/components/flows/content/FlowInputs.svelte +++ b/frontend/src/lib/components/flows/content/FlowInputs.svelte @@ -142,12 +142,12 @@ dispatch('new', { language: RawScript.language.DENO, kind, subkind: 'pgsql' })} /> - dispatch('new', { language: RawScript.language.DENO, kind, subkind: 'mysql' })} - /> + /> --> {/if} {/if}
diff --git a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte index 9aa781f873..0ea43de7b8 100644 --- a/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte +++ b/frontend/src/lib/components/flows/content/FlowModuleComponent.svelte @@ -22,6 +22,7 @@ import FlowModuleSuspend from './FlowModuleSuspend.svelte' import FlowRetries from './FlowRetries.svelte' import { getStepPropPicker } from '../previousResults' + import { deepEqual } from 'fast-equals' import Button from '$lib/components/common/button/Button.svelte' import Alert from '$lib/components/common/alert/Alert.svelte' @@ -87,12 +88,12 @@ const { input_transforms, schema } = await loadSchemaFromModule(flowModule) validCode = true setTimeout(() => { - if (JSON.stringify(value.input_transforms) !== JSON.stringify(input_transforms)) { + if (!deepEqual(value.input_transforms, input_transforms)) { inputTransforms = input_transforms } }) - if (JSON.stringify(schema) !== JSON.stringify($flowStateStore[flowModule.id]?.schema)) { + if (!deepEqual(schema, $flowStateStore[flowModule.id]?.schema)) { if (!$flowStateStore[flowModule.id]) { $flowStateStore[flowModule.id] = { schema } } else { diff --git a/frontend/src/lib/components/graph/FlowGraph.svelte b/frontend/src/lib/components/graph/FlowGraph.svelte index a00ebcc8fb..82a3959883 100644 --- a/frontend/src/lib/components/graph/FlowGraph.svelte +++ b/frontend/src/lib/components/graph/FlowGraph.svelte @@ -234,8 +234,9 @@ inline: '' } const wrapperWidth = lang ? 'w-[calc(100%-70px)]' : 'w-[calc(100%-50px)]' - let nodeId = id ?? numberToChars(idGenerator.next().value - 1) - + let generatedId = idGenerator.next().value + let nodeId = id ?? numberToChars(generatedId - 1) + // console.log(id, generatedId, nodeId, charsToNumber(nodeId)) return { id: charsToNumber(nodeId), position: { x: -1, y: -1 }, @@ -376,6 +377,7 @@ } function layoutNodes(nodes: Node[]): { nodes: Node[]; height: number } { + // console.log('layoutNodes', nodes) const stratify = dagStratify().id(({ id }: Node) => numberToChars(id)) const dag = stratify(nodes) @@ -401,7 +403,6 @@ const edges: Edge[] = [] nodes.forEach((node) => { node.parentIds.forEach((pid, i) => { - console.log(charsToNumber(pid), pid) // skip virtual nodes such as collect result if (errorHandlers[pid] && node.id < 900 && nodes.find((x) => x.id == errorHandlers[pid])) { edges.push({ diff --git a/frontend/src/lib/script_helpers.ts b/frontend/src/lib/script_helpers.ts index 788ee81ab0..c254c43615 100644 --- a/frontend/src/lib/script_helpers.ts +++ b/frontend/src/lib/script_helpers.ts @@ -98,7 +98,7 @@ export async function main( export const MYSQL_INIT_CODE = `import { mySql, type Resource -} from "https://deno.land/x/windmill@v${__pkg__.version}/mod.ts"; +} from "https://deno.land/x/windmill@v${__pkg__.version}/mysql.ts"; // MySQL parameterized statement. No SQL injection is possible. export async function main( diff --git a/frontend/src/routes/(root)/(logged)/scripts/add/+page.svelte b/frontend/src/routes/(root)/(logged)/scripts/add/+page.svelte index ca88318ecb..32ce9dd23d 100644 --- a/frontend/src/routes/(root)/(logged)/scripts/add/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/scripts/add/+page.svelte @@ -11,8 +11,6 @@ // Default let schema: Schema = emptySchema() - let nodraft = $page.url.searchParams.get('nodraft') - const templatePath = $page.url.searchParams.get('template') const hubPath = $page.url.searchParams.get('hub') @@ -73,4 +71,4 @@ $dirtyStore = true - + diff --git a/frontend/vite.config.js.timestamp-1677450565189.mjs b/frontend/vite.config.js.timestamp-1677450565189.mjs new file mode 100644 index 0000000000..e69de29bb2 diff --git a/lsp/Pipfile b/lsp/Pipfile index 43f83192fe..d4d3578ae9 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.69.0" -wmill_pg = ">=1.69.0" +wmill = ">=1.69.2" +wmill_pg = ">=1.69.2" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index dca7361d63..e9fded3be6 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.69.0 + version: 1.69.2 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index 4ef370df1e..7ae1b7cb43 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.69.0" +version = "1.69.2" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" @@ -16,7 +16,7 @@ include = ["wmill/py.typed"] [tool.poetry.dependencies] python = "^3.7" -windmill-api = "^1.69.0" +windmill-api = "^1.69.2" [build-system] requires = ["poetry>=1.0.2", "poetry-dynamic-versioning"] diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index 3ea2ea43cf..a997a7735d 100644 --- a/python-client/wmill_pg/pyproject.toml +++ b/python-client/wmill_pg/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill-pg" -version = "1.69.0" +version = "1.69.2" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/version.txt b/version.txt index 4934985655..85f4470a9b 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.69.0 +1.69.3