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:
@@ -86,12 +86,14 @@ export async function syncCalendar(
|
||||
|
||||
let parsed: ReturnType<typeof ICAL.parse>
|
||||
try {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- ical.js parse() returns 'any'; result is only passed to ICAL.Component which accepts it
|
||||
parsed = ICAL.parse(obj.data as string)
|
||||
} catch {
|
||||
// Malformed VCALENDAR — skip but do not crash the sync
|
||||
continue
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ical.js parse() output is 'any'; ICAL.Component is the correct consumer of this value
|
||||
const comp = new ICAL.Component(parsed)
|
||||
const vevent = comp.getFirstSubcomponent('vevent')
|
||||
if (!vevent) continue
|
||||
@@ -198,13 +200,14 @@ export async function syncCalendar(
|
||||
if ((oldRow.allDay ? true : false) !== allDay) changedFields.push('allDay')
|
||||
|
||||
// Compare title (SUMMARY)
|
||||
const oldTitle = (oldRow.title ?? null) as string | null
|
||||
const oldTitle = oldRow.title ?? null
|
||||
if (oldTitle !== titleValue) changedFields.push('title')
|
||||
|
||||
// Compare location — extract from old rawVevent for comparison
|
||||
let oldLocation: string | null = null
|
||||
if (oldRow.rawVevent) {
|
||||
try {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- ical.js parse() returns 'any'; ICAL.Component is the correct consumer of this value
|
||||
const oldComp = new ICAL.Component(ICAL.parse(oldRow.rawVevent))
|
||||
const oldVevent = oldComp.getFirstSubcomponent('vevent')
|
||||
if (oldVevent) {
|
||||
|
||||
Reference in New Issue
Block a user