UNPKG

@infobus/vue

Version:

Vue components and composables for public transportation websites using GTFS data through the Infobús API

317 lines (290 loc) 9.58 kB
import { App } from 'vue'; import { ComponentOptionsMixin } from 'vue'; import { ComponentProvideOptions } from 'vue'; import { ComputedRef } from 'vue'; import { DefineComponent } from 'vue'; import { ExtractPropTypes } from 'vue'; import { PropType } from 'vue'; import { PublicProps } from 'vue'; import { Ref } from 'vue'; declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T; declare type __VLS_NonUndefinedable_2<T> = T extends undefined ? never : T; declare type __VLS_Prettify<T> = { [K in keyof T]: T[K]; } & {}; declare type __VLS_Prettify_2<T> = { [K in keyof T]: T[K]; } & {}; declare type __VLS_TypePropsToRuntimeProps<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? { type: PropType<__VLS_NonUndefinedable<T[K]>>; } : { type: PropType<T[K]>; required: true; }; }; declare type __VLS_TypePropsToRuntimeProps_2<T> = { [K in keyof T]-?: {} extends Pick<T, K> ? { type: PropType<__VLS_NonUndefinedable_2<T[K]>>; } : { type: PropType<T[K]>; required: true; }; }; declare type __VLS_WithDefaults<P, D> = { [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & { default: D[K]; }> : P[K]; }; declare type __VLS_WithDefaults_2<P, D> = { [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify_2<P[K] & { default: D[K]; }> : P[K]; }; declare type __VLS_WithTemplateSlots<T, S> = T & { new (): { $slots: S; }; }; declare const _default: { install(app: App): void; }; export default _default; declare interface GeoJSONFeatureCollection { type: 'FeatureCollection'; features: RouteShape[]; } export declare interface InfobusApiConfig { baseUrl: string; apiKey?: string; timeout?: number; } export declare const InfobusNextTrips: __VLS_WithTemplateSlots< DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, { limit: number; includeRealtime: boolean; autoRefresh: boolean; refreshInterval: number; showStopInfo: boolean; showLastUpdated: boolean; showRefreshButton: boolean; showAccessibility: boolean; maxTrips: number; }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, { error: (error: string) => void; tripsLoaded: (trips: NextTrip[]) => void; refresh: () => void; }, string, PublicProps, Readonly< ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, { limit: number; includeRealtime: boolean; autoRefresh: boolean; refreshInterval: number; showStopInfo: boolean; showLastUpdated: boolean; showRefreshButton: boolean; showAccessibility: boolean; maxTrips: number; }>>> & Readonly<{ onError?: ((error: string) => any) | undefined; onTripsLoaded?: ((trips: NextTrip[]) => any) | undefined; onRefresh?: (() => any) | undefined; }>, { limit: number; includeRealtime: boolean; autoRefresh: boolean; refreshInterval: number; showStopInfo: boolean; showLastUpdated: boolean; showRefreshButton: boolean; showAccessibility: boolean; maxTrips: number; }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, { loading?(_: {}): any; error?(_: { error: string; }): any; "no-trips"?(_: {}): any; }>; export declare const InfobusRouteMap: DefineComponent<ExtractPropTypes<__VLS_WithDefaults_2<__VLS_TypePropsToRuntimeProps_2<Props_2>, { directionId: undefined; includeStops: boolean; simplify: boolean; autoRefresh: boolean; refreshInterval: number; showRouteInfo: boolean; showRefreshButton: boolean; }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, { error: (error: string) => void; refresh: () => void; routeShapesLoaded: (shapes: RouteShape[]) => void; }, string, PublicProps, Readonly< ExtractPropTypes<__VLS_WithDefaults_2<__VLS_TypePropsToRuntimeProps_2<Props_2>, { directionId: undefined; includeStops: boolean; simplify: boolean; autoRefresh: boolean; refreshInterval: number; showRouteInfo: boolean; showRefreshButton: boolean; }>>> & Readonly<{ onError?: ((error: string) => any) | undefined; onRefresh?: (() => any) | undefined; onRouteShapesLoaded?: ((shapes: RouteShape[]) => any) | undefined; }>, { directionId: number; autoRefresh: boolean; refreshInterval: number; showRefreshButton: boolean; simplify: boolean; includeStops: boolean; showRouteInfo: boolean; }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>; export declare interface NextTrip { trip_id: string; route_id: string; route_short_name: string; route_long_name: string; trip_headsign: string; arrival_time: string; departure_time: string; stop_sequence: number; pickup_type: number; drop_off_type: number; shape_dist_traveled?: number; timepoint?: number; estimated_arrival?: string; estimated_departure?: string; delay?: number; vehicle_id?: string; block_id?: string; wheelchair_accessible?: number; bikes_allowed?: number; route_color?: string; route_text_color?: string; } declare interface NextTripsResponse { stop_info: StopInfo; trips: NextTrip[]; last_updated: string; } declare interface Props { stopId: string; config: InfobusApiConfig; limit?: number; routeId?: string; directionId?: number; includeRealtime?: boolean; autoRefresh?: boolean; refreshInterval?: number; showStopInfo?: boolean; showLastUpdated?: boolean; showRefreshButton?: boolean; showAccessibility?: boolean; maxTrips?: number; } declare interface Props_2 { routeId: string; config: InfobusApiConfig; directionId?: number; includeStops?: boolean; simplify?: boolean; autoRefresh?: boolean; refreshInterval?: number; showRouteInfo?: boolean; showRefreshButton?: boolean; } export declare interface RouteInfo { route_id: string; agency_id?: string; route_short_name: string; route_long_name: string; route_desc?: string; route_type: number; route_url?: string; route_color?: string; route_text_color?: string; route_sort_order?: number; continuous_pickup?: number; continuous_drop_off?: number; } export declare interface RouteShape { type: 'Feature'; geometry: { type: 'LineString'; coordinates: [number, number][]; }; properties: { shape_id: string; route_id: string; route_short_name?: string; route_long_name?: string; route_color?: string; direction_id?: number; }; } declare interface RouteShapesResponse { route_info: RouteInfo; shapes: GeoJSONFeatureCollection; } export declare interface StopInfo { stop_id: string; stop_name: string; stop_desc?: string; stop_lat: number; stop_lon: number; zone_id?: string; stop_url?: string; location_type?: number; parent_station?: string; stop_timezone?: string; wheelchair_boarding?: number; platform_code?: string; } export declare function useInfobusApi(config: InfobusApiConfig): { isLoading: Ref<boolean, boolean>; error: Ref<string | null, string | null>; makeRequest: <T>(endpoint: string, options?: RequestInit) => Promise<T>; }; export declare function useNextTrips(config: InfobusApiConfig): { isLoading: Ref<boolean, boolean>; error: Ref<string | null, string | null>; data: Ref<NextTripsResponse | null, NextTripsResponse | null>; trips: ComputedRef<NextTrip[]>; stopInfo: ComputedRef< StopInfo | null>; lastUpdated: ComputedRef<string | null>; lastFetch: Ref<Date | null, Date | null>; fetchNextTrips: (stopId: string, options?: { limit?: number; routeId?: string; directionId?: number; includeRealtime?: boolean; }) => Promise<NextTrip[]>; refresh: (stopId: string, options?: {}) => Promise<NextTrip[]>; getTripsByRoute: (routeId: string) => NextTrip[]; getNextTrips: (count: number) => NextTrip[]; isStale: (maxAgeMinutes?: number) => boolean; }; export declare function useRouteShapes(config: InfobusApiConfig): { isLoading: Ref<boolean, boolean>; error: Ref<string | null, string | null>; data: Ref<RouteShapesResponse | null, RouteShapesResponse | null>; shapes: ComputedRef<GeoJSONFeatureCollection | null>; routeInfo: ComputedRef< RouteInfo | null>; features: ComputedRef< RouteShape[]>; lastFetch: Ref<Date | null, Date | null>; fetchRouteShapes: (routeId: string, options?: { directionId?: number; includeStops?: boolean; simplify?: boolean; format?: 'geojson' | 'polyline'; }) => Promise<GeoJSONFeatureCollection>; refresh: (routeId: string, options?: {}) => Promise<GeoJSONFeatureCollection>; getShapesByDirection: (directionId: number) => RouteShape[]; getAllCoordinates: () => [number, number][]; getBounds: () => { north: number; south: number; east: number; west: number; } | null; isStale: (maxAgeMinutes?: number) => boolean; }; export { }