From f940eab5deecc7f5867ecda95818e66f2cf36421 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Fri, 7 Apr 2023 22:51:27 +0200 Subject: [PATCH] feat(frontend): add impersonate api + local resolution of import by lsp v0 --- backend/windmill-api/openapi.yaml | 58 ++++++++++++++++++ backend/windmill-api/src/lib.rs | 1 + backend/windmill-api/src/scripts.rs | 22 ++++++- frontend/Caddyfile | 1 + frontend/src/lib/components/Editor.svelte | 50 +++++++++++++-- .../src/lib/components/ScriptEditor.svelte | 1 + .../InlineScriptEditor.svelte | 1 + .../flows/content/FlowModuleComponent.svelte | 1 + frontend/static/styles.min.css | 1 - frontend/static/trigger_button.png~ | Bin 17525 -> 0 bytes lsp/pyls_launcher.py | 2 +- 11 files changed, 129 insertions(+), 9 deletions(-) delete mode 100644 frontend/static/styles.min.css delete mode 100644 frontend/static/trigger_button.png~ diff --git a/backend/windmill-api/openapi.yaml b/backend/windmill-api/openapi.yaml index 42d067869e..6c8e3761d5 100644 --- a/backend/windmill-api/openapi.yaml +++ b/backend/windmill-api/openapi.yaml @@ -1048,6 +1048,27 @@ paths: schema: type: string + /users/tokens/impersonate: + post: + summary: create token to impersonate a user (require superadmin) + operationId: createTokenImpersonate + tags: + - user + requestBody: + description: new token + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/NewTokenImpersonate" + responses: + "201": + description: token created + content: + text/plain: + schema: + type: string + /users/tokens/delete/{token_prefix}: delete: summary: delete token @@ -2344,6 +2365,24 @@ paths: schema: type: string + /scripts_u/tokened_raw/{workspace}/{token}/{path}: + get: + summary: raw script by path with a token (mostly used by lsp to be used with import maps to resolve scripts) + operationId: rawScriptByPathTokened + tags: + - script + parameters: + - $ref: "#/components/parameters/WorkspaceId" + - $ref: "#/components/parameters/Token" + - $ref: "#/components/parameters/ScriptPath" + responses: + "200": + description: script content + content: + text/plain: + schema: + type: string + /w/{workspace}/scripts/exists/p/{path}: get: summary: exists script by path @@ -4535,6 +4574,12 @@ components: required: true schema: type: string + Token: + name: token + in: path + required: true + schema: + type: string AccountId: name: id in: path @@ -5132,6 +5177,19 @@ components: type: string format: date-time + NewTokenImpersonate: + type: object + properties: + label: + type: string + expiration: + type: string + format: date-time + impersonate_email: + type: string + required: + - impersonate_email + ListableVariable: type: object properties: diff --git a/backend/windmill-api/src/lib.rs b/backend/windmill-api/src/lib.rs index a8fc433113..c17398c257 100644 --- a/backend/windmill-api/src/lib.rs +++ b/backend/windmill-api/src/lib.rs @@ -149,6 +149,7 @@ pub async fn run_server( .nest("/schedules", schedule::global_service()) .route_layer(from_extractor::()) .route_layer(from_extractor::()) + .nest("/scripts_u", scripts::global_unauthed_service()) .nest( "/w/:workspace_id/apps_u", apps::unauthed_service() diff --git a/backend/windmill-api/src/scripts.rs b/backend/windmill-api/src/scripts.rs index 3b3ae071c6..bbb02bdffe 100644 --- a/backend/windmill-api/src/scripts.rs +++ b/backend/windmill-api/src/scripts.rs @@ -13,7 +13,7 @@ use windmill_parser::MainArgSignature; use crate::{ db::{UserDB, DB}, schedule::clear_schedule, - users::{maybe_refresh_folders, require_owner_of_path, Authed}, + users::{maybe_refresh_folders, require_owner_of_path, AuthCache, Authed}, webhook_util::{WebhookMessage, WebhookShared}, HTTP_CLIENT, }; @@ -30,6 +30,7 @@ use sqlx::{FromRow, Postgres, Transaction}; use std::{ collections::hash_map::DefaultHasher, hash::{Hash, Hasher}, + sync::Arc, }; use windmill_common::{ error::{Error, JsonResult, Result}, @@ -61,6 +62,13 @@ pub fn global_service() -> Router { .route("/hub/get_full/*path", get(get_full_hub_script_by_path)) } +pub fn global_unauthed_service() -> Router { + Router::new().route( + "/tokened_raw/:workspace/:token/*path", + get(get_tokened_raw_script_by_path), + ) +} + pub fn workspaced_service() -> Router { Router::new() .route("/list", get(list_scripts)) @@ -498,6 +506,18 @@ async fn list_paths( Ok(Json(scripts)) } +async fn get_tokened_raw_script_by_path( + Extension(user_db): Extension, + Path((w_id, token, path)): Path<(String, String, StripPath)>, + Extension(cache): Extension>, +) -> Result { + let authed = cache + .get_authed(Some(w_id.clone()), &token) + .await + .ok_or_else(|| Error::NotAuthorized("Invalid token".to_string()))?; + return raw_script_by_path(authed, Extension(user_db), Path((w_id, path))).await; +} + async fn raw_script_by_path( authed: Authed, Extension(user_db): Extension, diff --git a/frontend/Caddyfile b/frontend/Caddyfile index 2a8fe38ca3..2e1365daea 100644 --- a/frontend/Caddyfile +++ b/frontend/Caddyfile @@ -7,5 +7,6 @@ http://localhost { https://localhost { bind {$ADDRESS} + reverse_proxy /api/* http://localhost:8000 reverse_proxy /ws/* http://localhost:3001 } diff --git a/frontend/src/lib/components/Editor.svelte b/frontend/src/lib/components/Editor.svelte index 8ef8ec00c7..a106442c0b 100644 --- a/frontend/src/lib/components/Editor.svelte +++ b/frontend/src/lib/components/Editor.svelte @@ -37,7 +37,6 @@ import { toSocket, WebSocketMessageReader, WebSocketMessageWriter } from 'vscode-ws-jsonrpc' import { CloseAction, ErrorAction, RequestType } from 'vscode-languageclient' import * as vscode from 'vscode' - languages.typescript.typescriptDefaults.setModeConfiguration({ completionItems: false, definitions: false, @@ -71,19 +70,21 @@ import type { DocumentUri, MessageTransports } from 'vscode-languageclient' import { dirtyStore } from './common/confirmationModal/dirtyStore' import { buildWorkerDefinition } from './build_workers' + import { workspaceStore } from '$lib/stores' + import { UserService } from '$lib/gen' let divEl: HTMLDivElement | null = null let editor: meditor.IStandaloneCodeEditor export let lang: 'typescript' | 'python' | 'go' | 'shell' export let code: string = '' - export let hash: string = randomHash() export let cmdEnterAction: (() => void) | undefined = undefined export let formatAction: (() => void) | undefined = undefined export let automaticLayout = true export let websocketAlive = { pyright: false, black: false, deno: false, go: false } export let shouldBindKey: boolean = true export let fixedOverflowWidgets = true + export let path: string = randomHash() let websockets: [MonacoLanguageClient, WebSocket][] = [] let websocketInterval: NodeJS.Timer | undefined @@ -92,7 +93,8 @@ let disposeMethod: () => void | undefined const dispatch = createEventDispatcher() - const uri = `file:///tmp/monaco/${hash}.${langToExt(lang)}` + const uri = + lang == 'go' ? `file:///tmp/monaco/${randomHash()}.go` : `file:///${path}.${langToExt(lang)}` // if (lang != 'typescript') { buildWorkerDefinition('../../../workers', import.meta.url, false) @@ -286,6 +288,7 @@ command = vscode.commands.registerCommand( 'deno.cache', (uris: DocumentUri[] = []) => { + console.log('cache', uris) languageClient.sendRequest(new RequestType('deno/cache'), { referrer: { uri }, uris: uris.map((uri) => ({ uri })) @@ -306,6 +309,36 @@ const wsProtocol = $page.url.protocol == 'https:' ? 'wss' : 'ws' if (lang == 'typescript') { + let expiration = new Date() + expiration.setHours(expiration.getHours() + 2) + const token = await UserService.createToken({ + requestBody: { label: 'Ephemeral lsp token', expiration: expiration.toISOString() } + }) + let root = + $page.url.protocol + + '//' + + $page.url.host + + '/api/scripts_u/tokened_raw/' + + $workspaceStore + + '/' + + token + const importMap = { + imports: { + 'file:///': root + '/' + } + } + let path_splitted = path.split('/') + for (let c = 0; c < path_splitted.length; c++) { + let key = 'file://./' + for (let i = 0; i < c; i++) { + key += '../' + } + let url = path_splitted.slice(0, -c - 1).join('/') + let ending = c == path_splitted.length - 1 ? '' : '/' + importMap['imports'][key] = `${root}/${url}${ending}` + } + console.log(importMap) + const encodedImportMap = 'data:text/plain;base64,' + btoa(JSON.stringify(importMap)) await connectToLanguageServer( `${wsProtocol}://${$page.url.host}/ws/deno`, 'deno', @@ -313,7 +346,7 @@ certificateStores: null, enablePaths: [], config: null, - importMap: null, + importMap: encodedImportMap, internalDebug: false, lint: false, path: null, @@ -321,7 +354,6 @@ unsafelyIgnoreCertificateErrors: null, unstable: true, enable: true, - cache: null, codeLens: { implementations: true, references: true, @@ -340,7 +372,13 @@ } } }, - undefined + () => { + return [ + { + enable: true + } + ] + } ) } else if (lang === 'python') { await connectToLanguageServer( diff --git a/frontend/src/lib/components/ScriptEditor.svelte b/frontend/src/lib/components/ScriptEditor.svelte index 411f0613e3..8450eefc75 100644 --- a/frontend/src/lib/components/ScriptEditor.svelte +++ b/frontend/src/lib/components/ScriptEditor.svelte @@ -149,6 +149,7 @@
{#key lang} {#if inlineScript.language != 'frontend'} {#if value.type === 'rawscript'} :not(style){align-items:center;bottom:0;display:flex;height:100%;justify-content:center;left:0;overflow:hidden;position:absolute;right:0;top:0;width:100%}.sl-aspect-ratio>img,.sl-aspect-ratio>video{object-fit:cover}.sl-badge{align-items:center;border-width:1px;display:inline-flex;outline:2px solid transparent;outline-offset:2px}.sl-badge a{color:var(--color-text-muted)}.sl-badge a:hover{color:var(--color-text);cursor:pointer}.sl-button{align-items:center;display:inline-flex;line-height:0;outline:2px solid transparent;outline-offset:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sl-button-group>.sl-button:not(:first-child):not(:last-child){border-radius:0;border-right:0}.sl-button-group>.sl-button:first-child:not(:last-child){border-bottom-right-radius:0;border-right:0;border-top-right-radius:0}.sl-button-group>.sl-button:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.sl-image--inverted{filter:invert(1) hue-rotate(180deg);mix-blend-mode:screen}.Link,.Link>code{color:var(--color-link)}.Link:hover,.Link:hover>code{color:var(--color-link-dark)}.sl-link-heading:hover .sl-link-heading__icon{opacity:1}.sl-link-heading__icon{opacity:0}.sl-menu{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.sl-menu--pointer-interactions .sl-menu-item:not(.sl-menu-item--disabled):hover{background-color:var(--color-primary);color:var(--color-on-primary)}.sl-menu--pointer-interactions .sl-menu-item:not(.sl-menu-item--disabled):hover .sl-menu-item__description{color:var(--color-on-primary)}.sl-menu--pointer-interactions .sl-menu-item:not(.sl-menu-item--disabled):hover .sl-menu-item__icon{color:var(--color-on-primary)!important}.sl-menu-item__link-icon,.sl-menu-item__meta-text{opacity:.6}.sl-menu-item--disabled .sl-menu-item__title-wrapper{cursor:not-allowed;opacity:.5}.sl-menu-item--disabled .sl-menu-item__meta-text{cursor:not-allowed;opacity:.4}.sl-menu-item--focused{background-color:var(--color-primary);color:var(--color-on-primary)}.sl-menu-item--focused .sl-menu-item__link-icon,.sl-menu-item--focused .sl-menu-item__meta-text{opacity:1}.sl-menu-item--focused .sl-menu-item__description{color:var(--color-on-primary)}.sl-menu-item--focused .sl-menu-item__icon{color:var(--color-on-primary)!important}.sl-menu-item--submenu-active{background-color:var(--color-primary-tint)}.sl-menu-item__title-wrapper{max-width:250px}.sl-menu-item__description{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.sl-popover{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:drop-shadow(var(--drop-shadow-default1)) drop-shadow(var(--drop-shadow-default2));border-radius:2px;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sl-popover>:not(.sl-popover__tip){border-radius:2px;position:relative;z-index:10}.sl-prose{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--fs-paragraph:1em;--fs-paragraph-small:0.875em;--fs-code:0.875em;font-family:var(--font-prose);font-size:16px;line-height:var(--lh-paragraph)}.sl-prose>:first-child{margin-top:0}.sl-prose>:last-child{margin-bottom:0}.sl-prose h1{font-size:2.25em}.sl-prose>h1{margin-bottom:1.11em;margin-top:0}.sl-prose h2{font-size:1.75em;line-height:1.3333333}.sl-prose>h2{margin-bottom:1em;margin-top:1.428em}.sl-prose h3{font-size:1.25em}.sl-prose>h3{margin-bottom:.8em;margin-top:2em}.sl-prose h4{font-size:1em}.sl-prose>h4{margin-bottom:.5em;margin-top:2em}.sl-prose h2+*,.sl-prose h3+*,.sl-prose h4+*{margin-top:0}.sl-prose strong{font-weight:600}.sl-prose .sl-text-lg{font-size:.875em}.sl-prose p{color:var(--color-text-paragraph);font-size:var(--fs-paragraph);margin-bottom:1em;margin-top:1em}.sl-prose p:first-child{margin-top:0}.sl-prose p:last-child{margin-bottom:0}.sl-prose p>a>img{display:inline}.sl-prose caption a,.sl-prose figcaption a,.sl-prose li a,.sl-prose p a,.sl-prose table a{color:var(--color-link)}.sl-prose caption a:hover,.sl-prose figcaption a:hover,.sl-prose li a:hover,.sl-prose p a:hover,.sl-prose table a:hover{color:var(--color-link-dark)}.sl-prose caption a,.sl-prose figcaption a,.sl-prose li a,.sl-prose p a,.sl-prose table a{--color-link:var(--color-text-primary);--color-link-dark:var(--color-primary-dark)}.sl-prose hr{margin-bottom:1em;margin-top:1em}.sl-prose .sl-live-code{margin:1.25em -4px;table-layout:auto;width:100%}.sl-prose .sl-live-code__inner>pre{margin-bottom:0;margin-top:0}.sl-prose .sl-callout,.sl-prose ol,.sl-prose ul{margin-bottom:1.5em;margin-top:1.5em}.sl-prose ol,.sl-prose ul{line-height:var(--lh-paragraph)}.sl-prose ol li,.sl-prose ul li{padding-left:2em}.sl-prose ol li{position:relative}.sl-prose ol li:before{content:counter(list-item) ". ";font-variant-numeric:tabular-nums}.sl-prose ul:not(.contains-task-list) li{position:relative}.sl-prose ul:not(.contains-task-list) li:before{background-color:var(--color-text);border-radius:50%;content:"";height:.375em;left:.75em;opacity:.7;position:absolute;top:.625em;width:.375em}.sl-prose li{margin-bottom:4px;margin-top:4px;padding-left:1.75em}.sl-prose li p{display:inline;margin-bottom:.75em;margin-top:.75em}.sl-prose li>:first-child{margin-top:0}.sl-prose>ol p+:last-child,.sl-prose>ul p+:last-child{margin-bottom:.75em}.sl-prose ol ol,.sl-prose ol ul,.sl-prose ul ol,.sl-prose ul ul{margin-bottom:2px;margin-top:2px}.sl-prose ul.contains-task-list input{margin-left:-1.875em;margin-right:.625em;position:relative;top:1px}.sl-prose ul.contains-task-list p{margin-top:0}.sl-prose figure{margin-bottom:1.5em;margin-top:1.5em}.sl-prose figure figure,.sl-prose figure img,.sl-prose figure video{margin-bottom:0;margin-top:0}.sl-prose figure>figcaption,.sl-prose figure>figcaption p{color:var(--color-text-muted);font-size:var(--fs-paragraph-small);line-height:var(--lh-paragraph-small);margin-top:8px;padding-left:16px;padding-right:16px;text-align:center}.sl-prose blockquote p{margin-bottom:.5em;margin-top:.5em}.sl-prose table{font-size:var(--fs-paragraph-small);margin-bottom:1.5em;margin-left:-4px;margin-right:-4px;overflow-x:auto;table-layout:auto;width:100%}.sl-prose thead td,.sl-prose thead th{color:var(--color-text-muted);font-size:.857em;font-weight:500;padding:8px 12px;text-transform:uppercase}.sl-prose thead td:first-child,.sl-prose thead th:first-child{padding-left:4px}.sl-prose tbody{border-radius:5px;box-shadow:0 0 0 1px var(--color-border,currentColor)}.sl-prose tbody tr{border-top-width:1px}.sl-prose tbody tr:first-child{border-top:0}.sl-prose tbody tr:nth-child(2n){background-color:var(--color-canvas-tint)}.sl-prose td{margin:.625em .75em;padding:10px 12px;vertical-align:top}.sl-prose td:not([align=center],[align=right]),.sl-prose th:not([align=center],[align=right]){text-align:left}.sl-prose .mermaid{margin-bottom:1.5em;margin-top:1.5em}.sl-prose .mermaid>svg{border-radius:5px;border-width:1px;height:auto!important;padding:1.25em}.sl-prose .sl-code-group .mermaid,.sl-prose .sl-code-group pre{margin-top:0}.sl-svg-focus{filter:drop-shadow(0 0 1px hsla(var(--primary-h),80%,51%,.9))}.sl-radio-group__radio:hover{cursor:pointer}.sl-radio-group__radio--disabled{opacity:.6}.sl-radio-group__radio--disabled:hover{cursor:not-allowed}.sl-stack--horizontal.sl-stack--1>:not(style)~:not(style){margin-left:4px}.sl-stack--horizontal.sl-stack--2>:not(style)~:not(style){margin-left:8px}.sl-stack--horizontal.sl-stack--3>:not(style)~:not(style){margin-left:12px}.sl-stack--horizontal.sl-stack--4>:not(style)~:not(style){margin-left:16px}.sl-stack--horizontal.sl-stack--5>:not(style)~:not(style){margin-left:20px}.sl-stack--horizontal.sl-stack--6>:not(style)~:not(style){margin-left:24px}.sl-stack--horizontal.sl-stack--8>:not(style)~:not(style){margin-left:32px}.sl-stack--horizontal.sl-stack--10>:not(style)~:not(style){margin-left:40px}.sl-stack--horizontal.sl-stack--12>:not(style)~:not(style){margin-left:48px}.sl-stack--horizontal.sl-stack--14>:not(style)~:not(style){margin-left:56px}.sl-stack--horizontal.sl-stack--16>:not(style)~:not(style){margin-left:64px}.sl-stack--horizontal.sl-stack--20>:not(style)~:not(style){margin-left:80px}.sl-stack--horizontal.sl-stack--24>:not(style)~:not(style){margin-left:96px}.sl-stack--horizontal.sl-stack--32>:not(style)~:not(style){margin-left:128px}.sl-stack--vertical.sl-stack--1>:not(style)~:not(style){margin-top:4px}.sl-stack--vertical.sl-stack--2>:not(style)~:not(style){margin-top:8px}.sl-stack--vertical.sl-stack--3>:not(style)~:not(style){margin-top:12px}.sl-stack--vertical.sl-stack--4>:not(style)~:not(style){margin-top:16px}.sl-stack--vertical.sl-stack--5>:not(style)~:not(style){margin-top:20px}.sl-stack--vertical.sl-stack--6>:not(style)~:not(style){margin-top:24px}.sl-stack--vertical.sl-stack--8>:not(style)~:not(style){margin-top:32px}.sl-stack--vertical.sl-stack--10>:not(style)~:not(style){margin-top:40px}.sl-stack--vertical.sl-stack--12>:not(style)~:not(style){margin-top:48px}.sl-stack--vertical.sl-stack--14>:not(style)~:not(style){margin-top:56px}.sl-stack--vertical.sl-stack--16>:not(style)~:not(style){margin-top:64px}.sl-stack--vertical.sl-stack--20>:not(style)~:not(style){margin-top:80px}.sl-stack--vertical.sl-stack--24>:not(style)~:not(style){margin-top:96px}.sl-stack--vertical.sl-stack--32>:not(style)~:not(style){margin-top:128px}.sl-switch .sl-switch__indicator{transition:background-color .1s cubic-bezier(.4,1,.75,.9)}.sl-switch .sl-switch__indicator .sl-switch__icon{visibility:hidden}.sl-switch .sl-switch__indicator:before{background-color:var(--color-canvas);border-radius:50%;content:"";height:calc(100% - 4px);left:0;margin:2px;position:absolute;transition:left .1s cubic-bezier(.4,1,.75,.9);width:calc(50% - 4px)}.sl-switch input:checked:disabled~.sl-switch__indicator{background-color:var(--color-primary-light)}.sl-switch input:checked~.sl-switch__indicator{background-color:var(--color-primary)}.sl-switch input:checked~.sl-switch__indicator .sl-switch__icon{visibility:visible}.sl-switch input:checked~.sl-switch__indicator:before{left:50%}.sl-tooltip{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:drop-shadow(var(--drop-shadow-default1)) drop-shadow(var(--drop-shadow-default2));border-radius:2px;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);font-size:11px;max-width:300px;padding:4px 6px}.sl-tooltip>:not(.sl-tooltip_tip){position:relative;z-index:10}input,textarea{background-color:transparent}.sl-focus-ring{--tw-ring-color:hsla(var(--primary-h),80%,61%,var(--tw-ring-opacity));--tw-ring-opacity:0.5;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-radius:2px;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}:root,[data-theme=light],[data-theme=light] .sl-inverted .sl-inverted,[data-theme=light] .sl-inverted .sl-inverted .sl-inverted .sl-inverted{--text-h:0;--text-s:0%;--text-l:15%;--shadow-sm:0px 0px 1px rgba(67,90,111,.3);--shadow-md:0px 2px 4px -2px rgba(0,0,0,.25),0px 0px 1px rgba(67,90,111,.3);--shadow-lg:0 4px 17px rgba(67,90,111,.2),0 2px 3px rgba(0,0,0,.1),inset 0 0 0 .5px var(--color-canvas-pure),0 0 0 .5px rgba(0,0,0,.2);--shadow-xl:0px 0px 1px rgba(67,90,111,.3),0px 8px 10px -4px rgba(67,90,111,.45);--shadow-2xl:0px 0px 1px rgba(67,90,111,.3),0px 16px 24px -8px rgba(67,90,111,.45);--drop-shadow-default1:0 0 0.5px rgba(0,0,0,.6);--drop-shadow-default2:0 2px 5px rgba(67,90,111,.3);--color-text-heading:hsla(var(--text-h),var(--text-s),max(3,calc(var(--text-l) - 15)),1);--color-text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--color-text-paragraph:hsla(var(--text-h),var(--text-s),var(--text-l),0.9);--color-text-muted:hsla(var(--text-h),var(--text-s),var(--text-l),0.7);--color-text-light:hsla(var(--text-h),var(--text-s),var(--text-l),0.55);--color-text-disabled:hsla(var(--text-h),var(--text-s),var(--text-l),0.3);--canvas-h:218;--canvas-s:40%;--canvas-l:100%;--color-canvas:hsla(var(--canvas-h),var(--canvas-s),var(--canvas-l),1);--color-canvas-dark:#000;--color-canvas-pure:#fff;--color-canvas-tint:rgba(245,247,250,.5);--color-canvas-50:#f5f7fa;--color-canvas-100:#ebeef5;--color-canvas-200:#e0e6f0;--color-canvas-300:#d5ddeb;--color-canvas-400:#cbd5e7;--color-canvas-500:#c0cde2;--color-canvas-dialog:#fff;--color-border-dark:hsla(var(--canvas-h),30%,72%,0.5);--color-border:hsla(var(--canvas-h),32%,78%,0.5);--color-border-light:hsla(var(--canvas-h),24%,84%,0.5);--color-border-input:hsla(var(--canvas-h),24%,72%,0.8);--color-border-button:hsla(var(--canvas-h),24%,20%,0.65);--primary-h:202;--primary-s:100%;--primary-l:55%;--color-text-primary:#0081cc;--color-primary-dark:#1891d8;--color-primary-darker:#126fa5;--color-primary:#19abff;--color-primary-light:#52bfff;--color-primary-tint:rgba(77,190,255,.25);--color-on-primary:#fff;--success-h:156;--success-s:95%;--success-l:37%;--color-text-success:#05c779;--color-success-dark:#138b5b;--color-success-darker:#0f6c47;--color-success:#05b870;--color-success-light:#06db86;--color-success-tint:rgba(81,251,183,.25);--color-on-success:#fff;--warning-h:20;--warning-s:90%;--warning-l:56%;--color-text-warning:#c2470a;--color-warning-dark:#d35d22;--color-warning-darker:#9e461a;--color-warning:#f46d2a;--color-warning-light:#f7925f;--color-warning-tint:rgba(246,139,85,.25);--color-on-warning:#fff;--danger-h:0;--danger-s:84%;--danger-l:63%;--color-text-danger:#bc1010;--color-danger-dark:#d83b3b;--color-danger-darker:#af2323;--color-danger:#f05151;--color-danger-light:#f58e8e;--color-danger-tint:rgba(241,91,91,.25);--color-on-danger:#fff;color:var(--color-text)}:root .sl-inverted,[data-theme=light] .sl-inverted,[data-theme=light] .sl-inverted .sl-inverted .sl-inverted{--text-h:0;--text-s:0%;--text-l:86%;--shadow-sm:0px 0px 1px rgba(11,13,19,.5);--shadow-md:0px 2px 4px -2px rgba(0,0,0,.35),0px 0px 1px rgba(11,13,19,.4);--shadow-lg:0 2px 14px rgba(0,0,0,.55),0 0 0 0.5px hsla(0,0%,100%,.2);--shadow-xl:0px 0px 1px rgba(11,13,19,.4),0px 8px 10px -4px rgba(11,13,19,.55);--shadow-2xl:0px 0px 1px rgba(11,13,19,.4),0px 16px 24px -8px rgba(11,13,19,.55);--drop-shadow-default1:0 0 0.5px hsla(0,0%,100%,.5);--drop-shadow-default2:0 3px 8px rgba(0,0,0,.6);--color-text-heading:hsla(var(--text-h),var(--text-s),max(3,calc(var(--text-l) - 15)),1);--color-text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--color-text-paragraph:hsla(var(--text-h),var(--text-s),var(--text-l),0.9);--color-text-muted:hsla(var(--text-h),var(--text-s),var(--text-l),0.7);--color-text-light:hsla(var(--text-h),var(--text-s),var(--text-l),0.55);--color-text-disabled:hsla(var(--text-h),var(--text-s),var(--text-l),0.3);--canvas-h:218;--canvas-s:32%;--canvas-l:10%;--color-canvas:hsla(var(--canvas-h),var(--canvas-s),var(--canvas-l),1);--color-canvas-dark:#000;--color-canvas-pure:#0c1018;--color-canvas-tint:rgba(60,76,103,.2);--color-canvas-50:#3c4c67;--color-canvas-100:#2d394e;--color-canvas-200:#212a3b;--color-canvas-300:#19212e;--color-canvas-400:#171e2b;--color-canvas-500:#151c28;--color-canvas-dialog:#2d394e;--color-border-dark:hsla(var(--canvas-h),24%,23%,0.5);--color-border:hsla(var(--canvas-h),26%,28%,0.5);--color-border-light:hsla(var(--canvas-h),19%,34%,0.5);--color-border-input:hsla(var(--canvas-h),19%,30%,0.8);--color-border-button:hsla(var(--canvas-h),19%,80%,0.65);--primary-h:202;--primary-s:90%;--primary-l:51%;--color-text-primary:#66c7ff;--color-primary-dark:#1f83bd;--color-primary-darker:#186491;--color-primary:#12a0f3;--color-primary-light:#42b3f5;--color-primary-tint:rgba(85,187,246,.25);--color-on-primary:#fff;--success-h:156;--success-s:95%;--success-l:67%;--color-text-success:#41f1ab;--color-success-dark:#47dca0;--color-success-darker:#24bc7f;--color-success:#62f3b9;--color-success-light:#a0f8d5;--color-success-tint:rgba(89,243,181,.25);--color-on-success:#fff;--warning-h:20;--warning-s:90%;--warning-l:50%;--color-text-warning:#ec7d46;--color-warning-dark:#b55626;--color-warning-darker:#8b421d;--color-warning:#e75d18;--color-warning-light:#ec7d46;--color-warning-tint:rgba(238,142,93,.25);--color-on-warning:#fff;--danger-h:0;--danger-s:84%;--danger-l:43%;--color-text-danger:#e74b4b;--color-danger-dark:#972626;--color-danger-darker:#721d1d;--color-danger:#c11a1a;--color-danger-light:#e22828;--color-danger-tint:rgba(234,98,98,.25);--color-on-danger:#fff;color:var(--color-text)}[data-theme=dark],[data-theme=dark] .sl-inverted .sl-inverted,[data-theme=dark] .sl-inverted .sl-inverted .sl-inverted .sl-inverted{--text-h:0;--text-s:0%;--text-l:85%;--shadow-sm:0px 0px 1px rgba(11,13,19,.5);--shadow-md:0px 2px 4px -2px rgba(0,0,0,.35),0px 0px 1px rgba(11,13,19,.4);--shadow-lg:0 2px 14px rgba(0,0,0,.55),0 0 0 0.5px hsla(0,0%,100%,.2);--shadow-xl:0px 0px 1px rgba(11,13,19,.4),0px 8px 10px -4px rgba(11,13,19,.55);--shadow-2xl:0px 0px 1px rgba(11,13,19,.4),0px 16px 24px -8px rgba(11,13,19,.55);--drop-shadow-default1:0 0 0.5px hsla(0,0%,100%,.5);--drop-shadow-default2:0 3px 8px rgba(0,0,0,.6);--color-text-heading:hsla(var(--text-h),var(--text-s),max(3,calc(var(--text-l) - 15)),1);--color-text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--color-text-paragraph:hsla(var(--text-h),var(--text-s),var(--text-l),0.9);--color-text-muted:hsla(var(--text-h),var(--text-s),var(--text-l),0.7);--color-text-light:hsla(var(--text-h),var(--text-s),var(--text-l),0.55);--color-text-disabled:hsla(var(--text-h),var(--text-s),var(--text-l),0.3);--canvas-h:218;--canvas-s:32%;--canvas-l:8%;--color-canvas:hsla(var(--canvas-h),var(--canvas-s),var(--canvas-l),1);--color-canvas-dark:#000;--color-canvas-pure:#090c11;--color-canvas-tint:rgba(57,71,96,.2);--color-canvas-50:#262f40;--color-canvas-100:#1a212d;--color-canvas-200:#121821;--color-canvas-300:#0e131a;--color-canvas-400:#0c1017;--color-canvas-500:#0c1017;--color-canvas-dialog:#1a212d;--color-border-dark:hsla(var(--canvas-h),24%,21%,0.5);--color-border:hsla(var(--canvas-h),26%,26%,0.5);--color-border-light:hsla(var(--canvas-h),19%,32%,0.5);--color-border-input:hsla(var(--canvas-h),19%,28%,0.8);--color-border-button:hsla(var(--canvas-h),19%,80%,0.65);--primary-h:202;--primary-s:80%;--primary-l:36%;--color-text-primary:#66c7ff;--color-primary-dark:#1c5a7d;--color-primary-darker:#154560;--color-primary:#126fa5;--color-primary-light:#1685c5;--color-primary-tint:rgba(21,130,193,.25);--color-on-primary:#fff;--success-h:156;--success-s:95%;--success-l:37%;--color-text-success:#4be7a9;--color-success-dark:#145239;--color-success-darker:#10422e;--color-success:#0f6c47;--color-success-light:#128255;--color-success-tint:rgba(26,188,123,.25);--color-on-success:#fff;--warning-h:20;--warning-s:90%;--warning-l:56%;--color-text-warning:#e28150;--color-warning-dark:#7d4021;--color-warning-darker:#61311a;--color-warning:#9e461a;--color-warning-light:#c1551f;--color-warning-tint:rgba(184,81,30,.25);--color-on-warning:#fff;--danger-h:0;--danger-s:84%;--danger-l:63%;--color-text-danger:#d55;--color-danger-dark:#892929;--color-danger-darker:#6a2020;--color-danger:#af2323;--color-danger-light:#d12929;--color-danger-tint:rgba(179,35,35,.25);--color-on-danger:#fff;color:var(--color-text)}[data-theme=dark] .sl-inverted,[data-theme=dark] .sl-inverted .sl-inverted .sl-inverted{--text-h:0;--text-s:0%;--text-l:89%;--shadow-sm:0px 0px 1px rgba(11,13,19,.5);--shadow-md:0px 2px 4px -2px rgba(0,0,0,.35),0px 0px 1px rgba(11,13,19,.4);--shadow-lg:0 2px 14px rgba(0,0,0,.55),0 0 0 0.5px hsla(0,0%,100%,.2);--shadow-xl:0px 0px 1px rgba(11,13,19,.4),0px 8px 10px -4px rgba(11,13,19,.55);--shadow-2xl:0px 0px 1px rgba(11,13,19,.4),0px 16px 24px -8px rgba(11,13,19,.55);--drop-shadow-default1:0 0 0.5px hsla(0,0%,100%,.5);--drop-shadow-default2:0 3px 8px rgba(0,0,0,.6);--color-text-heading:hsla(var(--text-h),var(--text-s),max(3,calc(var(--text-l) - 15)),1);--color-text:hsla(var(--text-h),var(--text-s),var(--text-l),1);--color-text-paragraph:hsla(var(--text-h),var(--text-s),var(--text-l),0.9);--color-text-muted:hsla(var(--text-h),var(--text-s),var(--text-l),0.7);--color-text-light:hsla(var(--text-h),var(--text-s),var(--text-l),0.55);--color-text-disabled:hsla(var(--text-h),var(--text-s),var(--text-l),0.3);--canvas-h:218;--canvas-s:32%;--canvas-l:13%;--color-canvas:hsla(var(--canvas-h),var(--canvas-s),var(--canvas-l),1);--color-canvas-dark:#000;--color-canvas-pure:#111722;--color-canvas-tint:rgba(66,83,112,.2);--color-canvas-50:#2b374a;--color-canvas-100:#222b3a;--color-canvas-200:#1a212e;--color-canvas-300:#141a24;--color-canvas-400:#121721;--color-canvas-500:#121721;--color-canvas-dialog:#222b3a;--color-border-dark:hsla(var(--canvas-h),24%,26%,0.5);--color-border:hsla(var(--canvas-h),26%,31%,0.5);--color-border-light:hsla(var(--canvas-h),19%,37%,0.5);--color-border-input:hsla(var(--canvas-h),19%,33%,0.8);--color-border-button:hsla(var(--canvas-h),19%,80%,0.65);--primary-h:202;--primary-s:80%;--primary-l:33%;--color-text-primary:#66c7ff;--color-primary-dark:#1a5475;--color-primary-darker:#14425c;--color-primary:#116697;--color-primary-light:#147cb8;--color-primary-tint:rgba(21,130,193,.25);--color-on-primary:#fff;--success-h:156;--success-s:95%;--success-l:67%;--color-text-success:#4be7a9;--color-success-dark:#25986a;--color-success-darker:#1c7350;--color-success:#1bc581;--color-success-light:#28e297;--color-success-tint:rgba(26,188,123,.25);--color-on-success:#fff;--warning-h:20;--warning-s:90%;--warning-l:50%;--color-text-warning:#e28150;--color-warning-dark:#713a1e;--color-warning-darker:#552b16;--color-warning:#914018;--color-warning-light:#ab4c1c;--color-warning-tint:rgba(184,81,30,.25);--color-on-warning:#fff;--danger-h:0;--danger-s:84%;--danger-l:43%;--color-text-danger:#d55;--color-danger-dark:#5e1c1c;--color-danger-darker:#471515;--color-danger:#771818;--color-danger-light:#911d1d;--color-danger-tint:rgba(179,35,35,.25);--color-on-danger:#fff;color:var(--color-text)}.sl-elements{font-size:13px}.sl-elements .svg-inline--fa{display:inline-block}.sl-elements .DocsSkeleton{animation:skeleton-glow .5s linear infinite alternate;background:rgba(206,217,224,.2);background-clip:padding-box!important;border-color:rgba(206,217,224,.2)!important;border-radius:2px;box-shadow:none!important;color:transparent!important;cursor:default;pointer-events:none;user-select:none}.sl-elements .Model{--fs-code:12px}.sl-elements .ElementsTableOfContentsItem:hover{color:inherit;text-decoration:none}.sl-elements .ParameterGrid{align-items:center;display:grid;grid-template-columns:fit-content(120px) 20px auto;margin-bottom:16px;padding-bottom:0;row-gap:3px}.sl-elements .TryItPanel>:nth-child(2){overflow:auto}.sl-elements .OperationParametersContent{max-height:162px}.sl-elements .Checkbox{max-width:15px;padding-right:3px}.sl-elements .TextForCheckBox{padding-left:9px;padding-top:6px}.sl-elements .TextRequestBody{margin-bottom:16px;max-height:200px;overflow-y:auto;padding-bottom:0}.sl-elements .HttpOperation .JsonSchemaViewer .sl-markdown-viewer p,.sl-elements .HttpOperation__Parameters .sl-markdown-viewer p,.sl-elements .Model .JsonSchemaViewer .sl-markdown-viewer p{font-size:12px;line-height:1.5em}.sl-elements .HttpOperation div[role=tablist]{overflow-x:auto} \ No newline at end of file diff --git a/frontend/static/trigger_button.png~ b/frontend/static/trigger_button.png~ deleted file mode 100644 index efcc26919433ef6268f18d16029af0f6ca75e98a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17525 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 diff --git a/lsp/pyls_launcher.py b/lsp/pyls_launcher.py index 629c14d203..2ea260a67a 100644 --- a/lsp/pyls_launcher.py +++ b/lsp/pyls_launcher.py @@ -30,6 +30,7 @@ class LanguageServerWebSocketHandler(websocket.WebSocketHandler): # Create an instance of the language server self.proc = process.Subprocess( self.procargs, + env=os.environ, stdin=subprocess.PIPE, stdout=subprocess.PIPE, ) @@ -85,7 +86,6 @@ class MainHandler(web.RequestHandler): if __name__ == "__main__": - monaco_path = "/tmp/monaco" os.makedirs(monaco_path, exist_ok=True) print("The monaco directory is created!")