UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

33 lines (27 loc) 888 B
import type { DynamicConvention } from './Route' function paramValueEqual(a: unknown, b: unknown) { if (Array.isArray(a) || Array.isArray(b)) { return ( Array.isArray(a) && Array.isArray(b) && a.length === b.length && a.every((value, index) => value === b[index]) ) } return a === b } export function mergeDynamicParams<TParams extends Record<string, any> | undefined>( params: TParams, dynamic: DynamicConvention[] | null | undefined, source: Record<string, any> | undefined ): TParams { if (!dynamic?.length || !source) return params let next: Record<string, any> | undefined for (const segment of dynamic) { const value = source[segment.name] if (value == null || paramValueEqual(params?.[segment.name], value)) continue next ??= { ...params } next[segment.name] = value } return (next ?? params) as TParams }