flight-planner
Version:
Plan and route VFR flights
47 lines (46 loc) • 2.37 kB
TypeScript
import { parseMetar } from "metar-taf-parser";
import { Aerodrome, Frequency, ReportingPoint, RunwayWindVector, Waypoint } from "./airport";
import { FlightRules, colorizeFlightRules, formatCeiling, formatQNH, formatTemperature, formatVisibility, formatWind, fromIMetar, MetarData } from "./metar";
import { AerodromeService, WeatherService } from "./service";
import { RouteLeg, RouteOptions, planFlightRoute, RouteTrip, routeTripWaypoints } from "./planner";
import { normalizeICAO, parseRouteString } from "./utils";
/**
* Represents a METAR (Meteorological Aerodrome Report) station.
*
* @interface MetarStation
* @property {string} station - The identifier for the METAR station.
* @property {MetarData} metarData - The METAR data associated with the station.
* @property {string} [rawTaf] - The raw TAF (Terminal Aerodrome Forecast) data, if available.
* @property {GeoJSON.Feature<GeoJSON.Point>} location - The geographical location of the station.
* @todo Change location type to GeoJSON.Position
*/
export interface MetarStation {
station: string;
metarData: MetarData;
rawTaf?: string;
location: GeoJSON.Feature<GeoJSON.Point>;
}
/**
* Represents a repository for weather information.
*
* This interface provides methods to access and manage weather station data
* including METAR (Meteorological Terminal Air Report) stations.
*/
export interface WeatherRepository {
fetchAndUpdateStations(search: string | GeoJSON.BBox, extend?: number): Promise<void>;
fetchStationsByRadius(location: GeoJSON.Point, radius: number): Promise<void>;
findByICAO(icao: string): MetarStation | undefined;
findNearestStation(location: GeoJSON.Point, exclude: string[]): MetarStation | undefined;
}
/**
* Repository interface for aerodrome operations.
* Defines methods to retrieve aerodrome information from a data store.
*/
export interface AerodromeRepository {
findByICAO(icao: string): Promise<Aerodrome | undefined>;
}
export { parseMetar, parseRouteString, fromIMetar, normalizeICAO };
export { FlightRules, MetarData, formatCeiling, formatQNH, formatTemperature, formatVisibility, formatWind, colorizeFlightRules };
export { Waypoint, ReportingPoint, Aerodrome, Frequency, RunwayWindVector };
export { WeatherService, AerodromeService };
export { RouteOptions, RouteLeg, RouteTrip, planFlightRoute, routeTripWaypoints };