import route from './docuri'; const integerType = (n: number) => { return { encoder: (v: number) => v.toString().padStart(n, '0'), decoder: parseInt, }; }; const bigIntType = (n: number) => { return { encoder: (v: number) => v.toString().padStart(n, '0'), decoder: BigInt, }; }; const coding = { gpx: integerType(16), wpt: integerType(6), rte: integerType(6), rtept: integerType(6), trk: integerType(6), trkseg: integerType(6), trkpt: integerType(6), }; const routes = { dbdef: route('dbdef', coding), settings: route('settings', coding), gpx: route('gpx/:gpx', coding), wpt: route('gpx/:gpx/1wpt/:wpt', coding), rte: route('gpx/:gpx/2rte/:rte', coding), rtept: route('gpx/:gpx/2rte/:rte/:rtept', coding), trk: route('gpx/:gpx/3trk/:trk', coding), trkseg: route('gpx/:gpx/3trk/:trk/:trkseg', coding), trkpt: route('gpx/:gpx/3trk/:trk/:trkseg/:trkpt', coding), extensions: route('gpx/:gpx/4extensions', coding), }; type RouteKey = keyof typeof routes; const uri = (type: RouteKey, param: any) => { return routes[type](param); }; export default uri; const minDate = -8640000000000000; const halfMinDate = minDate / 2; export const intToGpxId = (i: number) => Math.round(i / 2) - halfMinDate;