fix: add missing each-block keys (svelte/require-each-key)

Fixed all 27 remaining instances across 19 files. Keys used:
- Object ID fields where available (e.g. account_id_random, event_file_id)
- index for logger lists with no reliable unique key
- Property name for Object.entries() loops
This commit is contained in:
Scott Idem
2026-03-06 17:54:50 -05:00
parent dd5cf9b63b
commit 48d5fe8995
19 changed files with 163 additions and 163 deletions

View File

@@ -221,7 +221,7 @@
{ key: 'novi_trusted_li', label: 'Novi Trusted', color: 'text-warning-500' }, { key: 'novi_trusted_li', label: 'Novi Trusted', color: 'text-warning-500' },
{ key: 'novi_jitsi_mod_li', label: 'Jitsi Moderators', color: 'text-primary-500' }, { key: 'novi_jitsi_mod_li', label: 'Jitsi Moderators', color: 'text-primary-500' },
{ key: 'novi_idaa_group_guid_li', label: 'Member Group GUIDs', color: 'text-secondary-500' } { key: 'novi_idaa_group_guid_li', label: 'Member Group GUIDs', color: 'text-secondary-500' }
] as list} ] as list (list.key)}
<div class="space-y-2 p-3 bg-surface-500/5 rounded-lg"> <div class="space-y-2 p-3 bg-surface-500/5 rounded-lg">
<header class="flex justify-between items-center"> <header class="flex justify-between items-center">
<span class="text-[10px] font-black uppercase tracking-wider {list.color}">{list.label}</span> <span class="text-[10px] font-black uppercase tracking-wider {list.color}">{list.label}</span>

View File

@@ -415,7 +415,7 @@
<th>Hash</th> <th>Hash</th>
</tr> </tr>
</thead> </thead>
{#each input_file_list_processed as file_list_item, file_index} {#each input_file_list_processed as file_list_item, file_index (file_index)}
<tbody> <tbody>
<tr> <tr>
<td class="file_remove"> <td class="file_remove">

View File

@@ -355,7 +355,7 @@
<th>Hash</th> <th>Hash</th>
</tr> </tr>
</thead> </thead>
{#each processed_file_list as file_list_item, file_index} {#each processed_file_list as file_list_item, file_index (file_index)}
<tbody> <tbody>
<tr> <tr>
<td class="file_remove"> <td class="file_remove">

View File

@@ -127,7 +127,7 @@
<ol class="list-decimal list-inside"> <ol class="list-decimal list-inside">
{#each [...$lq__hosted_file_obj_li] {#each [...$lq__hosted_file_obj_li]
.reverse() .reverse()
.slice(0, max_file_count) as hosted_file_obj} .slice(0, max_file_count) as hosted_file_obj (hosted_file_obj.hosted_file_id)}
<li> <li>
<button <button
type="button" type="button"

View File

@@ -34,7 +34,7 @@
<tr> <tr>
{#if obj != null && typeof obj == 'object'} {#if obj != null && typeof obj == 'object'}
{#each Object.entries(obj) as [obj_prop_name, obj_prop_value]} {#each Object.entries(obj) as [obj_prop_name, obj_prop_value] (obj_prop_name)}
<!-- NEED TO ADD A CHECK IF: <!-- NEED TO ADD A CHECK IF:
NOTE and WARNING: NOTE and WARNING:

View File

@@ -138,7 +138,7 @@
</h3> </h3>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{#each filtered_li as acct} {#each filtered_li as acct (acct.account_id_random)}
<div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group relative"> <div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group relative">
<div class="absolute top-4 right-4 flex gap-1"> <div class="absolute top-4 right-4 flex gap-1">
{#if acct.hide} {#if acct.hide}

View File

@@ -131,7 +131,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{#each log_li as log} {#each log_li as log, index (index)}
<tr class="transition-colors text-sm"> <tr class="transition-colors text-sm">
<!-- Date/Time --> <!-- Date/Time -->
<td class="whitespace-nowrap"> <td class="whitespace-nowrap">

View File

@@ -121,7 +121,7 @@
</h3> </h3>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{#each filtered_li as addr} {#each filtered_li as addr (addr.address_id_random)}
<div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group relative"> <div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group relative">
<div class="absolute top-4 right-4"> <div class="absolute top-4 right-4">
<span class="badge {addr.enable ? 'variant-filled-success' : 'variant-filled-error'} text-[8px] uppercase font-bold shadow-sm"> <span class="badge {addr.enable ? 'variant-filled-success' : 'variant-filled-error'} text-[8px] uppercase font-bold shadow-sm">

View File

@@ -74,7 +74,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{#each $lq_kv__person_obj_li as person_obj} {#each $lq_kv__person_obj_li as person_obj (person_obj.person_id_random)}
<tr class:dim={person_obj?.hide}> <tr class:dim={person_obj?.hide}>
<td class="px-4 py-2"> <td class="px-4 py-2">
<span class="fas fa-user"></span> <span class="fas fa-user"></span>

View File

@@ -121,7 +121,7 @@
</h3> </h3>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{#each filtered_li as con} {#each filtered_li as con (con.contact_id_random)}
<div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group relative"> <div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group relative">
<div class="absolute top-4 right-4"> <div class="absolute top-4 right-4">
<span class="badge {con.enable ? 'variant-filled-success' : 'variant-filled-error'} text-[8px] uppercase font-bold shadow-sm"> <span class="badge {con.enable ? 'variant-filled-success' : 'variant-filled-error'} text-[8px] uppercase font-bold shadow-sm">

View File

@@ -101,7 +101,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{#each lookups.countries as c} {#each lookups.countries as c (c.alpha_2_code)}
<tr class="transition-colors"> <tr class="transition-colors">
<td class="font-bold">{c.name || c.english_short_name}</td> <td class="font-bold">{c.name || c.english_short_name}</td>
<td class="text-center"><span class="badge variant-soft-surface font-mono text-primary-500">{c.alpha_2_code}</span></td> <td class="text-center"><span class="badge variant-soft-surface font-mono text-primary-500">{c.alpha_2_code}</span></td>
@@ -130,7 +130,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{#each lookups.subdivisions as s} {#each lookups.subdivisions as s, i (i)}
<tr class="transition-colors"> <tr class="transition-colors">
<td class="opacity-60">{s.country_alpha_2_code}</td> <td class="opacity-60">{s.country_alpha_2_code}</td>
<td class="font-bold">{s.name}</td> <td class="font-bold">{s.name}</td>
@@ -169,7 +169,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{#each lookups.time_zones as tz} {#each lookups.time_zones as tz (tz.name)}
<tr class="transition-colors"> <tr class="transition-colors">
<td class="font-bold">{tz.name}</td> <td class="font-bold">{tz.name}</td>
<td class="text-right"><span class="badge variant-soft-surface font-mono">{tz.offset_seconds / 3600}h</span></td> <td class="text-right"><span class="badge variant-soft-surface font-mono">{tz.offset_seconds / 3600}h</span></td>

View File

@@ -289,7 +289,7 @@
<p class="text-center py-4 italic opacity-60 border border-dashed border-surface-500/30">No unlinked user accounts found.</p> <p class="text-center py-4 italic opacity-60 border border-dashed border-surface-500/30">No unlinked user accounts found.</p>
{:else} {:else}
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2"> <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2">
{#each available_users as user} {#each available_users as user (user.user_id)}
<button <button
class="card p-3 variant-soft-primary hover:variant-filled-primary text-left transition-all flex flex-col gap-1" class="card p-3 variant-soft-primary hover:variant-filled-primary text-left transition-all flex flex-col gap-1"
onclick={() => handle_link_user(user.user_id)} onclick={() => handle_link_user(user.user_id)}
@@ -335,7 +335,7 @@
<p class="text-sm italic opacity-50">No related events found.</p> <p class="text-sm italic opacity-50">No related events found.</p>
{:else} {:else}
<div class="space-y-2"> <div class="space-y-2">
{#each related_events as ev} {#each related_events as ev (ev.event_id)}
<a href="/events/{ev.event_id}" class="card p-3 variant-soft flex flex-col gap-1 hover:variant-soft-primary transition-all"> <a href="/events/{ev.event_id}" class="card p-3 variant-soft flex flex-col gap-1 hover:variant-soft-primary transition-all">
<span class="font-bold text-sm">{ev.name}</span> <span class="font-bold text-sm">{ev.name}</span>
<span class="text-[10px] opacity-60">{new Date(ev.start_datetime).toLocaleDateString()}</span> <span class="text-[10px] opacity-60">{new Date(ev.start_datetime).toLocaleDateString()}</span>
@@ -356,7 +356,7 @@
<p class="text-sm italic opacity-50">No related posts found.</p> <p class="text-sm italic opacity-50">No related posts found.</p>
{:else} {:else}
<div class="space-y-2"> <div class="space-y-2">
{#each related_posts as post} {#each related_posts as post (post.post_id)}
<a href="/idaa/bb/{post.post_id}" class="card p-3 variant-soft flex flex-col gap-1 hover:variant-soft-primary transition-all"> <a href="/idaa/bb/{post.post_id}" class="card p-3 variant-soft flex flex-col gap-1 hover:variant-soft-primary transition-all">
<span class="font-bold text-sm">{post.title}</span> <span class="font-bold text-sm">{post.title}</span>
<div class="flex justify-between items-center text-[10px] opacity-60"> <div class="flex justify-between items-center text-[10px] opacity-60">
@@ -380,7 +380,7 @@
<p class="text-sm italic opacity-50">No recent activity logs.</p> <p class="text-sm italic opacity-50">No recent activity logs.</p>
{:else} {:else}
<div class="space-y-2"> <div class="space-y-2">
{#each related_activity_logs as log} {#each related_activity_logs as log, index (index)}
<div class="card p-3 variant-soft flex flex-col gap-1"> <div class="card p-3 variant-soft flex flex-col gap-1">
<div class="flex justify-between items-start gap-2"> <div class="flex justify-between items-start gap-2">
<span class="badge variant-filled-surface text-[9px] uppercase tracking-tighter">{log.action}</span> <span class="badge variant-filled-surface text-[9px] uppercase tracking-tighter">{log.action}</span>

View File

@@ -141,7 +141,7 @@
</h3> </h3>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{#each filtered_li as site} {#each filtered_li as site (site.site_id_random)}
<div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group relative"> <div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group relative">
<div class="absolute top-4 right-4 flex gap-1"> <div class="absolute top-4 right-4 flex gap-1">
{#if site.hide} {#if site.hide}

View File

@@ -207,7 +207,7 @@
<p class="text-sm opacity-60 text-center py-8 bg-surface-500/5 rounded-lg border-2 border-dashed border-surface-500/20">No domains configured.</p> <p class="text-sm opacity-60 text-center py-8 bg-surface-500/5 rounded-lg border-2 border-dashed border-surface-500/20">No domains configured.</p>
{:else} {:else}
<div class="space-y-3"> <div class="space-y-3">
{#each domain_li as dom} {#each domain_li as dom (dom.site_domain_id_random)}
<div class="card p-3 variant-soft shadow-sm border border-surface-500/10 flex justify-between items-center group"> <div class="card p-3 variant-soft shadow-sm border border-surface-500/10 flex justify-between items-center group">
<div class="flex flex-col"> <div class="flex flex-col">
<span class="font-bold text-sm flex items-center gap-1"> <span class="font-bold text-sm flex items-center gap-1">

View File

@@ -145,7 +145,7 @@
</h3> </h3>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{#each user_li as user} {#each user_li as user (user.user_id_random)}
<div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group"> <div class="card p-5 space-y-4 variant-soft-surface shadow-md border border-surface-500/10 hover:border-primary-500/30 transition-all group">
<header class="flex justify-between items-start"> <header class="flex justify-between items-start">
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">

View File

@@ -283,7 +283,7 @@
{/if} --> {/if} -->
</div> </div>
<ul class="space-y-1"> <ul class="space-y-1">
{#each $lq__event_file_obj_li as event_file_obj, index} {#each $lq__event_file_obj_li as event_file_obj (event_file_obj.event_file_id)}
<li <li
class="flex flex-row flex-wrap gap-1 items-center justify-center" class="flex flex-row flex-wrap gap-1 items-center justify-center"
class:hidden={!$events_loc.launcher class:hidden={!$events_loc.launcher
@@ -357,7 +357,7 @@
<!-- Maybe set max with? max-w-(--breakpoint-md) --> <!-- Maybe set max with? max-w-(--breakpoint-md) -->
<ul class="event_presentation_list max-w-full space-y-2"> <ul class="event_presentation_list max-w-full space-y-2">
{#each $lq__event_presentation_obj_li as event_presentation_obj} {#each $lq__event_presentation_obj_li as event_presentation_obj (event_presentation_obj.event_presentation_id)}
<li <li
class="border-b-2 border-gray-300 my-1 py-1 text-center md:text-left" class="border-b-2 border-gray-300 my-1 py-1 text-center md:text-left"
> >
@@ -384,7 +384,7 @@
<!-- Yes, this is kind of inefficient, but it works for now. --> <!-- Yes, this is kind of inefficient, but it works for now. -->
{#if $lq__event_presenter_obj_li && type_code == 'poster'} {#if $lq__event_presenter_obj_li && type_code == 'poster'}
{#each $lq__event_presenter_obj_li as event_presenter_obj, index} {#each $lq__event_presenter_obj_li as event_presenter_obj, index (event_presenter_obj.event_presenter_id)}
{#if event_presenter_obj.event_presentation_id == event_presentation_obj.event_presentation_id} {#if event_presenter_obj.event_presentation_id == event_presentation_obj.event_presentation_id}
<span <span
class="event_presentation_single_presenter italic text-sm text-gray-500" class="event_presentation_single_presenter italic text-sm text-gray-500"
@@ -427,7 +427,7 @@
{#if $lq__event_presenter_obj_li && $lq__event_presenter_obj_li.length} {#if $lq__event_presenter_obj_li && $lq__event_presenter_obj_li.length}
<ul class="event_presentation_presenter_list"> <ul class="event_presentation_presenter_list">
{#each $lq__event_presenter_obj_li as event_presenter_obj, index} {#each $lq__event_presenter_obj_li as event_presenter_obj (event_presenter_obj.event_presenter_id)}
{#if event_presenter_obj.event_presentation_id == event_presentation_obj.event_presentation_id} {#if event_presenter_obj.event_presentation_id == event_presentation_obj.event_presentation_id}
<li <li
class=" class="

View File

@@ -332,7 +332,7 @@
<span class="text-[10px] font-mono opacity-50 uppercase tracking-tighter">Real-time API Store View</span> <span class="text-[10px] font-mono opacity-50 uppercase tracking-tighter">Real-time API Store View</span>
</header> </header>
<div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
{#each Object.entries(active_headers) as [key, value]} {#each Object.entries(active_headers) as [key, value] (key)}
<div class="flex justify-between items-center p-3 bg-gray-500/10 rounded border border-gray-500/20"> <div class="flex justify-between items-center p-3 bg-gray-500/10 rounded border border-gray-500/20">
<span class="text-[10px] font-mono font-bold opacity-70">{key}</span> <span class="text-[10px] font-mono font-bold opacity-70">{key}</span>
<span class="text-xs font-mono {key === 'x-ae-ignore-extra-fields' ? 'text-success-500 font-bold' : ''}"> <span class="text-xs font-mono {key === 'x-ae-ignore-extra-fields' ? 'text-success-500 font-bold' : ''}">

View File

@@ -57,7 +57,7 @@
<p class="mb-4">Attempting to unregister all service workers and clear caches to fix the TypeError loop.</p> <p class="mb-4">Attempting to unregister all service workers and clear caches to fix the TypeError loop.</p>
<div class="bg-gray-100 p-4 rounded border border-gray-300 min-h-[200px]"> <div class="bg-gray-100 p-4 rounded border border-gray-300 min-h-[200px]">
{#each status as line} {#each status as line, i (i)}
<div class="border-b border-gray-200 last:border-0 py-1">{line}</div> <div class="border-b border-gray-200 last:border-0 py-1">{line}</div>
{/each} {/each}
</div> </div>

View File

@@ -150,7 +150,7 @@
</div> </div>
{:else} {:else}
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
{#each hosted_files as file} {#each hosted_files as file (file.id)}
<div class="card p-4 variant-soft-secondary space-y-4"> <div class="card p-4 variant-soft-secondary space-y-4">
<div class="flex justify-between items-start"> <div class="flex justify-between items-start">
<div> <div>