ojp-sdk-next
Version:
OJP (Open Journey Planner) Javascript SDK
376 lines (351 loc) • 19.5 kB
TypeScript
import * as OJP_Types from 'ojp-shared-types';
interface HTTPConfig {
url: string;
authToken: string | null;
}
type Language = 'de' | 'fr' | 'it' | 'en';
type OJP_VERSION = '1.0' | '2.0';
type AnySDK = SDK<'1.0'> | SDK<'2.0'>;
interface XML_Config {
ojpVersion: OJP_VERSION;
defaultNS: 'ojp' | 'siri' | null;
mapNS: Record<string, string>;
}
interface RequestInfo {
requestDateTime: Date | null;
requestXML: string | null;
responseDateTime: Date | null;
responseXML: string | null;
parseDateTime: Date | null;
}
type ResponseOk<T> = {
ok: true;
value: T;
};
type ResponseError<E> = {
ok: false;
error: E;
};
type OJP_Response<T, E> = ResponseOk<T> | ResponseError<E>;
type FareRequestResponse = OJP_Response<OJP_Types.FareDeliverySchema, Error>;
type LocationInformationRequestResponse = OJP_Response<OJP_Types.LocationInformationDeliverySchema, Error>;
type OJPv1_LocationInformationRequestResponse = OJP_Response<OJP_Types.OJPv1_LocationInformationDeliverySchema, Error>;
type StopEventRequestResponse = OJP_Response<OJP_Types.StopEventDeliverySchema, Error>;
type OJPv1_StopEventRequestResponse = OJP_Response<OJP_Types.OJPv1_StopEventDeliverySchema, Error>;
type TripInfoRequestResponse = OJP_Response<OJP_Types.TripInfoDeliverySchema, Error>;
type OJPv1_TripInfoRequestResponse = OJP_Response<OJP_Types.OJPv1_TripInfoDeliverySchema, Error>;
type TripRefineRequestResponse = OJP_Response<OJP_Types.TRR_DeliverySchema, Error>;
type TripRequestResponse = OJP_Response<OJP_Types.TripDeliverySchema, Error>;
type OJPv1_TripRequestResponse = OJP_Response<OJP_Types.OJPv1_TripDeliverySchema, Error>;
type ResultSpec = {
fetchResponse: unknown;
};
declare abstract class BaseRequest<S extends ResultSpec> {
requestInfo: RequestInfo;
mockRequestXML: string | null;
mockResponseXML: string | null;
protected constructor();
static initWithRequestMock<T_This extends {
Default(): any;
}>(this: T_This, mockText: string): ReturnType<T_This['Default']>;
static initWithResponseMock<T_This extends {
Default(): any;
}>(this: T_This, mockText: string): ReturnType<T_This['Default']>;
protected abstract _fetchResponse(sdk: AnySDK): Promise<S['fetchResponse']>;
fetchResponse(sdk: AnySDK): Promise<S['fetchResponse']>;
abstract buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
}
declare abstract class SharedLocationInformationRequest<S extends ResultSpec> extends BaseRequest<S> {
protected static DefaultRestrictionParams(): OJP_Types.LIR_RequestParamsSchema;
updateRestrictions(restrictions: OJP_Types.LIR_RequestParamsSchema, placeTypes: OJP_Types.PlaceTypeEnum[], numberOfResults: number): void;
static computeGeoRestriction(bboxData: string | number[]): OJP_Types.GeoRestrictionsSchema | null;
}
declare class LocationInformationRequest extends SharedLocationInformationRequest<{
fetchResponse: LocationInformationRequestResponse;
}> {
payload: OJP_Types.LocationInformationRequestSchema;
protected constructor(restrictions: OJP_Types.LIR_RequestParamsSchema | undefined);
static Default(): LocationInformationRequest;
static initWithLocationName(name: string, placeTypes?: OJP_Types.PlaceTypeEnum[], numberOfResults?: number): LocationInformationRequest;
static initWithPlaceRef(placeRefOrCoords: string, numberOfResults?: number): LocationInformationRequest;
static initWithBBOX(bboxData: string | number[], placeTypes?: OJP_Types.PlaceTypeEnum[], numberOfResults?: number): LocationInformationRequest;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'2.0'>): Promise<LocationInformationRequestResponse>;
}
declare abstract class SharedStopEventRequest<S extends ResultSpec> extends BaseRequest<S> {
protected static DefaultRequestParams(version?: OJP_VERSION): OJP_Types.SER_RequestParamsSchema;
}
declare class StopEventRequest extends SharedStopEventRequest<{
fetchResponse: StopEventRequestResponse;
}> {
payload: OJP_Types.StopEventRequestSchema;
protected constructor(location: OJP_Types.SER_RequestLocationSchema, params?: OJP_Types.SER_RequestParamsSchema | undefined);
static Default(): StopEventRequest;
static initWithPlaceRefAndDate(placeRefS: string, date?: Date): StopEventRequest;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'2.0'>): Promise<StopEventRequestResponse>;
}
declare abstract class SharedTripInfoRequest<S extends ResultSpec> extends BaseRequest<S> {
protected static DefaultRequestParams(): {
includeCalls?: boolean;
includeService?: boolean;
includeTrackProjection?: boolean;
includePlacesContext?: boolean;
includeSituationsContext?: boolean;
};
}
declare class TripInfoRequest extends SharedTripInfoRequest<{
fetchResponse: TripInfoRequestResponse;
}> {
payload: OJP_Types.TIR_RequestSchema;
protected constructor(journeyRef: string, operatingDayRef: string, params?: OJP_Types.TIR_RequestParamsSchema);
static Default(): TripInfoRequest;
static initWithJourneyRef(journeyRef: string, journeyDate?: Date): TripInfoRequest;
enableTrackProjection(): void;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'2.0'>): Promise<TripInfoRequestResponse>;
}
type GeoPositionLike = OJP_Types.GeoPositionSchema | number[] | string;
declare class GeoPosition implements OJP_Types.GeoPositionSchema {
longitude: number;
latitude: number;
properties: Record<string, any>;
constructor(geoPositionArg: GeoPositionLike | number, optionalLatitude?: number | null);
isValid(): boolean;
distanceFrom(pointB: GeoPosition): number;
asLatLngString(roundCoords?: boolean): string;
asLngLat(): [number, number];
asGeoPositionSchema(): OJP_Types.GeoPositionSchema;
}
declare class Trip implements OJP_Types.TripSchema {
id: string;
duration: string;
startTime: string;
endTime: string;
transfers: number;
leg: OJP_Types.LegSchema[];
cancelled?: boolean;
delayed?: boolean;
deviation?: boolean;
infeasible?: boolean;
unplanned?: boolean;
private constructor();
static initWithTripXML(rawXML: string): Trip;
}
interface NearbyPlace {
distance: number;
object: Place;
}
declare class Place implements OJP_Types.PlaceSchema {
stopPoint?: OJP_Types.StopPointSchema;
stopPlace?: OJP_Types.StopPlaceSchema;
topographicPlace?: OJP_Types.TopographicPlaceSchema;
pointOfInterest?: OJP_Types.PointOfInterestSchema;
address?: OJP_Types.AddressSchema;
name: OJP_Types.InternationalTextSchema;
geoPosition: GeoPosition;
mode: OJP_Types.ModeStructureSchema[];
attribute: OJP_Types.GeneralAttributeSchema[];
placeType: OJP_Types.PlaceTypeEnum | null;
private constructor();
static initWithXMLSchema(placeSchema: OJP_Types.PlaceSchema): Place;
static initWithCoords(geoPositionArg: GeoPositionLike | number, optionalLatitude?: number | null): Place;
static Empty(): Place;
findClosestPlace(otherPlaces: Place[]): NearbyPlace | null;
asStopPlaceRefOrCoords(): string;
}
declare class PlaceResult implements OJP_Types.PlaceResultSchema {
place: Place;
complete: boolean;
probability?: number;
private constructor();
static initWithXMLSchema(placeResultSchema: OJP_Types.PlaceResultSchema): PlaceResult;
static initWithXML(nodeXML: string): PlaceResult;
}
declare class StopEventResult implements OJP_Types.StopEventResultSchema {
id: string;
stopEvent: OJP_Types.StopEventSchema;
private constructor();
static initWithXML(nodeXML: string): StopEventResult;
}
declare class TripRefineRequest extends BaseRequest<{
fetchResponse: TripRefineRequestResponse;
}> {
payload: OJP_Types.TRR_RequestSchema;
protected constructor(tripResult: OJP_Types.TripResultSchema, refineParams?: OJP_Types.TRR_RequestParamsSchema);
private static DefaultRequestParams;
static Default(): TripRefineRequest;
static initWithTrip(trip: Trip): TripRefineRequest;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'2.0'>): Promise<TripRefineRequestResponse>;
}
type EndpointType = 'origin' | 'destination' | 'both';
declare abstract class SharedTripRequest<S extends ResultSpec> extends BaseRequest<S> {
abstract setArrivalDatetime(newDatetime: Date): void;
abstract setDepartureDatetime(newDatetime: Date): void;
abstract setPublicTransportRequest(motFilter: OJP_Types.VehicleModesOfTransportEnum[] | null): void;
abstract setCarRequest(): void;
abstract setRailSubmodes(railSubmodes: OJP_Types.RailSubmodeEnum | OJP_Types.RailSubmodeEnum[]): void;
abstract setMaxDurationWalkingTime(maxDurationMinutes: number | undefined, endpointType: EndpointType): void;
abstract enableLinkProkection(): void;
abstract disableLinkProkection(): void;
abstract setNumberOfResults(resultsNo: number | null): void;
abstract setNumberOfResultsAfter(resultsNo: number): void;
abstract setNumberOfResultsBefore(resultsNo: number): void;
abstract setWalkSpeedDeviation(walkSpeedPercent: number): void;
abstract setOriginDurationDistanceRestrictions(minDuration: number | null, maxDuration: number | null, minDistance: number | null, maxDistance: number | null): void;
abstract setDestinationDurationDistanceRestrictions(minDuration: number | null, maxDuration: number | null, minDistance: number | null, maxDistance: number | null): void;
abstract setViaPlace(place: Place, dwellTime: number | null): void;
}
declare class TripRequest extends SharedTripRequest<{
fetchResponse: TripRequestResponse;
}> {
payload: OJP_Types.TripRequestSchema;
protected constructor(origin: OJP_Types.PlaceContextSchema, destination: OJP_Types.PlaceContextSchema, via?: OJP_Types.ViaPointSchema[], params?: OJP_Types.TripParamsSchema | null);
private static DefaultRequestParams;
static Default(): TripRequest;
static initWithPlaceRefsOrCoords(originPlaceRefS: string, destinationPlaceRefS: string): TripRequest;
static initWithPlaces(origin: Place, destination: Place): TripRequest;
setArrivalDatetime(newDatetime?: Date): void;
setDepartureDatetime(newDatetime?: Date): void;
setPublicTransportRequest(motFilter?: OJP_Types.VehicleModesOfTransportEnum[] | null): void;
disableLinkProkection(): void;
enableLinkProkection(): void;
setCarRequest(): void;
setMaxDurationWalkingTime(maxDurationMinutes?: number | undefined, endpointType?: EndpointType): void;
setRailSubmodes(railSubmodes: OJP_Types.RailSubmodeEnum | OJP_Types.RailSubmodeEnum[]): void;
setNumberOfResults(resultsNo: number | null): void;
setNumberOfResultsAfter(resultsNo: number): void;
setNumberOfResultsBefore(resultsNo: number): void;
private setEndpointDurationDistanceRestrictions;
setOriginDurationDistanceRestrictions(minDuration: number | null, maxDuration: number | null, minDistance: number | null, maxDistance: number | null): void;
setDestinationDurationDistanceRestrictions(minDuration: number | null, maxDuration: number | null, minDistance: number | null, maxDistance: number | null): void;
setWalkSpeedDeviation(walkSpeedPercent: number): void;
setViaPlace(place: Place, dwellTime: number | null): void;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'2.0'>): Promise<TripRequestResponse>;
}
declare class OJPv1_FareRequest extends BaseRequest<{
fetchResponse: FareRequestResponse;
}> {
payload: OJP_Types.FareRequestSchema[];
protected constructor(items: OJP_Types.FareRequestSchema[]);
private static DefaultRequestParams;
static Default(): OJPv1_FareRequest;
private static cleanTripForFareRequest;
static initWithOJPv1Trips(trips: OJP_Types.OJPv1_TripSchema[]): OJPv1_FareRequest;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'1.0'>): Promise<FareRequestResponse>;
}
declare class OJPv1_LocationInformationRequest extends SharedLocationInformationRequest<{
fetchResponse: OJPv1_LocationInformationRequestResponse;
}> {
payload: OJP_Types.OJPv1_LocationInformationRequestSchema;
protected constructor(restrictions: OJP_Types.LIR_RequestParamsSchema);
static Default(): OJPv1_LocationInformationRequest;
static initWithLocationName(name: string, placeTypes?: OJP_Types.PlaceTypeEnum[], numberOfResults?: number): OJPv1_LocationInformationRequest;
static initWithPlaceRef(placeRefOrCoords: string, numberOfResults?: number): OJPv1_LocationInformationRequest;
static initWithBBOX(bboxData: string | number[], placeTypes?: OJP_Types.PlaceTypeEnum[], numberOfResults?: number): OJPv1_LocationInformationRequest;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'1.0'>): Promise<OJPv1_LocationInformationRequestResponse>;
}
declare class OJPv1_StopEventRequest extends SharedStopEventRequest<{
fetchResponse: OJPv1_StopEventRequestResponse;
}> {
payload: OJP_Types.OJPv1_StopEventRequestSchema;
protected constructor(location: OJP_Types.OJPv1_PlaceContextSchema, params?: OJP_Types.SER_RequestParamsSchema | undefined);
static Default(): OJPv1_StopEventRequest;
static initWithPlaceRefAndDate(placeRefS: string, date?: Date): OJPv1_StopEventRequest;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'1.0'>): Promise<OJPv1_StopEventRequestResponse>;
}
declare class OJPv1_TripInfoRequest extends SharedTripInfoRequest<{
fetchResponse: OJPv1_TripInfoRequestResponse;
}> {
payload: OJP_Types.TIR_RequestSchema;
protected constructor(journeyRef: string, operatingDayRef: string, params?: OJP_Types.TIR_RequestParamsSchema);
static Default(): OJPv1_TripInfoRequest;
static initWithJourneyRef(journeyRef: string, journeyDate?: Date): OJPv1_TripInfoRequest;
enableTrackProjection(): void;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'1.0'>): Promise<OJPv1_TripInfoRequestResponse>;
}
declare class OJPv1_TripRequest extends SharedTripRequest<{
fetchResponse: OJPv1_TripRequestResponse;
}> {
payload: OJP_Types.OJPv1_TripRequestSchema;
protected constructor(origin: OJP_Types.OJPv1_PlaceContextSchema, destination: OJP_Types.OJPv1_PlaceContextSchema, via?: OJP_Types.OJPv1_ViaPointSchema[], params?: OJP_Types.OJPv1_TripParamsSchema | null);
private static DefaultRequestParams;
static Default(): OJPv1_TripRequest;
static initWithPlaceRefsOrCoords(originPlaceRefS: string, destinationPlaceRefS: string): OJPv1_TripRequest;
static initWithPlaces(origin: Place, destination: Place): OJPv1_TripRequest;
setArrivalDatetime(newDatetime?: Date): void;
setDepartureDatetime(newDatetime?: Date): void;
disableLinkProkection(): void;
enableLinkProkection(): void;
setPublicTransportRequest(motFilter: OJP_Types.VehicleModesOfTransportEnum[] | null): void;
setCarRequest(): void;
setRailSubmodes(railSubmodes: OJP_Types.RailSubmodeEnum | OJP_Types.RailSubmodeEnum[]): void;
setMaxDurationWalkingTime(maxDurationMinutes: number | undefined, endpointType: EndpointType): void;
setNumberOfResults(resultsNo: number | null): void;
setNumberOfResultsAfter(resultsNo: number): void;
setNumberOfResultsBefore(resultsNo: number): void;
setOriginDurationDistanceRestrictions(minDuration: number | null, maxDuration: number | null, minDistance: number | null, maxDistance: number | null): void;
setDestinationDurationDistanceRestrictions(minDuration: number | null, maxDuration: number | null, minDistance: number | null, maxDistance: number | null): void;
setWalkSpeedDeviation(walkSpeedPercent: number): void;
setViaPlace(place: Place, dwellTime: number | null): void;
buildRequestXML(language: Language, requestorRef: string, xmlConfig: XML_Config): string;
protected _fetchResponse(sdk: SDK<'1.0'>): Promise<OJPv1_TripRequestResponse>;
}
declare class EmptyRequest {
static init(): void;
}
declare const builders: {
readonly '1.0': {
readonly FareRequest: typeof OJPv1_FareRequest;
readonly LocationInformationRequest: typeof OJPv1_LocationInformationRequest;
readonly StopEventRequest: typeof OJPv1_StopEventRequest;
readonly TripInfoRequest: typeof OJPv1_TripInfoRequest;
readonly TripRefineRequest: typeof EmptyRequest;
readonly TripRequest: typeof OJPv1_TripRequest;
};
readonly '2.0': {
readonly FareRequest: typeof EmptyRequest;
readonly LocationInformationRequest: typeof LocationInformationRequest;
readonly StopEventRequest: typeof StopEventRequest;
readonly TripInfoRequest: typeof TripInfoRequest;
readonly TripRefineRequest: typeof TripRefineRequest;
readonly TripRequest: typeof TripRequest;
};
};
type Builders = typeof builders;
type RequestKey = keyof Builders['2.0'];
type ClassFor<V extends OJP_VERSION, K extends RequestKey> = Builders[V][K];
declare class SDK<V extends OJP_VERSION = '2.0'> {
readonly version: OJP_VERSION;
requestorRef: string;
httpConfig: HTTPConfig;
language: Language;
private constructor();
static create(requestorRef: string, httpConfig: HTTPConfig, language?: Language): SDK<'2.0'>;
static v1(requestorRef: string, httpConfig: HTTPConfig, language?: Language): SDK<'1.0'>;
get requests(): {
[K in RequestKey]: ClassFor<V, K>;
};
}
declare const SDK_VERSION = "0.21.4";
declare const DefaultXML_Config: XML_Config;
declare const XML_BuilderConfigOJPv1: XML_Config;
declare const XML_ParserConfigOJPv1: XML_Config;
declare class DateHelpers {
static formatDate(d: Date): string;
static formatTimeHHMM(d?: Date): string;
static computeDelayMinutes(timetableTimeS: Date | string, estimatedTimeS: Date | string | null): number | null;
}
declare class XmlSerializer {
xmlConfig: XML_Config;
constructor(xmlConfig?: XML_Config);
serialize(obj: Record<string, any>, wrapperNodeName: string): string;
static transformTagName(tagName: string): string;
}
export { type AnySDK, DateHelpers, DefaultXML_Config, type FareRequestResponse, GeoPosition, type HTTPConfig, type Language, LocationInformationRequest, type LocationInformationRequestResponse, type OJP_VERSION, OJPv1_FareRequest, OJPv1_LocationInformationRequest, type OJPv1_LocationInformationRequestResponse, OJPv1_StopEventRequest, type OJPv1_StopEventRequestResponse, OJPv1_TripInfoRequest, type OJPv1_TripInfoRequestResponse, OJPv1_TripRequest, type OJPv1_TripRequestResponse, Place, PlaceResult, type RequestInfo, SDK, SDK_VERSION, StopEventRequest, type StopEventRequestResponse, StopEventResult, Trip, TripInfoRequest, type TripInfoRequestResponse, TripRefineRequest, type TripRefineRequestResponse, TripRequest, type TripRequestResponse, XML_BuilderConfigOJPv1, XML_ParserConfigOJPv1, XmlSerializer };