From a359d86c6cfdf65d41e3341df0513e1be851a463 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 10 Oct 2024 14:59:40 +0200 Subject: [PATCH 01/56] fix: improve default properties of new nodes of flows (suspend, branchone, branchall) --- cli/apps.ts | 2 +- .../flows/content/FlowInputsQuick.svelte | 2 +- .../flows/map/FlowModuleSchemaMap.svelte | 53 ++++++++++++++----- .../pickers/WorkspaceScriptPickerQuick.svelte | 4 +- .../graph/renderers/edges/BaseEdge.svelte | 7 +-- 5 files changed, 49 insertions(+), 19 deletions(-) diff --git a/cli/apps.ts b/cli/apps.ts index 1330c3ba80..de513b28c6 100644 --- a/cli/apps.ts +++ b/cli/apps.ts @@ -25,7 +25,7 @@ export async function pushApp( return; } alreadySynced.push(localPath); - remotePath.replaceAll(SEP, "/"); + remotePath = remotePath.replaceAll(SEP, "/"); let app: any = undefined; // deleting old app if it exists in raw mode try { diff --git a/frontend/src/lib/components/flows/content/FlowInputsQuick.svelte b/frontend/src/lib/components/flows/content/FlowInputsQuick.svelte index 15817edd25..b87326ff65 100644 --- a/frontend/src/lib/components/flows/content/FlowInputsQuick.svelte +++ b/frontend/src/lib/components/flows/content/FlowInputsQuick.svelte @@ -366,7 +366,7 @@ } dispatch('new', { - kind: 'script', + kind: selectedKind, inlineScript: { language: lang == 'docker' ? 'bash' : lang, kind: selectedKind, diff --git a/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte b/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte index 00e098e9c2..5994d0fdb0 100644 --- a/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte +++ b/frontend/src/lib/components/flows/map/FlowModuleSchemaMap.svelte @@ -91,14 +91,7 @@ ;[module, state] = await createBranchAll(module.id) } $flowStateStore[module.id] = state - if (kind == 'trigger') { - module.summary = 'Trigger' - } else if (kind == 'approval') { - module.summary = 'Approval' - } else if (kind == 'end') { - module.summary = 'Terminate flow' - module.stop_after_if = { skip_if_stopped: false, expr: 'true' } - } + if (inlineScript) { const { language, kind, subkind } = inlineScript ;[module, state] = await createInlineScriptModule( @@ -109,7 +102,22 @@ module.summary ) $flowStateStore[module.id] = state + if (kind == 'trigger') { + module.summary = 'Trigger' + } else if (kind == 'approval') { + module.summary = 'Approval' + } } + + if (kind == 'approval') { + module.suspend = { required_events: 1 } + } else if (kind == 'trigger') { + module.stop_after_if = { + expr: '!result || (Array.isArray(result) && result.length == 0)', + skip_if_stopped: true + } + } + if (!modules) return [module] modules.splice(index, 0, module) return modules @@ -254,6 +262,13 @@ } } } + + function setExpr(module: FlowModule, expr: string) { + if (module.value.type == 'forloopflow') { + module.value.iterator = { type: 'javascript', expr } + module.value.parallel = true + } + } @@ -349,7 +364,7 @@ } else if (shouldRunTutorial('branchall', detail.detail, 3)) { flowTutorials?.runTutorialById('branchall') } else { - if (detail.modules) { + if (detail.modules && Array.isArray(detail.modules)) { await tick() if ($moving) { push(history, $flowStore) @@ -363,19 +378,33 @@ insertNewPreprocessorModule(detail.inlineScript, detail.script) $selectedId = 'preprocessor' } else { + const index = detail.index ?? 0 await insertNewModuleAtIndex( detail.modules, - detail.index ?? 0, + index, detail.kind, detail.script, detail.flow, detail.inlineScript ) - $selectedId = detail.modules[detail.index ?? 0].id + const id = detail.modules[detail.index ?? 0].id + $selectedId = id + + if (detail.kind == 'trigger') { + await insertNewModuleAtIndex( + detail.modules, + index + 1, + 'forloop', + undefined, + undefined, + undefined + ) + setExpr(detail.modules[index + 1], `results.${id}`) + } } } - if (['branchone', 'branchall'].includes(detail.detail)) { + if (['branchone', 'branchall'].includes(detail.kind)) { await addBranch(detail.modules[detail.index ?? 0]) } $flowStateStore = $flowStateStore diff --git a/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte b/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte index 67988e8005..21da7ecb04 100644 --- a/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +++ b/frontend/src/lib/components/flows/pickers/WorkspaceScriptPickerQuick.svelte @@ -82,7 +82,7 @@ if (kind == 'flow') { dispatch('pickFlow', { path: item.path }) } else { - dispatch('pickScript', { path: item.path, hash: lockHash ? item.hash : undefined }) + dispatch('pickScript', { path: item.path, hash: lockHash ? item.hash : undefined, kind }) } } } @@ -114,7 +114,7 @@ if (kind == 'flow') { dispatch('pickFlow', { path: path }) } else { - dispatch('pickScript', { path: path, hash: lockHash ? hash : undefined }) + dispatch('pickScript', { path: path, hash: lockHash ? hash : undefined, kind }) } }} > diff --git a/frontend/src/lib/components/graph/renderers/edges/BaseEdge.svelte b/frontend/src/lib/components/graph/renderers/edges/BaseEdge.svelte index 584fb44b25..8dbe9d3ad5 100644 --- a/frontend/src/lib/components/graph/renderers/edges/BaseEdge.svelte +++ b/frontend/src/lib/components/graph/renderers/edges/BaseEdge.svelte @@ -60,7 +60,6 @@ allowTrigger={data.enableTrigger} modules={data?.modules ?? []} on:new={(e) => { - // console.log('new', e) data?.eventHandlers.insert({ modules: data.modules, index: data.index, @@ -73,7 +72,8 @@ data?.eventHandlers.insert({ modules: data.modules, index: data.index, - script: e.detail + script: e.detail, + kind: e.detail.kind }) }} on:pickFlow={(e) => { @@ -107,7 +107,8 @@ data?.eventHandlers.insert({ modules: data.modules, index: data.index, - script: e.detail + script: e.detail, + kind: e.detail.kind }) }} on:pickFlow={(e) => { From 196dfc397810d5c25b31f3473d315d5a6e8942c3 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 10 Oct 2024 15:13:55 +0200 Subject: [PATCH 02/56] nit deno_core --- backend/windmill-worker/src/js_eval.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/windmill-worker/src/js_eval.rs b/backend/windmill-worker/src/js_eval.rs index 15353ac4bc..da4eda39ef 100644 --- a/backend/windmill-worker/src/js_eval.rs +++ b/backend/windmill-worker/src/js_eval.rs @@ -247,7 +247,7 @@ pub async fn eval_timeout( #[cfg(not(feature = "deno_core"))] { #[allow(unreachable_code)] - return todo!(); + return Err(anyhow::anyhow!("Deno core is not enabled".to_string()).into()); } #[cfg(feature = "deno_core")] From 2e6d4944ee1f4e98188a7abd9bb438c70f424572 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 10 Oct 2024 06:14:15 -0700 Subject: [PATCH 03/56] chore(main): release 1.407.2 (#4518) * chore(main): release 1.407.2 * Apply automatic changes --------- Co-authored-by: rubenfiszel --- CHANGELOG.md | 7 +++ backend/Cargo.lock | 44 +++++++++---------- backend/Cargo.toml | 4 +- backend/windmill-api/openapi.yaml | 2 +- benchmarks/lib.ts | 2 +- cli/main.ts | 2 +- frontend/package-lock.json | 4 +- frontend/package.json | 2 +- lsp/Pipfile | 4 +- openflow.openapi.yaml | 2 +- .../WindmillClient/WindmillClient.psd1 | 2 +- python-client/wmill/pyproject.toml | 2 +- python-client/wmill_pg/pyproject.toml | 2 +- typescript-client/jsr.json | 2 +- typescript-client/package.json | 2 +- version.txt | 2 +- 16 files changed, 46 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfb6a7a657..30477c51d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.407.2](https://github.com/windmill-labs/windmill/compare/v1.407.1...v1.407.2) (2024-10-10) + + +### Bug Fixes + +* improve default properties of new nodes of flows (suspend, branchone, branchall) ([d9bdc5a](https://github.com/windmill-labs/windmill/commit/d9bdc5a5b08dd4d0381304656af097315398c9d4)) + ## [1.407.1](https://github.com/windmill-labs/windmill/compare/v1.407.0...v1.407.1) (2024-10-10) diff --git a/backend/Cargo.lock b/backend/Cargo.lock index f680c30849..0281f8bbc6 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -10358,7 +10358,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windmill" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "axum", @@ -10399,7 +10399,7 @@ dependencies = [ [[package]] name = "windmill-api" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "argon2", @@ -10483,7 +10483,7 @@ dependencies = [ [[package]] name = "windmill-api-client" -version = "1.407.1" +version = "1.407.2" dependencies = [ "base64 0.21.7", "chrono", @@ -10501,7 +10501,7 @@ dependencies = [ [[package]] name = "windmill-audit" -version = "1.407.1" +version = "1.407.2" dependencies = [ "chrono", "serde", @@ -10514,7 +10514,7 @@ dependencies = [ [[package]] name = "windmill-common" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "async-stream", @@ -10559,7 +10559,7 @@ dependencies = [ [[package]] name = "windmill-git-sync" -version = "1.407.1" +version = "1.407.2" dependencies = [ "regex", "rsmq_async", @@ -10574,7 +10574,7 @@ dependencies = [ [[package]] name = "windmill-indexer" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "bytes", @@ -10595,7 +10595,7 @@ dependencies = [ [[package]] name = "windmill-parser" -version = "1.407.1" +version = "1.407.2" dependencies = [ "convert_case 0.6.0", "serde", @@ -10604,7 +10604,7 @@ dependencies = [ [[package]] name = "windmill-parser-bash" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "lazy_static", @@ -10616,7 +10616,7 @@ dependencies = [ [[package]] name = "windmill-parser-go" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "gosyn", @@ -10628,7 +10628,7 @@ dependencies = [ [[package]] name = "windmill-parser-graphql" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "lazy_static", @@ -10640,7 +10640,7 @@ dependencies = [ [[package]] name = "windmill-parser-php" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10651,7 +10651,7 @@ dependencies = [ [[package]] name = "windmill-parser-py" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "itertools 0.13.0", @@ -10662,7 +10662,7 @@ dependencies = [ [[package]] name = "windmill-parser-py-imports" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "async-recursion", @@ -10680,7 +10680,7 @@ dependencies = [ [[package]] name = "windmill-parser-rust" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "convert_case 0.6.0", @@ -10697,7 +10697,7 @@ dependencies = [ [[package]] name = "windmill-parser-sql" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "lazy_static", @@ -10709,7 +10709,7 @@ dependencies = [ [[package]] name = "windmill-parser-ts" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "lazy_static", @@ -10727,7 +10727,7 @@ dependencies = [ [[package]] name = "windmill-parser-wasm" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "getrandom 0.2.15", @@ -10748,7 +10748,7 @@ dependencies = [ [[package]] name = "windmill-parser-yaml" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "serde_json", @@ -10758,7 +10758,7 @@ dependencies = [ [[package]] name = "windmill-queue" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "async-recursion", @@ -10791,7 +10791,7 @@ dependencies = [ [[package]] name = "windmill-sql-datatype-parser-wasm" -version = "1.407.1" +version = "1.407.2" dependencies = [ "wasm-bindgen", "wasm-bindgen-test", @@ -10801,7 +10801,7 @@ dependencies = [ [[package]] name = "windmill-worker" -version = "1.407.1" +version = "1.407.2" dependencies = [ "anyhow", "async-recursion", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index d16a2236c1..42232e3ec4 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "windmill" -version = "1.407.1" +version = "1.407.2" authors.workspace = true edition.workspace = true @@ -27,7 +27,7 @@ members = [ ] [workspace.package] -version = "1.407.1" +version = "1.407.2" authors = ["Ruben Fiszel "] edition = "2021" diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 081a69dafc..2e80749073 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.407.1 + version: 1.407.2 title: Windmill API contact: diff --git a/benchmarks/lib.ts b/benchmarks/lib.ts index 034f1109a4..d793c91187 100644 --- a/benchmarks/lib.ts +++ b/benchmarks/lib.ts @@ -2,7 +2,7 @@ import { sleep } from "https://deno.land/x/sleep@v1.2.1/mod.ts"; import * as windmill from "https://deno.land/x/windmill@v1.174.0/mod.ts"; import * as api from "https://deno.land/x/windmill@v1.174.0/windmill-api/index.ts"; -export const VERSION = "v1.407.1"; +export const VERSION = "v1.407.2"; export async function login(email: string, password: string): Promise { return await windmill.UserService.login({ diff --git a/cli/main.ts b/cli/main.ts index 161f00763e..c4f97d6322 100644 --- a/cli/main.ts +++ b/cli/main.ts @@ -60,7 +60,7 @@ export { // } // }); -export const VERSION = "1.407.1"; +export const VERSION = "1.407.2"; const command = new Command() .name("wmill") diff --git a/frontend/package-lock.json b/frontend/package-lock.json index f417c3c288..fdee9c3191 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "windmill-components", - "version": "1.407.1", + "version": "1.407.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "windmill-components", - "version": "1.407.1", + "version": "1.407.2", "license": "AGPL-3.0", "dependencies": { "@aws-crypto/sha256-js": "^4.0.0", diff --git a/frontend/package.json b/frontend/package.json index 0ee11de7ca..75aeca9f80 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "windmill-components", - "version": "1.407.1", + "version": "1.407.2", "scripts": { "dev": "vite dev", "build": "vite build", diff --git a/lsp/Pipfile b/lsp/Pipfile index 8d4f0e011e..6f0730703f 100644 --- a/lsp/Pipfile +++ b/lsp/Pipfile @@ -4,8 +4,8 @@ verify_ssl = true name = "pypi" [packages] -wmill = ">=1.407.1" -wmill_pg = ">=1.407.1" +wmill = ">=1.407.2" +wmill_pg = ">=1.407.2" sendgrid = "*" mysql-connector-python = "*" pymongo = "*" diff --git a/openflow.openapi.yaml b/openflow.openapi.yaml index 4160fdce32..7955aa05ed 100644 --- a/openflow.openapi.yaml +++ b/openflow.openapi.yaml @@ -1,7 +1,7 @@ openapi: "3.0.3" info: - version: 1.407.1 + version: 1.407.2 title: OpenFlow Spec contact: name: Ruben Fiszel diff --git a/powershell-client/WindmillClient/WindmillClient.psd1 b/powershell-client/WindmillClient/WindmillClient.psd1 index a8f874de07..a30e0c6b69 100644 --- a/powershell-client/WindmillClient/WindmillClient.psd1 +++ b/powershell-client/WindmillClient/WindmillClient.psd1 @@ -12,7 +12,7 @@ RootModule = 'WindmillClient.psm1' # Version number of this module. -ModuleVersion = '1.407.1' +ModuleVersion = '1.407.2' # Supported PSEditions # CompatiblePSEditions = @() diff --git a/python-client/wmill/pyproject.toml b/python-client/wmill/pyproject.toml index cd335d4b58..9c9641024e 100644 --- a/python-client/wmill/pyproject.toml +++ b/python-client/wmill/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "wmill" -version = "1.407.1" +version = "1.407.2" description = "A client library for accessing Windmill server wrapping the Windmill client API" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/python-client/wmill_pg/pyproject.toml b/python-client/wmill_pg/pyproject.toml index 66851fd263..17f0a44b7e 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.407.1" +version = "1.407.2" description = "An extension client for the wmill client library focused on pg" license = "Apache-2.0" homepage = "https://windmill.dev" diff --git a/typescript-client/jsr.json b/typescript-client/jsr.json index 13e6dd8220..09d2d7196f 100644 --- a/typescript-client/jsr.json +++ b/typescript-client/jsr.json @@ -1,6 +1,6 @@ { "name": "@windmill/windmill", - "version": "1.407.1", + "version": "1.407.2", "exports": "./src/index.ts", "publish": { "exclude": ["!src", "./s3Types.ts", "./client.ts"] diff --git a/typescript-client/package.json b/typescript-client/package.json index b9f5f936dd..629159c432 100644 --- a/typescript-client/package.json +++ b/typescript-client/package.json @@ -1,7 +1,7 @@ { "name": "windmill-client", "description": "Windmill SDK client for browsers and Node.js", - "version": "1.407.1", + "version": "1.407.2", "author": "Ruben Fiszel", "license": "Apache 2.0", "devDependencies": { diff --git a/version.txt b/version.txt index 668ee911fe..8e9ed4bbb5 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.407.1 +1.407.2 From 3330727ac0b0ba562c79e8980c2913c3ee7b036c Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Thu, 10 Oct 2024 15:29:49 +0200 Subject: [PATCH 04/56] add --allow-import to nsjail deno --- backend/windmill-worker/src/deno_executor.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/windmill-worker/src/deno_executor.rs b/backend/windmill-worker/src/deno_executor.rs index 491741b5f1..c31aad955a 100644 --- a/backend/windmill-worker/src/deno_executor.rs +++ b/backend/windmill-worker/src/deno_executor.rs @@ -372,6 +372,7 @@ try {{ args.push(allow_read.as_str()); args.push("--allow-write=./"); args.push("--allow-env"); + args.push("--allow-import"); args.push("--allow-run=git,/usr/bin/chromium"); } else { args.push("-A"); From 64b5789a201155badf9dcf10cd93560945b610d5 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 11 Oct 2024 01:08:40 +0200 Subject: [PATCH 05/56] fix(frontend): s3 file uploader works on public apps too --- .../components/apps/components/inputs/AppS3FileInput.svelte | 3 ++- .../src/lib/components/common/fileUpload/FileUpload.svelte | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/src/lib/components/apps/components/inputs/AppS3FileInput.svelte b/frontend/src/lib/components/apps/components/inputs/AppS3FileInput.svelte index 7064449e6a..002ec519fb 100644 --- a/frontend/src/lib/components/apps/components/inputs/AppS3FileInput.svelte +++ b/frontend/src/lib/components/apps/components/inputs/AppS3FileInput.svelte @@ -34,7 +34,7 @@ } let fileUploads: Writable = writable([]) - const { app, worldStore, componentControl, runnableComponents } = + const { app, worldStore, componentControl, runnableComponents, workspace } = getContext('AppViewerContext') $componentControl[id] = { @@ -124,6 +124,7 @@ customResourceType="s3" customClass={css?.container?.class} customStyle={css?.container?.style} + {workspace} on:addition={(evt) => { const curr = outputs.result.peak() outputs.result.set(curr.concat(evt.detail)) diff --git a/frontend/src/lib/components/common/fileUpload/FileUpload.svelte b/frontend/src/lib/components/common/fileUpload/FileUpload.svelte index 14228b6b78..507bf8b6a7 100644 --- a/frontend/src/lib/components/common/fileUpload/FileUpload.svelte +++ b/frontend/src/lib/components/common/fileUpload/FileUpload.svelte @@ -23,6 +23,7 @@ export let pathTransformer: any = undefined // function taking as input {file: File} and returning a string export let forceDisplayUploads: boolean = false export let defaultValue: string | undefined = undefined + export let workspace: string | undefined = undefined const dispatch = createEventDispatcher() @@ -154,7 +155,7 @@ }) xhr?.open( 'POST', - `/api/w/${$workspaceStore}/job_helpers/upload_s3_file?${params.toString()}`, + `/api/w/${workspace ?? $workspaceStore}/job_helpers/upload_s3_file?${params.toString()}`, true ) xhr?.setRequestHeader('Content-Type', 'application/octet-stream') @@ -189,7 +190,7 @@ async function deleteFile(fileKey: string) { await HelpersService.deleteS3File({ - workspace: $workspaceStore!, + workspace: workspace ?? $workspaceStore!, fileKey: fileKey }) dispatch('deletion', { path: fileKey }) From b603f4a6ba67f5ad860cf6302f5bc8dbbb537bca Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 11 Oct 2024 01:40:09 +0200 Subject: [PATCH 06/56] allow python multiprocessing on nsjail --- backend/windmill-worker/nsjail/run.python3.config.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/backend/windmill-worker/nsjail/run.python3.config.proto b/backend/windmill-worker/nsjail/run.python3.config.proto index bbdf5ed306..06ced731c3 100644 --- a/backend/windmill-worker/nsjail/run.python3.config.proto +++ b/backend/windmill-worker/nsjail/run.python3.config.proto @@ -97,6 +97,13 @@ mount { is_bind: true } +mount { + dst: "/dev/shm" + fstype: "tmpfs" + rw: true + is_bind: false +} + mount { src: "/dev/random" dst: "/dev/random" From fdfcea3cc830a360a4862468e360b093a59a9645 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 11 Oct 2024 12:28:40 +0200 Subject: [PATCH 07/56] fix(cli): handle case where 'toString' is a schema field --- cli/utils.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cli/utils.ts b/cli/utils.ts index 5f2de77f6b..fcb07bea9e 100644 --- a/cli/utils.ts +++ b/cli/utils.ts @@ -55,7 +55,10 @@ export function deepEqual(a: T, b: T): boolean { if (a.valueOf !== Object.prototype.valueOf) { return a.valueOf() === b.valueOf(); } - if (a.toString !== Object.prototype.toString) { + if ( + a.toString !== Object.prototype.toString && + typeof a.toString == "function" + ) { return a.toString() === b.toString(); } From 8a53bb0e7a4430037ad9bc903c029b73b9b3a2a1 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 11 Oct 2024 15:25:32 +0200 Subject: [PATCH 08/56] fix(frontend): set unused schema property fields to null --- frontend/src/lib/components/ArgInput.svelte | 1 + .../lib/components/StringTypeNarrowing.svelte | 16 ++++++---- .../schema/FlowPropertyEditor.svelte | 32 +++++++++++++------ 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/frontend/src/lib/components/ArgInput.svelte b/frontend/src/lib/components/ArgInput.svelte index 093d7010dc..7a75029eb4 100644 --- a/frontend/src/lib/components/ArgInput.svelte +++ b/frontend/src/lib/components/ArgInput.svelte @@ -141,6 +141,7 @@ defaultValue?: any, nnullable?: boolean ) { + console.log(value) if ((value == undefined || value == null) && !ignoreValueUndefined) { value = defaultValue if (defaultValue === undefined || defaultValue === null) { diff --git a/frontend/src/lib/components/StringTypeNarrowing.svelte b/frontend/src/lib/components/StringTypeNarrowing.svelte index c89bb9dcc8..4405bc2fb6 100644 --- a/frontend/src/lib/components/StringTypeNarrowing.svelte +++ b/frontend/src/lib/components/StringTypeNarrowing.svelte @@ -18,9 +18,9 @@ export let contentEncoding: 'base64' | 'binary' | undefined export let customErrorMessage: string | undefined export let minRows: number | undefined = undefined - export let disableCreate: boolean | undefined = false - export let disableVariablePicker: boolean | undefined = false - export let password: boolean = false + export let disableCreate: boolean | undefined = undefined + export let disableVariablePicker: boolean | undefined = undefined + export let password: boolean | undefined = undefined export let noExtra = false export let dateFormat: string | undefined export let enumLabels: Record | undefined = undefined @@ -236,7 +236,7 @@ { if (e.detail) { disableCreate = true @@ -309,7 +309,7 @@ { if (e.detail) { disableVariablePicker = true @@ -327,7 +327,11 @@ options={{ right: 'Is Password' }} checked={password} on:change={(e) => { - password = e.detail + if (e.detail) { + password = true + } else { + password = undefined + } }} /> {/if} diff --git a/frontend/src/lib/components/schema/FlowPropertyEditor.svelte b/frontend/src/lib/components/schema/FlowPropertyEditor.svelte index f55800fc50..c983a2de7c 100644 --- a/frontend/src/lib/components/schema/FlowPropertyEditor.svelte +++ b/frontend/src/lib/components/schema/FlowPropertyEditor.svelte @@ -26,11 +26,11 @@ export let oneOf: SchemaProperty[] | undefined = undefined export let required = false export let pattern: undefined | string = undefined - export let password = false + export let password: undefined | boolean = undefined export let variableEditor: VariableEditor | undefined = undefined export let itemPicker: ItemPicker | undefined = undefined - export let nullable: boolean = false - export let disabled: boolean = false + export let nullable: boolean | undefined = undefined + export let disabled: boolean | undefined = undefined export let defaultValue: any = undefined export let propsNames: any = [] export let showExpr: string | undefined = undefined @@ -44,9 +44,9 @@ multiselect?: string[] } | undefined = undefined - export let properties: Record = {} - export let order: string[] = [] - export let requiredProperty: string[] = [] + export let properties: Record | undefined = undefined + export let order: string[] | undefined = undefined + export let requiredProperty: string[] | undefined = undefined export let displayWebhookWarning: boolean = true export let lightweightMode: boolean = false @@ -126,7 +126,7 @@ return { ...v, properties: { - ...v.properties, + ...(v.properties ?? {}), label: { type: 'string', enum: [v.title ?? ''] @@ -386,7 +386,14 @@ }} lightMode size="xs" - bind:checked={nullable} + checked={nullable} + on:change={(event) => { + if (event?.detail) { + nullable = true + } else { + nullable = undefined + } + }} disabled={required} /> {/if} @@ -397,7 +404,14 @@ }} lightMode size="xs" - bind:checked={disabled} + checked={disabled} + on:change={(event) => { + if (event?.detail) { + disabled = true + } else { + disabled = undefined + } + }} /> From 445442af7a19d7c95add8d8bddb3d3c135de7705 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 11 Oct 2024 15:55:02 +0200 Subject: [PATCH 09/56] improve handling of toString arg in schema --- frontend/src/lib/components/ArgInput.svelte | 4 +++- frontend/src/lib/components/SchemaForm.svelte | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/ArgInput.svelte b/frontend/src/lib/components/ArgInput.svelte index 7a75029eb4..80537e4d44 100644 --- a/frontend/src/lib/components/ArgInput.svelte +++ b/frontend/src/lib/components/ArgInput.svelte @@ -141,7 +141,9 @@ defaultValue?: any, nnullable?: boolean ) { - console.log(value) + if (label == 'toString' && typeof value == 'function') { + value = undefined + } if ((value == undefined || value == null) && !ignoreValueUndefined) { value = defaultValue if (defaultValue === undefined || defaultValue === null) { diff --git a/frontend/src/lib/components/SchemaForm.svelte b/frontend/src/lib/components/SchemaForm.svelte index 6068cda7fc..bbd226d0ae 100644 --- a/frontend/src/lib/components/SchemaForm.svelte +++ b/frontend/src/lib/components/SchemaForm.svelte @@ -120,6 +120,7 @@ schema.properties = n } let nkeys = Object.keys(schema.properties ?? {}) + if (!deepEqual(keys, nkeys)) { keys = nkeys dispatch('change') From 86e1ab94ea33cd693e5ed112f5c8c8b38983f2e1 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 11 Oct 2024 16:04:25 +0200 Subject: [PATCH 10/56] nit FileDownload --- frontend/src/lib/components/DisplayResult.svelte | 2 +- .../lib/components/common/fileDownload/FileDownload.svelte | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/components/DisplayResult.svelte b/frontend/src/lib/components/DisplayResult.svelte index e09dfaa895..fc6dcfcb5f 100644 --- a/frontend/src/lib/components/DisplayResult.svelte +++ b/frontend/src/lib/components/DisplayResult.svelte @@ -627,7 +627,7 @@ > {:else if !result?.disable_download} - + {/if} {/each} - {#each logins.filter((x) => !providersType?.includes(x)) as login} + {#each logins.filter((login) => !providersType?.includes(login.type)) as login} {/each} {/if} diff --git a/frontend/src/lib/components/OAuthSetting.svelte b/frontend/src/lib/components/OAuthSetting.svelte index 4e84f796ce..505db1c36a 100644 --- a/frontend/src/lib/components/OAuthSetting.svelte +++ b/frontend/src/lib/components/OAuthSetting.svelte @@ -50,6 +50,10 @@ > {#if enabled}
+
+ +