From 6e91005daa4bbe2f0bd1f8b1c2cce1f68485f9ef Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Mon, 29 Jul 2024 21:13:02 +0200 Subject: [PATCH] fix: improve native runtime with axios support --- backend/windmill-worker/src/bun_executor.rs | 14 ++++++++++++-- backend/windmill-worker/src/runtime.js | 1 + frontend/src/lib/components/EditorBar.svelte | 11 +++++++---- frontend/src/lib/components/HighlightCode.svelte | 6 ++++-- .../src/lib/components/copilot/ScriptGen.svelte | 8 +++++++- frontend/src/lib/script_helpers.ts | 4 +++- 6 files changed, 34 insertions(+), 10 deletions(-) diff --git a/backend/windmill-worker/src/bun_executor.rs b/backend/windmill-worker/src/bun_executor.rs index b5851af2c1..c05b598171 100644 --- a/backend/windmill-worker/src/bun_executor.rs +++ b/backend/windmill-worker/src/bun_executor.rs @@ -304,6 +304,7 @@ enum LoaderMode { Bun, BunBundle, NodeBundle, + BrowserBundle, } async fn build_loader( job_dir: &str, @@ -373,7 +374,10 @@ plugin(p) ), ) .await?; - } else if mode == LoaderMode::BunBundle || mode == LoaderMode::NodeBundle { + } else if mode == LoaderMode::BunBundle + || mode == LoaderMode::NodeBundle + || mode == LoaderMode::BrowserBundle + { write_file( &job_dir, "node_builder.ts", @@ -402,8 +406,10 @@ if (!bo.success) {{ loader, if mode == LoaderMode::BunBundle { "bun" - } else { + } else if mode == LoaderMode::NodeBundle { "node" + } else { + "browser" } ), ) @@ -598,6 +604,8 @@ pub async fn prebundle_script( script_path, if annotation.nodejs_mode { LoaderMode::NodeBundle + } else if annotation.native_mode { + LoaderMode::BrowserBundle } else { LoaderMode::BunBundle }, @@ -978,6 +986,8 @@ try {{ &job.script_path(), if annotation.nodejs_mode { LoaderMode::NodeBundle + } else if annotation.native_mode { + LoaderMode::BrowserBundle } else { LoaderMode::BunBundle }, diff --git a/backend/windmill-worker/src/runtime.js b/backend/windmill-worker/src/runtime.js index 7bd0a76b43..8e8ba6bf26 100644 --- a/backend/windmill-worker/src/runtime.js +++ b/backend/windmill-worker/src/runtime.js @@ -29,6 +29,7 @@ globalThis.atob = base64.atob; globalThis.btoa = base64.btoa; globalThis.fetch = fetch.fetch; globalThis.Request = request.Request; +globalThis.Response = response.Response; globalThis.Blob = file.Blob; globalThis.URL = url.URL; globalThis.FormData = formData.FormData; diff --git a/frontend/src/lib/components/EditorBar.svelte b/frontend/src/lib/components/EditorBar.svelte index 50a59765db..d7957912a3 100644 --- a/frontend/src/lib/components/EditorBar.svelte +++ b/frontend/src/lib/components/EditorBar.svelte @@ -46,7 +46,7 @@ import Popover from './Popover.svelte' import ResourceEditorDrawer from './ResourceEditorDrawer.svelte' - export let lang: SupportedLanguage | undefined + export let lang: SupportedLanguage | 'bunnative' | undefined export let editor: Editor | undefined export let websocketAlive: { pyright: boolean @@ -87,6 +87,7 @@ 'go', 'deno', 'bun', + 'bunnative', 'nativets', 'php' ].includes(lang ?? '') @@ -97,6 +98,7 @@ 'go', 'deno', 'bun', + 'bunnative', 'nativets', 'php' ].includes(lang ?? '') @@ -107,6 +109,7 @@ 'go', 'deno', 'bun', + 'bunnative', 'nativets', 'php' ].includes(lang ?? '') @@ -316,7 +319,7 @@ if (!editor) return if (lang == 'deno') { editor.insertAtCursor(`Deno.env.get('${name}')`) - } else if (lang === 'bun' || lang == 'nativets') { + } else if (lang === 'bun' || lang === 'bunnative' || lang == 'nativets') { editor.insertAtCursor(`process.env["${name}"]`) } else if (lang == 'python3') { if (!editor.getCode().includes('import os')) { @@ -354,7 +357,7 @@ editor.insertAtBeginning(`import * as wmill from "npm:windmill-client@1"\n`) } editor.insertAtCursor(`(await wmill.getVariable('${path}'))`) - } else if (lang === 'bun') { + } else if (lang === 'bun' || lang === 'bunnative') { const code = editor.getCode() if (!code.includes(`import * as wmill from`)) { editor.insertAtBeginning(`import * as wmill from "windmill-client"\n`) @@ -424,7 +427,7 @@ $var = json_decode(curl_exec($ch));`) editor.insertAtBeginning(`import * as wmill from "npm:windmill-client@1"\n`) } editor.insertAtCursor(`(await wmill.getResource('${path}'))`) - } else if (lang === 'bun') { + } else if (lang === 'bun' || lang === 'bunnative') { const code = editor.getCode() if (!code.includes(`import * as wmill from`)) { editor.insertAtBeginning(`import * as wmill from "windmill-client"\n`) diff --git a/frontend/src/lib/components/HighlightCode.svelte b/frontend/src/lib/components/HighlightCode.svelte index 9669ef34e0..3ccb4c8b6e 100644 --- a/frontend/src/lib/components/HighlightCode.svelte +++ b/frontend/src/lib/components/HighlightCode.svelte @@ -16,10 +16,10 @@ import HighlightTheme from './HighlightTheme.svelte' export let code: string = '' - export let language: Script['language'] | 'frontend' | undefined + export let language: Script['language'] | 'bunnative' | 'frontend' | undefined export let lines = false - function getLang(lang: Script['language'] | 'frontend' | undefined) { + function getLang(lang: Script['language'] | 'bunnative' | 'frontend' | undefined) { switch (lang) { case 'python3': return python @@ -29,6 +29,8 @@ return typescript case 'bun': return typescript + case 'bunnative': + return typescript case 'go': return go case 'bash': diff --git a/frontend/src/lib/components/copilot/ScriptGen.svelte b/frontend/src/lib/components/copilot/ScriptGen.svelte index 1d3126c06e..a1e8ac0fa4 100644 --- a/frontend/src/lib/components/copilot/ScriptGen.svelte +++ b/frontend/src/lib/components/copilot/ScriptGen.svelte @@ -37,13 +37,17 @@ // props export let iconOnly: boolean = false - export let lang: SupportedLanguage | 'frontend' | undefined + export let lang: SupportedLanguage | 'bunnative' | 'frontend' | undefined export let editor: Editor | SimpleEditor | undefined export let diffEditor: DiffEditor | undefined export let inlineScript = false export let args: Record export let transformer = false + $: if (lang == 'bunnative') { + lang = 'bun' + } + // state let funcDesc = '' let trimmedDesc = '' @@ -71,6 +75,7 @@ if (mode === 'edit') { await copilot( { + // @ts-ignore language: transformer && lang === 'frontend' ? 'transformer' : lang!, description: trimmedDesc, code: editor?.getCode() || '', @@ -84,6 +89,7 @@ } else { await copilot( { + // @ts-ignore language: transformer && lang === 'frontend' ? 'transformer' : lang!, description: trimmedDesc, dbSchema: dbSchema, diff --git a/frontend/src/lib/script_helpers.ts b/frontend/src/lib/script_helpers.ts index 118fdc3566..4a078bf680 100644 --- a/frontend/src/lib/script_helpers.ts +++ b/frontend/src/lib/script_helpers.ts @@ -574,7 +574,7 @@ export function initialCode( } export function getResetCode( - language: SupportedLanguage | undefined, + language: SupportedLanguage | 'bunnative' | undefined, kind: Script['kind'] | undefined, subkind: | 'pgsql' @@ -595,6 +595,8 @@ export function getResetCode( return NATIVETS_INIT_CODE_CLEAR } else if (language === 'bun') { return BUN_INIT_CODE_CLEAR + } else if (language === 'bunnative') { + return BUNNATIVE_INIT_CODE } else { return initialCode(language, kind, subkind) }