data endpoint for entity 90008 (aka. a website)
at svelte 680 B view raw
1import { nanoid } from 'nanoid'; 2import { get, writable } from 'svelte/store'; 3 4const tokens = writable<Map<string, number>>(new Map()); 5 6export const newToken = () => { 7 const token = nanoid(100); 8 tokens.update((v) => v.set(token, Date.now())); 9 return token; 10}; 11export const useToken = (token: string) => { 12 const _tokens = get(tokens); 13 // delete older tokens 14 for (const [_token, timestamp] of _tokens) { 15 if (Date.now() - timestamp > 30 * 60 * 1000) { 16 _tokens.delete(_token); 17 } 18 } 19 tokens.set(_tokens); 20 return _tokens.has(token); 21}; 22 23export const checkUrl = (url: URL) => { 24 const token = url.searchParams.get('_token'); 25 return token !== null && useToken(token); 26};