@drfrost/bods-js
Version:
JavaScript client for the UK's Bus Open Data Service (BODS) API
133 lines • 3.9 kB
TypeScript
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