From beea4c762baf32faed9e98911f05dcab7d5a1e06 Mon Sep 17 00:00:00 2001 From: Maurice Date: Tue, 20 Oct 2026 19:00:25 +0200 Subject: [PATCH] refactor(server): move the routing heap and the metre helpers out of the paddle domain The binary heap and the flat-frame distance helpers are not about water; the piste router needs the same two. They move to src/lib/geo, where any domain may import them without reaching into paddle-routing. Nothing changes in what they do. --- server/src/{nest/paddle-routing/engine => lib/geo}/geo.ts | 2 +- .../src/{nest/paddle-routing/engine => lib/geo}/min-heap.ts | 0 server/src/nest/paddle-routing/build/build-state.ts | 2 +- server/src/nest/paddle-routing/build/lakes.ts | 2 +- server/src/nest/paddle-routing/build/portages.ts | 2 +- server/src/nest/paddle-routing/engine/lake-field.ts | 4 ++-- server/src/nest/paddle-routing/engine/router.ts | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) rename server/src/{nest/paddle-routing/engine => lib/geo}/geo.ts (95%) rename server/src/{nest/paddle-routing/engine => lib/geo}/min-heap.ts (100%) diff --git a/server/src/nest/paddle-routing/engine/geo.ts b/server/src/lib/geo/geo.ts similarity index 95% rename from server/src/nest/paddle-routing/engine/geo.ts rename to server/src/lib/geo/geo.ts index 8b5f8d619..462d795d3 100644 --- a/server/src/nest/paddle-routing/engine/geo.ts +++ b/server/src/lib/geo/geo.ts @@ -1,4 +1,4 @@ -/** Metres per degree of latitude, the figure the paddle code reckons with throughout. */ +/** Metres per degree of latitude, the figure the routing code reckons with throughout. */ const M_PER_DEG = 111_195; export function metresBetween(aLat: number, aLng: number, bLat: number, bLng: number): number { diff --git a/server/src/nest/paddle-routing/engine/min-heap.ts b/server/src/lib/geo/min-heap.ts similarity index 100% rename from server/src/nest/paddle-routing/engine/min-heap.ts rename to server/src/lib/geo/min-heap.ts diff --git a/server/src/nest/paddle-routing/build/build-state.ts b/server/src/nest/paddle-routing/build/build-state.ts index 4b327e037..542bcbefe 100644 --- a/server/src/nest/paddle-routing/build/build-state.ts +++ b/server/src/nest/paddle-routing/build/build-state.ts @@ -1,4 +1,4 @@ -import { lineLength, metresBetween, projectOnSegment } from '../engine/geo'; +import { lineLength, metresBetween, projectOnSegment } from '../../../lib/geo/geo'; import { Access, EdgeKind, type EdgeKindCode, PortageSource } from '../water-graph'; /** A node while the network is built: where it is, and the lake it opens into (-1 for none). */ diff --git a/server/src/nest/paddle-routing/build/lakes.ts b/server/src/nest/paddle-routing/build/lakes.ts index da7c54580..202ffa4ce 100644 --- a/server/src/nest/paddle-routing/build/lakes.ts +++ b/server/src/nest/paddle-routing/build/lakes.ts @@ -1,4 +1,4 @@ -import { LocalFrame } from '../engine/geo'; +import { LocalFrame } from '../../../lib/geo/geo'; import type { LakeGrid } from '../water-graph'; import { type BuildEdge, type BuildState, PointGrid } from './build-state'; import type { CollectedArea, CollectedWater } from './collect'; diff --git a/server/src/nest/paddle-routing/build/portages.ts b/server/src/nest/paddle-routing/build/portages.ts index 0f60e7d1f..da98df080 100644 --- a/server/src/nest/paddle-routing/build/portages.ts +++ b/server/src/nest/paddle-routing/build/portages.ts @@ -1,4 +1,4 @@ -import { projectOnSegment } from '../engine/geo'; +import { projectOnSegment } from '../../../lib/geo/geo'; import { Access, EdgeKind, PortageSource } from '../water-graph'; import { type BarrierSite, type BuildEdge, type BuildState, PointGrid } from './build-state'; import type { CollectedWater } from './collect'; diff --git a/server/src/nest/paddle-routing/engine/lake-field.ts b/server/src/nest/paddle-routing/engine/lake-field.ts index 1576020a0..b854b4ed5 100644 --- a/server/src/nest/paddle-routing/engine/lake-field.ts +++ b/server/src/nest/paddle-routing/engine/lake-field.ts @@ -1,7 +1,7 @@ +import { LocalFrame } from '../../../lib/geo/geo'; +import { MinHeap } from '../../../lib/geo/min-heap'; import { maskHas } from '../build/lakes'; import type { LakeGrid } from '../water-graph'; -import { LocalFrame } from './geo'; -import { MinHeap } from './min-heap'; import type { PaddleLakeStyle } from '@trek/shared'; /** diff --git a/server/src/nest/paddle-routing/engine/router.ts b/server/src/nest/paddle-routing/engine/router.ts index fb7d9e30f..515280a5f 100644 --- a/server/src/nest/paddle-routing/engine/router.ts +++ b/server/src/nest/paddle-routing/engine/router.ts @@ -1,8 +1,8 @@ +import { metresBetween, projectOnSegment } from '../../../lib/geo/geo'; +import { MinHeap } from '../../../lib/geo/min-heap'; import { LakeIndex } from '../build/lakes'; import { Access, EdgeKind, PortageSource, type WaterGraphData } from '../water-graph'; -import { metresBetween, projectOnSegment } from './geo'; import { LakeField, type LakeProfile } from './lake-field'; -import { MinHeap } from './min-heap'; import type { PaddleBoatType, PaddleLakeStyle,