paper-dynasty-website/composables/useSafeQuery.ts

38 lines
832 B
TypeScript

// composables/useSafeQuery.ts
import { useRoute } from 'vue-router'
export const useSafeQuery = () => {
const route = useRoute()
const getNumber = (key: string): number | undefined => {
const value = route.query[key]
if (typeof value === 'string') {
const parsed = Number(value)
return isNaN(parsed) ? undefined : parsed
}
return undefined
}
const getArray = (key: string): string[] => {
const value = route.query[key]
if (Array.isArray(value)) {
return value.map(String)
}
if (typeof value === 'string') {
return [value]
}
return []
}
const getString = (key: string): string | undefined => {
const value = route.query[key]
return typeof value === 'string' ? value : undefined
}
return {
getNumber,
getArray,
getString,
}
}