CancellableLoader.run() previously swallowed AbortError but propagated every other rejection. A predecessor whose fetch survived its abort (timing race, or fn that ignores signal) and then 5xx'd would bubble the error into the caller's catch, clearing the successor's spinner and writing its `error` field — exactly the flicker the loader was supposed to prevent. Strengthen the contract: a call that no longer owns this.current returns null regardless of how it died. Symmetric with the existing late-resolve suppression at the success path. The loadCoverage catch in admin/analysis/+page.svelte now only fires when this call genuinely failed AND still owns the loader — so clearing the spinner there is sound. Three new unit tests pin all three contract corners: a superseded predecessor's non-Abort rejection resolves to null; a standalone call with no successor still throws normally; the AbortError swallow on a still-owning call (synthetic AbortError from fn with no successor or cancel()) remains protected, since the new supersede check would otherwise have eaten every existing AbortError-path test and left that branch as silently-removable dead code. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
33 lines
863 B
JSON
33 lines
863 B
JSON
{
|
|
"name": "mangalord-frontend",
|
|
"version": "0.87.24",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite dev",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:e2e": "playwright test"
|
|
},
|
|
"devDependencies": {
|
|
"@lucide/svelte": "^1.16.0",
|
|
"@playwright/test": "^1.48.0",
|
|
"@sveltejs/adapter-node": "^5.2.0",
|
|
"@sveltejs/kit": "^2.7.0",
|
|
"@sveltejs/vite-plugin-svelte": "^4.0.0",
|
|
"@testing-library/jest-dom": "^6.6.0",
|
|
"@testing-library/svelte": "^5.2.0",
|
|
"@types/node": "^22.7.0",
|
|
"jsdom": "^25.0.0",
|
|
"svelte": "^5.0.0",
|
|
"svelte-check": "^4.0.0",
|
|
"tslib": "^2.7.0",
|
|
"typescript": "^5.6.0",
|
|
"vite": "^5.4.0",
|
|
"vitest": "^2.1.0"
|
|
}
|
|
}
|