diff --git a/.oxlintrc.json b/.oxlintrc.json index e371e7e5fbd9..6f646aebe7f1 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -64,7 +64,7 @@ "node/no-exports-assign": "error", "eslint-plugin-unicorn/prefer-set-size": "error", "oxc/no-accumulating-spread": "error", - "oxc/no-async-endpoint-handlers": "off", + "oxc/no-async-endpoint-handlers": "error", "oxc/no-map-spread": "error", "promise/no-callback-in-promise": "error", "promise/no-multiple-resolved": "error", @@ -228,6 +228,12 @@ "**/node_modules/**" ], "overrides": [ + { + "files": ["extensions/browser/src/browser/routes/*.ts"], + "rules": { + "oxc/no-async-endpoint-handlers": "off" + } + }, { "files": [ "packages/markdown-core/**/*.ts", diff --git a/extensions/browser/src/browser/routes/dispatcher.abort.test.ts b/extensions/browser/src/browser/routes/dispatcher.abort.test.ts index 83eb72469829..7d429d2fc05e 100644 --- a/extensions/browser/src/browser/routes/dispatcher.abort.test.ts +++ b/extensions/browser/src/browser/routes/dispatcher.abort.test.ts @@ -7,55 +7,40 @@ let createBrowserRouteDispatcher: typeof import("./dispatcher.js").createBrowser describe("browser route dispatcher (abort)", () => { beforeAll(async () => { vi.doMock("./index.js", () => { - const asyncRoute = ( - handler: (req: Req, res: Res) => void | Promise, - ): ((req: Req, res: Res) => void | Promise) => { - return (req, res) => handler(req, res); - }; return { registerBrowserRoutes(app: { get: (path: string, handler: unknown) => void }) { app.get( "/slow", - asyncRoute( - async (req: { signal?: AbortSignal }, res: { json: (body: unknown) => void }) => { - const signal = req.signal; - await new Promise((resolve, reject) => { - if (signal?.aborted) { - reject( - toLintErrorObject( - signal.reason ?? new Error("aborted"), - "Non-Error rejection", - ), - ); - return; - } - const onAbort = () => - reject( - toLintErrorObject( - signal?.reason ?? new Error("aborted"), - "Non-Error rejection", - ), - ); - signal?.addEventListener("abort", onAbort, { once: true }); - queueMicrotask(() => { - signal?.removeEventListener("abort", onAbort); - resolve(); - }); + async (req: { signal?: AbortSignal }, res: { json: (body: unknown) => void }) => { + const signal = req.signal; + await new Promise((resolve, reject) => { + if (signal?.aborted) { + reject( + toLintErrorObject(signal.reason ?? new Error("aborted"), "Non-Error rejection"), + ); + return; + } + const onAbort = () => + reject( + toLintErrorObject( + signal?.reason ?? new Error("aborted"), + "Non-Error rejection", + ), + ); + signal?.addEventListener("abort", onAbort, { once: true }); + queueMicrotask(() => { + signal?.removeEventListener("abort", onAbort); + resolve(); }); - res.json({ ok: true }); - }, - ), + }); + res.json({ ok: true }); + }, ); app.get( "/echo/:id", - asyncRoute( - ( - req: { params?: Record }, - res: { json: (body: unknown) => void }, - ) => { - res.json({ id: req.params?.id ?? null }); - }, - ), + (req: { params?: Record }, res: { json: (body: unknown) => void }) => { + res.json({ id: req.params?.id ?? null }); + }, ); }, };