fix(13-02): eliminate all ESLint violations — pnpm lint exits 0

- eslint.config.js: disable React Compiler rules (v7 flat.recommended enables
  them; codebase does not use the Compiler); add e2e/ to disableTypeChecked
  block; promote exhaustive-deps to error
- API broker: remove redundant as-casts (outboxWorker, poller, reminderScheduler,
  expand, sync, vevent, spike); add targeted ical.js no-unsafe-assignment/argument
  disables with justifying comments inside try blocks
- API routes/sse.ts: fix no-misused-promises on async writeSSE callback with
  void+IIFE+catch pattern
- API routes/lists.ts: let → const for updateValues
- API tests: remove unused imports (beforeEach, eq, vi); rename unused vars
  with _ prefix; remove unused lastActiveId assignment
- PWA components: void navigate() and void queryClient.invalidateQueries() on
  all fire-and-forget call sites; fix CalendarShell explicit-type-casts;
  Couldn't → HTML entity
- PWA test files: as unknown as Response for partial mock objects; string | null
  type annotation on mockLastSyncedUid; remove async from test callbacks without
  await; act(() => {}) not await act(async () => {}) for sync ops
- sw.ts: restructure Notification.data?.url access as let+if so disable
  comments land on the exact violation lines; void self.skipWaiting()
This commit is contained in:
Lucas Berger
2026-06-11 20:23:38 -04:00
parent 39e26561cf
commit 03e953158a
31 changed files with 176 additions and 121 deletions
+16 -16
View File
@@ -372,7 +372,7 @@ async function dispatchRow(row: OutboxRow): Promise<DispatchResult> {
rruleFromPayload,
fields.recurrenceUntil,
fields.recurrenceCount,
fields.allDay as boolean,
fields.allDay,
)
: undefined
} else if (preservedRrule) {
@@ -383,7 +383,7 @@ async function dispatchRow(row: OutboxRow): Promise<DispatchResult> {
strippedPreset,
fields.recurrenceUntil,
fields.recurrenceCount,
fields.allDay as boolean,
fields.allDay,
)
} else {
finalRruleString = preservedRrule
@@ -394,12 +394,12 @@ async function dispatchRow(row: OutboxRow): Promise<DispatchResult> {
const { icsString } = buildVeventString({
uid: row.uid,
summary: fields.title as string,
allDay: fields.allDay as boolean,
dtstart: fields.allDay ? (fields.start as string) : new Date(fields.start as string),
dtend: fields.allDay ? (fields.end as string) : new Date(fields.end as string),
location: fields.location as string | undefined,
description: fields.description as string | undefined,
summary: fields.title,
allDay: fields.allDay,
dtstart: fields.allDay ? fields.start : new Date(fields.start),
dtend: fields.allDay ? fields.end : new Date(fields.end),
location: fields.location,
description: fields.description,
rruleString: finalRruleString,
})
@@ -463,7 +463,7 @@ async function dispatchRow(row: OutboxRow): Promise<DispatchResult> {
rruleFromPayload,
fields.recurrenceUntil,
fields.recurrenceCount,
fields.allDay as boolean,
fields.allDay,
)
: undefined
} else if (preservedRrule) {
@@ -474,7 +474,7 @@ async function dispatchRow(row: OutboxRow): Promise<DispatchResult> {
strippedPreset,
fields.recurrenceUntil,
fields.recurrenceCount,
fields.allDay as boolean,
fields.allDay,
)
} else {
finalRruleString = preservedRrule
@@ -485,12 +485,12 @@ async function dispatchRow(row: OutboxRow): Promise<DispatchResult> {
const { icsString } = buildVeventString({
uid: row.uid,
summary: fields.title as string,
allDay: fields.allDay as boolean,
dtstart: fields.allDay ? (fields.start as string) : new Date(fields.start as string),
dtend: fields.allDay ? (fields.end as string) : new Date(fields.end as string),
location: fields.location as string | undefined,
description: fields.description as string | undefined,
summary: fields.title,
allDay: fields.allDay,
dtstart: fields.allDay ? fields.start : new Date(fields.start),
dtend: fields.allDay ? fields.end : new Date(fields.end),
location: fields.location,
description: fields.description,
rruleString: finalRruleString,
})
// Build a minimal DAVCalendar for the write wrapper (only url is needed)