Skip to content

Commit 7479f6e

Browse files
committed
feat(transit-motis): structured TripUpdate + RT-aware departures + promote guard
- TripUpdate becomes a structured type ({tripId, expectedAt, delaySeconds, canceled, platform}); getTripUpdate signature gains optional stopId. - live-transit-motis derives structured deltas from MOTIS itineraries via deltaFromItinerary(); recognises only MOTIS-prefixed trip ids so the orchestrator can fall through cleanly. - New integrations/transit/realtime.ts enriches getDepartures/getArrivals with live deltas from registered RealtimeProviders covering the bbox. - Orchestrator's resolveByPrefix is async + skips providers in cooldown so unhealthy upstreams stop short-circuiting healthy fallbacks. - MOTIS_URL env var threaded through transit-motis-local, live-transit-motis, and geocoding-motis so one var reaches every local-MOTIS consumer. - Promote stage requires config.yml plus either a data-manager-written import-marker or a known sentinel file; the old "directory non-empty" fallback that let partial/junk volumes pass is gone. - gen-motis-config + gen-full-config honour MOTIS_INCREMENTAL_RT_UPDATE. - @openmapx/mobility-core subpath renamed from /types to /shared-mobility for clarity; bike/scooter/car-sharing + tsconfigs updated.
1 parent 923ee22 commit 7479f6e

37 files changed

Lines changed: 1355 additions & 90 deletions

apps/web/tsconfig.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
"@openmapx/mobility-core/*": [
2020
"../../packages/mobility-core/src/*.ts",
2121
"../../packages/mobility-core/src/types/*.ts"
22-
],
23-
"@openmapx/mobility-core/types": ["../../packages/mobility-core/src/types/shared-mobility.ts"]
22+
]
2423
}
2524
},
2625
"include": [

integrations/bike-sharing/providers/provider.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,18 @@ import {
3131
} from "@openmapx/mobility-core/mapper";
3232
import { fetchMotisRentals } from "@openmapx/mobility-core/motis-rentals";
3333
import { type MobilityResult, withAttribution } from "@openmapx/mobility-core/result";
34-
import type { SharedMobilityStation, SharedMobilityVehicle } from "@openmapx/mobility-core/types";
34+
import type {
35+
SharedMobilityStation,
36+
SharedMobilityVehicle,
37+
} from "@openmapx/mobility-core/shared-mobility";
3538
import { searchCityBikes } from "./citybikes-client.js";
3639
import { searchDbBikes } from "./db-bike-client.js";
3740
import { searchDonkey } from "./donkey-client.js";
3841
import { searchNextbike } from "./nextbike-client.js";
3942

40-
const BIKE_FORM_FACTORS = new Set<import("@openmapx/mobility-core/types").VehicleFormFactor>([
41-
"bicycle",
42-
"cargo_bicycle",
43-
]);
43+
const BIKE_FORM_FACTORS = new Set<
44+
import("@openmapx/mobility-core/shared-mobility").VehicleFormFactor
45+
>(["bicycle", "cargo_bicycle"]);
4446

4547
const ATTRIBUTION: Attribution[] = [
4648
{

integrations/bike-sharing/providers/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ export type {
33
SharedMobilityVehicle,
44
VehicleFormFactor,
55
VehiclePropulsion,
6-
} from "@openmapx/mobility-core/types";
6+
} from "@openmapx/mobility-core/shared-mobility";

integrations/car-sharing/__tests__/merge-stations.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { SharedMobilityStation } from "@openmapx/mobility-core/types";
1+
import type { SharedMobilityStation } from "@openmapx/mobility-core/shared-mobility";
22
import { afterEach, describe, expect, it, vi } from "vitest";
33
import { mergeRegionalStations } from "../providers/merge-stations.js";
44

integrations/car-sharing/providers/bielefeld-client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import type { LngLat } from "@openmapx/core";
88
import { formatAddress } from "@openmapx/integration-geocoding/format-address";
9-
import type { SharedMobilityStation } from "@openmapx/mobility-core/types";
9+
import type { SharedMobilityStation } from "@openmapx/mobility-core/shared-mobility";
1010
import { parseCsvRecords } from "@openmapx/mobility-formats";
1111
import { createStaticCarSharingClient } from "./static-car-sharing-client.js";
1212

integrations/car-sharing/providers/cambio-client.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66

77
import { type BoundingBox, bboxContains, type LngLat, USER_AGENT } from "@openmapx/core";
8-
import type { SharedMobilityStation } from "@openmapx/mobility-core/types";
8+
import type { SharedMobilityStation } from "@openmapx/mobility-core/shared-mobility";
99
import type { RegionalCarSharingClient } from "./regional-client-types.js";
1010

1111
const CAMBIO_BASE = "https://cwapi.cambio-carsharing.com/pub";

integrations/car-sharing/providers/merge-stations.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* before open data sources so its live availability numbers are kept.
1111
*/
1212

13-
import type { SharedMobilityStation } from "@openmapx/mobility-core/types";
13+
import type { SharedMobilityStation } from "@openmapx/mobility-core/shared-mobility";
1414

1515
/** Maximum distance in meters to consider two stations as the same location. */
1616
const MERGE_RADIUS_M = 50;

integrations/car-sharing/providers/provider.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ import {
3131
} from "@openmapx/mobility-core/mapper";
3232
import { fetchMotisRentals } from "@openmapx/mobility-core/motis-rentals";
3333
import { type MobilityResult, withAttribution } from "@openmapx/mobility-core/result";
34-
import type { SharedMobilityStation, SharedMobilityVehicle } from "@openmapx/mobility-core/types";
34+
import type {
35+
SharedMobilityStation,
36+
SharedMobilityVehicle,
37+
} from "@openmapx/mobility-core/shared-mobility";
3538
import { mergeRegionalStations } from "./merge-stations.js";
3639
import { searchRegionalClients } from "./registry.js";
3740

integrations/car-sharing/providers/regional-client-types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import type { BoundingBox, LngLat } from "@openmapx/core";
2-
import type { SharedMobilityStation } from "@openmapx/mobility-core/types";
2+
import type { SharedMobilityStation } from "@openmapx/mobility-core/shared-mobility";
33

44
/**
55
* Interface for regional car-sharing operator clients.

integrations/car-sharing/providers/registry.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*/
55

66
import type { BoundingBox } from "@openmapx/core";
7-
import type { SharedMobilityStation } from "@openmapx/mobility-core/types";
7+
import type { SharedMobilityStation } from "@openmapx/mobility-core/shared-mobility";
88
import { clientMatchesBbox, type RegionalCarSharingClient } from "./regional-client-types.js";
99

1010
const clients: RegionalCarSharingClient[] = [];

0 commit comments

Comments
 (0)