refactor(server): keep three suppressed lines whole so Prettier cannot move them past their directive

Prettier wraps the emoji regex onto the line after its declaration and
spreads two any-cast lines in the plugin tests over several lines, which
would leave the casts outside the eslint-disable-next-line above them. The
regex directive now sits on the line right before the literal, the dev-link
controller takes never instead of any for the collaborators it ignores, and
the supervisor test reaches the private kill/onExit through one cast.
This commit is contained in:
Maurice
2026-10-10 20:50:50 +02:00
parent 5c198f2848
commit 97f4784790
4 changed files with 7 additions and 5 deletions
+1 -1
View File
@@ -10,7 +10,7 @@
"no-empty": 6
},
"suppressed": {
"@typescript-eslint/no-explicit-any": 128,
"@typescript-eslint/no-explicit-any": 124,
"@typescript-eslint/no-require-imports": 20,
"no-control-regex": 7,
"no-misleading-character-class": 1
+3 -2
View File
@@ -18,8 +18,9 @@
// escape is an intentional, independent code point to delete — the
// no-misleading-character-class rule assumes a class means to combine them, which
// is the opposite of what we want here.
// eslint-disable-next-line no-misleading-character-class
const EMOJI_RE = /\p{Emoji_Presentation}|\p{Emoji_Modifier}|\p{Regional_Indicator}|[\u200D\uFE00-\uFE0F\u20E3\u{E0020}-\u{E007F}]/gu;
const EMOJI_RE =
// eslint-disable-next-line no-misleading-character-class
/\p{Emoji_Presentation}|\p{Emoji_Modifier}|\p{Regional_Indicator}|[\u200D\uFE00-\uFE0F\u20E3\u{E0020}-\u{E007F}]/gu;
/** Remove emojis from a display string and tidy the whitespace they leave behind. */
export function stripEmoji(s: string): string {
@@ -11,7 +11,7 @@ import { PluginConsentRequired } from '../../../src/nest/plugins/plugin-runtime.
import type { RuntimeEnvService } from '../../../src/nest/app-config/runtime-env.service';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const ctrl = (runtime: any) => new PluginsController({} as any, runtime, {} as any, { isManaged: () => false } as unknown as RuntimeEnvService);
const ctrl = (runtime: any) => new PluginsController({} as never, runtime, {} as never, { isManaged: () => false } as unknown as RuntimeEnvService);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const status = async (p: Promise<any>): Promise<number> =>
p.then(() => -1, (e) => (e instanceof HttpException ? e.getStatus() : 0));
@@ -72,7 +72,8 @@ describe('supervisor shutdownAll is a clean stop, not a crash', () => {
(s as any).running.set('p', sup);
// kill() simulates the child actually exiting during shutdown → fires onExit
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(s as any).kill = vi.fn(async (x: any) => { (s as any).onExit(x, 0, 'SIGTERM'); });
const internals = s as any;
internals.kill = vi.fn(async (x: unknown) => { internals.onExit(x, 0, 'SIGTERM'); });
await s.shutdownAll();
expect(sup.status).toBe('stopped'); // stopped before kill
// onExit took the early-return path — no crash bookkeeping written to the DB hooks