(requestUrl: string)
| 1 | const ALGOLIA_CACHE_KEY_PREFIX = 'algolia:ssr'; |
| 2 | |
| 3 | export const buildAlgoliaCacheKey = (requestUrl: string): string => { |
| 4 | const source = new URL(requestUrl).searchParams; |
| 5 | const params = new URLSearchParams(); |
| 6 | |
| 7 | const query = source.get('query')?.trim(); |
| 8 | if (query) { |
| 9 | params.set('query', query); |
| 10 | } |
| 11 | |
| 12 | const subsets = source |
| 13 | .getAll('subsets') |
| 14 | .flatMap((value) => value.split(',')) |
| 15 | .map((value) => value.trim()) |
| 16 | .filter(Boolean); |
| 17 | if (subsets.length) { |
| 18 | params.set('subsets', [...new Set(subsets)].sort().join(',')); |
| 19 | } |
| 20 | |
| 21 | const category = source.get('category')?.trim(); |
| 22 | if (category) { |
| 23 | params.set('category', category); |
| 24 | } |
| 25 | |
| 26 | if (source.getAll('variable').some((value) => value.trim())) { |
| 27 | params.set('variable', 'true'); |
| 28 | } |
| 29 | |
| 30 | const sort = source.get('sort')?.trim(); |
| 31 | if (sort) { |
| 32 | params.set('sort', sort); |
| 33 | } |
| 34 | |
| 35 | const suffix = params.toString(); |
| 36 | return suffix |
| 37 | ? `${ALGOLIA_CACHE_KEY_PREFIX}:${suffix}` |
| 38 | : `${ALGOLIA_CACHE_KEY_PREFIX}:root`; |
| 39 | }; |
no test coverage detected