@@ -7,7 +7,7 @@ import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker"
77import tsWorker from "monaco-editor/esm/vs/language/typescript/ts.worker?worker"
88import { configureMonacoPrettier } from "monaco-prettier"
99import { createHighlighter } from "shiki"
10- import ts from "typescript"
10+ import * as ts from "typescript"
1111import { subscribe } from "valtio"
1212
1313import { appConfig } from "@/config"
@@ -32,10 +32,10 @@ self.MonacoEnvironment = {
3232}
3333
3434// # Configure TypeScript compiler options
35- monaco . languages . typescript . typescriptDefaults . setCompilerOptions ( {
36- target : monaco . languages . typescript . ScriptTarget . Latest ,
37- moduleResolution : monaco . languages . typescript . ModuleResolutionKind . NodeJs ,
38- module : monaco . languages . typescript . ModuleKind . CommonJS ,
35+ monaco . typescript . typescriptDefaults . setCompilerOptions ( {
36+ target : monaco . typescript . ScriptTarget . Latest ,
37+ moduleResolution : monaco . typescript . ModuleResolutionKind . NodeJs ,
38+ module : monaco . typescript . ModuleKind . CommonJS ,
3939 moduleDetection : 3 , // Allow automations to have the same var names without TS complaining. https://github.com/microsoft/monaco-editor/issues/2976
4040 allowNonTsExtensions : true ,
4141 allowSyntheticDefaultImports : true ,
@@ -85,7 +85,7 @@ const unsubscribe = subscribe(store.apiStatus, () => {
8585 const editorSupport = store . editorSupport
8686 const header = editorSupport . automationHeader
8787
88- monaco . languages . typescript . typescriptDefaults . addExtraLib (
88+ monaco . typescript . typescriptDefaults . addExtraLib (
8989 `${ header } ` ,
9090 "file:///globals.ts" ,
9191 )
@@ -116,10 +116,7 @@ const unsubscribe = subscribe(store.apiStatus, () => {
116116 break
117117 }
118118
119- monaco . languages . typescript . typescriptDefaults . addExtraLib (
120- code ,
121- filePath ,
122- )
119+ monaco . typescript . typescriptDefaults . addExtraLib ( code , filePath )
123120 } ,
124121 } ,
125122 fetcher : async ( url ) => {
@@ -158,6 +155,17 @@ const unsubscribe = subscribe(store.apiStatus, () => {
158155 }
159156} )
160157
158+ // Prevent Monaco from auto-creating models when navigating to type definitions
159+ // This is a workaround for https://github.com/microsoft/monaco-editor/issues/2813
160+ const originalCreateModel = monaco . editor . createModel
161+ monaco . editor . createModel = function ( value , language , uri , ...args ) {
162+ // If Monaco tries to create a model for a file we've already added as extraLib, skip it
163+ if ( uri ?. path . includes ( "node_modules" ) ) {
164+ return null as any
165+ }
166+ return originalCreateModel . call ( this , value , language , uri , ...args )
167+ }
168+
161169// Load Monaco via the loader
162170loader . config ( { monaco } )
163171loader . init ( )
0 commit comments