Merge pull request #13 from FatttSnake/refactor/editor
Fix "net::ERR_INSUFFICIENT_RESOURCES" exception
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1100,7 +1100,7 @@ const Base = () => {
|
||||
<Playground.CodeEditor
|
||||
files={editingFiles[editingBaseId]}
|
||||
selectedFileName={editingFileName}
|
||||
onSelectedFileChange={() => {}}
|
||||
onSelectedFileChange={setEditingFileName}
|
||||
onChangeFileContent={handleOnChangeFileContent}
|
||||
showFileSelector={false}
|
||||
tsconfig={tsconfig}
|
||||
|
||||
@@ -1044,7 +1044,7 @@ const Template = () => {
|
||||
<Playground.CodeEditor
|
||||
files={editingFiles[editingTemplateId]}
|
||||
selectedFileName={editingFileName}
|
||||
onSelectedFileChange={() => {}}
|
||||
onSelectedFileChange={setEditingFileName}
|
||||
onChangeFileContent={handleOnChangeFileContent}
|
||||
showFileSelector={false}
|
||||
tsconfig={tsconfig}
|
||||
|
||||
Reference in New Issue
Block a user