Skip to content

Commit f351c19

Browse files
committed
refactor: ♻️ costing options into their own specific types instead
1 parent c3d2dda commit f351c19

File tree

2 files changed

+79
-12
lines changed

2 files changed

+79
-12
lines changed

src/types/costing.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ export interface BaseMotorizedVehicleCostingOptions {
179179
}
180180

181181
/*
182-
* MotorizedPassengerVehicleOptions are available for auto, bus, taxi, and truck costing
182+
* MotorizedVehicleCostingOptions are available for auto, bus, taxi
183183
*/
184184
export interface MotorizedVehicleCostingOptions
185185
extends BaseMotorizedVehicleCostingOptions {

src/types/request.ts

Lines changed: 78 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,16 @@ import {
66
StringBool,
77
UnitsOfDistance,
88
} from './base';
9-
import { CostingModels, CostingOptions } from './costing';
9+
import {
10+
BicycleCostingOptions,
11+
CostingModels,
12+
CostingOptions,
13+
MotorScooterCostingOptions,
14+
MotorcycleCostingOptions,
15+
MotorizedVehicleCostingOptions,
16+
PedestrianCostingOptions,
17+
TruckCostingOptions,
18+
} from './costing';
1019
import { SupportedLanguageAlias, SupportedLanguageTags } from './languages';
1120
import { LatLng, RequestLocation } from './locations';
1221
import { TraceAttributesFilter, TraceOptions } from './tracing';
@@ -79,14 +88,71 @@ export interface BaseRouteRequest {
7988
prioritize_bidirectional?: StringBool;
8089
}
8190

82-
export interface TurnByTurnRouteRequest extends BaseRouteRequest {
83-
costing: CostingModels;
91+
export interface BicycleRouteRequest extends BaseRouteRequest {
92+
costing: 'bicycle';
93+
costing_options?: { bicycle: BicycleCostingOptions };
94+
}
95+
96+
export interface PedestrianRouteRequest extends BaseRouteRequest {
97+
costing: 'pedestrian';
98+
costing_options?: { pedestrian: PedestrianCostingOptions };
99+
}
100+
101+
export interface AutoRouteRequest extends BaseRouteRequest {
102+
costing: 'auto';
103+
costing_options?: { auto: MotorizedVehicleCostingOptions };
104+
}
105+
106+
export interface BusRouteRequest extends BaseRouteRequest {
107+
costing: 'bus';
108+
costing_options?: { bus: MotorizedVehicleCostingOptions };
109+
}
110+
111+
export interface TaxiRouteRequest extends BaseRouteRequest {
112+
costing: 'taxi';
113+
costing_options?: { taxi: MotorizedVehicleCostingOptions };
114+
}
115+
116+
export interface TruckRouteRequest extends BaseRouteRequest {
117+
costing: 'truck';
118+
costing_options?: { truck: TruckCostingOptions };
84119
}
85120

86-
export interface OptimizedRouteRequest extends BaseRouteRequest {
87-
costing: Extract<CostingModels, 'auto' | 'bicycle' | 'pedestrian'>;
121+
export interface MotorCycleRouteRequest extends BaseRouteRequest {
122+
costing: 'motorcycle';
123+
costing_options?: { motorcycle: MotorcycleCostingOptions };
88124
}
89125

126+
export interface MotorScooterRouteRequest extends BaseRouteRequest {
127+
costing: 'motor_scooter';
128+
costing_options?: { motor_scooter: MotorScooterCostingOptions };
129+
}
130+
131+
export interface MultiModalRouteRequest extends BaseRouteRequest {
132+
costing: 'multimodal';
133+
}
134+
135+
export interface BikeShareRouteRequest extends BaseRouteRequest {
136+
costing: 'bikeshare';
137+
}
138+
139+
export type TurnByTurnRouteRequest =
140+
| BicycleRouteRequest
141+
| PedestrianRouteRequest
142+
| AutoRouteRequest
143+
| BusRouteRequest
144+
| TaxiRouteRequest
145+
| TruckRouteRequest
146+
| MotorCycleRouteRequest
147+
| MotorScooterRouteRequest
148+
| BikeShareRouteRequest
149+
| MultiModalRouteRequest;
150+
151+
export type OptimizedRouteRequest =
152+
| AutoRouteRequest
153+
| BicycleRouteRequest
154+
| PedestrianRouteRequest;
155+
90156
export interface IsochroneBaseContour {
91157
color?: string;
92158
}
@@ -99,11 +165,12 @@ export interface IsochroneDistanceContour extends IsochroneBaseContour {
99165
distance?: number;
100166
}
101167

102-
export interface IsochroneBaseRequest extends BaseRouteRequest {
103-
costing: Extract<
104-
CostingModels,
105-
'auto' | 'bicycle' | 'pedestrian' | 'multimodal'
106-
>;
168+
export type IsochroneBaseRequest = (
169+
| AutoRouteRequest
170+
| BicycleRouteRequest
171+
| PedestrianRouteRequest
172+
| MultiModalRouteRequest
173+
) & {
107174
date_time?: DateTime;
108175
id?: string;
109176
/*
@@ -129,7 +196,7 @@ export interface IsochroneBaseRequest extends BaseRouteRequest {
129196
* The Default value is false
130197
*/
131198
show_locations?: boolean;
132-
}
199+
};
133200

134201
export type IsochroneTimeRequest = IsochroneBaseRequest & {
135202
contours: IsochroneTimeContour[];

0 commit comments

Comments
 (0)