import { useUrlSearchParams as useVueUseUrlSearchParams } from '@vueuse/core' const paramsInstances = new Map>() export function useRouteQuery = Record>(key?: string) { if (import.meta.server) { return useRoute().query as T } const finalKey = key ?? window.location.pathname if (!paramsInstances.has(finalKey)) { paramsInstances.set(finalKey, useVueUseUrlSearchParams('history')) } const query = paramsInstances.get(finalKey)! as T Object.assign(query, getUrlQuery()) return query } function getUrlQuery() { return Object.fromEntries(new URLSearchParams(window.location.search)) }