@osmix/router 0.0.13 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/LICENSE +21 -0
  3. package/README.md +138 -53
  4. package/dist/algorithms/bidirectional.d.ts +6 -9
  5. package/dist/algorithms/bidirectional.d.ts.map +1 -1
  6. package/dist/algorithms/bidirectional.js +84 -104
  7. package/dist/algorithms/bidirectional.js.map +1 -1
  8. package/dist/algorithms/index.d.ts +1 -1
  9. package/dist/algorithms/index.d.ts.map +1 -1
  10. package/dist/algorithms/index.js +1 -1
  11. package/dist/algorithms/index.js.map +1 -1
  12. package/dist/algorithms/shortest-path.d.ts +2 -1
  13. package/dist/algorithms/shortest-path.d.ts.map +1 -1
  14. package/dist/algorithms/shortest-path.js +9 -7
  15. package/dist/algorithms/shortest-path.js.map +1 -1
  16. package/dist/binary-heap.d.ts +5 -0
  17. package/dist/binary-heap.d.ts.map +1 -1
  18. package/dist/binary-heap.js +11 -4
  19. package/dist/binary-heap.js.map +1 -1
  20. package/dist/graph.d.ts +35 -7
  21. package/dist/graph.d.ts.map +1 -1
  22. package/dist/graph.js +161 -119
  23. package/dist/graph.js.map +1 -1
  24. package/dist/index.d.ts +9 -4
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +9 -4
  27. package/dist/index.js.map +1 -1
  28. package/dist/router.d.ts +1 -1
  29. package/dist/router.d.ts.map +1 -1
  30. package/dist/router.js +6 -3
  31. package/dist/router.js.map +1 -1
  32. package/dist/topology-stats.d.ts +37 -0
  33. package/dist/topology-stats.d.ts.map +1 -0
  34. package/dist/topology-stats.js +62 -0
  35. package/dist/topology-stats.js.map +1 -0
  36. package/dist/types.d.ts +15 -2
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/utils.d.ts +1 -1
  39. package/dist/utils.d.ts.map +1 -1
  40. package/dist/utils.js +1 -7
  41. package/dist/utils.js.map +1 -1
  42. package/package.json +32 -29
  43. package/src/algorithms/bidirectional.ts +124 -136
  44. package/src/algorithms/index.ts +10 -10
  45. package/src/algorithms/shortest-path.ts +96 -92
  46. package/src/binary-heap.ts +133 -129
  47. package/src/graph.ts +389 -355
  48. package/src/index.ts +14 -9
  49. package/src/router.ts +221 -233
  50. package/src/topology-stats.ts +84 -0
  51. package/src/types.ts +102 -87
  52. package/src/utils.ts +67 -74
  53. package/test/algorithms.test.ts +396 -353
  54. package/test/binary-heap.test.ts +27 -0
  55. package/test/limits.test.ts +82 -0
  56. package/test/no-shared-array-buffer.test.ts +37 -0
  57. package/test/router.bench.ts +171 -188
  58. package/test/router.test.ts +685 -726
  59. package/test/spatial-capability.test.ts +23 -0
  60. package/test/topology-stats.test.ts +82 -0
  61. package/tsconfig.build.json +6 -6
  62. package/tsconfig.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"bidirectional.js","sourceRoot":"","sources":["../../src/algorithms/bidirectional.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAuB,CAChD,KAAK,EACL,KAAK,EACL,GAAG,EACH,SAAS,EACR,EAAE;IACH,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;IAEzD,uBAAuB;IACvB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC5C,MAAM,MAAM,GAAa,CAAC,KAAK,CAAC,CAAA;IAEhC,wBAAwB;IACxB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAA;IACvC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC5C,MAAM,MAAM,GAAa,CAAC,GAAG,CAAC,CAAA;IAE9B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACnB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;IAEjB,IAAI,QAAQ,GAAkB,IAAI,CAAA;IAElC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,iBAAiB;QACjB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAG,CAAA;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAE,CAAA;YAEpC,6CAA6C;YAC7C,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,QAAQ,GAAG,OAAO,CAAA;gBAClB,MAAK;YACN,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAA;gBACrC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,SAAQ;gBAEjC,MAAM,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;gBACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBACzB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;oBACnB,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,iBAAiB,EAAE,OAAO;oBAC1B,IAAI,EAAE,IAAI;iBACV,CAAC,CAAA;gBACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAErB,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,QAAQ,GAAG,QAAQ,CAAA;oBACnB,MAAK;gBACN,CAAC;YACF,CAAC;YAED,IAAI,QAAQ,KAAK,IAAI;gBAAE,MAAK;QAC7B,CAAC;QAED,kBAAkB;QAClB,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAG,CAAA;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAE,CAAA;YAEpC,4CAA4C;YAC5C,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,QAAQ,GAAG,OAAO,CAAA;gBAClB,MAAK;YACN,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAA;gBACrC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAAE,SAAQ;gBAEjC,MAAM,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;gBACvC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBACzB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;oBACnB,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,iBAAiB,EAAE,OAAO;oBAC1B,IAAI,EAAE,IAAI;iBACV,CAAC,CAAA;gBACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAErB,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,QAAQ,GAAG,QAAQ,CAAA;oBACnB,MAAK;gBACN,CAAC;YACF,CAAC;YAED,IAAI,QAAQ,KAAK,IAAI;gBAAE,MAAK;QAC7B,CAAC;IACF,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAElC,oCAAoC;IACpC,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,IAAI,IAAI,GAAuB,QAAQ,CAAA;IACvC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,GAAG;YAAE,MAAK;QACf,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACpB,IAAI,GAAG,GAAG,CAAC,iBAAiB,CAAA;IAC7B,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;IAE9C,uDAAuD;IACvD,kFAAkF;IAClF,wFAAwF;IACxF,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAA;IAC5C,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAA;IAC7C,IAAI,GAAG,QAAQ,CAAA;IACf,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,GAAG;YAAE,MAAK;QACf,IAAI,GAAG,GAAG,CAAC,iBAAiB,CAAA;QAC5B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC;gBACZ,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,iBAAiB,EAAE,GAAG,CAAC,SAAS;gBAChC,IAAI,EAAE,eAAe,GAAG,gBAAgB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjE,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC,CAAA"}
1
+ {"version":3,"file":"bidirectional.js","sourceRoot":"","sources":["../../src/algorithms/bidirectional.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Provides three algorithms:
5
5
  * - `dijkstra`: Optimal shortest path, explores all directions equally.
6
6
  * - `astar`: Optimal with heuristic guidance, faster for point-to-point.
7
- * - `bidirectional`: Fast BFS from both ends, finds *a* path (not always optimal).
7
+ * - `bidirectional`: Optimal Dijkstra from both ends; needs `context.reverseGraph`.
8
8
  *
9
9
  * @module
10
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAEpD,YAAY,EAAE,kBAAkB,EAAE,CAAA;AAClC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAA;AAEzC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAI1E,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAErD,YAAY,EAAE,kBAAkB,EAAE,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AAE1C,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAI1E,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * Provides three algorithms:
5
5
  * - `dijkstra`: Optimal shortest path, explores all directions equally.
6
6
  * - `astar`: Optimal with heuristic guidance, faster for point-to-point.
7
- * - `bidirectional`: Fast BFS from both ends, finds *a* path (not always optimal).
7
+ * - `bidirectional`: Optimal Dijkstra from both ends; needs `context.reverseGraph`.
8
8
  *
9
9
  * @module
10
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGpD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAA;AAEzC,MAAM,CAAC,MAAM,iBAAiB,GAAiD;IAC9E,QAAQ;IACR,KAAK;IACL,aAAa;CACb,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAiD;IAC7E,QAAQ;IACR,KAAK;IACL,aAAa;CACd,CAAC"}
@@ -18,7 +18,8 @@ export declare const dijkstra: RoutingAlgorithmFn;
18
18
  *
19
19
  * The heuristic is adapted based on the metric:
20
20
  * - distance: haversine distance in meters
21
- * - time: haversine distance / max speed (lower bound on travel time in seconds)
21
+ * - time: haversine distance / `context.maxSpeedMps` (lower bound on travel time in seconds).
22
+ * Pass the graph's real maximum; the 130 km/h default overestimates on faster roads.
22
23
  */
23
24
  export declare const astar: RoutingAlgorithmFn;
24
25
  //# sourceMappingURL=shortest-path.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shortest-path.d.ts","sourceRoot":"","sources":["../../src/algorithms/shortest-path.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAA0B,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAkG7E;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,kBAEtB,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK,EAAE,kBAuBnB,CAAA"}
1
+ {"version":3,"file":"shortest-path.d.ts","sourceRoot":"","sources":["../../src/algorithms/shortest-path.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAA0B,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAkG9E;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,kBAEtB,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,KAAK,EAAE,kBAyBnB,CAAC"}
@@ -6,13 +6,13 @@
6
6
  *
7
7
  * @module
8
8
  */
9
- import { haversineDistance } from "@osmix/shared/haversine-distance";
9
+ import { haversineDistance } from "@osmix/geo/haversine-distance";
10
10
  import { BinaryHeap } from "../binary-heap.js";
11
11
  /**
12
- * Maximum speed (m/s) for time-based heuristic.
13
- * Uses 130 km/h (~36.1 m/s) to ensure admissibility on all road types.
12
+ * Default maximum speed (m/s) for the time heuristic when the caller does not
13
+ * pass the graph's real maximum: 130 km/h (~36.1 m/s).
14
14
  */
15
- const MAX_SPEED_MS = (130 * 1000) / 3600;
15
+ const DEFAULT_MAX_SPEED_MPS = (130 * 1000) / 3600;
16
16
  /**
17
17
  * A* shortest path algorithm with configurable heuristic.
18
18
  *
@@ -93,11 +93,13 @@ export const dijkstra = (graph, start, end, getWeight) => {
93
93
  *
94
94
  * The heuristic is adapted based on the metric:
95
95
  * - distance: haversine distance in meters
96
- * - time: haversine distance / max speed (lower bound on travel time in seconds)
96
+ * - time: haversine distance / `context.maxSpeedMps` (lower bound on travel time in seconds).
97
+ * Pass the graph's real maximum; the 130 km/h default overestimates on faster roads.
97
98
  */
98
- export const astar = (graph, start, end, getWeight, getCoord, metric) => {
99
+ export const astar = (graph, start, end, getWeight, getCoord, metric, context) => {
99
100
  if (!getCoord)
100
101
  return null;
102
+ const maxSpeedMps = context?.maxSpeedMps ?? DEFAULT_MAX_SPEED_MPS;
101
103
  const endCoord = getCoord(end);
102
104
  if (!endCoord)
103
105
  return null;
@@ -108,7 +110,7 @@ export const astar = (graph, start, end, getWeight, getCoord, metric) => {
108
110
  if (!coord)
109
111
  return 0;
110
112
  const distance = haversineDistance(endCoord, coord);
111
- return metric === "time" ? distance / MAX_SPEED_MS : distance;
113
+ return metric === "time" ? distance / maxSpeedMps : distance;
112
114
  };
113
115
  return shortestPath(graph, start, end, getWeight, heuristic);
114
116
  };
@@ -1 +1 @@
1
- {"version":3,"file":"shortest-path.js","sourceRoot":"","sources":["../../src/algorithms/shortest-path.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shortest-path.js","sourceRoot":"","sources":["../../src/algorithms/shortest-path.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  * Operations:
12
12
  * - `push(item, priority)`: O(log n) - adds or updates item priority.
13
13
  * - `pop()`: O(log n) - removes and returns minimum priority item.
14
+ * - `peekPriority()`: O(1) - priority of the minimum item.
14
15
  * - `has(item)`: O(1) - checks if item is in heap.
15
16
  */
16
17
  export declare class BinaryHeap {
@@ -26,6 +27,10 @@ export declare class BinaryHeap {
26
27
  * Remove and return the minimum-priority item.
27
28
  */
28
29
  pop(): number | undefined;
30
+ /**
31
+ * Priority of the minimum item, or `Infinity` when the heap is empty.
32
+ */
33
+ peekPriority(): number;
29
34
  /**
30
35
  * Check if item is in the heap.
31
36
  */
@@ -1 +1 @@
1
- {"version":3,"file":"binary-heap.d.ts","sourceRoot":"","sources":["../src/binary-heap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;GAUG;AACH,qBAAa,UAAU;IACtB,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,SAAS,CAAiC;IAElD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAezC;IAED;;OAEG;IACH,GAAG,IAAI,MAAM,GAAG,SAAS,CAiBxB;IAED;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAIZ;IAED,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,UAAU;CAuClB"}
1
+ {"version":3,"file":"binary-heap.d.ts","sourceRoot":"","sources":["../src/binary-heap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;GAWG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,SAAS,CAAkC;IAEnD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAezC;IAED;;OAEG;IACH,GAAG,IAAI,MAAM,GAAG,SAAS,CAiBxB;IAED;;OAEG;IACH,YAAY,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAIZ;IAED,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,UAAU;CAmCnB"}
@@ -11,6 +11,7 @@
11
11
  * Operations:
12
12
  * - `push(item, priority)`: O(log n) - adds or updates item priority.
13
13
  * - `pop()`: O(log n) - removes and returns minimum priority item.
14
+ * - `peekPriority()`: O(1) - priority of the minimum item.
14
15
  * - `has(item)`: O(1) - checks if item is in heap.
15
16
  */
16
17
  export class BinaryHeap {
@@ -56,6 +57,12 @@ export class BinaryHeap {
56
57
  }
57
58
  return min;
58
59
  }
60
+ /**
61
+ * Priority of the minimum item, or `Infinity` when the heap is empty.
62
+ */
63
+ peekPriority() {
64
+ return this.priorities[0] ?? Number.POSITIVE_INFINITY;
65
+ }
59
66
  /**
60
67
  * Check if item is in the heap.
61
68
  */
@@ -98,12 +105,12 @@ export class BinaryHeap {
98
105
  const leftIndex = (index << 1) + 1;
99
106
  const rightIndex = leftIndex + 1;
100
107
  let smallest = index;
101
- if (leftIndex < length &&
102
- this.priorities[leftIndex] < this.priorities[smallest]) {
108
+ let smallestPriority = priority;
109
+ if (leftIndex < length && this.priorities[leftIndex] < smallestPriority) {
103
110
  smallest = leftIndex;
111
+ smallestPriority = this.priorities[leftIndex];
104
112
  }
105
- if (rightIndex < length &&
106
- this.priorities[rightIndex] < this.priorities[smallest]) {
113
+ if (rightIndex < length && this.priorities[rightIndex] < smallestPriority) {
107
114
  smallest = rightIndex;
108
115
  }
109
116
  if (smallest === index)
@@ -1 +1 @@
1
- {"version":3,"file":"binary-heap.js","sourceRoot":"","sources":["../src/binary-heap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-heap.js","sourceRoot":"","sources":["../src/binary-heap.ts"],"names":[],"mappings":"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"}
package/dist/graph.d.ts CHANGED
@@ -11,7 +11,7 @@
11
11
  * @module
12
12
  */
13
13
  import { type Osm } from "@osmix/core";
14
- import type { LonLat } from "@osmix/shared/types";
14
+ import type { LonLat } from "@osmix/types";
15
15
  import type { DefaultSpeeds, GraphEdge, HighwayFilter, RoutingGraphTransferables } from "./types.ts";
16
16
  /**
17
17
  * Routing graph built from OSM ways and nodes.
@@ -22,7 +22,8 @@ import type { DefaultSpeeds, GraphEdge, HighwayFilter, RoutingGraphTransferables
22
22
  * @example Build from OSM data
23
23
  * ```ts
24
24
  * const graph = new RoutingGraph(osm)
25
- * const route = router.route(graph, startNode, endNode)
25
+ * const router = new Router(osm, graph)
26
+ * const path = router.route(startNodeIndex, endNodeIndex)
26
27
  * ```
27
28
  *
28
29
  * @example Transfer between workers
@@ -45,8 +46,13 @@ export declare class RoutingGraph {
45
46
  private edgeWayIndexes;
46
47
  private edgeDistances;
47
48
  private edgeTimes;
48
- private routableBits;
49
- private intersectionBits;
49
+ private routable;
50
+ private intersections;
51
+ private reverseOffsets;
52
+ /** Forward edge index for each incoming edge, grouped by target node. */
53
+ private reverseEdges;
54
+ private reverseSources;
55
+ private cachedMaxSpeedMps;
50
56
  readonly filter: HighwayFilter;
51
57
  readonly defaultSpeeds: DefaultSpeeds;
52
58
  /**
@@ -62,9 +68,15 @@ export declare class RoutingGraph {
62
68
  */
63
69
  private fromTransferables;
64
70
  /**
65
- * Build the graph from OSM data.
71
+ * Build the graph from OSM data in two passes over the routable ways, straight into typed
72
+ * arrays: the first counts each node's outgoing edges and sets the node flags, the second
73
+ * fills the CSR arrays. No per-edge objects or `Map`/`Set` (V8 caps those near 2^24 entries).
66
74
  */
67
75
  private buildFromOsm;
76
+ /** Visit each segment of each routable way, in way order, with its direction and speed. */
77
+ private forEachSegment;
78
+ /** Mark a node routable, or an intersection if it was already routable. */
79
+ private markRoutable;
68
80
  /**
69
81
  * Check if a node is part of the routable network.
70
82
  */
@@ -77,12 +89,25 @@ export declare class RoutingGraph {
77
89
  * Get outgoing edges from a node.
78
90
  */
79
91
  getEdges(nodeIndex: number): GraphEdge[];
92
+ /**
93
+ * Get incoming edges of a node. In each returned edge, `targetNodeIndex` is the
94
+ * edge's source node. The reverse index (4 bytes per node plus 8 bytes per edge)
95
+ * is built on the first call.
96
+ */
97
+ getIncomingEdges(nodeIndex: number): GraphEdge[];
98
+ private buildReverseIndex;
99
+ /**
100
+ * Fastest edge speed in the graph, in meters per second. The A* time heuristic
101
+ * divides by this so that it never overestimates travel time.
102
+ */
103
+ get maxSpeedMps(): number;
80
104
  /**
81
105
  * Get transferable buffers for passing to another thread.
82
106
  */
83
107
  transferables(): RoutingGraphTransferables;
84
108
  /**
85
- * Get the number of nodes in the graph.
109
+ * Number of node slots in the graph: every node in the source OSM data, not only
110
+ * routable ones. Use `isRoutable()` to test a node.
86
111
  */
87
112
  get size(): number;
88
113
  /**
@@ -96,6 +121,9 @@ export declare class RoutingGraph {
96
121
  * graph (i.e., lie on a routable way). Returns the closest match with its
97
122
  * coordinates and distance.
98
123
  *
124
+ * Snaps to graph nodes only, not to points along edges. Requires the "all" node
125
+ * spatial index; throws `SpatialIndexNotBuiltError` without it.
126
+ *
99
127
  * @param osm - The OSM dataset.
100
128
  * @param point - The [lon, lat] coordinates to search from.
101
129
  * @param maxDistanceM - Maximum search radius in meters.
@@ -103,7 +131,7 @@ export declare class RoutingGraph {
103
131
  *
104
132
  * @example
105
133
  * ```ts
106
- * const nearest = graph.findNearestNodeOnGraph(osm, [-73.989, 40.733], 0.5)
134
+ * const nearest = graph.findNearestRoutableNode(osm, [-73.989, 40.733], 500)
107
135
  * if (nearest) {
108
136
  * console.log(`Found node ${nearest.nodeIndex} at ${nearest.distance}m`)
109
137
  * }
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAsC,KAAK,GAAG,EAAE,MAAM,aAAa,CAAA;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,yBAAyB,EACzB,MAAM,YAAY,CAAA;AAGnB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,YAAY;IACxB,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAAI;IACrB,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAI;IAGrB,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,gBAAgB,CAA0B;IAGlD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IAErC;;;;;;OAMG;IACH,YACC,MAAM,EAAE,GAAG,GAAG,yBAAyB,EACvC,MAAM,GAAE,aAAoC,EAC5C,aAAa,GAAE,aAA8B,EAW7C;IAED;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;OAEG;IACH,OAAO,CAAC,YAAY;IA0IpB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAKrC;IAED;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAKzC;IAED;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAwBvC;IAED;;OAEG;IACH,aAAa,IAAI,yBAAyB,CAYzC;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;mBAQxD,MAAM;qBACJ,MAAM;kBACT,MAAM;aAgBjB;CACD;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACzB,GAAG,EAAE,GAAG,EACR,MAAM,GAAE,aAAoC,EAC5C,aAAa,GAAE,aAA8B,GAC3C,YAAY,CAEd;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACrC,CAAC,EAAE,yBAAyB,GAC1B,WAAW,EAAE,CAef"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAsC,KAAK,GAAG,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,YAAY;IACvB,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAAK;IACtB,0CAA0C;IAC1C,OAAO,CAAC,SAAS,CAAK;IAGtB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,SAAS,CAA6B;IAC9C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAuB;IAG5C,OAAO,CAAC,cAAc,CAA4B;IAClD,yEAAyE;IACzE,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,iBAAiB,CAAuB;IAGhD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEtC;;;;;;OAMG;IACH,YACE,MAAM,EAAE,GAAG,GAAG,yBAAyB,EACvC,MAAM,GAAE,aAAoC,EAC5C,aAAa,GAAE,aAA8B,EAW9C;IAED;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA4DpB,2FAA2F;IAC3F,OAAO,CAAC,cAAc;IAyCtB,2EAA2E;IAC3E,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGrC;IAED;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGzC;IAED;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAmBvC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAkB/C;IAED,OAAO,CAAC,iBAAiB;IAuBzB;;;OAGG;IACH,IAAI,WAAW,IAAI,MAAM,CAUxB;IAED;;OAEG;IACH,aAAa,IAAI,yBAAyB,CAYzC;IAED;;;OAGG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;mBAItD,MAAM;qBACJ,MAAM;kBACT,MAAM;aAgBnB;CACF;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,GAAG,EACR,MAAM,GAAE,aAAoC,EAC5C,aAAa,GAAE,aAA8B,GAC5C,YAAY,CAEd;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,yBAAyB,GAAG,WAAW,EAAE,CAYlF"}