Merge pull request #13 from FatttSnake/refactor/editor

Fix "net::ERR_INSUFFICIENT_RESOURCES" exception
This commit is contained in:
2024-09-19 10:00:36 +08:00
committed by GitHub
4 changed files with 31 additions and 5 deletions

View File

@@ -36,6 +36,31 @@ export const createATA = async (): Promise<TypeHelper> => {
// @ts-expect-error
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const ts = await import('https://esm.sh/typescript@5.3.3')
const maxConcurrentRequests = 50
let activeRequests = 0
const requestQueue: Array<() => void> = []
const fetchWithQueue = (input: RequestInfo | URL, init?: RequestInit | undefined) =>
new Promise<Response>((resolve, reject) => {
const attemptRequest = () => {
if (activeRequests < maxConcurrentRequests) {
activeRequests++
fetch(input, init)
.then((response) => resolve(response))
.catch((error) => reject(error))
.finally(() => {
activeRequests--
if (requestQueue.length > 0) {
requestQueue.shift()?.()
}
})
} else {
requestQueue.push(attemptRequest)
}
}
attemptRequest()
})
const ata = setupTypeAcquisition({
projectName: 'monaco-ts',
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
@@ -43,7 +68,7 @@ export const createATA = async (): Promise<TypeHelper> => {
logger: console,
fetcher: (input, init) => {
try {
return fetch(input, init)
return fetchWithQueue(input, init)
} catch (error) {
console.error('Error fetching data:', error)
}
@@ -92,6 +117,7 @@ export const createATA = async (): Promise<TypeHelper> => {
}
return {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
acquireType,
addListener,
removeListener,

View File

@@ -12,8 +12,8 @@ export const useEditor = () => {
const selection = input.options ? input.options.selection : null
if (selection) {
if (
typeof selection.endLineNumber === 'number' &&
typeof selection.endColumn === 'number'
typeof selection?.endLineNumber === 'number' &&
typeof selection?.endColumn === 'number'
) {
editor.setSelection(selection)
editor.revealRangeInCenter(selection, ScrollType.Immediate)

View File

@@ -1100,7 +1100,7 @@ const Base = () => {
<Playground.CodeEditor
files={editingFiles[editingBaseId]}
selectedFileName={editingFileName}
onSelectedFileChange={() => {}}
onSelectedFileChange={setEditingFileName}
onChangeFileContent={handleOnChangeFileContent}
showFileSelector={false}
tsconfig={tsconfig}

View File

@@ -1044,7 +1044,7 @@ const Template = () => {
<Playground.CodeEditor
files={editingFiles[editingTemplateId]}
selectedFileName={editingFileName}
onSelectedFileChange={() => {}}
onSelectedFileChange={setEditingFileName}
onChangeFileContent={handleOnChangeFileContent}
showFileSelector={false}
tsconfig={tsconfig}