simplify worker loading logic
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory'
|
||||
import { initEnhancedMonacoEnvironment } from 'monaco-languageclient/vscode/services'
|
||||
|
||||
// import cssWorker from 'monaco-editor-wrapper/workers/module/css?worker&url'
|
||||
// import htmlWorker from 'monaco-editor-wrapper/workers/module/html?worker&url'
|
||||
@@ -6,50 +6,56 @@ import { useWorkerFactory } from 'monaco-editor-wrapper/workerFactory'
|
||||
// import editorWorker from 'monaco-editor-wrapper/workers/module/editor?worker&url'
|
||||
|
||||
export function buildWorkerDefinition() {
|
||||
useWorkerFactory({
|
||||
workerOverrides: {
|
||||
ignoreMapping: true,
|
||||
workerLoaders: {
|
||||
editorWorkerService: () => {
|
||||
return new Worker(
|
||||
new URL('monaco-editor-wrapper/workers/module/editor', import.meta.url),
|
||||
{
|
||||
type: 'module'
|
||||
}
|
||||
)
|
||||
},
|
||||
javascript: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/ts', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
typescript: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/ts', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
json: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/json', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
html: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/html', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
css: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/css', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
graphql: () => {
|
||||
console.log('Creating graphql worker')
|
||||
return new Worker(new URL(`./graphql.worker.bundle.js`, import.meta.url), {
|
||||
name: 'graphql'
|
||||
})
|
||||
}
|
||||
const envEnhanced = initEnhancedMonacoEnvironment()
|
||||
|
||||
const getWorker = (moduleId: string, label: string) => {
|
||||
console.log(`getWorker: moduleId: ${moduleId} label: ${label}`)
|
||||
|
||||
let selector = label
|
||||
let workerLoaders = {
|
||||
editorWorkerService: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/editor', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
javascript: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/ts', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
typescript: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/ts', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
json: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/json', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
html: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/html', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
css: () => {
|
||||
return new Worker(new URL('monaco-editor-wrapper/workers/module/css', import.meta.url), {
|
||||
type: 'module'
|
||||
})
|
||||
},
|
||||
graphql: () => {
|
||||
console.log('Creating graphql worker')
|
||||
return new Worker(new URL(`./graphql.worker.bundle.js`, import.meta.url), {
|
||||
name: 'graphql'
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
const workerFunc = workerLoaders[selector]
|
||||
if (workerFunc !== undefined) {
|
||||
return workerFunc()
|
||||
} else {
|
||||
throw new Error(`Unimplemented worker ${label} (${moduleId})`)
|
||||
}
|
||||
}
|
||||
envEnhanced.getWorker = getWorker
|
||||
}
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
// import EditableSchemaWrapper from '$lib/components/schema/EditableSchemaWrapper.svelte'
|
||||
|
||||
// import FlowBuilder from '$lib/components/FlowBuilder.svelte'
|
||||
import ScriptBuilder from '$lib/components/ScriptBuilder.svelte'
|
||||
// import ScriptBuilder from '$lib/components/ScriptBuilder.svelte'
|
||||
import ScriptEditor from '$lib/components/ScriptEditor.svelte'
|
||||
// import type { OpenFlow } from '$lib/gen'
|
||||
// import { writable, type Writable } from 'svelte/store'
|
||||
|
||||
@@ -50,7 +51,7 @@
|
||||
}}
|
||||
/> -->
|
||||
|
||||
<ScriptBuilder
|
||||
<!-- <ScriptBuilder
|
||||
script={{
|
||||
summary: 'foo',
|
||||
path: 'u/admin/foo',
|
||||
@@ -58,4 +59,12 @@
|
||||
language: 'python3',
|
||||
content: 'print("foo")'
|
||||
}}
|
||||
/>
|
||||
/> -->
|
||||
|
||||
<!-- path: "/path/to/script",
|
||||
code: "console.log('Hello, world!');",
|
||||
lang: "bun",
|
||||
tag: "", -->
|
||||
<div class="h-screen">
|
||||
<ScriptEditor path="/path/to/script" code="console.log('Hello, world!');" lang="bun" tag="" />
|
||||
</div>
|
||||
|
||||
@@ -57,6 +57,9 @@ const config = {
|
||||
},
|
||||
dedupe: ['vscode', 'monaco-editor']
|
||||
},
|
||||
worker: {
|
||||
format: 'es'
|
||||
},
|
||||
assetsInclude: ['**/*.wasm']
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user