This commit is contained in:
Ruben Fiszel
2024-04-14 19:24:54 +02:00
parent 71635646e8
commit a605d79f21
13 changed files with 1877 additions and 2305 deletions
+1644 -2066
View File
File diff suppressed because it is too large Load Diff
+30 -14
View File
@@ -1,6 +1,6 @@
{
"name": "windmill-components",
"version": "1.306.2",
"version": "1.306.9",
"scripts": {
"dev": "vite dev",
"build": "vite build",
@@ -17,6 +17,7 @@
"filter-classes": "node filterTailwindClasses.js"
},
"devDependencies": {
"@codingame/esbuild-import-meta-url-plugin": "^1.0.2",
"@floating-ui/core": "^1.3.1",
"@playwright/test": "^1.34.3",
"@rgossiaux/svelte-headlessui": "^2.0.0",
@@ -81,17 +82,24 @@
},
"svelte-timezone-picker": {
"svelte": "$svelte"
},
"monaco-editor": "$monaco-editor",
"vscode": "$vscode"
},
"resolutions": {
"monaco-editor": "npm:@codingame/monaco-editor-treemended@>=1.83.5 <1.84.0",
"vscode": "npm:@codingame/monaco-vscode-api@>=1.83.5 <1.84.0"
}
},
"type": "module",
"dependencies": {
"@aws-crypto/sha256-js": "^4.0.0",
"@codingame/monaco-vscode-go-default-extension": "^4.2.1",
"@codingame/monaco-vscode-javascript-default-extension": "^4.2.1",
"@codingame/monaco-vscode-json-default-extension": "^4.2.1",
"@codingame/monaco-vscode-powershell-default-extension": "^4.2.1",
"@codingame/monaco-vscode-python-default-extension": "^4.2.1",
"@codingame/monaco-vscode-shellscript-default-extension": "^4.2.1",
"@codingame/monaco-vscode-sql-default-extension": "^4.2.1",
"@codingame/monaco-vscode-standalone-css-language-features": "^4.2.1",
"@codingame/monaco-vscode-standalone-html-language-features": "^4.2.1",
"@codingame/monaco-vscode-standalone-json-language-features": "^4.2.1",
"@codingame/monaco-vscode-standalone-typescript-language-features": "^4.2.1",
"@codingame/monaco-vscode-typescript-basics-default-extension": "^4.2.1",
"@codingame/monaco-vscode-typescript-language-features-default-extension": "^4.2.1",
"@json2csv/plainjs": "^7.0.6",
"@leeoniya/ufuzzy": "^1.0.8",
"@popperjs/core": "^2.11.6",
@@ -116,9 +124,14 @@
"highlight.js": "^11.8.0",
"lodash": "^4.17.21",
"lucide-svelte": "^0.293.0",
"monaco-editor": "npm:@codingame/monaco-editor-treemended@>=1.83.5 <1.84.0",
"monaco-editor": "npm:@codingame/monaco-vscode-editor-api@~4.2.1",
"vscode": "npm:@codingame/monaco-vscode-api@~4.2.1",
"vscode-languageclient": "~9.0.1",
"vscode-uri": "~3.0.8",
"vscode-ws-jsonrpc": "~3.3.1",
"monaco-editor-wrapper": "^4.2.0",
"monaco-graphql": "^1.5.1",
"monaco-languageclient": "~7.0.1",
"monaco-languageclient": "~8.3.0",
"openai": "^4.3.0",
"quill": "^1.3.7",
"svelte-carousel": "^1.0.25",
@@ -129,10 +142,6 @@
"svelte-portal": "^2.2.1",
"svelte-tiny-virtual-list": "^2.0.5",
"tailwind-merge": "^1.13.2",
"vscode": "npm:@codingame/monaco-vscode-api@>=1.83.5 <1.84.0",
"vscode-languageclient": "~9.0.1",
"vscode-uri": "~3.0.8",
"vscode-ws-jsonrpc": "~3.1.0",
"windmill-parser-wasm": "^1.286.2",
"windmill-sql-datatype-parser-wasm": "1.305.0",
"y-monaco": "^0.1.4",
@@ -291,6 +300,10 @@
"types": "./package/gen/core/OpenAPI.d.ts",
"default": "./package/gen/core/OpenAPI.js"
},
"./gen": {
"default": "./package/gen/index.js",
"types": "./package/gen/index.d.ts"
},
"./components/DropdownV2.svelte": {
"types": "./package/components/DropdownV2.svelte.d.ts",
"svelte": "./package/components/DropdownV2.svelte",
@@ -377,6 +390,9 @@
"stores": [
"./package/stores.d.ts"
],
"gen": [
"./package/gen/index.d.ts"
],
"components/flows/flowStore": [
"./package/components/flows/flowStore.d.ts"
],
+18 -8
View File
@@ -3,17 +3,27 @@
import { onMount } from 'svelte'
import { editor as meditor } from 'monaco-editor'
import 'monaco-editor/esm/vs/basic-languages/python/python.contribution'
import 'monaco-editor/esm/vs/basic-languages/go/go.contribution'
import 'monaco-editor/esm/vs/basic-languages/shell/shell.contribution'
import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution'
import 'monaco-editor/esm/vs/basic-languages/sql/sql.contribution'
import 'monaco-editor/esm/vs/language/typescript/monaco.contribution'
import '@codingame/monaco-vscode-theme-defaults-default-extension'
import '@codingame/monaco-vscode-json-default-extension'
import '@codingame/monaco-vscode-standalone-json-language-features'
import '@codingame/monaco-vscode-standalone-css-language-features'
import '@codingame/monaco-vscode-standalone-html-language-features'
import '@codingame/monaco-vscode-standalone-typescript-language-features'
import '@codingame/monaco-vscode-typescript-basics-default-extension'
import '@codingame/monaco-vscode-typescript-language-features-default-extension'
import '@codingame/monaco-vscode-go-default-extension'
import '@codingame/monaco-vscode-javascript-default-extension'
import '@codingame/monaco-vscode-powershell-default-extension'
import '@codingame/monaco-vscode-python-default-extension'
import '@codingame/monaco-vscode-shellscript-default-extension'
import '@codingame/monaco-vscode-sql-default-extension'
import { initializeVscode } from './vscode'
import EditorTheme from './EditorTheme.svelte'
import { buildWorkerDefinition } from './build_workers'
import { configureMonacoWorkers } from './build_workers'
buildWorkerDefinition('../../../workers', import.meta.url, false)
configureMonacoWorkers()
const SIDE_BY_SIDE_MIN_WIDTH = 700
+38 -22
View File
@@ -7,23 +7,27 @@
import * as vscode from 'vscode'
import { editor as meditor, languages, KeyCode, KeyMod, type IRange } from 'monaco-editor'
import '@codingame/monaco-vscode-theme-defaults-default-extension'
import '@codingame/monaco-vscode-json-default-extension'
import '@codingame/monaco-vscode-standalone-json-language-features'
import '@codingame/monaco-vscode-standalone-css-language-features'
import '@codingame/monaco-vscode-standalone-html-language-features'
import '@codingame/monaco-vscode-standalone-typescript-language-features'
import '@codingame/monaco-vscode-typescript-basics-default-extension'
import '@codingame/monaco-vscode-typescript-language-features-default-extension'
import '@codingame/monaco-vscode-go-default-extension'
import '@codingame/monaco-vscode-javascript-default-extension'
import '@codingame/monaco-vscode-powershell-default-extension'
import '@codingame/monaco-vscode-python-default-extension'
import '@codingame/monaco-vscode-shellscript-default-extension'
import '@codingame/monaco-vscode-sql-default-extension'
import {
editor as meditor,
languages,
KeyCode,
KeyMod,
Uri as mUri,
type IRange
} from 'monaco-editor'
import 'monaco-editor/esm/vs/basic-languages/python/python.contribution'
import 'monaco-editor/esm/vs/basic-languages/go/go.contribution'
import 'monaco-editor/esm/vs/basic-languages/shell/shell.contribution'
import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution'
import 'monaco-editor/esm/vs/basic-languages/sql/sql.contribution'
import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution'
import 'monaco-editor/esm/vs/basic-languages/powershell/powershell.contribution'
import 'monaco-editor/esm/vs/language/typescript/monaco.contribution'
import 'monaco-editor/esm/vs/basic-languages/css/css.contribution'
RegisteredFileSystemProvider,
registerFileSystemOverlay,
RegisteredMemoryFile
} from '@codingame/monaco-vscode-files-service-override'
import libStdContent from '$lib/es6.d.ts.txt?raw'
import denoFetchContent from '$lib/deno_fetch.d.ts.txt?raw'
@@ -50,7 +54,6 @@
} from '$lib/editorUtils'
import type { Disposable } from 'vscode'
import type { DocumentUri, MessageTransports } from 'vscode-languageclient'
import { buildWorkerDefinition } from './build_workers'
import { workspaceStore } from '$lib/stores'
import { Preview, UserService } from '$lib/gen'
import type { Text } from 'yjs'
@@ -69,6 +72,7 @@
} from '$lib/consts'
import { setupTypeAcquisition } from '$lib/ata/index'
import { initWasm, parseDeps } from '$lib/infer'
import { configureMonacoWorkers } from './build_workers'
// import EditorTheme from './EditorTheme.svelte'
let divEl: HTMLDivElement | null = null
@@ -143,7 +147,7 @@
console.log('uri', uri)
buildWorkerDefinition('../../../workers', import.meta.url, false)
configureMonacoWorkers()
export function getCode(): string {
return editor?.getValue() ?? ''
@@ -765,7 +769,7 @@
if (scriptLang == 'bun' && ata == undefined) {
const addLibraryToRuntime = async (code: string, _path: string) => {
const path = 'file://' + _path
let uri = mUri.parse(path)
let uri = vscode.Uri.parse(path)
console.log('adding library to runtime', path)
languages.typescript.typescriptDefaults.addExtraLib(code, path)
try {
@@ -780,7 +784,7 @@
// if (_path?.startsWith('/')) {
// p = 'file://' + p
// }
let nuri = mUri.parse(p)
let nuri = vscode.Uri.parse(p)
console.log('adding local file', _path, nuri.toString())
if (editor) {
let localModel = meditor.getModel(nuri)
@@ -1023,6 +1027,12 @@
console.log('error initializing services', e)
}
// register the JSON language with Monaco
languages.register({
id: 'typescript',
extensions: ['.ts']
})
// console.log('bef ready')
// console.log('af ready')
@@ -1118,11 +1128,17 @@
moduleResolution: languages.typescript.ModuleResolutionKind.NodeJs
})
const fileSystemProvider = new RegisteredFileSystemProvider(false)
fileSystemProvider.registerFile(
new RegisteredMemoryFile(vscode.Uri.file('/workspace/hello.py'), code)
)
registerFileSystemOverlay(1, fileSystemProvider)
try {
model = meditor.createModel(code, lang, mUri.parse(uri))
model = meditor.createModel(code, lang, vscode.Uri.parse(uri))
} catch (err) {
console.log('model already existed', err)
const nmodel = meditor.getModel(mUri.parse(uri))
const nmodel = meditor.getModel(vscode.Uri.parse(uri))
if (!nmodel) {
throw err
}
@@ -1,5 +1,5 @@
<script lang="ts">
import { editor as meditor } from 'monaco-editor/esm/vs/editor/editor.api'
import { editor as meditor } from 'monaco-editor'
import { onMount } from 'svelte'
import DarkModeObserver from './DarkModeObserver.svelte'
@@ -2,7 +2,6 @@
import { BROWSER } from 'esm-env'
import { editor as meditor } from 'monaco-editor'
import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution'
import { onDestroy, onMount } from 'svelte'
@@ -15,12 +15,21 @@
languages,
type IRange
} from 'monaco-editor'
import 'monaco-editor/esm/vs/basic-languages/sql/sql.contribution'
import 'monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution'
import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution'
import 'monaco-editor/esm/vs/language/json/monaco.contribution'
import 'monaco-editor/esm/vs/basic-languages/css/css.contribution'
import 'monaco-editor/esm/vs/language/css/monaco.contribution'
import '@codingame/monaco-vscode-theme-defaults-default-extension'
import '@codingame/monaco-vscode-json-default-extension'
import '@codingame/monaco-vscode-standalone-json-language-features'
import '@codingame/monaco-vscode-standalone-css-language-features'
import '@codingame/monaco-vscode-standalone-html-language-features'
import '@codingame/monaco-vscode-standalone-typescript-language-features'
import '@codingame/monaco-vscode-typescript-basics-default-extension'
import '@codingame/monaco-vscode-typescript-language-features-default-extension'
import '@codingame/monaco-vscode-go-default-extension'
import '@codingame/monaco-vscode-javascript-default-extension'
import '@codingame/monaco-vscode-powershell-default-extension'
import '@codingame/monaco-vscode-python-default-extension'
import '@codingame/monaco-vscode-shellscript-default-extension'
import '@codingame/monaco-vscode-sql-default-extension'
import { allClasses } from './apps/editor/componentsPanel/cssUtils'
@@ -28,11 +37,11 @@
import libStdContent from '$lib/es6.d.ts.txt?raw'
import domContent from '$lib/dom.d.ts.txt?raw'
import { buildWorkerDefinition } from './build_workers'
import { initializeVscode } from './vscode'
import EditorTheme from './EditorTheme.svelte'
import { tailwindClasses } from './apps/editor/componentsPanel/tailwindUtils'
import { writable } from 'svelte/store'
import { configureMonacoWorkers } from './build_workers'
// import { createConfiguredEditor } from 'vscode/monaco'
// import type { IStandaloneCodeEditor } from 'vscode/vscode/vs/editor/standalone/browser/standaloneCodeEditor'
@@ -59,7 +68,7 @@
const uri = `file:///${hash}.${langToExt(lang)}`
buildWorkerDefinition('../../../workers', import.meta.url, false)
configureMonacoWorkers()
export function getCode(): string {
return editor?.getValue() ?? ''
@@ -13,12 +13,15 @@
import { createEventDispatcher, getContext, onDestroy, onMount } from 'svelte'
import type { AppViewerContext } from './apps/types'
import { writable } from 'svelte/store'
import { buildWorkerDefinition } from './build_workers'
import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution'
import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution'
import 'monaco-editor/esm/vs/language/typescript/monaco.contribution'
import '@codingame/monaco-vscode-standalone-typescript-language-features'
import '@codingame/monaco-vscode-typescript-basics-default-extension'
import '@codingame/monaco-vscode-typescript-language-features-default-extension'
import '@codingame/monaco-vscode-javascript-default-extension'
import { initializeVscode } from './vscode'
import EditorTheme from './EditorTheme.svelte'
import { configureMonacoWorkers } from './build_workers'
export const conf = {
wordPattern:
@@ -384,7 +387,7 @@
const uri = `file:///${hash}.ts`
buildWorkerDefinition('../../../workers', import.meta.url, false)
configureMonacoWorkers()
export function insertAtCursor(code: string): void {
if (editor) {
+5 -72
View File
@@ -1,74 +1,7 @@
import type { Environment } from 'monaco-editor/esm/vs/editor/editor.api.js'
import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'
import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'
import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'
import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'
import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory'
interface MonacoEnvironmentEnhanced extends Environment {
workerOverrideGlobals: WorkerOverrideGlobals
}
type WorkerOverrideGlobals = {
basePath: string
workerPath: string
workerOptions: WorkerOptions
}
export function buildWorkerDefinition(
workerPath: string,
basePath: string,
useModuleWorker: boolean
) {
const monWin = self as Window
const workerOverrideGlobals: WorkerOverrideGlobals = {
basePath: basePath,
workerPath: workerPath,
workerOptions: {
type: useModuleWorker ? 'module' : 'classic'
}
}
if (!monWin.MonacoEnvironment) {
monWin.MonacoEnvironment = {
workerOverrideGlobals: workerOverrideGlobals,
createTrustedTypesPolicy: (_policyName: string) => {
return undefined
}
} as MonacoEnvironmentEnhanced
}
const monEnv = monWin.MonacoEnvironment as MonacoEnvironmentEnhanced
monEnv.workerOverrideGlobals = workerOverrideGlobals
const getWorker = (_: string, label: string) => {
console.log('getWorker: workerId: ' + _ + ' label: ' + label)
switch (label) {
case 'template':
case 'typescript':
case 'javascript':
return new tsWorker()
case 'html':
case 'handlebars':
case 'razor':
return new htmlWorker()
case 'css':
case 'scss':
case 'less':
return new cssWorker()
case 'json':
return new jsonWorker()
case 'graphql':
const workerFilename = `graphql.worker.bundle.js`
const workerPathLocal = `${workerOverrideGlobals.workerPath}/${workerFilename}`
const workerUrl = new URL(workerPathLocal, workerOverrideGlobals.basePath)
return new Worker(workerUrl.href, {
name: label
})
default:
return new editorWorker()
}
}
monWin.MonacoEnvironment.getWorker = getWorker
export const configureMonacoWorkers = () => {
useWorkerFactory({
basePath: '../../../node_modules'
})
}
+111 -105
View File
@@ -1,6 +1,7 @@
import { initServices } from 'monaco-languageclient'
import { LogLevel } from 'vscode/services'
import { editor as meditor } from 'monaco-editor/esm/vs/editor/editor.api'
import { initServices } from 'monaco-languageclient/vscode/services'
import getThemeServiceOverride from '@codingame/monaco-vscode-theme-service-override'
import getTextmateServiceOverride from '@codingame/monaco-vscode-textmate-service-override'
import { editor as meditor } from 'monaco-editor'
export let isInitialized = false
export let isInitializing = false
@@ -12,112 +13,117 @@ export async function initializeVscode() {
try {
// init vscode-api
await initServices({
debugLogging: true,
logLevel: LogLevel.Info
})
meditor.defineTheme('nord', {
base: 'vs-dark',
inherit: true,
rules: [
{
background: '2E3440',
token: ''
serviceConfig: {
userServices: {
...getThemeServiceOverride(),
...getTextmateServiceOverride()
},
{
foreground: '808b9f',
token: 'comment'
},
{
foreground: 'a3be8c',
token: 'string'
},
{
foreground: 'b48ead',
token: 'constant.numeric'
},
{
foreground: '81a1c1',
token: 'constant.language'
},
{
foreground: '81a1c1',
token: 'keyword'
},
{
foreground: '81a1c1',
token: 'storage'
},
{
foreground: '81a1c1',
token: 'storage.type'
},
{
foreground: '8fbcbb',
token: 'entity.name.class'
},
{
foreground: '8fbcbb',
fontStyle: ' bold',
token: 'entity.other.inherited-class'
},
{
foreground: '88c0d0',
token: 'entity.name.function'
},
{
foreground: '81a1c1',
token: 'entity.name.tag'
},
{
foreground: '8fbcbb',
token: 'entity.other.attribute-name'
},
{
foreground: '88c0d0',
token: 'support.function'
},
{
foreground: 'f8f8f0',
background: 'f92672',
token: 'invalid'
},
{
foreground: 'f8f8f0',
background: 'ae81ff',
token: 'invalid.deprecated'
},
{
foreground: 'b48ead',
token: 'constant.color.other.rgb-value'
},
{
foreground: 'ebcb8b',
token: 'constant.character.escape'
},
{
foreground: '8fbcbb',
token: 'variable.other.constant'
}
],
colors: {
'editor.foreground': '#D8DEE9',
'editor.background': '#2E3440',
'editor.selectionBackground': '#434C5ECC',
'editor.lineHighlightBackground': '#3B4252',
'editorCursor.foreground': '#D8DEE9',
'editorWhitespace.foreground': '#434C5ECC'
debugLogging: true
}
})
// meditor.defineTheme('nord', {
// base: 'vs-dark',
// inherit: true,
// rules: [
// {
// background: '2E3440',
// token: ''
// },
// {
// foreground: '808b9f',
// token: 'comment'
// },
// {
// foreground: 'a3be8c',
// token: 'string'
// },
// {
// foreground: 'b48ead',
// token: 'constant.numeric'
// },
// {
// foreground: '81a1c1',
// token: 'constant.language'
// },
// {
// foreground: '81a1c1',
// token: 'keyword'
// },
// {
// foreground: '81a1c1',
// token: 'storage'
// },
// {
// foreground: '81a1c1',
// token: 'storage.type'
// },
// {
// foreground: '8fbcbb',
// token: 'entity.name.class'
// },
// {
// foreground: '8fbcbb',
// fontStyle: ' bold',
// token: 'entity.other.inherited-class'
// },
// {
// foreground: '88c0d0',
// token: 'entity.name.function'
// },
// {
// foreground: '81a1c1',
// token: 'entity.name.tag'
// },
// {
// foreground: '8fbcbb',
// token: 'entity.other.attribute-name'
// },
// {
// foreground: '88c0d0',
// token: 'support.function'
// },
// {
// foreground: 'f8f8f0',
// background: 'f92672',
// token: 'invalid'
// },
// {
// foreground: 'f8f8f0',
// background: 'ae81ff',
// token: 'invalid.deprecated'
// },
// {
// foreground: 'b48ead',
// token: 'constant.color.other.rgb-value'
// },
// {
// foreground: 'ebcb8b',
// token: 'constant.character.escape'
// },
// {
// foreground: '8fbcbb',
// token: 'variable.other.constant'
// }
// ],
// colors: {
// 'editor.foreground': '#D8DEE9',
// 'editor.background': '#2E3440',
// 'editor.selectionBackground': '#434C5ECC',
// 'editor.lineHighlightBackground': '#3B4252',
// 'editorCursor.foreground': '#D8DEE9',
// 'editorWhitespace.foreground': '#434C5ECC'
// }
// })
meditor.defineTheme('myTheme', {
base: 'vs',
inherit: true,
rules: [],
colors: {
'editorLineNumber.foreground': '#999',
'editorGutter.background': '#F9FAFB'
}
})
// meditor.defineTheme('myTheme', {
// base: 'vs',
// inherit: true,
// rules: [],
// colors: {
// 'editorLineNumber.foreground': '#999',
// 'editorGutter.background': '#F9FAFB'
// }
// })
if (document.documentElement.classList.contains('dark')) {
meditor.setTheme('nord')
+2 -1
View File
@@ -1,4 +1,5 @@
import { languages } from 'monaco-editor/esm/vs/editor/editor.api'
import { ShowLightbulbIconMode } from 'vscode/vscode/vs/editor/common/config/editorOptions'
export function editorConfig(
code: string,
lang: string,
@@ -21,7 +22,7 @@ export function editorConfig(
enabled: false
},
lightbulb: {
enabled: true
enabled: ShowLightbulbIconMode.On
},
suggest: {
showKeywords: true
+1 -1
View File
@@ -13,7 +13,7 @@ export async function getUserExt(workspace: string): Promise<UserExt | undefined
function mapUserToUserExt(user: User): UserExt {
return {
...user,
groups: user.groups!,
groups: user.groups ?? [],
pgroups: user.groups!.map((x) => `g/${x}`)
}
}
+2 -1
View File
@@ -2,6 +2,7 @@ import { sveltekit } from '@sveltejs/kit/vite'
import { readFileSync } from 'fs'
import { fileURLToPath } from 'url'
import circleDependency from 'vite-plugin-circular-dependency'
// import importMetaUrlPlugin from '@codingame/esbuild-import-meta-url-plugin'
const file = fileURLToPath(new URL('package.json', import.meta.url))
const json = readFileSync(file, 'utf8')
@@ -43,7 +44,7 @@ const config = {
alias: {
path: 'path-browserify'
},
dedupe: ['monaco-editor', 'vscode']
dedupe: ['vscode']
},
assetsInclude: ['**/*.wasm']
}