From ce70ec783eb159436f15409fac0489cc87a6dd7f Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Tue, 10 May 2022 21:29:54 +0200 Subject: [PATCH] run prettier --- frontend/.eslintrc.cjs | 2 +- frontend/.prettierrc | 3 +- frontend/postcss.config.cjs | 14 +- frontend/src/.d.ts | 2 +- frontend/src/app.html | 22 +- frontend/src/common.ts | 6 +- frontend/src/hooks.ts | 8 +- frontend/src/infer.ts | 100 +++--- frontend/src/routes/__layout.svelte | 98 +++--- frontend/src/routes/audit_logs.svelte | 78 ++--- frontend/src/routes/components/ArgInfo.svelte | 32 +- .../src/routes/components/ArgInput.svelte | 120 +++---- .../components/AutosizedTextarea.svelte | 12 +- frontend/src/routes/components/Badge.svelte | 8 +- frontend/src/routes/components/Button.svelte | 14 +- .../components/ButtonAndDropdown.svelte | 16 +- .../routes/components/ChevronButton.svelte | 10 +- .../routes/components/DisplayResult.svelte | 36 +-- .../src/routes/components/Dropdown.svelte | 32 +- frontend/src/routes/components/Editor.svelte | 166 +++++----- .../src/routes/components/FieldHeader.svelte | 14 +- .../src/routes/components/FlowBuilder.svelte | 54 ++-- .../src/routes/components/FlowEditor.svelte | 62 ++-- .../src/routes/components/FlowPreview.svelte | 92 +++--- .../routes/components/FlowStatusViewer.svelte | 36 +-- .../src/routes/components/GroupModal.svelte | 58 ++-- .../components/IconedResourceType.svelte | 22 +- .../routes/components/InviteGlobalUser.svelte | 42 +-- .../src/routes/components/InviteUser.svelte | 38 +-- .../src/routes/components/ItemPicker.svelte | 42 +-- .../src/routes/components/JobStatus.svelte | 14 +- frontend/src/routes/components/Modal.svelte | 28 +- .../src/routes/components/ModuleStep.svelte | 50 +-- .../src/routes/components/Multiselect.svelte | 80 ++--- .../components/ObjectResourceInput.svelte | 42 +-- .../components/ObjectTypeNarrowing.svelte | 12 +- .../src/routes/components/PageHeader.svelte | 8 +- .../src/routes/components/Password.svelte | 28 +- frontend/src/routes/components/Path.svelte | 62 ++-- .../src/routes/components/RadioButton.svelte | 12 +- .../src/routes/components/Required.svelte | 4 +- .../routes/components/ResourceEditor.svelte | 148 ++++----- .../routes/components/ResourcePicker.svelte | 14 +- .../components/ResourceTypePicker.svelte | 24 +- frontend/src/routes/components/RunForm.svelte | 54 ++-- .../src/routes/components/SchemaEditor.svelte | 120 ++++--- .../src/routes/components/SchemaForm.svelte | 42 +-- .../src/routes/components/SchemaModal.svelte | 80 ++--- .../src/routes/components/SchemaViewer.svelte | 16 +- .../routes/components/ScriptBuilder.svelte | 82 ++--- .../src/routes/components/ScriptEditor.svelte | 300 +++++++++--------- .../src/routes/components/ScriptPicker.svelte | 60 ++-- .../src/routes/components/ScriptSchema.svelte | 28 +- .../src/routes/components/ShareModal.svelte | 76 ++--- .../src/routes/components/SharedBadge.svelte | 46 +-- .../components/StringTypeNarrowing.svelte | 34 +- frontend/src/routes/components/Switch.svelte | 8 +- .../src/routes/components/TableCustom.svelte | 14 +- .../src/routes/components/TableSimple.svelte | 20 +- frontend/src/routes/components/Tabs.svelte | 14 +- frontend/src/routes/components/Tooltip.svelte | 40 +-- .../routes/components/VariableEditor.svelte | 84 ++--- .../src/routes/components/icons/DbIcon.svelte | 4 +- .../src/routes/components/icons/Mail.svelte | 4 +- .../src/routes/components/icons/Mysql.svelte | 4 +- .../components/icons/PostgresIcon.svelte | 4 +- .../src/routes/components/icons/Slack.svelte | 4 +- frontend/src/routes/connection_added.svelte | 20 +- frontend/src/routes/flows.svelte | 98 +++--- frontend/src/routes/flows/add.svelte | 12 +- .../src/routes/flows/edit/[...path].svelte | 24 +- .../src/routes/flows/get/[...path].svelte | 60 ++-- .../src/routes/flows/run/[...path].svelte | 40 +-- frontend/src/routes/groups.svelte | 62 ++-- frontend/src/routes/index.svelte | 6 +- frontend/src/routes/resources.svelte | 152 ++++----- frontend/src/routes/run/[...run].svelte | 120 +++---- frontend/src/routes/runs/[...path].svelte | 98 +++--- frontend/src/routes/schedule/add.svelte | 124 ++++---- frontend/src/routes/schedules.svelte | 56 ++-- frontend/src/routes/scripts.svelte | 126 ++++---- frontend/src/routes/scripts/add.svelte | 38 +-- .../src/routes/scripts/edit/[...hash].svelte | 26 +- .../src/routes/scripts/get/[...hash].svelte | 106 +++---- .../src/routes/scripts/run/[...hash].svelte | 48 +-- frontend/src/routes/user/CenteredModal.svelte | 12 +- .../src/routes/user/__layout-user@root.svelte | 42 +-- .../src/routes/user/accept_invite@user.svelte | 50 +-- .../routes/user/create_workspace@user.svelte | 66 ++-- frontend/src/routes/user/login@user.svelte | 62 ++-- frontend/src/routes/user/settings@user.svelte | 90 +++--- .../user/superadmin_settings@user.svelte | 48 +-- .../src/routes/user/workspaces@user.svelte | 56 ++-- frontend/src/routes/variables.svelte | 62 ++-- frontend/src/routes/workers.svelte | 38 +-- frontend/src/routes/workspace_settings.svelte | 96 +++--- frontend/src/stores.ts | 21 +- frontend/src/types.d.ts | 2 +- frontend/src/utils.ts | 19 +- frontend/svelte.config.js | 12 +- frontend/tailwind.config.cjs | 12 +- frontend/tsconfig.json | 9 +- 102 files changed, 2401 insertions(+), 2415 deletions(-) diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs index ef59cac298..18e962c6bb 100644 --- a/frontend/.eslintrc.cjs +++ b/frontend/.eslintrc.cjs @@ -20,4 +20,4 @@ module.exports = { rules: { 'no-console': ['log', { allow: ['warn', 'error'] }] } -}; +} diff --git a/frontend/.prettierrc b/frontend/.prettierrc index ff2677efde..b1dc1d659e 100644 --- a/frontend/.prettierrc +++ b/frontend/.prettierrc @@ -2,5 +2,6 @@ "useTabs": true, "singleQuote": true, "trailingComma": "none", - "printWidth": 100 + "printWidth": 100, + "semi": false } diff --git a/frontend/postcss.config.cjs b/frontend/postcss.config.cjs index 796632e09c..ef4ca74c13 100644 --- a/frontend/postcss.config.cjs +++ b/frontend/postcss.config.cjs @@ -1,9 +1,9 @@ -const tailwindcss = require('tailwindcss'); -const autoprefixer = require('autoprefixer'); -const cssnano = require('cssnano'); +const tailwindcss = require('tailwindcss') +const autoprefixer = require('autoprefixer') +const cssnano = require('cssnano') -const mode = process.env.NODE_ENV; -const dev = mode === 'development'; +const mode = process.env.NODE_ENV +const dev = mode === 'development' const config = { plugins: [ @@ -16,6 +16,6 @@ const config = { preset: 'default' }) ] -}; +} -module.exports = config; +module.exports = config diff --git a/frontend/src/.d.ts b/frontend/src/.d.ts index a6f7d32d1e..aba6221e1c 100644 --- a/frontend/src/.d.ts +++ b/frontend/src/.d.ts @@ -1,5 +1,5 @@ declare namespace svelte.JSX { interface DOMAttributes { - onclick_outside?: CompositionEventHandler; + onclick_outside?: CompositionEventHandler } } diff --git a/frontend/src/app.html b/frontend/src/app.html index 0f005a615d..24d02e251e 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -1,16 +1,14 @@ + + + + + windmill.dev + %svelte.head% + - - - - - windmill.dev - %svelte.head% - - - - %svelte.body% - - + + %svelte.body% + diff --git a/frontend/src/common.ts b/frontend/src/common.ts index 6a4d2442c3..762c5e2595 100644 --- a/frontend/src/common.ts +++ b/frontend/src/common.ts @@ -2,16 +2,15 @@ export type OwnerKind = 'group' | 'user' export type ActionKind = 'Create' | 'Update' | 'Delete' | 'Execute' - export interface SchemaProperty { type: string | undefined description: string pattern?: string default?: any enum?: string[] - contentEncoding?: "base64" | "binary" + contentEncoding?: 'base64' | 'binary' format?: string - items?: { type?: "string" | "number" } + items?: { type?: 'string' | 'number' } } export type Schema = { @@ -23,7 +22,6 @@ export type Schema = { export type Meta = { ownerKind: OwnerKind; owner: string; name: string } - export function pathToMeta(path: string): Meta { const splitted = path.split('/') let ownerKind: OwnerKind diff --git a/frontend/src/hooks.ts b/frontend/src/hooks.ts index 91d05ba046..d473ce744b 100644 --- a/frontend/src/hooks.ts +++ b/frontend/src/hooks.ts @@ -1,8 +1,8 @@ /** @type {import('@sveltejs/kit').Handle} */ export async function handle({ event, resolve }) { - const response = await resolve(event, { - ssr: false - }) + const response = await resolve(event, { + ssr: false + }) - return response + return response } diff --git a/frontend/src/infer.ts b/frontend/src/infer.ts index fae186cde2..eeaf6f353e 100644 --- a/frontend/src/infer.ts +++ b/frontend/src/infer.ts @@ -1,61 +1,61 @@ -import type { Schema, SchemaProperty } from "./common" -import { ScriptService } from "./gen" -import { sendUserToast } from "./utils" +import type { Schema, SchemaProperty } from './common' +import { ScriptService } from './gen' +import { sendUserToast } from './utils' export async function inferArgs(code: string, schema: Schema): Promise { - try { - const inferedSchema = await ScriptService.toJsonschema({ - requestBody: code - }) - schema.required = [] - const oldProperties = Object.assign({}, schema.properties) - schema.properties = {} + try { + const inferedSchema = await ScriptService.toJsonschema({ + requestBody: code + }) + schema.required = [] + const oldProperties = Object.assign({}, schema.properties) + schema.properties = {} - for (const arg of inferedSchema.args) { - if (!(arg.name in oldProperties)) { - schema.properties[arg.name] = { description: '', type: '' } - } else { - schema.properties[arg.name] = oldProperties[arg.name] - } - pythonToJsonSchemaType(arg.typ, schema.properties[arg.name]) - schema.properties[arg.name].default = arg.default + for (const arg of inferedSchema.args) { + if (!(arg.name in oldProperties)) { + schema.properties[arg.name] = { description: '', type: '' } + } else { + schema.properties[arg.name] = oldProperties[arg.name] + } + pythonToJsonSchemaType(arg.typ, schema.properties[arg.name]) + schema.properties[arg.name].default = arg.default - if (!arg.has_default) { - schema.required.push(arg.name) - } - } - } catch (err) { - console.error(err) - sendUserToast(`Could not infer schema: ${err.body ?? err}`, true) - } + if (!arg.has_default) { + schema.required.push(arg.name) + } + } + } catch (err) { + console.error(err) + sendUserToast(`Could not infer schema: ${err.body ?? err}`, true) + } } function array_move(arr: T[], fromIndex: number, toIndex: number) { - var element = arr[fromIndex] - arr.splice(fromIndex, 1) - arr.splice(toIndex, 0, element) + var element = arr[fromIndex] + arr.splice(fromIndex, 1) + arr.splice(toIndex, 0, element) } function pythonToJsonSchemaType(t: string, s: SchemaProperty): void { - if (t === 'int') { - s.type = 'integer' - } else if (t === 'float') { - s.type = 'number' - } else if (t === 'bool') { - s.type = 'boolean' - } else if (t === 'str') { - s.type = 'string' - } else if (t === 'dict') { - s.type = 'object' - } else if (t === 'list') { - s.type = 'array' - } else if (t === 'bytes') { - s.type = 'string' - s.contentEncoding = 'base64' - } else if (t === 'datetime') { - s.type = 'string' - s.format = 'date-time' - } else { - s.type = undefined - } + if (t === 'int') { + s.type = 'integer' + } else if (t === 'float') { + s.type = 'number' + } else if (t === 'bool') { + s.type = 'boolean' + } else if (t === 'str') { + s.type = 'string' + } else if (t === 'dict') { + s.type = 'object' + } else if (t === 'list') { + s.type = 'array' + } else if (t === 'bytes') { + s.type = 'string' + s.contentEncoding = 'base64' + } else if (t === 'datetime') { + s.type = 'string' + s.format = 'date-time' + } else { + s.type = undefined + } } diff --git a/frontend/src/routes/__layout.svelte b/frontend/src/routes/__layout.svelte index 8b66489cb6..f0eea0b774 100644 --- a/frontend/src/routes/__layout.svelte +++ b/frontend/src/routes/__layout.svelte @@ -1,7 +1,7 @@
@@ -154,7 +154,7 @@ {:else if asJson.length > 40} {truncate(asJson, 40)}{asJson} diff --git a/frontend/src/routes/components/ArgInput.svelte b/frontend/src/routes/components/ArgInput.svelte index 299c1cc0e2..36a59f22dd 100644 --- a/frontend/src/routes/components/ArgInput.svelte +++ b/frontend/src/routes/components/ArgInput.svelte @@ -1,115 +1,115 @@ @@ -124,7 +124,7 @@ { - seeEditable = !seeEditable; + seeEditable = !seeEditable }} >Customize argument { - value = value.filter((el) => el != v); + value = value.filter((el) => el != v) if (value.length == 0) { - value = undefined; + value = undefined } }}> @@ -210,9 +210,9 @@ class="default-button-secondary mt-1" on:click={() => { if (value == undefined) { - value = []; + value = [] } - value = value.concat(''); + value = value.concat('') }}>Add item  {(value ?? []).length} item(s) {:else if type == 'object' && format?.startsWith('resource')} diff --git a/frontend/src/routes/components/AutosizedTextarea.svelte b/frontend/src/routes/components/AutosizedTextarea.svelte index 9a9444849b..942691659a 100644 --- a/frontend/src/routes/components/AutosizedTextarea.svelte +++ b/frontend/src/routes/components/AutosizedTextarea.svelte @@ -1,11 +1,11 @@
diff --git a/frontend/src/routes/components/Badge.svelte b/frontend/src/routes/components/Badge.svelte index e23895e3dc..5e82506e8d 100644 --- a/frontend/src/routes/components/Badge.svelte +++ b/frontend/src/routes/components/Badge.svelte @@ -1,8 +1,8 @@ diff --git a/frontend/src/routes/components/Button.svelte b/frontend/src/routes/components/Button.svelte index 7837cea8cc..22abea48e2 100644 --- a/frontend/src/routes/components/Button.svelte +++ b/frontend/src/routes/components/Button.svelte @@ -6,19 +6,19 @@ faPlay, faShare, faTrash - } from '@fortawesome/free-solid-svg-icons'; - import { createEventDispatcher } from 'svelte'; - import Icon from 'svelte-awesome'; + } from '@fortawesome/free-solid-svg-icons' + import { createEventDispatcher } from 'svelte' + import Icon from 'svelte-awesome' - export let category: 'delete' | 'list' | 'run' | 'add' | 'edit' | 'archive' | 'share'; - export let disabled: boolean = false; - const dispatch = createEventDispatcher(); + export let category: 'delete' | 'list' | 'run' | 'add' | 'edit' | 'archive' | 'share' + export let disabled: boolean = false + const dispatch = createEventDispatcher() - import { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons'; + import { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons' - import Icon from 'svelte-awesome'; + import Icon from 'svelte-awesome' - export let text: string; + export let text: string - export let viewOptions = false; + export let viewOptions = false diff --git a/frontend/src/routes/components/FlowPreview.svelte b/frontend/src/routes/components/FlowPreview.svelte index 7c826d9de6..3522d49783 100644 --- a/frontend/src/routes/components/FlowPreview.svelte +++ b/frontend/src/routes/components/FlowPreview.svelte @@ -1,41 +1,41 @@

@@ -90,7 +90,7 @@ type="submit" class="underline text-gray-700 inline-flex items-center" on:click={() => { - viewPreview = !viewPreview; + viewPreview = !viewPreview }} >
diff --git a/frontend/src/routes/components/FlowStatusViewer.svelte b/frontend/src/routes/components/FlowStatusViewer.svelte index 85f7323fd9..65d2e2e486 100644 --- a/frontend/src/routes/components/FlowStatusViewer.svelte +++ b/frontend/src/routes/components/FlowStatusViewer.svelte @@ -1,24 +1,18 @@
diff --git a/frontend/src/routes/components/GroupModal.svelte b/frontend/src/routes/components/GroupModal.svelte index 01f466f1db..0c86b85117 100644 --- a/frontend/src/routes/components/GroupModal.svelte +++ b/frontend/src/routes/components/GroupModal.svelte @@ -1,26 +1,26 @@ @@ -88,8 +88,8 @@ workspace: $workspaceStore ?? '', name: group?.name ?? '', requestBody: { username: name } - }); - loadGroup(); + }) + loadGroup() }}>remove {/if} - import Mysql from './icons/Mysql.svelte'; - import Mail from './icons/Mail.svelte'; - import DbIcon from './icons/DbIcon.svelte'; - import PostgresIcon from './icons/PostgresIcon.svelte'; - import Icon from 'svelte-awesome'; - import { faSlack } from '@fortawesome/free-brands-svg-icons'; - import Slack from './icons/Slack.svelte'; + import Mysql from './icons/Mysql.svelte' + import Mail from './icons/Mail.svelte' + import DbIcon from './icons/DbIcon.svelte' + import PostgresIcon from './icons/PostgresIcon.svelte' + import Icon from 'svelte-awesome' + import { faSlack } from '@fortawesome/free-brands-svg-icons' + import Slack from './icons/Slack.svelte' - export let name: string; - export let after: boolean = false; - export let height = '24px'; - export let width = '24px'; + export let name: string + export let after: boolean = false + export let height = '24px' + export let width = '24px'
diff --git a/frontend/src/routes/components/InviteGlobalUser.svelte b/frontend/src/routes/components/InviteGlobalUser.svelte index 0f717b4d27..b1d1fe594c 100644 --- a/frontend/src/routes/components/InviteGlobalUser.svelte +++ b/frontend/src/routes/components/InviteGlobalUser.svelte @@ -1,32 +1,32 @@ @@ -57,7 +57,7 @@ class="ml-4 w-40 {valid ? 'default-button' : 'default-button-disabled'}" type="button" on:click={() => { - addUser(); + addUser() }} disabled={email == undefined || password == undefined} > diff --git a/frontend/src/routes/components/InviteUser.svelte b/frontend/src/routes/components/InviteUser.svelte index dda253cf8f..1dec1a41a3 100644 --- a/frontend/src/routes/components/InviteUser.svelte +++ b/frontend/src/routes/components/InviteUser.svelte @@ -1,30 +1,30 @@ @@ -49,7 +49,7 @@ class="ml-4 w-40 {valid ? 'default-button' : 'default-button-disabled'}" type="button" on:click={() => { - inviteUser(); + inviteUser() }} disabled={email == undefined} > diff --git a/frontend/src/routes/components/ItemPicker.svelte b/frontend/src/routes/components/ItemPicker.svelte index c6fe242793..e4abc21a5d 100644 --- a/frontend/src/routes/components/ItemPicker.svelte +++ b/frontend/src/routes/components/ItemPicker.svelte @@ -1,37 +1,37 @@ @@ -46,9 +46,9 @@ class="py-4 px-1 gap-1 flex flex-col hover:bg-white hover:border text-black cursor-pointer" on:click={() => { if (closeOnClick) { - modal.closeModal(); + modal.closeModal() } - pickCallback(obj['path'], obj[extraField]); + pickCallback(obj['path'], obj[extraField]) }} >

diff --git a/frontend/src/routes/components/JobStatus.svelte b/frontend/src/routes/components/JobStatus.svelte index 56d4b4b071..b079c2f012 100644 --- a/frontend/src/routes/components/JobStatus.svelte +++ b/frontend/src/routes/components/JobStatus.svelte @@ -5,17 +5,17 @@ faClock, faHourglassHalf, faTimes - } from '@fortawesome/free-solid-svg-icons'; - import { displayDate, forLater } from '../../utils'; + } from '@fortawesome/free-solid-svg-icons' + import { displayDate, forLater } from '../../utils' - import Icon from 'svelte-awesome'; - import { check } from 'svelte-awesome/icons'; + import Icon from 'svelte-awesome' + import { check } from 'svelte-awesome/icons' - import type { CompletedJob, QueuedJob } from '../../gen'; + import type { CompletedJob, QueuedJob } from '../../gen' - const SMALL_ICON_SCALE = 0.7; + const SMALL_ICON_SCALE = 0.7 - export let job: QueuedJob | CompletedJob | undefined; + export let job: QueuedJob | CompletedJob | undefined {#if job && 'success' in job && job.success} diff --git a/frontend/src/routes/components/Modal.svelte b/frontend/src/routes/components/Modal.svelte index c06c4ac806..aa8e04f70a 100644 --- a/frontend/src/routes/components/Modal.svelte +++ b/frontend/src/routes/components/Modal.svelte @@ -1,27 +1,27 @@ @@ -56,10 +56,10 @@ diff --git a/frontend/src/routes/components/Multiselect.svelte b/frontend/src/routes/components/Multiselect.svelte index 36dd1b2132..0e56135f6a 100644 --- a/frontend/src/routes/components/Multiselect.svelte +++ b/frontend/src/routes/components/Multiselect.svelte @@ -1,11 +1,11 @@ diff --git a/frontend/src/routes/components/ObjectResourceInput.svelte b/frontend/src/routes/components/ObjectResourceInput.svelte index e4b3548551..8314aa8a1b 100644 --- a/frontend/src/routes/components/ObjectResourceInput.svelte +++ b/frontend/src/routes/components/ObjectResourceInput.svelte @@ -1,48 +1,48 @@

diff --git a/frontend/src/routes/components/ObjectTypeNarrowing.svelte b/frontend/src/routes/components/ObjectTypeNarrowing.svelte index 00808e29b5..9b0fdf4151 100644 --- a/frontend/src/routes/components/ObjectTypeNarrowing.svelte +++ b/frontend/src/routes/components/ObjectTypeNarrowing.svelte @@ -1,17 +1,17 @@ - import Tooltip from './Tooltip.svelte'; + import Tooltip from './Tooltip.svelte' - export let title: string; - export let tooltip: string = ''; - export let primary: boolean = true; + export let title: string + export let tooltip: string = '' + export let primary: boolean = true
diff --git a/frontend/src/routes/components/Password.svelte b/frontend/src/routes/components/Password.svelte index a14554feaa..91e27aa6c1 100644 --- a/frontend/src/routes/components/Password.svelte +++ b/frontend/src/routes/components/Password.svelte @@ -1,31 +1,31 @@ diff --git a/frontend/src/routes/components/Path.svelte b/frontend/src/routes/components/Path.svelte index f9f9b1f87b..fd4040cd52 100644 --- a/frontend/src/routes/components/Path.svelte +++ b/frontend/src/routes/components/Path.svelte @@ -1,75 +1,75 @@ @@ -87,9 +87,9 @@ bind:value={meta.ownerKind} on:change={() => { if (meta.ownerKind === 'group') { - meta.owner = 'all'; + meta.owner = 'all' } else { - meta.owner = $userStore?.username ?? ''; + meta.owner = $userStore?.username ?? '' } }} > diff --git a/frontend/src/routes/components/RadioButton.svelte b/frontend/src/routes/components/RadioButton.svelte index 0f5c4f7308..0b29890583 100644 --- a/frontend/src/routes/components/RadioButton.svelte +++ b/frontend/src/routes/components/RadioButton.svelte @@ -1,12 +1,12 @@
diff --git a/frontend/src/routes/components/Required.svelte b/frontend/src/routes/components/Required.svelte index d547c7a39c..edc5918414 100644 --- a/frontend/src/routes/components/Required.svelte +++ b/frontend/src/routes/components/Required.svelte @@ -1,6 +1,6 @@ {#if required} diff --git a/frontend/src/routes/components/ResourceEditor.svelte b/frontend/src/routes/components/ResourceEditor.svelte index c7c888f594..4938cca10c 100644 --- a/frontend/src/routes/components/ResourceEditor.svelte +++ b/frontend/src/routes/components/ResourceEditor.svelte @@ -4,67 +4,67 @@ ResourceService, type ResourceType, VariableService - } from '../../../src/gen'; - import { allTrue, emptySchema, sendUserToast } from '../../../src/utils'; - import { createEventDispatcher } from 'svelte'; - import type { Schema } from '../../common'; - import Modal from './Modal.svelte'; - import Path from './Path.svelte'; - import ArgInput from './ArgInput.svelte'; - import AutosizedTextarea from './AutosizedTextarea.svelte'; - import ItemPicker from './ItemPicker.svelte'; - import VariableEditor from './VariableEditor.svelte'; - import Required from './Required.svelte'; + } from '../../../src/gen' + import { allTrue, emptySchema, sendUserToast } from '../../../src/utils' + import { createEventDispatcher } from 'svelte' + import type { Schema } from '../../common' + import Modal from './Modal.svelte' + import Path from './Path.svelte' + import ArgInput from './ArgInput.svelte' + import AutosizedTextarea from './AutosizedTextarea.svelte' + import ItemPicker from './ItemPicker.svelte' + import VariableEditor from './VariableEditor.svelte' + import Required from './Required.svelte' - import { workspaceStore } from '../../stores'; - import ResourceTypePicker from './ResourceTypePicker.svelte'; + import { workspaceStore } from '../../stores' + import ResourceTypePicker from './ResourceTypePicker.svelte' - let path = ''; - let initialPath = ''; + let path = '' + let initialPath = '' - let step = 1; + let step = 1 - let resourceToEdit: Resource | undefined; + let resourceToEdit: Resource | undefined - let description: string = ''; + let description: string = '' let DESCRIPTION_PLACEHOLDER = `You can use markdown to style your description. -A good way to make resources user friendly is to link to a default script for your resource [example](scripts/add?template=f2d1dc8df796d9e8)`; - let selectedResourceType: string | undefined; - let resourceType: ResourceType; - let resourceSchema: Schema | undefined; - let args: Record = {}; +A good way to make resources user friendly is to link to a default script for your resource [example](scripts/add?template=f2d1dc8df796d9e8)` + let selectedResourceType: string | undefined + let resourceType: ResourceType + let resourceSchema: Schema | undefined + let args: Record = {} - let error: string | undefined; + let error: string | undefined - let pickForField: string | undefined; - let itemPicker: ItemPicker; - let variableEditor: VariableEditor; - let modal: Modal; + let pickForField: string | undefined + let itemPicker: ItemPicker + let variableEditor: VariableEditor + let modal: Modal - const dispatch = createEventDispatcher(); + const dispatch = createEventDispatcher() export async function initNew() { - selectedResourceType = undefined; - step = 1; - args = {}; - path = ''; - description = ''; - initialPath = ''; - resourceSchema = emptySchema(); - resourceToEdit = undefined; - modal.openModal(); + selectedResourceType = undefined + step = 1 + args = {} + path = '' + description = '' + initialPath = '' + resourceSchema = emptySchema() + resourceToEdit = undefined + modal.openModal() } export async function initEdit(p: string): Promise { - initialPath = p; - path = p; - step = 2; - resourceToEdit = await ResourceService.getResource({ workspace: $workspaceStore!, path: p }); - description = resourceToEdit!.description ?? ''; - selectedResourceType = resourceToEdit!.resource_type; - await loadResourceType(); - args = resourceToEdit!.value; - modal.openModal(); + initialPath = p + path = p + step = 2 + resourceToEdit = await ResourceService.getResource({ workspace: $workspaceStore!, path: p }) + description = resourceToEdit!.description ?? '' + selectedResourceType = resourceToEdit!.resource_type + await loadResourceType() + args = resourceToEdit!.value + modal.openModal() } async function createResource(): Promise { @@ -72,13 +72,13 @@ A good way to make resources user friendly is to link to a default script for yo await ResourceService.createResource({ workspace: $workspaceStore!, requestBody: { path, value: args, description, resource_type: resourceType.name } - }); - sendUserToast(`Successfully created resource at ${path}`); + }) + sendUserToast(`Successfully created resource at ${path}`) - dispatch('refresh'); - modal.closeModal(); + dispatch('refresh') + modal.closeModal() } catch (err) { - sendUserToast(`${err}`, true); + sendUserToast(`${err}`, true) } } @@ -89,15 +89,15 @@ A good way to make resources user friendly is to link to a default script for yo workspace: $workspaceStore!, path: resourceToEdit.path, requestBody: { path, value: args, description } - }); - sendUserToast(`Successfully updated resource at ${path}`); - dispatch('refresh'); - modal.closeModal(); + }) + sendUserToast(`Successfully updated resource at ${path}`) + dispatch('refresh') + modal.closeModal() } else { - throw Error('Cannot edit undefined resourceToEdit'); + throw Error('Cannot edit undefined resourceToEdit') } } catch (err) { - sendUserToast(`${err}`, true); + sendUserToast(`${err}`, true) } } @@ -106,25 +106,25 @@ A good way to make resources user friendly is to link to a default script for yo resourceType = await ResourceService.getResourceType({ workspace: $workspaceStore!, path: selectedResourceType - }); + }) if (resourceType.schema) { - resourceSchema = resourceType.schema as Schema; + resourceSchema = resourceType.schema as Schema } } else { - sendUserToast(`ResourceType cannot be undefined.`, true); + sendUserToast(`ResourceType cannot be undefined.`, true) } } - let inputCheck: { [id: string]: boolean } = {}; + let inputCheck: { [id: string]: boolean } = {} - $: isValid = allTrue(inputCheck) ?? false; + $: isValid = allTrue(inputCheck) ?? false { - dispatch('close'); + dispatch('close') }} >
{resourceToEdit ? 'Edit ' + resourceToEdit.path : 'Add a resource'}
@@ -161,7 +161,7 @@ A good way to make resources user friendly is to link to a default script for yo bind:value={selectedResourceType} notPickable={resourceToEdit != undefined} on:click={() => { - args = {}; + args = {} }} />
@@ -189,8 +189,8 @@ A good way to make resources user friendly is to link to a default script for yo
@@ -208,8 +208,8 @@ A good way to make resources user friendly is to link to a default script for yo
@@ -109,7 +109,7 @@ type="submit" class="mr-6 text-sm underline text-gray-700 inline-flex items-center" on:click={() => { - viewOptions = !viewOptions; + viewOptions = !viewOptions }} > {#if schedulable} @@ -126,7 +126,7 @@ disabled={!isValid} class="{isValid ? 'default-button' : 'default-button-disabled'} w-min px-6" on:click={() => { - runAction(scheduledForStr, args); + runAction(scheduledForStr, args) }} > {scheduledForStr ? 'Schedule run to a later time' : buttonText} diff --git a/frontend/src/routes/components/SchemaEditor.svelte b/frontend/src/routes/components/SchemaEditor.svelte index 94d9e115f1..a1bb77d25b 100644 --- a/frontend/src/routes/components/SchemaEditor.svelte +++ b/frontend/src/routes/components/SchemaEditor.svelte @@ -1,130 +1,126 @@
@@ -51,13 +51,13 @@ small={true} bind:value={args[argName].type} on:change={(e) => { - console.log(e.detail); + console.log(e.detail) args[argName].expr = e.detail == 'javascript' ? `import { previous_result, flow_input, step, variable, resource, params } from 'windmill' previous_result.myfield` - : undefined; + : undefined }} />
@@ -86,7 +86,7 @@ previous_result.myfield` { - seeHelp[argName] = seeHelp[argName] == undefined ? true : !seeHelp[argName]; + seeHelp[argName] = seeHelp[argName] == undefined ? true : !seeHelp[argName] }} >Help - import type { SchemaProperty } from '../../common'; - import Modal from '../../routes/components/Modal.svelte'; + import type { SchemaProperty } from '../../common' + import Modal from '../../routes/components/Modal.svelte' - export const ARG_TYPES = ['integer', 'number', 'string', 'boolean', 'object', 'array'] as const; - export type ArgType = typeof ARG_TYPES[number]; + export const ARG_TYPES = ['integer', 'number', 'string', 'boolean', 'object', 'array'] as const + export type ArgType = typeof ARG_TYPES[number] export interface ModalSchemaProperty { - selectedType?: string; - description: string; - name: string; - required: boolean; - format?: string; - pattern?: string; - enum_?: string[]; - default?: any; - items?: { type?: 'string' | 'number' }; + selectedType?: string + description: string + name: string + required: boolean + format?: string + pattern?: string + enum_?: string[] + default?: any + items?: { type?: 'string' | 'number' } } export function modalToSchema(schema: ModalSchemaProperty): SchemaProperty { @@ -25,7 +25,7 @@ default: schema.default, enum: schema.enum_, items: schema.items - }; + } } export function schemaToModal( @@ -40,7 +40,7 @@ pattern: schema.pattern, default: schema.default, required - }; + } } export const DEFAULT_PROPERTY: ModalSchemaProperty = { @@ -48,41 +48,41 @@ description: '', name: '', required: false - }; + } @@ -111,14 +111,14 @@ {/each}
@@ -160,7 +160,7 @@ slot="submission" class="px-4 py-2 text-white font-semibold bg-blue-500 rounded" on:click={() => { - dispatch('save'); + dispatch('save') }} > Save diff --git a/frontend/src/routes/components/SchemaViewer.svelte b/frontend/src/routes/components/SchemaViewer.svelte index 6ba55069ac..f01835568a 100644 --- a/frontend/src/routes/components/SchemaViewer.svelte +++ b/frontend/src/routes/components/SchemaViewer.svelte @@ -1,15 +1,15 @@ diff --git a/frontend/src/routes/components/ScriptBuilder.svelte b/frontend/src/routes/components/ScriptBuilder.svelte index 248965f3e1..55ba5dfa4b 100644 --- a/frontend/src/routes/components/ScriptBuilder.svelte +++ b/frontend/src/routes/components/ScriptBuilder.svelte @@ -1,28 +1,28 @@
@@ -91,7 +91,7 @@ ? 'default-button-disabled text-gray-700' : 'default-button-secondary'} min-w-max ml-2" on:click={() => { - changeStep(1); + changeStep(1) }}>Step 1: Metadata
@@ -118,15 +118,15 @@ (script.path == undefined || script.path == '' || script.path.split('/')[2] == '')} class="default-button px-6 max-h-8" on:click={() => { - changeStep(step + 1); + changeStep(step + 1) }}>Next {#if step == 2} {/if} diff --git a/frontend/src/routes/components/ScriptEditor.svelte b/frontend/src/routes/components/ScriptEditor.svelte index e0744ba43e..c7ea8058f6 100644 --- a/frontend/src/routes/components/ScriptEditor.svelte +++ b/frontend/src/routes/components/ScriptEditor.svelte @@ -6,11 +6,11 @@ VariableService, ResourceService, ScriptService - } from '../../gen'; - import { sendUserToast, emptySchema, displayDate } from '../../utils'; - import type { Schema } from '../../common'; - import { fade } from 'svelte/transition'; - import Icon from 'svelte-awesome'; + } from '../../gen' + import { sendUserToast, emptySchema, displayDate } from '../../utils' + import type { Schema } from '../../common' + import { fade } from 'svelte/transition' + import Icon from 'svelte-awesome' import { faCheck, faChevronDown, @@ -20,87 +20,87 @@ faSearch, faSpinner, faTimes - } from '@fortawesome/free-solid-svg-icons'; - import Editor from './Editor.svelte'; - import Tooltip from './Tooltip.svelte'; - import { onDestroy, onMount } from 'svelte'; - import { userStore, workspaceStore } from '../../stores'; - import TableCustom from './TableCustom.svelte'; - import { check } from 'svelte-awesome/icons'; - import Modal from './Modal.svelte'; - import { Highlight } from 'svelte-highlight'; - import { json, python } from 'svelte-highlight/src/languages'; - import github from 'svelte-highlight/src/styles/github'; - import ItemPicker from './ItemPicker.svelte'; - import VariableEditor from './VariableEditor.svelte'; - import ResourceEditor from './ResourceEditor.svelte'; - import { inferArgs } from '../../infer'; + } from '@fortawesome/free-solid-svg-icons' + import Editor from './Editor.svelte' + import Tooltip from './Tooltip.svelte' + import { onDestroy, onMount } from 'svelte' + import { userStore, workspaceStore } from '../../stores' + import TableCustom from './TableCustom.svelte' + import { check } from 'svelte-awesome/icons' + import Modal from './Modal.svelte' + import { Highlight } from 'svelte-highlight' + import { json, python } from 'svelte-highlight/src/languages' + import github from 'svelte-highlight/src/styles/github' + import ItemPicker from './ItemPicker.svelte' + import VariableEditor from './VariableEditor.svelte' + import ResourceEditor from './ResourceEditor.svelte' + import { inferArgs } from '../../infer' // @ts-ignore - import { VSplitPane } from 'svelte-split-pane'; - import SchemaForm from './SchemaForm.svelte'; - import DisplayResult from './DisplayResult.svelte'; + import { VSplitPane } from 'svelte-split-pane' + import SchemaForm from './SchemaForm.svelte' + import DisplayResult from './DisplayResult.svelte' // Exported - export let schema: Schema = emptySchema(); + export let schema: Schema = emptySchema() - export let code: string; - export let path: string | undefined; + export let code: string + export let path: string | undefined // Control Editor layout - export let viewPreview = true; - export let previewTab: 'logs' | 'input' | 'output' | 'history' | 'last_save' = 'logs'; + export let viewPreview = true + export let previewTab: 'logs' | 'input' | 'output' | 'history' | 'last_save' = 'logs' - let websocketAlive = { pyright: false, black: false }; + let websocketAlive = { pyright: false, black: false } // Internal state - let editor: Editor; + let editor: Editor // Preview args input - let args: Record = {}; - let isValid: boolean = true; + let args: Record = {} + let isValid: boolean = true // Preview - let previewIsLoading = false; - let previewIntervalId: NodeJS.Timer; - let previewJob: Job | undefined; - let pastPreviews: CompletedJob[] = []; + let previewIsLoading = false + let previewIntervalId: NodeJS.Timer + let previewJob: Job | undefined + let pastPreviews: CompletedJob[] = [] - let modalViewer: Modal; - let modalViewerTitle: string = ''; - let modalViewerContent: any; - let modalViewerMode: 'logs' | 'result' | 'code' = 'logs'; + let modalViewer: Modal + let modalViewerTitle: string = '' + let modalViewerContent: any + let modalViewerMode: 'logs' | 'result' | 'code' = 'logs' - let variablePicker: ItemPicker; - let resourcePicker: ItemPicker; - let scriptPicker: ItemPicker; - let variableEditor: VariableEditor; - let resourceEditor: ResourceEditor; + let variablePicker: ItemPicker + let resourcePicker: ItemPicker + let scriptPicker: ItemPicker + let variableEditor: VariableEditor + let resourceEditor: ResourceEditor - let syncIteration: number = 0; - let ITERATIONS_BEFORE_SLOW_REFRESH = 100; + let syncIteration: number = 0 + let ITERATIONS_BEFORE_SLOW_REFRESH = 100 - let lastSave: string | null; + let lastSave: string | null - $: lastSave = localStorage.getItem(path ?? 'last_save'); + $: lastSave = localStorage.getItem(path ?? 'last_save') export function getEditor(): Editor { - return editor; + return editor } export async function runPreview(): Promise { try { if (previewIntervalId) { - clearInterval(previewIntervalId); + clearInterval(previewIntervalId) } if (previewIsLoading && previewJob) { JobService.cancelQueuedJob({ workspace: $workspaceStore!, id: previewJob.id, requestBody: {} - }); + }) } - previewIsLoading = true; + previewIsLoading = true const previewId = await JobService.runScriptPreview({ workspace: $workspaceStore!, @@ -109,17 +109,17 @@ content: editor.getCode(), args: args } - }); - previewJob = undefined; - loadPreviewJob(previewId); - syncIteration = 0; + }) + previewJob = undefined + loadPreviewJob(previewId) + syncIteration = 0 previewIntervalId = setInterval(() => { - syncer(previewId); - }, 500); + syncer(previewId) + }, 500) //TODO fetch preview, every x time, until it's completed } catch (err) { - previewIsLoading = false; - sendUserToast(`Could not run preview: ${err} `, true); + previewIsLoading = false + sendUserToast(`Could not run preview: ${err} `, true) } } @@ -129,7 +129,7 @@ jobKinds: 'preview', createdBy: $userStore?.username, scriptPathExact: path - }); + }) } async function loadPreviewJob(id: string): Promise { @@ -140,98 +140,98 @@ id, running: previewJob.running, logOffset: previewJob.logs?.length ?? 0 - }); + }) if (previewJobUpdates.new_logs) { - previewJob.logs = (previewJob.logs ?? '').concat(previewJobUpdates.new_logs); + previewJob.logs = (previewJob.logs ?? '').concat(previewJobUpdates.new_logs) } if ((previewJobUpdates.running ?? false) || (previewJobUpdates.completed ?? false)) { - previewJob = await JobService.getJob({ workspace: $workspaceStore!, id }); + previewJob = await JobService.getJob({ workspace: $workspaceStore!, id }) } } else { - previewJob = await JobService.getJob({ workspace: $workspaceStore!, id }); + previewJob = await JobService.getJob({ workspace: $workspaceStore!, id }) } if (previewJob?.type === 'CompletedJob') { //only CompletedJob has success property - clearInterval(previewIntervalId); - previewIsLoading = false; - loadPastPreviews(); + clearInterval(previewIntervalId) + previewIsLoading = false + loadPastPreviews() } } catch (err) { - console.error(err); + console.error(err) } } async function inferSchema() { - let isDefault: string[] = []; + let isDefault: string[] = [] Object.entries(args).forEach(([k, v]) => { if (schema.properties[k].default == v) { - isDefault.push(k); + isDefault.push(k) } - }); - await inferArgs(editor.getCode(), schema); - schema = schema; + }) + await inferArgs(editor.getCode(), schema) + schema = schema - isDefault.forEach((key) => (args[key] = schema.properties[key].default)); + isDefault.forEach((key) => (args[key] = schema.properties[key].default)) for (const key of Object.keys(args)) { if (schema.properties[key] == undefined) { - delete args[key]; + delete args[key] } } } function syncer(id: string): void { if (syncIteration > ITERATIONS_BEFORE_SLOW_REFRESH) { - loadPreviewJob(id); + loadPreviewJob(id) if (previewIntervalId) { - clearInterval(previewIntervalId); - previewIntervalId = setInterval(() => loadPreviewJob(id), 5000); + clearInterval(previewIntervalId) + previewIntervalId = setInterval(() => loadPreviewJob(id), 5000) } } else { - syncIteration++; - loadPreviewJob(id); + syncIteration++ + loadPreviewJob(id) } } async function loadVariables() { - let r: { name: string; path?: string; description?: string }[] = []; + let r: { name: string; path?: string; description?: string }[] = [] const variables = ( await VariableService.listVariable({ workspace: $workspaceStore ?? 'NO_W' }) ).map((x) => { - return { name: x.path, ...x }; - }); + return { name: x.path, ...x } + }) const rvariables = await VariableService.listContextualVariables({ workspace: $workspaceStore ?? 'NO_W' - }); - r = r.concat(variables).concat(rvariables); - return r; + }) + r = r.concat(variables).concat(rvariables) + return r } async function loadScripts(): Promise<{ path: string; summary?: string }[]> { - return await ScriptService.listScripts({ workspace: $workspaceStore ?? 'NO_W' }); + return await ScriptService.listScripts({ workspace: $workspaceStore ?? 'NO_W' }) } - let syncCode: NodeJS.Timer; + let syncCode: NodeJS.Timer onMount(() => { syncCode = setInterval(() => { - const newCode = editor?.getCode(); + const newCode = editor?.getCode() if (newCode && code != newCode) { - code = editor.getCode(); + code = editor.getCode() } - }, 3000); - }); + }, 3000) + }) onDestroy(() => { if (editor) { - code = editor.getCode(); + code = editor.getCode() } if (previewIntervalId) { - clearInterval(previewIntervalId); + clearInterval(previewIntervalId) } if (syncCode) { - clearInterval(syncCode); + clearInterval(syncCode) } - }); + }) @@ -241,15 +241,15 @@ { - modalViewerMode = 'code'; - modalViewerTitle = 'Script ' + path; + modalViewerMode = 'code' + modalViewerTitle = 'Script ' + path modalViewerContent = ( await ScriptService.getScriptByPath({ workspace: $workspaceStore ?? '', path }) - ).content; - modalViewer.openModal(); + ).content + modalViewer.openModal() }} closeOnClick={false} itemName="script" @@ -277,16 +277,16 @@ pickCallback={(path, name) => { if (!path) { if (!getEditor().getCode().includes('import os')) { - getEditor().insertAtBeginning('import os\n'); + getEditor().insertAtBeginning('import os\n') } - getEditor().insertAtCursor(`os.environ.get("${name}")`); - sendUserToast(`${name} inserted at cursor`); + getEditor().insertAtCursor(`os.environ.get("${name}")`) + sendUserToast(`${name} inserted at cursor`) } else { if (!getEditor().getCode().includes('import wmill')) { - getEditor().insertAtBeginning('import wmill\n'); + getEditor().insertAtBeginning('import wmill\n') } - getEditor().insertAtCursor(`wmill.get_variable("${path}")`); - sendUserToast(`${name} inserted at cursor`); + getEditor().insertAtCursor(`wmill.get_variable("${path}")`) + sendUserToast(`${name} inserted at cursor`) } }} itemName="Variable" @@ -301,7 +301,7 @@ class="default-button-secondary" type="button" on:click={() => { - variableEditor.initNew(); + variableEditor.initNew() }} > Create a new variable @@ -312,8 +312,8 @@ { - getEditor().insertAtCursor(`client.get_resource("${path}")`); - sendUserToast(`${path} inserted at cursor`); + getEditor().insertAtCursor(`client.get_resource("${path}")`) + sendUserToast(`${path} inserted at cursor`) }} itemName="Resource" extraField="resource_type" @@ -328,7 +328,7 @@ class="default-button-secondary" type="button" on:click={() => { - resourceEditor.initNew(); + resourceEditor.initNew() }} > Create a new resource @@ -346,7 +346,7 @@ downPanelSize={viewPreview ? '25%' : '10%'} updateCallback={() => { if (!viewPreview) { - viewPreview = true; + viewPreview = true } }} > @@ -357,7 +357,7 @@ @@ -365,7 +365,7 @@ @@ -373,7 +373,7 @@ @@ -381,7 +381,7 @@ @@ -559,9 +559,9 @@ href="#last_save" class="text-xs" on:click={() => { - modalViewerContent = lastSave; - modalViewerMode = 'code'; - modalViewer.openModal(); + modalViewerContent = lastSave + modalViewerMode = 'code' + modalViewer.openModal() }}>View last local save for path {path} {:else}No local save{/if} @@ -595,9 +595,9 @@ href="#result" class="text-xs" on:click={() => { - modalViewerContent = result; - modalViewerMode = 'result'; - modalViewer.openModal(); + modalViewerContent = result + modalViewerMode = 'result' + modalViewer.openModal() }}>{JSON.stringify(result).substring(0, 30)}... @@ -611,9 +611,9 @@ workspace: $workspaceStore ?? 'NO_W', id }) - ).raw_code; - modalViewerMode = 'code'; - modalViewer.openModal(); + ).raw_code + modalViewerMode = 'code' + modalViewer.openModal() }} >View code View logs - import { sendUserToast } from '../../utils'; - import { ScriptService, FlowService } from '../../gen'; + import { sendUserToast } from '../../utils' + import { ScriptService, FlowService } from '../../gen' - import Icon from 'svelte-awesome'; - import { faSearch } from '@fortawesome/free-solid-svg-icons'; - import { workspaceStore } from '../../stores'; - import { createEventDispatcher } from 'svelte'; - import ItemPicker from './ItemPicker.svelte'; - import RadioButton from './RadioButton.svelte'; - import Modal from './Modal.svelte'; - import { Highlight } from 'svelte-highlight'; - import { python } from 'svelte-highlight/src/languages'; - import github from 'svelte-highlight/src/styles/github'; + import Icon from 'svelte-awesome' + import { faSearch } from '@fortawesome/free-solid-svg-icons' + import { workspaceStore } from '../../stores' + import { createEventDispatcher } from 'svelte' + import ItemPicker from './ItemPicker.svelte' + import RadioButton from './RadioButton.svelte' + import Modal from './Modal.svelte' + import { Highlight } from 'svelte-highlight' + import { python } from 'svelte-highlight/src/languages' + import github from 'svelte-highlight/src/styles/github' - export let scriptPath: string | undefined = undefined; - export let allowFlow = false; - export let isFlow = false; + export let scriptPath: string | undefined = undefined + export let allowFlow = false + export let isFlow = false - let items: { summary: String; path: String; version?: String }[] = []; - let itemPicker: ItemPicker; - let modalViewer: Modal; - let code: string = ''; + let items: { summary: String; path: String; version?: String }[] = [] + let itemPicker: ItemPicker + let modalViewer: Modal + let code: string = '' - const dispatch = createEventDispatcher(); + const dispatch = createEventDispatcher() async function getScript() { code = (await ScriptService.getScriptByPath({ workspace: $workspaceStore!, path: scriptPath! })) - .content; + .content } async function loadItems(isFlow: boolean): Promise { try { if (isFlow) { - items = await FlowService.listFlows({ workspace: $workspaceStore! }); + items = await FlowService.listFlows({ workspace: $workspaceStore! }) } else { - items = await ScriptService.listScripts({ workspace: $workspaceStore! }); + items = await ScriptService.listScripts({ workspace: $workspaceStore! }) } } catch (err) { - sendUserToast(`Could not load items: ${err}`, true); + sendUserToast(`Could not load items: ${err}`, true) } } $: { if ($workspaceStore) { - loadItems(isFlow); + loadItems(isFlow) } } @@ -55,12 +55,12 @@ { - scriptPath = path; + scriptPath = path }} itemName={isFlow ? 'Flow' : 'Script'} extraField="summary" loadItems={async () => { - return items; + return items }} /> @@ -77,7 +77,7 @@