fix: concurrent cache miss, SVG output, narrowed error handling, format

- Fix integration data cache: check pending promise before TTL to
  prevent returning undefined on concurrent cold-cache access
- Add concurrent-miss test (two parallel callers, one fetch)
- SVG sanitizer: extract <svg> from DOMPurify output to strip
  residual HTML wrapper
- Narrow safeRevalidateTag catch: log unexpected errors, silence only
  known "outside request scope" messages
- Run oxfmt across all packages (206 files formatted)
This commit is contained in:
Thomas Camlong committed 2026-08-07 20:48:17 +02:00
1 parent b81b90875f
commit 38ac8f3075
206 files changed
+7952 -6722

No files matched your search

+4 -3
View File
@@ -36,15 +36,16 @@ const integrationLoaders: Record<IntegrationKind, IntegrationLoader> = {
nextcloud: () => import("../nextcloud/nextcloud.integration").then((m) => m.NextcloudIntegration),
ntfy: () => import("../ntfy/ntfy-integration").then((m) => m.NTFYIntegration),
nzbGet: () => import("../download-client/nzbget/nzbget-integration").then((m) => m.NzbGetIntegration),
openmediavault: () =>
import("../openmediavault/openmediavault-integration").then((m) => m.OpenMediaVaultIntegration),
openmediavault: () => import("../openmediavault/openmediavault-integration").then((m) => m.OpenMediaVaultIntegration),
opnsense: () => import("../opnsense/opnsense-integration").then((m) => m.OPNsenseIntegration),
overseerr: () => import("../overseerr/overseerr-integration").then((m) => m.OverseerrIntegration),
paperlessNgx: () => import("../paperless-ngx/paperless-ngx-integration").then((m) => m.PaperlessNgxIntegration),
patchmon: () => import("../patchmon/patchmon-integration").then((m) => m.PatchMonIntegration),
peaNut: () => import("../peanut/peanut-integration").then((m) => m.PeaNutIntegration),
piHole: () =>
import("../pi-hole/pi-hole-integration-factory").then((m) => [m.createPiHoleIntegrationAsync] as [IntegrationFactory]),
import("../pi-hole/pi-hole-integration-factory").then(
(m) => [m.createPiHoleIntegrationAsync] as [IntegrationFactory],
),
plex: () => import("../plex/plex-integration").then((m) => m.PlexIntegration),
prowlarr: () => import("../prowlarr/prowlarr-integration").then((m) => m.ProwlarrIntegration),
proxmox: () => import("../proxmox/proxmox-integration").then((m) => m.ProxmoxIntegration),