From dc15cf04a927500a9181f518fde4d8cbb8c47218 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Tue, 21 Apr 2026 23:28:17 +0200 Subject: [PATCH] feat(shopping): Service-Worker network-only fuer /api/shopping-list/* MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Einkaufsliste-Endpunkte duerfen vom SW nie gecached werden — Liste ist zustaendig fuer Check-States und muss immer live vom Server gelesen werden. Test + resolveStrategy-Erweiterung analog zu den anderen online-only-Endpunkten. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/lib/sw/cache-strategy.ts | 3 ++- tests/unit/cache-strategy.test.ts | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/sw/cache-strategy.ts b/src/lib/sw/cache-strategy.ts index d755a72..f797eef 100644 --- a/src/lib/sw/cache-strategy.ts +++ b/src/lib/sw/cache-strategy.ts @@ -17,7 +17,8 @@ export function resolveStrategy(req: RequestShape): CacheStrategy { path === '/api/recipes/import' || path === '/api/recipes/preview' || path === '/api/recipes/extract-from-photo' || - path.startsWith('/api/recipes/search/web') + path.startsWith('/api/recipes/search/web') || + path.startsWith('/api/shopping-list') ) { return 'network-only'; } diff --git a/tests/unit/cache-strategy.test.ts b/tests/unit/cache-strategy.test.ts index 2c4202a..76aded3 100644 --- a/tests/unit/cache-strategy.test.ts +++ b/tests/unit/cache-strategy.test.ts @@ -30,6 +30,12 @@ describe('resolveStrategy', () => { expect(resolveStrategy({ url: '/api/recipes/search/web?q=x', method: 'GET' })).toBe('network-only'); }); + it('network-only for /api/shopping-list/*', () => { + expect(resolveStrategy({ url: '/api/shopping-list', method: 'GET' })).toBe('network-only'); + expect(resolveStrategy({ url: '/api/shopping-list/recipe/5', method: 'GET' })).toBe('network-only'); + expect(resolveStrategy({ url: '/api/shopping-list/check', method: 'GET' })).toBe('network-only'); + }); + it('shell bucket for build/static assets', () => { expect(resolveStrategy({ url: '/_app/immutable/chunks/x.js', method: 'GET' })).toBe('shell'); expect(resolveStrategy({ url: '/icon-192.png', method: 'GET' })).toBe('shell');