rendezvous-kit 1.8.0 → 1.10.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.
package/README.md CHANGED
@@ -8,6 +8,24 @@
8
8
 
9
9
  **[Live Demo →](https://thecryptodonkey.github.io/rendezvous-kit)**
10
10
 
11
+ ### How it works
12
+
13
+ ```
14
+ Alice (London) Bob (Bristol) Carol (Birmingham)
15
+ ╲ │ ╱
16
+ isochrone isochrone isochrone
17
+ ╲ │ ╱
18
+ ╲────────── intersection ──────────╱
19
+
20
+ venue search
21
+
22
+ fairness scoring
23
+
24
+ ranked suggestions
25
+ ```
26
+
27
+ Geographic midpoint tools find the centre of a triangle. **rendezvous-kit finds where everyone can actually get to** — using real road networks, travel times, and venue availability.
28
+
11
29
  ## Why rendezvous-kit?
12
30
 
13
31
  - **Full pipeline** — isochrone computation → polygon intersection → venue search → fairness scoring, all in one library
@@ -16,6 +34,28 @@
16
34
  - **Built on geohash-kit** — leverages our spatial primitives; only runtime dependency
17
35
  - **Zero third-party dependencies** — ships with a pure-TypeScript Sutherland–Hodgman polygon intersection, Overpass API venue search, and all engine adapters
18
36
 
37
+ ## Use Cases
38
+
39
+ - **Social apps** — "Meet in the middle" features for groups of friends picking a pub, café, or restaurant
40
+ - **Ride-sharing** — optimal pickup points that minimise detour for all passengers
41
+ - **Event planning** — conference venues fair to attendees from multiple cities
42
+ - **Corporate** — office locations that balance commute times across a distributed team
43
+ - **Delivery logistics** — hub placement that minimises worst-case last-mile distances
44
+ - **Emergency services** — staging areas reachable by multiple response units within a time budget
45
+
46
+ ## Compared to Alternatives
47
+
48
+ | Capability | Geographic midpoint libraries | Commercial APIs (Targomo, TravelTime) | rendezvous-kit |
49
+ |---|---|---|---|
50
+ | Travel-time aware | No — straight-line distance only | Yes | Yes |
51
+ | Multi-person intersection | No | Yes (API key + billing) | Yes (self-hosted, free) |
52
+ | Fairness weighting | No | No | Yes — 3 strategies |
53
+ | Venue search included | No | No | Yes — via Overpass API |
54
+ | Engine-agnostic | N/A | No — vendor lock-in | Yes — 4 engines |
55
+ | Works offline/self-hosted | N/A | No | Yes (with local Valhalla/OSRM) |
56
+
57
+ rendezvous-kit is the only open-source library that combines isochrone intersection, venue discovery, and fairness scoring in a single pipeline.
58
+
19
59
  ## Install
20
60
 
21
61
  ```bash
@@ -80,10 +120,13 @@ OSRM does not support isochrone computation — use it only when you need a fast
80
120
 
81
121
  | Function | Description |
82
122
  |----------|-------------|
83
- | `intersectPolygons(polygons)` | Sutherland–Hodgman N-polygon intersection; returns `GeoJSONPolygon \| null` |
123
+ | `intersectPolygons(polygons)` | Sutherland–Hodgman N-polygon intersection; returns largest component or `null` |
124
+ | `intersectPolygonsAll(polygons)` | N-polygon intersection preserving all disconnected components; returns `GeoJSONPolygon[]` |
84
125
  | `boundingBox(polygon)` | Compute `BBox` (minLon, minLat, maxLon, maxLat) |
85
126
  | `centroid(polygon)` | Geometric centre as `{ lat, lon }` |
86
127
  | `polygonArea(polygon)` | Area in square metres |
128
+ | `circleToPolygon(centre, radiusMetres, segments?)` | Approximate a circle as a GeoJSON Polygon (default 64 segments) |
129
+ | `getDestinationPoint(start, distanceMetres, bearingDeg)` | Haversine destination point from `[lon, lat]`, distance, and bearing |
87
130
 
88
131
  ### Engines
89
132
 
@@ -116,12 +159,15 @@ OSRM does not support isochrone computation — use it only when you need a fast
116
159
  | `Venue` | `{ name, lat, lon, venueType, osmId? }` |
117
160
  | `RendezvousOptions` | `{ participants, mode, maxTimeMinutes, venueTypes, fairness?, limit? }` |
118
161
  | `RendezvousSuggestion` | `{ venue, travelTimes, fairnessScore }` |
162
+ | `BBox` | `{ minLon, minLat, maxLon, maxLat }` |
163
+ | `Coordinate` | `{ lat, lon }` |
119
164
 
120
165
  ## Subpath Exports
121
166
 
122
167
  ```typescript
123
168
  import { findRendezvous } from 'rendezvous-kit' // barrel
124
- import { intersectPolygons, centroid } from 'rendezvous-kit/geo' // geometry
169
+ import { intersectPolygons, intersectPolygonsAll, centroid,
170
+ circleToPolygon, getDestinationPoint } from 'rendezvous-kit/geo' // geometry
125
171
  import { ValhallaEngine } from 'rendezvous-kit/engines/valhalla'
126
172
  import { OpenRouteServiceEngine } from 'rendezvous-kit/engines/openrouteservice'
127
173
  import { GraphHopperEngine } from 'rendezvous-kit/engines/graphhopper'
@@ -135,11 +181,12 @@ import { findRendezvous } from 'rendezvous-kit/rendezvous' // same
135
181
  `findRendezvous` runs six steps:
136
182
 
137
183
  1. **Isochrones** — compute a reachability polygon for each participant
138
- 2. **Intersection** — intersect all polygons using Sutherland–Hodgman; returns `null` if there is no overlap
184
+ 2. **Intersection** — intersect all polygons using Sutherland–Hodgman (supports concave shapes and disconnected components)
139
185
  3. **Venue search** — query Overpass API within the intersection's bounding box
140
186
  4. **Route matrix** — compute travel times from every participant to every candidate venue
141
- 5. **Scoring** — apply the fairness strategy to produce a single score per venue
142
- 6. **Ranking** — sort by score ascending and return the top `limit` suggestions
187
+ 5. **Filtering** — remove venues where any participant exceeds the time budget or is unreachable
188
+ 6. **Scoring** — apply the fairness strategy to produce a single score per venue
189
+ 7. **Ranking** — sort by score ascending and return the top `limit` suggestions
143
190
 
144
191
  If the isochrones do not overlap, `findRendezvous` returns an empty array. If no venues are found, it falls back to the geometric centroid of the intersection.
145
192
 
@@ -172,6 +219,23 @@ class MyEngine implements RoutingEngine {
172
219
 
173
220
  See [llms.txt](./llms.txt) for a concise API summary, or [llms-full.txt](./llms-full.txt) for the complete reference with examples.
174
221
 
222
+ ## Troubleshooting
223
+
224
+ **`findRendezvous` returns an empty array**
225
+ The participants' isochrones don't overlap — they are too far apart for the given `maxTimeMinutes`. Try increasing the time budget or switching to a faster transport mode.
226
+
227
+ **No venues found (fallback to centroid)**
228
+ The Overpass API found no matching venues within the intersection zone. This can happen in rural areas. The library returns a synthetic "Meeting point" at the area-weighted centroid as a fallback. Try broader `venueTypes` or a larger `maxTimeMinutes`.
229
+
230
+ **`RangeError: findRendezvous requires at least 2 participants`**
231
+ You must pass at least 2 participants. Single-origin use cases don't need a meeting-point library — query the routing engine directly.
232
+
233
+ **Engine HTTP errors (e.g., `Valhalla isochrone error: 400`)**
234
+ Check that your engine base URL is correct and the service is running. For ORS, verify your API key is valid. For Valhalla/OSRM, ensure the server has routing tiles loaded for the region you're querying.
235
+
236
+ **OSRM: `Error: OSRM does not support isochrone computation`**
237
+ OSRM cannot generate isochrones. Use Valhalla, OpenRouteService, or GraphHopper instead. OSRM is supported only for route matrix computation.
238
+
175
239
  ## Licence
176
240
 
177
241
  [MIT](https://github.com/TheCryptoDonkey/rendezvous-kit/blob/main/LICENSE)
@@ -1,4 +1,16 @@
1
- import type { RoutingEngine, Isochrone, RouteMatrix, TransportMode, LatLon } from '../types.js';
1
+ import type { RoutingEngine, Isochrone, RouteMatrix, RouteGeometry, TransportMode, LatLon } from '../types.js';
2
+ /**
3
+ * GraphHopper routing engine adapter.
4
+ *
5
+ * Works with self-hosted or cloud GraphHopper instances.
6
+ * API key is optional for self-hosted deployments.
7
+ * Note: GraphHopper does not natively support `public_transit` — falls back to driving.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const engine = new GraphHopperEngine({ baseUrl: 'http://localhost:8989' })
12
+ * ```
13
+ */
2
14
  export declare class GraphHopperEngine implements RoutingEngine {
3
15
  readonly name = "GraphHopper";
4
16
  private readonly baseUrl;
@@ -10,5 +22,6 @@ export declare class GraphHopperEngine implements RoutingEngine {
10
22
  private params;
11
23
  computeIsochrone(origin: LatLon, mode: TransportMode, timeMinutes: number): Promise<Isochrone>;
12
24
  computeRouteMatrix(origins: LatLon[], destinations: LatLon[], mode: TransportMode): Promise<RouteMatrix>;
25
+ computeRoute(_origin: LatLon, _destination: LatLon, _mode: TransportMode): Promise<RouteGeometry>;
13
26
  }
14
27
  //# sourceMappingURL=graphhopper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphhopper.d.ts","sourceRoot":"","sources":["../../src/engines/graphhopper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAAE,SAAS,EAAE,WAAW,EACrC,aAAa,EAAE,MAAM,EACtB,MAAM,aAAa,CAAA;AASpB,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,IAAI,iBAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAQ;gBAEpB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAKxD,OAAO,CAAC,MAAM;IAMR,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,CAAC;IAmBf,kBAAkB,CACtB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC;CAuCxB"}
1
+ {"version":3,"file":"graphhopper.d.ts","sourceRoot":"","sources":["../../src/engines/graphhopper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EACpD,aAAa,EAAE,MAAM,EACtB,MAAM,aAAa,CAAA;AASpB;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,IAAI,iBAAgB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAQ;gBAEpB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAKxD,OAAO,CAAC,MAAM;IAMR,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,CAAC;IAmBf,kBAAkB,CACtB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC;IAwCjB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAGxG"}
@@ -4,6 +4,18 @@ const PROFILE = {
4
4
  walk: 'foot',
5
5
  public_transit: 'car',
6
6
  };
7
+ /**
8
+ * GraphHopper routing engine adapter.
9
+ *
10
+ * Works with self-hosted or cloud GraphHopper instances.
11
+ * API key is optional for self-hosted deployments.
12
+ * Note: GraphHopper does not natively support `public_transit` — falls back to driving.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const engine = new GraphHopperEngine({ baseUrl: 'http://localhost:8989' })
17
+ * ```
18
+ */
7
19
  export class GraphHopperEngine {
8
20
  name = 'GraphHopper';
9
21
  baseUrl;
@@ -68,5 +80,8 @@ export class GraphHopperEngine {
68
80
  }
69
81
  return { origins, destinations, entries };
70
82
  }
83
+ async computeRoute(_origin, _destination, _mode) {
84
+ throw new Error('computeRoute is not yet implemented for GraphHopper');
85
+ }
71
86
  }
72
87
  //# sourceMappingURL=graphhopper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphhopper.js","sourceRoot":"","sources":["../../src/engines/graphhopper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphhopper.js","sourceRoot":"","sources":["../../src/engines/graphhopper.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,23 @@
1
- import type { RoutingEngine, Isochrone, RouteMatrix, LatLon, TransportMode } from '../types.js';
1
+ import type { RoutingEngine, Isochrone, RouteMatrix, RouteGeometry, LatLon, TransportMode } from '../types.js';
2
+ /** Constructor options for the OpenRouteService engine adapter. */
2
3
  export interface OpenRouteServiceOptions {
4
+ /** ORS API key (required — obtain from https://openrouteservice.org/dev). */
3
5
  apiKey: string;
6
+ /** Base URL override. Defaults to the public ORS API (`https://api.openrouteservice.org`). */
4
7
  baseUrl?: string;
5
8
  }
9
+ /**
10
+ * OpenRouteService routing engine adapter.
11
+ *
12
+ * Requires an API key from https://openrouteservice.org/dev.
13
+ * Supports isochrone computation and route matrices.
14
+ * Note: ORS does not support `public_transit` mode — falls back to driving.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const engine = new OpenRouteServiceEngine({ apiKey: 'your-key' })
19
+ * ```
20
+ */
6
21
  export declare class OpenRouteServiceEngine implements RoutingEngine {
7
22
  readonly name = "OpenRouteService";
8
23
  private readonly apiKey;
@@ -10,5 +25,6 @@ export declare class OpenRouteServiceEngine implements RoutingEngine {
10
25
  constructor(options: OpenRouteServiceOptions);
11
26
  computeIsochrone(origin: LatLon, mode: TransportMode, timeMinutes: number): Promise<Isochrone>;
12
27
  computeRouteMatrix(origins: LatLon[], destinations: LatLon[], mode: TransportMode): Promise<RouteMatrix>;
28
+ computeRoute(_origin: LatLon, _destination: LatLon, _mode: TransportMode): Promise<RouteGeometry>;
13
29
  }
14
30
  //# sourceMappingURL=openrouteservice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openrouteservice.d.ts","sourceRoot":"","sources":["../../src/engines/openrouteservice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAW/F,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,sBAAuB,YAAW,aAAa;IAC1D,QAAQ,CAAC,IAAI,sBAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,OAAO,EAAE,uBAAuB;IAKtC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsC9F,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;CA6C/G"}
1
+ {"version":3,"file":"openrouteservice.d.ts","sourceRoot":"","sources":["../../src/engines/openrouteservice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAW9G,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACtC,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAA;IACd,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,sBAAuB,YAAW,aAAa;IAC1D,QAAQ,CAAC,IAAI,sBAAqB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,OAAO,EAAE,uBAAuB;IAKtC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAsC9F,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IA8CxG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAGxG"}
@@ -5,6 +5,18 @@ const MODE_MAP = {
5
5
  walk: 'foot-walking',
6
6
  public_transit: 'driving-car', // ORS doesn't support public transit; fallback to driving
7
7
  };
8
+ /**
9
+ * OpenRouteService routing engine adapter.
10
+ *
11
+ * Requires an API key from https://openrouteservice.org/dev.
12
+ * Supports isochrone computation and route matrices.
13
+ * Note: ORS does not support `public_transit` mode — falls back to driving.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const engine = new OpenRouteServiceEngine({ apiKey: 'your-key' })
18
+ * ```
19
+ */
8
20
  export class OpenRouteServiceEngine {
9
21
  name = 'OpenRouteService';
10
22
  apiKey;
@@ -80,5 +92,8 @@ export class OpenRouteServiceEngine {
80
92
  }
81
93
  return { origins, destinations, entries };
82
94
  }
95
+ async computeRoute(_origin, _destination, _mode) {
96
+ throw new Error('computeRoute is not yet implemented for OpenRouteService');
97
+ }
83
98
  }
84
99
  //# sourceMappingURL=openrouteservice.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openrouteservice.js","sourceRoot":"","sources":["../../src/engines/openrouteservice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouteservice.js","sourceRoot":"","sources":["../../src/engines/openrouteservice.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,18 @@
1
- import type { RoutingEngine, Isochrone, RouteMatrix, TransportMode, LatLon } from '../types.js';
1
+ import type { RoutingEngine, Isochrone, RouteMatrix, RouteGeometry, TransportMode, LatLon } from '../types.js';
2
+ /**
3
+ * OSRM routing engine adapter (route matrix only).
4
+ *
5
+ * OSRM does not support isochrone computation — calling `computeIsochrone`
6
+ * throws an error. Use this engine only when you need a fast route matrix
7
+ * and are supplying your own intersection polygon.
8
+ *
9
+ * Requires a self-hosted OSRM instance — no API key needed.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const engine = new OsrmEngine({ baseUrl: 'http://localhost:5000' })
14
+ * ```
15
+ */
2
16
  export declare class OsrmEngine implements RoutingEngine {
3
17
  readonly name = "OSRM";
4
18
  private readonly baseUrl;
@@ -7,5 +21,6 @@ export declare class OsrmEngine implements RoutingEngine {
7
21
  });
8
22
  computeIsochrone(_origin: LatLon, _mode: TransportMode, _timeMinutes: number): Promise<Isochrone>;
9
23
  computeRouteMatrix(origins: LatLon[], destinations: LatLon[], mode: TransportMode): Promise<RouteMatrix>;
24
+ computeRoute(_origin: LatLon, _destination: LatLon, _mode: TransportMode): Promise<RouteGeometry>;
10
25
  }
11
26
  //# sourceMappingURL=osrm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"osrm.d.ts","sourceRoot":"","sources":["../../src/engines/osrm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAAE,SAAS,EAAE,WAAW,EACrC,aAAa,EAAE,MAAM,EACtB,MAAM,aAAa,CAAA;AASpB,qBAAa,UAAW,YAAW,aAAa;IAC9C,QAAQ,CAAC,IAAI,UAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAIvC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAM3F,kBAAkB,CACtB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC;CAyCxB"}
1
+ {"version":3,"file":"osrm.d.ts","sourceRoot":"","sources":["../../src/engines/osrm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EACpD,aAAa,EAAE,MAAM,EACtB,MAAM,aAAa,CAAA;AASpB;;;;;;;;;;;;;GAaG;AACH,qBAAa,UAAW,YAAW,aAAa;IAC9C,QAAQ,CAAC,IAAI,UAAS;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAIvC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAM3F,kBAAkB,CACtB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC;IA0CjB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAGxG"}
@@ -4,6 +4,20 @@ const PROFILE = {
4
4
  walk: 'foot',
5
5
  public_transit: 'car', // OSRM does not support public transit; fallback to driving
6
6
  };
7
+ /**
8
+ * OSRM routing engine adapter (route matrix only).
9
+ *
10
+ * OSRM does not support isochrone computation — calling `computeIsochrone`
11
+ * throws an error. Use this engine only when you need a fast route matrix
12
+ * and are supplying your own intersection polygon.
13
+ *
14
+ * Requires a self-hosted OSRM instance — no API key needed.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const engine = new OsrmEngine({ baseUrl: 'http://localhost:5000' })
19
+ * ```
20
+ */
7
21
  export class OsrmEngine {
8
22
  name = 'OSRM';
9
23
  baseUrl;
@@ -44,5 +58,8 @@ export class OsrmEngine {
44
58
  }
45
59
  return { origins, destinations, entries };
46
60
  }
61
+ async computeRoute(_origin, _destination, _mode) {
62
+ throw new Error('computeRoute is not yet implemented for OSRM');
63
+ }
47
64
  }
48
65
  //# sourceMappingURL=osrm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"osrm.js","sourceRoot":"","sources":["../../src/engines/osrm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"osrm.js","sourceRoot":"","sources":["../../src/engines/osrm.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,35 @@
1
- import type { RoutingEngine, Isochrone, RouteMatrix, TransportMode, LatLon } from '../types.js';
1
+ import type { RoutingEngine, Isochrone, RouteMatrix, RouteGeometry, TransportMode, LatLon } from '../types.js';
2
+ /**
3
+ * Error thrown by ValhallaEngine when the server returns a non-200 response.
4
+ * Includes the HTTP status code and response body for error handling
5
+ * (e.g. detecting 402 Payment Required for L402 flows).
6
+ */
7
+ export declare class ValhallaError extends Error {
8
+ readonly status: number;
9
+ readonly body: string;
10
+ constructor(message: string, status: number, body: string);
11
+ }
12
+ /**
13
+ * Valhalla routing engine adapter.
14
+ *
15
+ * Requires a self-hosted Valhalla instance — no API key needed.
16
+ * Supports isochrone computation and route matrices.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const engine = new ValhallaEngine({ baseUrl: 'http://localhost:8002' })
21
+ * ```
22
+ */
2
23
  export declare class ValhallaEngine implements RoutingEngine {
3
24
  readonly name = "Valhalla";
4
25
  private readonly baseUrl;
26
+ private readonly extraHeaders;
5
27
  constructor(config: {
6
28
  baseUrl: string;
29
+ headers?: Record<string, string>;
7
30
  });
8
31
  computeIsochrone(origin: LatLon, mode: TransportMode, timeMinutes: number): Promise<Isochrone>;
9
32
  computeRouteMatrix(origins: LatLon[], destinations: LatLon[], mode: TransportMode): Promise<RouteMatrix>;
33
+ computeRoute(origin: LatLon, destination: LatLon, mode: TransportMode): Promise<RouteGeometry>;
10
34
  }
11
35
  //# sourceMappingURL=valhalla.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"valhalla.d.ts","sourceRoot":"","sources":["../../src/engines/valhalla.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAAE,SAAS,EAAE,WAAW,EACrC,aAAa,EAAE,MAAM,EACtB,MAAM,aAAa,CAAA;AASpB,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,cAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;gBAEpB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAIjC,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,CAAC;IAmCf,kBAAkB,CACtB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC;CAsCxB"}
1
+ {"version":3,"file":"valhalla.d.ts","sourceRoot":"","sources":["../../src/engines/valhalla.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EACpD,aAAa,EAAE,MAAM,EACtB,MAAM,aAAa,CAAA;AAEpB;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,MAAM,EAAE,MAAM;aACd,IAAI,EAAE,MAAM;gBAF5B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM;CAK/B;AA6CD;;;;;;;;;;GAUG;AACH,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,cAAa;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;gBAEzC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAKnE,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,CAAC;IAmCf,kBAAkB,CACtB,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC;IAuCjB,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,aAAa,CAAC;CAyD1B"}
@@ -1,14 +1,71 @@
1
+ /**
2
+ * Error thrown by ValhallaEngine when the server returns a non-200 response.
3
+ * Includes the HTTP status code and response body for error handling
4
+ * (e.g. detecting 402 Payment Required for L402 flows).
5
+ */
6
+ export class ValhallaError extends Error {
7
+ status;
8
+ body;
9
+ constructor(message, status, body) {
10
+ super(message);
11
+ this.status = status;
12
+ this.body = body;
13
+ this.name = 'ValhallaError';
14
+ }
15
+ }
16
+ /** Decode a polyline encoded with precision 6 (Valhalla default) into [lon, lat] pairs. */
17
+ function decodePolyline6(encoded) {
18
+ const coordinates = [];
19
+ let index = 0;
20
+ let lat = 0;
21
+ let lon = 0;
22
+ const factor = 1e6;
23
+ while (index < encoded.length) {
24
+ let shift = 0;
25
+ let result = 0;
26
+ let byte;
27
+ do {
28
+ byte = encoded.charCodeAt(index++) - 63;
29
+ result |= (byte & 0x1f) << shift;
30
+ shift += 5;
31
+ } while (byte >= 0x20);
32
+ lat += (result & 1) ? ~(result >> 1) : (result >> 1);
33
+ shift = 0;
34
+ result = 0;
35
+ do {
36
+ byte = encoded.charCodeAt(index++) - 63;
37
+ result |= (byte & 0x1f) << shift;
38
+ shift += 5;
39
+ } while (byte >= 0x20);
40
+ lon += (result & 1) ? ~(result >> 1) : (result >> 1);
41
+ coordinates.push([lon / factor, lat / factor]);
42
+ }
43
+ return coordinates;
44
+ }
1
45
  const COSTING = {
2
46
  drive: 'auto',
3
47
  cycle: 'bicycle',
4
48
  walk: 'pedestrian',
5
49
  public_transit: 'multimodal',
6
50
  };
51
+ /**
52
+ * Valhalla routing engine adapter.
53
+ *
54
+ * Requires a self-hosted Valhalla instance — no API key needed.
55
+ * Supports isochrone computation and route matrices.
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const engine = new ValhallaEngine({ baseUrl: 'http://localhost:8002' })
60
+ * ```
61
+ */
7
62
  export class ValhallaEngine {
8
63
  name = 'Valhalla';
9
64
  baseUrl;
65
+ extraHeaders;
10
66
  constructor(config) {
11
67
  this.baseUrl = config.baseUrl.replace(/\/$/, '');
68
+ this.extraHeaders = config.headers ?? {};
12
69
  }
13
70
  async computeIsochrone(origin, mode, timeMinutes) {
14
71
  const body = {
@@ -19,12 +76,12 @@ export class ValhallaEngine {
19
76
  };
20
77
  const res = await fetch(`${this.baseUrl}/isochrone`, {
21
78
  method: 'POST',
22
- headers: { 'Content-Type': 'application/json' },
79
+ headers: { 'Content-Type': 'application/json', ...this.extraHeaders },
23
80
  body: JSON.stringify(body),
24
81
  });
25
82
  if (!res.ok) {
26
83
  const text = await res.text().catch(() => '');
27
- throw new Error(`Valhalla isochrone error: ${res.status} ${res.statusText} — ${text}`);
84
+ throw new ValhallaError(`Valhalla isochrone error: ${res.status} ${res.statusText} — ${text}`, res.status, text);
28
85
  }
29
86
  const data = (await res.json());
30
87
  if (!data.features?.length) {
@@ -45,12 +102,12 @@ export class ValhallaEngine {
45
102
  };
46
103
  const res = await fetch(`${this.baseUrl}/sources_to_targets`, {
47
104
  method: 'POST',
48
- headers: { 'Content-Type': 'application/json' },
105
+ headers: { 'Content-Type': 'application/json', ...this.extraHeaders },
49
106
  body: JSON.stringify(body),
50
107
  });
51
108
  if (!res.ok) {
52
109
  const text = await res.text().catch(() => '');
53
- throw new Error(`Valhalla matrix error: ${res.status} ${res.statusText} — ${text}`);
110
+ throw new ValhallaError(`Valhalla matrix error: ${res.status} ${res.statusText} — ${text}`, res.status, text);
54
111
  }
55
112
  const data = (await res.json());
56
113
  const entries = [];
@@ -68,5 +125,44 @@ export class ValhallaEngine {
68
125
  }
69
126
  return { origins, destinations, entries };
70
127
  }
128
+ async computeRoute(origin, destination, mode) {
129
+ const body = {
130
+ locations: [
131
+ { lat: origin.lat, lon: origin.lon },
132
+ { lat: destination.lat, lon: destination.lon },
133
+ ],
134
+ costing: COSTING[mode],
135
+ directions_type: 'maneuvers',
136
+ };
137
+ const res = await fetch(`${this.baseUrl}/route`, {
138
+ method: 'POST',
139
+ headers: { 'Content-Type': 'application/json', ...this.extraHeaders },
140
+ body: JSON.stringify(body),
141
+ });
142
+ if (!res.ok) {
143
+ const text = await res.text().catch(() => '');
144
+ throw new ValhallaError(`Valhalla route error: ${res.status} ${res.statusText} — ${text}`, res.status, text);
145
+ }
146
+ const data = (await res.json());
147
+ const tripLeg = data.trip.legs[0];
148
+ const coordinates = decodePolyline6(tripLeg.shape);
149
+ const legs = tripLeg.maneuvers.map((m) => ({
150
+ instruction: m.instruction,
151
+ distanceKm: m.length,
152
+ durationMinutes: m.time / 60,
153
+ }));
154
+ return {
155
+ origin,
156
+ destination,
157
+ mode,
158
+ durationMinutes: data.trip.summary.time / 60,
159
+ distanceKm: data.trip.summary.length,
160
+ geometry: {
161
+ type: 'LineString',
162
+ coordinates,
163
+ },
164
+ legs,
165
+ };
166
+ }
71
167
  }
72
168
  //# sourceMappingURL=valhalla.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"valhalla.js","sourceRoot":"","sources":["../../src/engines/valhalla.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"valhalla.js","sourceRoot":"","sources":["../../src/engines/valhalla.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IACA;IAHlB,YACE,OAAe,EACC,MAAc,EACd,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAA;QAHE,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;IAC7B,CAAC;CACF;AAED,2FAA2F;AAC3F,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,WAAW,GAAe,EAAE,CAAA;IAClC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,MAAM,MAAM,GAAG,GAAG,CAAA;IAElB,OAAO,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,IAAI,MAAM,GAAG,CAAC,CAAA;QACd,IAAI,IAAY,CAAA;QAEhB,GAAG,CAAC;YACF,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAA;YACvC,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,CAAA;YAChC,KAAK,IAAI,CAAC,CAAA;QACZ,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAC;QACtB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;QAEpD,KAAK,GAAG,CAAC,CAAA;QACT,MAAM,GAAG,CAAC,CAAA;QAEV,GAAG,CAAC;YACF,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAA;YACvC,MAAM,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,CAAA;YAChC,KAAK,IAAI,CAAC,CAAA;QACZ,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAC;QACtB,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;QAEpD,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,MAAM,OAAO,GAAkC;IAC7C,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,YAAY;IAClB,cAAc,EAAE,YAAY;CAC7B,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,UAAU,CAAA;IACT,OAAO,CAAQ;IACf,YAAY,CAAwB;IAErD,YAAY,MAA6D;QACvE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,MAAc,EACd,IAAmB,EACnB,WAAmB;QAEnB,MAAM,IAAI,GAAG;YACX,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YACjD,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;YACtB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YACjC,QAAQ,EAAE,IAAI;SACf,CAAA;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,YAAY,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;YACrE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7C,MAAM,IAAI,aAAa,CAAC,6BAA6B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAClH,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAE7B,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,CAAC;QAED,OAAO;YACL,MAAM;YACN,IAAI;YACJ,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ;SACnC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,OAAiB,EACjB,YAAsB,EACtB,IAAmB;QAEnB,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACzD,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9D,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;SACvB,CAAA;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,qBAAqB,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;YACrE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7C,MAAM,IAAI,aAAa,CAAC,0BAA0B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC/G,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAE7B,CAAA;QAED,MAAM,OAAO,GAAkB,EAAE,CAAA;QACjC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC3C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBAChD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;gBAC5C,OAAO,CAAC,IAAI,CAAC;oBACX,WAAW,EAAE,EAAE;oBACf,gBAAgB,EAAE,EAAE;oBACpB,eAAe,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;oBACpD,oEAAoE;oBACpE,UAAU,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;iBACnD,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,WAAmB,EACnB,IAAmB;QAEnB,MAAM,IAAI,GAAG;YACX,SAAS,EAAE;gBACT,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE;gBACpC,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE;aAC/C;YACD,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC;YACtB,eAAe,EAAE,WAAW;SAC7B,CAAA;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,QAAQ,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE;YACrE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7C,MAAM,IAAI,aAAa,CAAC,yBAAyB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,MAAM,IAAI,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QAC9G,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAY7B,CAAA;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjC,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAElD,MAAM,IAAI,GAAe,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,MAAM;YACpB,eAAe,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE;SAC7B,CAAC,CAAC,CAAA;QAEH,OAAO;YACL,MAAM;YACN,WAAW;YACX,IAAI;YACJ,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE;YAC5C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;YACpC,QAAQ,EAAE;gBACR,IAAI,EAAE,YAAY;gBAClB,WAAW;aACZ;YACD,IAAI;SACL,CAAA;IACH,CAAC;CACF"}
package/dist/geo.d.ts CHANGED
@@ -1,18 +1,30 @@
1
1
  import type { GeoJSONPolygon } from './types.js';
2
+ /** Axis-aligned bounding box in geographic coordinates. */
2
3
  export interface BBox {
3
4
  minLon: number;
4
5
  minLat: number;
5
6
  maxLon: number;
6
7
  maxLat: number;
7
8
  }
9
+ /** A geographic coordinate (latitude/longitude). */
8
10
  export interface Coordinate {
9
11
  lat: number;
10
12
  lon: number;
11
13
  }
14
+ /** Compute the axis-aligned bounding box of a GeoJSON Polygon. Returns zeroed BBox if the polygon has no coordinates. */
12
15
  export declare function boundingBox(polygon: GeoJSONPolygon): BBox;
16
+ /** Compute the geometric centroid of a GeoJSON Polygon. Uses the arithmetic mean of the outer ring vertices (excluding closing vertex). */
13
17
  export declare function centroid(polygon: GeoJSONPolygon): Coordinate;
18
+ /** Approximate area of a GeoJSON Polygon in square metres. Uses the shoelace formula with a local flat-Earth projection centred on the polygon. */
14
19
  export declare function polygonArea(polygon: GeoJSONPolygon): number;
20
+ /**
21
+ * Intersect N GeoJSON Polygons, preserving all disconnected components.
22
+ *
23
+ * Uses Sutherland–Hodgman clipping for convex polygons and ear-clip triangulation
24
+ * for concave shapes. Returns an empty array if any pairwise intersection is empty.
25
+ */
15
26
  export declare function intersectPolygonsAll(polygons: GeoJSONPolygon[]): GeoJSONPolygon[];
27
+ /** Intersect N GeoJSON Polygons, returning the single largest component. Returns `null` if the polygons do not overlap. */
16
28
  export declare function intersectPolygons(polygons: GeoJSONPolygon[]): GeoJSONPolygon | null;
17
29
  /**
18
30
  * Compute the destination point given a start [lon, lat], distance in metres,
package/dist/geo.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"geo.d.ts","sourceRoot":"","sources":["../src/geo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAiBzD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAa5D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAmB3D;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EAAE,GACzB,cAAc,EAAE,CAsBlB;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,cAAc,EAAE,GACzB,cAAc,GAAG,IAAI,CAavB;AA2PD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACvB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GACjB,CAAC,MAAM,EAAE,MAAM,CAAC,CA+BlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,YAAY,EAAE,MAAM,EACpB,QAAQ,SAAK,GACZ,cAAc,CAoBhB"}
1
+ {"version":3,"file":"geo.d.ts","sourceRoot":"","sources":["../src/geo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,2DAA2D;AAC3D,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,oDAAoD;AACpD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,yHAAyH;AACzH,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAiBzD;AAED,2IAA2I;AAC3I,wBAAgB,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,UAAU,CAa5D;AAED,mJAAmJ;AACnJ,wBAAgB,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAmB3D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EAAE,GACzB,cAAc,EAAE,CAsBlB;AAED,2HAA2H;AAC3H,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,cAAc,EAAE,GACzB,cAAc,GAAG,IAAI,CAavB;AA0QD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACvB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GACjB,CAAC,MAAM,EAAE,MAAM,CAAC,CA+BlB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,YAAY,EAAE,MAAM,EACpB,QAAQ,SAAK,GACZ,cAAc,CAoBhB"}
package/dist/geo.js CHANGED
@@ -1,3 +1,4 @@
1
+ /** Compute the axis-aligned bounding box of a GeoJSON Polygon. Returns zeroed BBox if the polygon has no coordinates. */
1
2
  export function boundingBox(polygon) {
2
3
  const ring = polygon.coordinates[0];
3
4
  if (!ring || ring.length === 0) {
@@ -17,6 +18,7 @@ export function boundingBox(polygon) {
17
18
  }
18
19
  return { minLon, minLat, maxLon, maxLat };
19
20
  }
21
+ /** Compute the geometric centroid of a GeoJSON Polygon. Uses the arithmetic mean of the outer ring vertices (excluding closing vertex). */
20
22
  export function centroid(polygon) {
21
23
  const ring = polygon.coordinates[0];
22
24
  if (!ring || ring.length < 2)
@@ -29,6 +31,7 @@ export function centroid(polygon) {
29
31
  }
30
32
  return { lon: sumLon / n, lat: sumLat / n };
31
33
  }
34
+ /** Approximate area of a GeoJSON Polygon in square metres. Uses the shoelace formula with a local flat-Earth projection centred on the polygon. */
32
35
  export function polygonArea(polygon) {
33
36
  const ring = polygon.coordinates[0];
34
37
  if (!ring || ring.length < 4)
@@ -47,6 +50,12 @@ export function polygonArea(polygon) {
47
50
  }
48
51
  return Math.abs(area) / 2;
49
52
  }
53
+ /**
54
+ * Intersect N GeoJSON Polygons, preserving all disconnected components.
55
+ *
56
+ * Uses Sutherland–Hodgman clipping for convex polygons and ear-clip triangulation
57
+ * for concave shapes. Returns an empty array if any pairwise intersection is empty.
58
+ */
50
59
  export function intersectPolygonsAll(polygons) {
51
60
  if (polygons.length === 0)
52
61
  return [];
@@ -71,6 +80,7 @@ export function intersectPolygonsAll(polygons) {
71
80
  }
72
81
  return components.filter(ring => ring.length >= 3).map(ringToPolygon);
73
82
  }
83
+ /** Intersect N GeoJSON Polygons, returning the single largest component. Returns `null` if the polygons do not overlap. */
74
84
  export function intersectPolygons(polygons) {
75
85
  const all = intersectPolygonsAll(polygons);
76
86
  if (all.length === 0)
@@ -147,7 +157,23 @@ function sutherlandHodgman(subject, clip) {
147
157
  }
148
158
  }
149
159
  }
150
- return output;
160
+ return deduplicateConsecutive(output);
161
+ }
162
+ /** Remove consecutive duplicate points (including wrap-around: last vs first). */
163
+ function deduplicateConsecutive(ring) {
164
+ if (ring.length <= 1)
165
+ return ring;
166
+ const EPS = 1e-9;
167
+ const eq = (a, b) => Math.abs(a[0] - b[0]) < EPS && Math.abs(a[1] - b[1]) < EPS;
168
+ const out = [ring[0]];
169
+ for (let i = 1; i < ring.length; i++) {
170
+ if (!eq(ring[i], out[out.length - 1]))
171
+ out.push(ring[i]);
172
+ }
173
+ // Also check wrap-around: if last == first, drop last
174
+ if (out.length > 1 && eq(out[out.length - 1], out[0]))
175
+ out.pop();
176
+ return out;
151
177
  }
152
178
  function isLeft(a, b, p) {
153
179
  return (b[0] - a[0]) * (p[1] - a[1]) - (b[1] - a[1]) * (p[0] - a[0]) >= 0;
package/dist/geo.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"geo.js","sourceRoot":"","sources":["../src/geo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geo.js","sourceRoot":"","sources":["../src/geo.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- export type { LatLon, GeoJSONPolygon, TransportMode, FairnessStrategy, VenueType, RoutingEngine, Isochrone, MatrixEntry, RouteMatrix, Venue, RendezvousOptions, RendezvousSuggestion, } from './types.js';
1
+ export type { LatLon, GeoJSONPolygon, GeoJSONLineString, TransportMode, FairnessStrategy, VenueType, RoutingEngine, Isochrone, MatrixEntry, RouteMatrix, RouteLeg, RouteGeometry, Venue, RendezvousOptions, RendezvousSuggestion, } from './types.js';
2
2
  export { intersectPolygons, intersectPolygonsAll, boundingBox, centroid, polygonArea, circleToPolygon, getDestinationPoint, } from './geo.js';
3
3
  export type { BBox, Coordinate } from './geo.js';
4
4
  export { OpenRouteServiceEngine } from './engines/openrouteservice.js';
5
- export { ValhallaEngine } from './engines/valhalla.js';
5
+ export { ValhallaEngine, ValhallaError } from './engines/valhalla.js';
6
6
  export { GraphHopperEngine } from './engines/graphhopper.js';
7
7
  export { OsrmEngine } from './engines/osrm.js';
8
8
  export { searchVenues } from './venues.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,MAAM,EACN,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,KAAK,EACL,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,WAAW,EACX,eAAe,EACf,mBAAmB,GACpB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,QAAQ,EACR,aAAa,EACb,KAAK,EACL,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,WAAW,EACX,eAAe,EACf,mBAAmB,GACpB,MAAM,UAAU,CAAA;AACjB,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAGhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  export { intersectPolygons, intersectPolygonsAll, boundingBox, centroid, polygonArea, circleToPolygon, getDestinationPoint, } from './geo.js';
3
3
  // Engines
4
4
  export { OpenRouteServiceEngine } from './engines/openrouteservice.js';
5
- export { ValhallaEngine } from './engines/valhalla.js';
5
+ export { ValhallaEngine, ValhallaError } from './engines/valhalla.js';
6
6
  export { GraphHopperEngine } from './engines/graphhopper.js';
7
7
  export { OsrmEngine } from './engines/osrm.js';
8
8
  // Venues
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,WAAW;AACX,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,WAAW,EACX,eAAe,EACf,mBAAmB,GACpB,MAAM,UAAU,CAAA;AAGjB,UAAU;AACV,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,WAAW;AACX,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,QAAQ,EACR,WAAW,EACX,eAAe,EACf,mBAAmB,GACpB,MAAM,UAAU,CAAA;AAGjB,UAAU;AACV,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA"}
package/dist/types.d.ts CHANGED
@@ -13,6 +13,11 @@ export interface GeoJSONPolygon {
13
13
  type: 'Polygon';
14
14
  coordinates: number[][][];
15
15
  }
16
+ /** GeoJSON LineString geometry. */
17
+ export interface GeoJSONLineString {
18
+ type: 'LineString';
19
+ coordinates: number[][];
20
+ }
16
21
  /** Result of an isochrone computation. */
17
22
  export interface Isochrone {
18
23
  origin: LatLon;
@@ -43,6 +48,22 @@ export interface Venue {
43
48
  venueType: VenueType;
44
49
  osmId?: string;
45
50
  }
51
+ /** A single manoeuvre in a route. */
52
+ export interface RouteLeg {
53
+ instruction: string;
54
+ distanceKm: number;
55
+ durationMinutes: number;
56
+ }
57
+ /** Result of a single route computation. */
58
+ export interface RouteGeometry {
59
+ origin: LatLon;
60
+ destination: LatLon;
61
+ mode: TransportMode;
62
+ durationMinutes: number;
63
+ distanceKm: number;
64
+ geometry: GeoJSONLineString;
65
+ legs?: RouteLeg[];
66
+ }
46
67
  /** Options for rendezvous calculation. */
47
68
  export interface RendezvousOptions {
48
69
  participants: LatLon[];
@@ -69,5 +90,7 @@ export interface RoutingEngine {
69
90
  computeIsochrone(origin: LatLon, mode: TransportMode, timeMinutes: number): Promise<Isochrone>;
70
91
  /** Compute a travel time/distance matrix between origins and destinations. */
71
92
  computeRouteMatrix(origins: LatLon[], destinations: LatLon[], mode: TransportMode): Promise<RouteMatrix>;
93
+ /** Compute a route between two points, returning the polyline and optional turn-by-turn legs. */
94
+ computeRoute(origin: LatLon, destination: LatLon, mode: TransportMode): Promise<RouteGeometry>;
72
95
  }
73
96
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAA;AAEzE,gDAAgD;AAChD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,WAAW,GAAG,cAAc,CAAA;AAEvE,mDAAmD;AACnD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;CAC1B;AAED,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,aAAa,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,cAAc,CAAA;CACxB;AAED,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,4CAA4C;AAC5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB;AAED,gCAAgC;AAChC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,iBAAiB,GAAG,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,kBAAkB,GAAG,MAAM,CAAA;AAE3I,gDAAgD;AAChD,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,SAAS,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,IAAI,EAAE,aAAa,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,KAAK,CAAA;IACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,aAAa,EAAE,MAAM,CAAA;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB,mDAAmD;IACnD,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAE9F,8EAA8E;IAC9E,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CACzG"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/llms.txt CHANGED
@@ -23,10 +23,13 @@ The main pipeline function.
23
23
  ### rendezvous-kit/geo
24
24
  Pure-TypeScript polygon geometry.
25
25
 
26
- - intersectPolygons(polygons: GeoJSONPolygon[]) → GeoJSONPolygon | null
26
+ - intersectPolygons(polygons: GeoJSONPolygon[]) → GeoJSONPolygon | null — largest intersection component
27
+ - intersectPolygonsAll(polygons: GeoJSONPolygon[]) → GeoJSONPolygon[] — all intersection components
27
28
  - boundingBox(polygon: GeoJSONPolygon) → BBox
28
29
  - centroid(polygon: GeoJSONPolygon) → { lat, lon }
29
30
  - polygonArea(polygon: GeoJSONPolygon) → number (square metres)
31
+ - circleToPolygon(centre: [lon, lat], radiusMetres, segments?) → GeoJSONPolygon
32
+ - getDestinationPoint(start: [lon, lat], distanceMetres, bearingDeg) → [lon, lat]
30
33
 
31
34
  ### rendezvous-kit/engines/valhalla
32
35
  - new ValhallaEngine({ baseUrl: string })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rendezvous-kit",
3
- "version": "1.8.0",
3
+ "version": "1.10.0",
4
4
  "type": "module",
5
5
  "description": "Find fair meeting points for N people — isochrone intersection, venue search, and fairness scoring.",
6
6
  "main": "./dist/index.js",