UNPKG

@drfrost/bods-js

Version:

JavaScript client for the UK's Bus Open Data Service (BODS) API

133 lines 3.9 kB
import type { BoundingBox } from '../types/index.js'; /** * Utility functions for working with BODS data */ /** * Create a bounding box from a center point and radius * * @param centerLat - Center latitude * @param centerLng - Center longitude * @param radiusKm - Radius in kilometers * @returns Bounding box coordinates [minLng, minLat, maxLng, maxLat] * * @example * ```typescript * import { createBoundingBox } from 'bods-js/utils'; * * // Manchester city center, 10km radius * const bbox = createBoundingBox(53.4808, -2.2426, 10); * const vehicles = await client.avl.getByArea(bbox); * ``` */ export declare function createBoundingBox(centerLat: number, centerLng: number, radiusKm: number): BoundingBox; /** * Check if a point is within a bounding box * * @param lat - Point latitude * @param lng - Point longitude * @param boundingBox - Bounding box to check against * @returns True if point is within the bounding box * * @example * ```typescript * import { isPointInBoundingBox } from 'bods-js/utils'; * * const manchester = createBoundingBox(53.4808, -2.2426, 10); * const isInManchester = isPointInBoundingBox(53.4808, -2.2426, manchester); // true * ``` */ export declare function isPointInBoundingBox(lat: number, lng: number, boundingBox: BoundingBox): boolean; /** * Calculate distance between two points using Haversine formula * * @param lat1 - First point latitude * @param lng1 - First point longitude * @param lat2 - Second point latitude * @param lng2 - Second point longitude * @returns Distance in kilometers * * @example * ```typescript * import { calculateDistance } from 'bods-js/utils'; * * const distance = calculateDistance(53.4808, -2.2426, 51.5074, -0.1278); // Manchester to London * console.log(`Distance: ${distance.toFixed(2)}km`); * ``` */ export declare function calculateDistance(lat1: number, lng1: number, lat2: number, lng2: number): number; /** * Format a date for BODS API queries * * @param date - Date to format * @returns ISO string formatted for BODS API * * @example * ```typescript * import { formatDateForAPI } from 'bods-js/utils'; * * const formatted = formatDateForAPI(new Date()); * const timetables = await client.timetables.search({ * modifiedDate: formatted * }); * ``` */ export declare function formatDateForAPI(date: Date): string; /** * Parse an ISO date string to Date object * * @param dateString - ISO date string * @returns Date object * * @example * ```typescript * import { parseDateFromAPI } from 'bods-js/utils'; * * const date = parseDateFromAPI('2023-01-01T12:45:00+00:00'); * ``` */ export declare function parseDateFromAPI(dateString: string): Date; /** * Validate National Operator Code format * * @param noc - National Operator Code to validate * @returns True if NOC format appears valid * * @example * ```typescript * import { isValidNOC } from 'bods-js/utils'; * * console.log(isValidNOC('SCMN')); // true * console.log(isValidNOC('invalid')); // false * ``` */ export declare function isValidNOC(noc: string): boolean; /** * Validate API key format * * @param apiKey - API key to validate * @returns True if API key format appears valid * * @example * ```typescript * import { isValidAPIKey } from 'bods-js/utils'; * * const isValid = isValidAPIKey('your-api-key'); * ``` */ export declare function isValidAPIKey(apiKey: string): boolean; /** * Get common UK city bounding boxes */ export declare const UK_CITIES: { readonly LONDON: BoundingBox; readonly MANCHESTER: BoundingBox; readonly BIRMINGHAM: BoundingBox; readonly LEEDS: BoundingBox; readonly LIVERPOOL: BoundingBox; readonly BRISTOL: BoundingBox; readonly SHEFFIELD: BoundingBox; readonly LEICESTER: BoundingBox; readonly COVENTRY: BoundingBox; readonly BRADFORD: BoundingBox; }; //# sourceMappingURL=index.d.ts.map