diff options
| author | Matthew Petro <[email protected]> | 2023-01-30 14:13:46 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-01-30 21:13:46 +0000 |
| commit | 579c9adb5affa01ee5ee384942f56d662a21022e (patch) | |
| tree | aacc7cc0304f5fca777228c63bf26d5f309a7ed7 /src | |
| parent | 05d6eb43f3f5766275333c6e960470e38bae7162 (diff) | |
| download | faker-579c9adb5affa01ee5ee384942f56d662a21022e.tar.xz faker-579c9adb5affa01ee5ee384942f56d662a21022e.zip | |
feat(airline): add airline module (#1699)
Diffstat (limited to 'src')
| -rw-r--r-- | src/definitions/airline.ts | 19 | ||||
| -rw-r--r-- | src/definitions/definitions.ts | 2 | ||||
| -rw-r--r-- | src/definitions/index.ts | 1 | ||||
| -rw-r--r-- | src/faker.ts | 2 | ||||
| -rw-r--r-- | src/index.ts | 3 | ||||
| -rw-r--r-- | src/locales/en/airline/airline.ts | 127 | ||||
| -rw-r--r-- | src/locales/en/airline/airplane.ts | 157 | ||||
| -rw-r--r-- | src/locales/en/airline/airport.ts | 138 | ||||
| -rw-r--r-- | src/locales/en/airline/index.ts | 16 | ||||
| -rw-r--r-- | src/locales/en/index.ts | 2 | ||||
| -rw-r--r-- | src/modules/airline/index.ts | 273 |
11 files changed, 740 insertions, 0 deletions
diff --git a/src/definitions/airline.ts b/src/definitions/airline.ts new file mode 100644 index 00000000..50ee79ce --- /dev/null +++ b/src/definitions/airline.ts @@ -0,0 +1,19 @@ +import type { Airline, Airplane, Airport } from '../modules/airline'; +import type { LocaleEntry } from './definitions'; + +export type AirlineDefinitions = LocaleEntry<{ + /** + * Some airline information + */ + airline: Airline[]; + + /** + * Some airplane information + */ + airplane: Airplane[]; + + /** + * Some airport information + */ + airport: Airport[]; +}>; diff --git a/src/definitions/definitions.ts b/src/definitions/definitions.ts index b4afae1b..65753ba7 100644 --- a/src/definitions/definitions.ts +++ b/src/definitions/definitions.ts @@ -1,3 +1,4 @@ +import type { AirlineDefinitions } from './airline'; import type { AnimalDefinitions } from './animal'; import type { ColorDefinitions } from './color'; import type { CommerceDefinitions } from './commerce'; @@ -26,6 +27,7 @@ export type LocaleEntry<T> = Partial<T> & * The definitions as used by the Faker modules. */ export interface Definitions { + airline: AirlineDefinitions; animal: AnimalDefinitions; color: ColorDefinitions; commerce: CommerceDefinitions; diff --git a/src/definitions/index.ts b/src/definitions/index.ts index 230a19fb..9ba6f211 100644 --- a/src/definitions/index.ts +++ b/src/definitions/index.ts @@ -1,3 +1,4 @@ +export type { AirlineDefinitions } from './airline'; export type { AnimalDefinitions } from './animal'; export type { ColorDefinitions } from './color'; export type { diff --git a/src/faker.ts b/src/faker.ts index dadb79df..a6072895 100644 --- a/src/faker.ts +++ b/src/faker.ts @@ -4,6 +4,7 @@ import { deprecated } from './internal/deprecated'; import type { Mersenne } from './internal/mersenne/mersenne'; import mersenne from './internal/mersenne/mersenne'; import type { KnownLocale } from './locales'; +import { AirlineModule } from './modules/airline'; import { AnimalModule } from './modules/animal'; import { ColorModule } from './modules/color'; import { CommerceModule } from './modules/commerce'; @@ -113,6 +114,7 @@ export class Faker { readonly datatype: DatatypeModule = new DatatypeModule(this); + readonly airline: AirlineModule = new AirlineModule(this); readonly animal: AnimalModule = new AnimalModule(this); readonly color: ColorModule = new ColorModule(this); readonly commerce: CommerceModule = new CommerceModule(this); diff --git a/src/index.ts b/src/index.ts index d39bb409..7fe80026 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,6 +2,7 @@ import { Faker } from './faker'; import allLocales from './locales'; export type { + AirlineDefinitions, AnimalDefinitions, ColorDefinitions, CommerceDefinitions, @@ -35,6 +36,8 @@ export type { } from './definitions'; export { FakerError } from './errors/faker-error'; export type { FakerOptions, UsableLocale, UsedLocales } from './faker'; +export { Aircraft, AircraftType } from './modules/airline'; +export type { AirlineModule } from './modules/airline'; export type { AnimalModule } from './modules/animal'; export type { Casing, diff --git a/src/locales/en/airline/airline.ts b/src/locales/en/airline/airline.ts new file mode 100644 index 00000000..a2be4548 --- /dev/null +++ b/src/locales/en/airline/airline.ts @@ -0,0 +1,127 @@ +export default [ + { name: 'Aegean Airlines', iataCode: 'A3' }, + { name: 'Aeroflot', iataCode: 'SU' }, + { name: 'Aerolineas Argentinas', iataCode: 'AR' }, + { name: 'Aeromexico', iataCode: 'AM' }, + { name: 'Air Algerie', iataCode: 'AH' }, + { name: 'Air Arabia', iataCode: 'G9' }, + { name: 'Air Canada', iataCode: 'AC' }, + { name: 'Air China', iataCode: 'CA' }, + { name: 'Air Europa', iataCode: 'UX' }, + { name: 'Air France-KLM', iataCode: 'AF' }, + { name: 'Air India', iataCode: 'AI' }, + { name: 'Air Mauritius', iataCode: 'MK' }, + { name: 'Air New Zealand', iataCode: 'NZ' }, + { name: 'Air Niugini', iataCode: 'PX' }, + { name: 'Air Tahiti', iataCode: 'VT' }, + { name: 'Air Tahiti Nui', iataCode: 'TN' }, + { name: 'Air Transat', iataCode: 'TS' }, + { name: 'AirAsia X', iataCode: 'D7' }, + { name: 'AirAsia', iataCode: 'AK' }, + { name: 'Aircalin', iataCode: 'SB' }, + { name: 'Alaska Airlines', iataCode: 'AS' }, + { name: 'Alitalia', iataCode: 'AZ' }, + { name: 'All Nippon Airways', iataCode: 'NH' }, + { name: 'Allegiant Air', iataCode: 'G4' }, + { name: 'American Airlines', iataCode: 'AA' }, + { name: 'Asiana Airlines', iataCode: 'OZ' }, + { name: 'Avianca', iataCode: 'AV' }, + { name: 'Azul Linhas Aereas Brasileiras', iataCode: 'AD' }, + { name: 'Azur Air', iataCode: 'ZF' }, + { name: 'Beijing Capital Airlines', iataCode: 'JD' }, + { name: 'Boliviana de Aviacion', iataCode: 'OB' }, + { name: 'British Airways', iataCode: 'BA' }, + { name: 'Cathay Pacific', iataCode: 'CX' }, + { name: 'Cebu Pacific Air', iataCode: '5J' }, + { name: 'China Airlines', iataCode: 'CI' }, + { name: 'China Eastern Airlines', iataCode: 'MU' }, + { name: 'China Southern Airlines', iataCode: 'CZ' }, + { name: 'Condor', iataCode: 'DE' }, + { name: 'Copa Airlines', iataCode: 'CM' }, + { name: 'Delta Air Lines', iataCode: 'DL' }, + { name: 'Easyfly', iataCode: 'VE' }, + { name: 'EasyJet', iataCode: 'U2' }, + { name: 'EcoJet', iataCode: '8J' }, + { name: 'Egyptair', iataCode: 'MS' }, + { name: 'El Al', iataCode: 'LY' }, + { name: 'Emirates Airlines', iataCode: 'EK' }, + { name: 'Ethiopian Airlines', iataCode: 'ET' }, + { name: 'Etihad Airways', iataCode: 'EY' }, + { name: 'EVA Air', iataCode: 'BR' }, + { name: 'Fiji Airways', iataCode: 'FJ' }, + { name: 'Finnair', iataCode: 'AY' }, + { name: 'Flybondi', iataCode: 'FO' }, + { name: 'Flydubai', iataCode: 'FZ' }, + { name: 'FlySafair', iataCode: 'FA' }, + { name: 'Frontier Airlines', iataCode: 'F9' }, + { name: 'Garuda Indonesia', iataCode: 'GA' }, + { name: 'Go First', iataCode: 'G8' }, + { name: 'Gol Linhas Aereas Inteligentes', iataCode: 'G3' }, + { name: 'Hainan Airlines', iataCode: 'HU' }, + { name: 'Hawaiian Airlines', iataCode: 'HA' }, + { name: 'IndiGo Airlines', iataCode: '6E' }, + { name: 'Japan Airlines', iataCode: 'JL' }, + { name: 'Jeju Air', iataCode: '7C' }, + { name: 'Jet2', iataCode: 'LS' }, + { name: 'JetBlue Airways', iataCode: 'B6' }, + { name: 'JetSMART', iataCode: 'JA' }, + { name: 'Juneyao Airlines', iataCode: 'HO' }, + { name: 'Kenya Airways', iataCode: 'KQ' }, + { name: 'Korean Air', iataCode: 'KE' }, + { name: 'Kulula.com', iataCode: 'MN' }, + { name: 'LATAM Airlines', iataCode: 'LA' }, + { name: 'Lion Air', iataCode: 'JT' }, + { name: 'LOT Polish Airlines', iataCode: 'LO' }, + { name: 'Lufthansa', iataCode: 'LH' }, + { name: 'Libyan Airlines', iataCode: 'LN' }, + { name: 'Linea Aerea Amaszonas', iataCode: 'Z8' }, + { name: 'Malaysia Airlines', iataCode: 'MH' }, + { name: 'Nordwind Airlines', iataCode: 'N4' }, + { name: 'Norwegian Air Shuttle', iataCode: 'DY' }, + { name: 'Oman Air', iataCode: 'WY' }, + { name: 'Pakistan International Airlines', iataCode: 'PK' }, + { name: 'Pegasus Airlines', iataCode: 'PC' }, + { name: 'Philippine Airlines', iataCode: 'PR' }, + { name: 'Qantas Group', iataCode: 'QF' }, + { name: 'Qatar Airways', iataCode: 'QR' }, + { name: 'Republic Airways', iataCode: 'YX' }, + { name: 'Royal Air Maroc', iataCode: 'AT' }, + { name: 'Ryanair', iataCode: 'FR' }, + { name: 'S7 Airlines', iataCode: 'S7' }, + { name: 'SAS', iataCode: 'SK' }, + { name: 'Satena', iataCode: '9R' }, + { name: 'Saudia', iataCode: 'SV' }, + { name: 'Shandong Airlines', iataCode: 'SC' }, + { name: 'Sichuan Airlines', iataCode: '3U' }, + { name: 'Singapore Airlines', iataCode: 'SQ' }, + { name: 'Sky Airline', iataCode: 'H2' }, + { name: 'SkyWest Airlines', iataCode: 'OO' }, + { name: 'South African Airways', iataCode: 'SA' }, + { name: 'Southwest Airlines', iataCode: 'WN' }, + { name: 'SpiceJet', iataCode: 'SG' }, + { name: 'Spirit Airlines', iataCode: 'NK' }, + { name: 'Spring Airlines', iataCode: '9S' }, + { name: 'SriLankan Airlines', iataCode: 'UL' }, + { name: 'Star Peru', iataCode: '2I' }, + { name: 'Sun Country Airlines', iataCode: 'SY' }, + { name: 'SunExpress', iataCode: 'XQ' }, + { name: 'TAP Air Portugal', iataCode: 'TP' }, + { name: 'Thai AirAsia', iataCode: 'FD' }, + { name: 'Thai Airways', iataCode: 'TG' }, + { name: 'TUI Airways', iataCode: 'BY' }, + { name: 'Tunisair', iataCode: 'TU' }, + { name: 'Turkish Airlines', iataCode: 'TK' }, + { name: 'Ukraine International', iataCode: 'PS' }, + { name: 'United Airlines', iataCode: 'UA' }, + { name: 'Ural Airlines', iataCode: 'U6' }, + { name: 'VietJet Air', iataCode: 'VJ' }, + { name: 'Vietnam Airlines', iataCode: 'VN' }, + { name: 'Virgin Atlantic Airways', iataCode: 'VS' }, + { name: 'Virgin Australia', iataCode: 'VA' }, + { name: 'VivaAerobus', iataCode: 'VB' }, + { name: 'VOEPASS Linhas Aereas', iataCode: '2Z' }, + { name: 'Volaris', iataCode: 'Y4' }, + { name: 'WestJet', iataCode: 'WS' }, + { name: 'Wingo', iataCode: 'P5' }, + { name: 'Wizz Air', iataCode: 'W6' }, +]; diff --git a/src/locales/en/airline/airplane.ts b/src/locales/en/airline/airplane.ts new file mode 100644 index 00000000..27bb77e4 --- /dev/null +++ b/src/locales/en/airline/airplane.ts @@ -0,0 +1,157 @@ +export default [ + { name: 'Aerospatiale/BAC Concorde', iataTypeCode: 'SSC' }, + { name: 'Airbus A300', iataTypeCode: 'AB3' }, + { name: 'Airbus A310', iataTypeCode: '310' }, + { name: 'Airbus A310-200', iataTypeCode: '312' }, + { name: 'Airbus A310-300', iataTypeCode: '313' }, + { name: 'Airbus A318', iataTypeCode: '318' }, + { name: 'Airbus A319', iataTypeCode: '319' }, + { name: 'Airbus A319neo', iataTypeCode: '31N' }, + { name: 'Airbus A320', iataTypeCode: '320' }, + { name: 'Airbus A320neo', iataTypeCode: '32N' }, + { name: 'Airbus A321', iataTypeCode: '321' }, + { name: 'Airbus A321neo', iataTypeCode: '32Q' }, + { name: 'Airbus A330', iataTypeCode: '330' }, + { name: 'Airbus A330-200', iataTypeCode: '332' }, + { name: 'Airbus A330-300', iataTypeCode: '333' }, + { name: 'Airbus A330-800neo', iataTypeCode: '338' }, + { name: 'Airbus A330-900neo', iataTypeCode: '339' }, + { name: 'Airbus A340', iataTypeCode: '340' }, + { name: 'Airbus A340-200', iataTypeCode: '342' }, + { name: 'Airbus A340-300', iataTypeCode: '343' }, + { name: 'Airbus A340-500', iataTypeCode: '345' }, + { name: 'Airbus A340-600', iataTypeCode: '346' }, + { name: 'Airbus A350', iataTypeCode: '350' }, + { name: 'Airbus A350-900', iataTypeCode: '359' }, + { name: 'Airbus A350-1000', iataTypeCode: '351' }, + { name: 'Airbus A380', iataTypeCode: '380' }, + { name: 'Airbus A380-800', iataTypeCode: '388' }, + { name: 'Antonov An-12', iataTypeCode: 'ANF' }, + { name: 'Antonov An-24', iataTypeCode: 'AN4' }, + { name: 'Antonov An-26', iataTypeCode: 'A26' }, + { name: 'Antonov An-28', iataTypeCode: 'A28' }, + { name: 'Antonov An-30', iataTypeCode: 'A30' }, + { name: 'Antonov An-32', iataTypeCode: 'A32' }, + { name: 'Antonov An-72', iataTypeCode: 'AN7' }, + { name: 'Antonov An-124 Ruslan', iataTypeCode: 'A4F' }, + { name: 'Antonov An-140', iataTypeCode: 'A40' }, + { name: 'Antonov An-148', iataTypeCode: 'A81' }, + { name: 'Antonov An-158', iataTypeCode: 'A58' }, + { name: 'Antonov An-225 Mriya', iataTypeCode: 'A5F' }, + { name: 'Boeing 707', iataTypeCode: '703' }, + { name: 'Boeing 717', iataTypeCode: '717' }, + { name: 'Boeing 720B', iataTypeCode: 'B72' }, + { name: 'Boeing 727', iataTypeCode: '727' }, + { name: 'Boeing 727-100', iataTypeCode: '721' }, + { name: 'Boeing 727-200', iataTypeCode: '722' }, + { name: 'Boeing 737 MAX 7', iataTypeCode: '7M7' }, + { name: 'Boeing 737 MAX 8', iataTypeCode: '7M8' }, + { name: 'Boeing 737 MAX 9', iataTypeCode: '7M9' }, + { name: 'Boeing 737 MAX 10', iataTypeCode: '7MJ' }, + { name: 'Boeing 737', iataTypeCode: '737' }, + { name: 'Boeing 737-100', iataTypeCode: '731' }, + { name: 'Boeing 737-200', iataTypeCode: '732' }, + { name: 'Boeing 737-300', iataTypeCode: '733' }, + { name: 'Boeing 737-400', iataTypeCode: '734' }, + { name: 'Boeing 737-500', iataTypeCode: '735' }, + { name: 'Boeing 737-600', iataTypeCode: '736' }, + { name: 'Boeing 737-700', iataTypeCode: '73G' }, + { name: 'Boeing 737-800', iataTypeCode: '738' }, + { name: 'Boeing 737-900', iataTypeCode: '739' }, + { name: 'Boeing 747', iataTypeCode: '747' }, + { name: 'Boeing 747-100', iataTypeCode: '741' }, + { name: 'Boeing 747-200', iataTypeCode: '742' }, + { name: 'Boeing 747-300', iataTypeCode: '743' }, + { name: 'Boeing 747-400', iataTypeCode: '744' }, + { name: 'Boeing 747-400D', iataTypeCode: '74J' }, + { name: 'Boeing 747-8', iataTypeCode: '748' }, + { name: 'Boeing 747SP', iataTypeCode: '74L' }, + { name: 'Boeing 747SR', iataTypeCode: '74R' }, + { name: 'Boeing 757', iataTypeCode: '757' }, + { name: 'Boeing 757-200', iataTypeCode: '752' }, + { name: 'Boeing 757-300', iataTypeCode: '753' }, + { name: 'Boeing 767', iataTypeCode: '767' }, + { name: 'Boeing 767-200', iataTypeCode: '762' }, + { name: 'Boeing 767-300', iataTypeCode: '763' }, + { name: 'Boeing 767-400', iataTypeCode: '764' }, + { name: 'Boeing 777', iataTypeCode: '777' }, + { name: 'Boeing 777-200', iataTypeCode: '772' }, + { name: 'Boeing 777-200LR', iataTypeCode: '77L' }, + { name: 'Boeing 777-300', iataTypeCode: '773' }, + { name: 'Boeing 777-300ER', iataTypeCode: '77W' }, + { name: 'Boeing 787', iataTypeCode: '787' }, + { name: 'Boeing 787-8', iataTypeCode: '788' }, + { name: 'Boeing 787-9', iataTypeCode: '789' }, + { name: 'Boeing 787-10', iataTypeCode: '781' }, + { name: 'Canadair Challenger', iataTypeCode: 'CCJ' }, + { name: 'Canadair CL-44', iataTypeCode: 'CL4' }, + { name: 'Canadair Regional Jet 100', iataTypeCode: 'CR1' }, + { name: 'Canadair Regional Jet 200', iataTypeCode: 'CR2' }, + { name: 'Canadair Regional Jet 700', iataTypeCode: 'CR7' }, + { name: 'Canadair Regional Jet 705', iataTypeCode: 'CRA' }, + { name: 'Canadair Regional Jet 900', iataTypeCode: 'CR9' }, + { name: 'Canadair Regional Jet 1000', iataTypeCode: 'CRK' }, + { name: 'De Havilland Canada DHC-2 Beaver', iataTypeCode: 'DHP' }, + { name: 'De Havilland Canada DHC-2 Turbo-Beaver', iataTypeCode: 'DHR' }, + { name: 'De Havilland Canada DHC-3 Otter', iataTypeCode: 'DHL' }, + { name: 'De Havilland Canada DHC-4 Caribou', iataTypeCode: 'DHC' }, + { name: 'De Havilland Canada DHC-6 Twin Otter', iataTypeCode: 'DHT' }, + { name: 'De Havilland Canada DHC-7 Dash 7', iataTypeCode: 'DH7' }, + { name: 'De Havilland Canada DHC-8-100 Dash 8 / 8Q', iataTypeCode: 'DH1' }, + { name: 'De Havilland Canada DHC-8-200 Dash 8 / 8Q', iataTypeCode: 'DH2' }, + { name: 'De Havilland Canada DHC-8-300 Dash 8 / 8Q', iataTypeCode: 'DH3' }, + { name: 'De Havilland Canada DHC-8-400 Dash 8Q', iataTypeCode: 'DH4' }, + { name: 'De Havilland DH.104 Dove', iataTypeCode: 'DHD' }, + { name: 'De Havilland DH.114 Heron', iataTypeCode: 'DHH' }, + { name: 'Douglas DC-3', iataTypeCode: 'D3F' }, + { name: 'Douglas DC-6', iataTypeCode: 'D6F' }, + { name: 'Douglas DC-8-50', iataTypeCode: 'D8T' }, + { name: 'Douglas DC-8-62', iataTypeCode: 'D8L' }, + { name: 'Douglas DC-8-72', iataTypeCode: 'D8Q' }, + { name: 'Douglas DC-9-10', iataTypeCode: 'D91' }, + { name: 'Douglas DC-9-20', iataTypeCode: 'D92' }, + { name: 'Douglas DC-9-30', iataTypeCode: 'D93' }, + { name: 'Douglas DC-9-40', iataTypeCode: 'D94' }, + { name: 'Douglas DC-9-50', iataTypeCode: 'D95' }, + { name: 'Douglas DC-10', iataTypeCode: 'D10' }, + { name: 'Douglas DC-10-10', iataTypeCode: 'D1X' }, + { name: 'Douglas DC-10-30', iataTypeCode: 'D1Y' }, + { name: 'Embraer 170', iataTypeCode: 'E70' }, + { name: 'Embraer 175', iataTypeCode: 'E75' }, + { name: 'Embraer 190', iataTypeCode: 'E90' }, + { name: 'Embraer 195', iataTypeCode: 'E95' }, + { name: 'Embraer E190-E2', iataTypeCode: '290' }, + { name: 'Embraer E195-E2', iataTypeCode: '295' }, + { name: 'Embraer EMB.110 Bandeirante', iataTypeCode: 'EMB' }, + { name: 'Embraer EMB.120 Brasilia', iataTypeCode: 'EM2' }, + { name: 'Embraer Legacy 600', iataTypeCode: 'ER3' }, + { name: 'Embraer Phenom 100', iataTypeCode: 'EP1' }, + { name: 'Embraer Phenom 300', iataTypeCode: 'EP3' }, + { name: 'Embraer RJ135', iataTypeCode: 'ER3' }, + { name: 'Embraer RJ140', iataTypeCode: 'ERD' }, + { name: 'Embraer RJ145 Amazon', iataTypeCode: 'ER4' }, + { name: 'Ilyushin IL18', iataTypeCode: 'IL8' }, + { name: 'Ilyushin IL62', iataTypeCode: 'IL6' }, + { name: 'Ilyushin IL76', iataTypeCode: 'IL7' }, + { name: 'Ilyushin IL86', iataTypeCode: 'ILW' }, + { name: 'Ilyushin IL96-300', iataTypeCode: 'I93' }, + { name: 'Ilyushin IL114', iataTypeCode: 'I14' }, + { name: 'Lockheed L-182 / 282 / 382 (L-100) Hercules', iataTypeCode: 'LOH' }, + { name: 'Lockheed L-188 Electra', iataTypeCode: 'LOE' }, + { name: 'Lockheed L-1011 Tristar', iataTypeCode: 'L10' }, + { name: 'Lockheed L-1049 Super Constellation', iataTypeCode: 'L49' }, + { name: 'McDonnell Douglas MD11', iataTypeCode: 'M11' }, + { name: 'McDonnell Douglas MD80', iataTypeCode: 'M80' }, + { name: 'McDonnell Douglas MD81', iataTypeCode: 'M81' }, + { name: 'McDonnell Douglas MD82', iataTypeCode: 'M82' }, + { name: 'McDonnell Douglas MD83', iataTypeCode: 'M83' }, + { name: 'McDonnell Douglas MD87', iataTypeCode: 'M87' }, + { name: 'McDonnell Douglas MD88', iataTypeCode: 'M88' }, + { name: 'McDonnell Douglas MD90', iataTypeCode: 'M90' }, + { name: 'Sukhoi Superjet 100-95', iataTypeCode: 'SU9' }, + { name: 'Tupolev Tu-134', iataTypeCode: 'TU3' }, + { name: 'Tupolev Tu-154', iataTypeCode: 'TU5' }, + { name: 'Tupolev Tu-204', iataTypeCode: 'T20' }, + { name: 'Yakovlev Yak-40', iataTypeCode: 'YK4' }, + { name: 'Yakovlev Yak-42', iataTypeCode: 'YK2' }, +]; diff --git a/src/locales/en/airline/airport.ts b/src/locales/en/airline/airport.ts new file mode 100644 index 00000000..67889475 --- /dev/null +++ b/src/locales/en/airline/airport.ts @@ -0,0 +1,138 @@ +export default [ + { name: 'Adelaide International Airport', iataCode: 'ADL' }, + { name: 'Adolfo Suarez Madrid-Barajas Airport', iataCode: 'MAD' }, + { name: 'Aeroparque Jorge Newbery Airport', iataCode: 'AEP' }, + { name: 'Afonso Pena International Airport', iataCode: 'CWB' }, + { name: 'Alfonso Bonilla Aragon International Airport', iataCode: 'CLO' }, + { name: 'Amsterdam Airport Schiphol', iataCode: 'AMS' }, + { name: 'Arturo Merino Benitez International Airport', iataCode: 'SCL' }, + { name: 'Auckland International Airport', iataCode: 'AKL' }, + { name: 'Beijing Capital International Airport', iataCode: 'PEK' }, + { name: 'Belem Val de Cans International Airport', iataCode: 'BEL' }, + { + name: 'Belo Horizonte Tancredo Neves International Airport', + iataCode: 'CNF', + }, + { name: 'Berlin-Tegel Airport', iataCode: 'TXL' }, + { name: 'Bole International Airport', iataCode: 'ADD' }, + { + name: 'Brasilia-Presidente Juscelino Kubitschek International Airport', + iataCode: 'BSB', + }, + { name: 'Brisbane International Airport', iataCode: 'BNE' }, + { name: 'Brussels Airport', iataCode: 'BRU' }, + { name: 'Cairns Airport', iataCode: 'CNS' }, + { name: 'Cairo International Airport', iataCode: 'CAI' }, + { name: 'Canberra Airport', iataCode: 'CBR' }, + { name: 'Capetown International Airport', iataCode: 'CPT' }, + { name: 'Charles de Gaulle International Airport', iataCode: 'CDG' }, + { name: 'Charlotte Douglas International Airport', iataCode: 'CLT' }, + { name: 'Chengdu Shuangliu International Airport', iataCode: 'CTU' }, + { name: 'Chhatrapati Shivaji International Airport', iataCode: 'BOM' }, + { name: "Chicago O'Hare International Airport", iataCode: 'ORD' }, + { name: 'Chongqing Jiangbei International Airport', iataCode: 'CKG' }, + { name: 'Christchurch International Airport', iataCode: 'CHC' }, + { name: 'Copenhagen Kastrup Airport', iataCode: 'CPH' }, + { name: 'Dallas Fort Worth International Airport', iataCode: 'DFW' }, + { name: 'Daniel K. Inouye International Airport', iataCode: 'HNL' }, + { name: 'Denver International Airport', iataCode: 'DEN' }, + { name: 'Don Mueang International Airport', iataCode: 'DMK' }, + { name: 'Dubai International Airport', iataCode: 'DXB' }, + { name: 'Dublin Airport', iataCode: 'DUB' }, + { name: 'Dusseldorf Airport', iataCode: 'DUS' }, + { name: 'El Dorado International Airport', iataCode: 'BOG' }, + { name: 'Eleftherios Venizelos International Airport', iataCode: 'ATH' }, + { name: "Faa'a International Airport", iataCode: 'PPT' }, + { name: 'Fort Lauderdale Hollywood International Airport', iataCode: 'FLL' }, + { name: 'Fortaleza Pinto Martins International Airport', iataCode: 'FOR' }, + { name: 'Frankfurt am Main Airport', iataCode: 'FRA' }, + { name: 'George Bush Intercontinental Houston Airport', iataCode: 'IAH' }, + { name: 'Gold Coast Airport', iataCode: 'OOL' }, + { + name: 'Guarulhos - Governador Andre Franco Montoro International Airport', + iataCode: 'GRU', + }, + { name: 'Hartsfield-Jackson Atlanta International Airport', iataCode: 'ATL' }, + { name: 'Helsinki Vantaa Airport', iataCode: 'HEL' }, + { name: 'Hobart International Airport', iataCode: 'HBA' }, + { name: 'Hong Kong International Airport', iataCode: 'HKG' }, + { name: 'Houari Boumediene Airport', iataCode: 'ALG' }, + { name: 'Hurgada International Airport', iataCode: 'HRG' }, + { name: 'Incheon International Airport', iataCode: 'ICN' }, + { name: 'Indira Gandhi International Airport', iataCode: 'DEL' }, + { name: 'Istanbul Airport', iataCode: 'IST' }, + { name: 'Jacksons International Airport', iataCode: 'POM' }, + { name: 'Jeju International Airport', iataCode: 'CJU' }, + { name: 'John F Kennedy International Airport', iataCode: 'JFK' }, + { name: 'Jorge Chavez International Airport', iataCode: 'LIM' }, + { name: 'Jose Maria Cordova International Airport', iataCode: 'MDE' }, + { name: 'Josep Tarradellas Barcelona-El Prat Airport', iataCode: 'BCN' }, + { name: 'Kahului Airport', iataCode: 'OGG' }, + { name: 'King Abdulaziz International Airport', iataCode: 'JED' }, + { name: 'Kuala Lumpur International Airport', iataCode: 'KUL' }, + { name: 'Kunming Changshui International Airport', iataCode: 'KMG' }, + { name: 'La Tontouta International Airport', iataCode: 'NOU' }, + { name: 'Leonardo da Vinci-Fiumicino Airport', iataCode: 'FCO' }, + { name: 'London Heathrow Airport', iataCode: 'LHR' }, + { name: 'Los Angeles International Airport', iataCode: 'LAX' }, + { name: 'McCarran International Airport', iataCode: 'LAS' }, + { name: 'Melbourne International Airport', iataCode: 'MEL' }, + { name: 'Mexico City International Airport', iataCode: 'MEX' }, + { name: 'Miami International Airport', iataCode: 'MIA' }, + { name: 'Ministro Pistarini International Airport', iataCode: 'EZE' }, + { + name: 'Minneapolis-St Paul International/Wold-Chamberlain Airport', + iataCode: 'MSP', + }, + { name: 'Mohammed V International Airport', iataCode: 'CMN' }, + { name: 'Moscow Domodedovo Airport', iataCode: 'DME' }, + { name: 'Munich Airport', iataCode: 'MUC' }, + { name: 'Murtala Muhammed International Airport', iataCode: 'LOS' }, + { name: 'Nadi International Airport', iataCode: 'NAN' }, + { name: 'Nairobi Jomo Kenyatta International Airport', iataCode: 'NBO' }, + { name: 'Narita International Airport', iataCode: 'NRT' }, + { name: 'Newark Liberty International Airport', iataCode: 'EWR' }, + { name: 'Ninoy Aquino International Airport', iataCode: 'MNL' }, + { name: 'Noumea Magenta Airport', iataCode: 'GEA' }, + { name: 'O. R. Tambo International Airport', iataCode: 'JNB' }, + { name: 'Orlando International Airport', iataCode: 'MCO' }, + { name: 'Oslo Lufthavn', iataCode: 'OSL' }, + { name: 'Perth Airport', iataCode: 'PER' }, + { name: 'Phoenix Sky Harbor International Airport', iataCode: 'PHX' }, + { + name: 'Recife Guararapes-Gilberto Freyre International Airport', + iataCode: 'REC', + }, + { name: 'Rio de Janeiro Galeao International Airport', iataCode: 'GIG' }, + { name: 'Salgado Filho International Airport', iataCode: 'POA' }, + { + name: 'Salvador Deputado Luis Eduardo Magalhaes International Airport', + iataCode: 'SSA', + }, + { name: 'San Francisco International Airport', iataCode: 'SFO' }, + { name: 'Santos Dumont Airport', iataCode: 'SDU' }, + { name: 'Sao Paulo-Congonhas Airport', iataCode: 'CGH' }, + { name: 'Seattle Tacoma International Airport', iataCode: 'SEA' }, + { name: 'Shanghai Hongqiao International Airport', iataCode: 'SHA' }, + { name: 'Shanghai Pudong International Airport', iataCode: 'PVG' }, + { name: "Shenzhen Bao'an International Airport", iataCode: 'SZX' }, + { name: 'Sheremetyevo International Airport', iataCode: 'SVO' }, + { name: 'Singapore Changi Airport', iataCode: 'SIN' }, + { name: 'Soekarno-Hatta International Airport', iataCode: 'CGK' }, + { name: 'Stockholm-Arlanda Airport"', iataCode: 'ARN' }, + { name: 'Suvarnabhumi Airport', iataCode: 'BKK' }, + { name: 'Sydney Kingsford Smith International Airport', iataCode: 'SYD' }, + { name: 'Taiwan Taoyuan International Airport', iataCode: 'TPE' }, + { name: 'Tan Son Nhat International Airport', iataCode: 'SGN' }, + { name: 'Tokyo Haneda International Airport', iataCode: 'HND' }, + { name: 'Toronto Pearson International Airport', iataCode: 'YYZ' }, + { name: 'Tunis Carthage International Airport', iataCode: 'TUN' }, + { name: 'Vancouver International Airport', iataCode: 'YVR' }, + { name: 'Vienna International Airport', iataCode: 'VIE' }, + { name: 'Viracopos International Airport', iataCode: 'VCP' }, + { name: 'Vnukovo International Airport', iataCode: 'VKO' }, + { name: 'Wellington International Airport', iataCode: 'WLG' }, + { name: "Xi'an Xianyang International Airport", iataCode: 'XIY' }, + { name: 'Zhukovsky International Airport', iataCode: 'ZIA' }, + { name: 'Zurich Airport', iataCode: 'ZRH' }, +]; diff --git a/src/locales/en/airline/index.ts b/src/locales/en/airline/index.ts new file mode 100644 index 00000000..ec1d2d89 --- /dev/null +++ b/src/locales/en/airline/index.ts @@ -0,0 +1,16 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import type { AirlineDefinitions } from '../../..'; +import airline_ from './airline'; +import airplane from './airplane'; +import airport from './airport'; + +const airline: AirlineDefinitions = { + airline: airline_, + airplane, + airport, +}; + +export default airline; diff --git a/src/locales/en/index.ts b/src/locales/en/index.ts index c55491cc..2ac4c15d 100644 --- a/src/locales/en/index.ts +++ b/src/locales/en/index.ts @@ -3,6 +3,7 @@ * Run 'pnpm run generate:locales' to update. */ import type { LocaleDefinition } from '../..'; +import airline from './airline'; import animal from './animal'; import app from './app'; import business from './business'; @@ -28,6 +29,7 @@ import word from './word'; const en: LocaleDefinition = { title: 'English', + airline, animal, app, business, diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts new file mode 100644 index 00000000..3a5a400c --- /dev/null +++ b/src/modules/airline/index.ts @@ -0,0 +1,273 @@ +/** + * IATA stands for [International Air Transport Association](https://iata.org). + * It's the trade association for the world's airlines and it is + * responsible for setting standards relating to many aspects of airline + * operations. + */ +import type { Faker } from '../..'; + +export enum Aircraft { + Narrowbody = 'narrowbody', + Regional = 'regional', + Widebody = 'widebody', +} + +export type AircraftType = `${Aircraft}`; + +export interface Airline { + /** + * The name of the airline (e.g. `'American Airlines'`). + */ + readonly name: string; + /** + * The 2 character IATA code of the airline (e.g. `'AA'`). + */ + readonly iataCode: string; +} + +export interface Airplane { + /** + * The name of the airplane (e.g. `'Airbus A321'`). + */ + readonly name: string; + /** + * The IATA code of the airplane (e.g. `'321'`). + */ + readonly iataTypeCode: string; +} + +export interface Airport { + /** + * The name of the airport (e.g. `'Dallas Fort Worth International Airport'`). + */ + readonly name: string; + /** + * The IATA code of the airport (e.g. `'DFW'`). + */ + readonly iataCode: string; +} + +const numerics = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; +const visuallySimilarCharacters = ['0', 'O', '1', 'I', 'L']; +const aircraftTypeMaxRows: Record<AircraftType, number> = { + regional: 20, + narrowbody: 35, + widebody: 60, +}; +const aircraftTypeSeats: Record<AircraftType, string[]> = { + regional: ['A', 'B', 'C', 'D'], + narrowbody: ['A', 'B', 'C', 'D', 'E', 'F'], + widebody: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K'], +}; + +/** + * Module to generate airline related data. + */ +export class AirlineModule { + constructor(private readonly faker: Faker) { + // Bind `this` so namespaced is working correctly + for (const name of Object.getOwnPropertyNames(AirlineModule.prototype)) { + if (name === 'constructor' || typeof this[name] !== 'function') { + continue; + } + + this[name] = this[name].bind(this); + } + } + + /** + * Generates a random airport. + * + * @example + * faker.airline.airport() // { name: 'Dallas Fort Worth International Airport', iataCode: 'DFW' } + * + * @since 8.0.0 + */ + airport(): Airport { + return this.faker.helpers.arrayElement( + this.faker.definitions.airline.airport + ); + } + + /** + * Generates a random airline. + * + * @example + * faker.airline.airline() // { name: 'American Airlines', iataCode: 'AA' } + * + * @since 8.0.0 + */ + airline(): Airline { + return this.faker.helpers.arrayElement( + this.faker.definitions.airline.airline + ); + } + + /** + * Generates a random airplane. + * + * @example + * faker.airline.airplane() // { name: 'Airbus A321neo', iataTypeCode: '32Q' } + * + * @since 8.0.0 + */ + airplane(): Airplane { + return this.faker.helpers.arrayElement( + this.faker.definitions.airline.airplane + ); + } + + /** + * Generates a random [record locator](https://en.wikipedia.org/wiki/Record_locator). Record locators + * are used by airlines to identify reservations. They're also known as booking reference numbers, + * locator codes, confirmation codes, or reservation codes. + * + * @param options The options to use. Defaults to `{}`. + * @param options.allowNumerics Whether to allow numeric characters. Defaults to `false`. + * @param options.allowVisuallySimilarCharacters Whether to allow visually similar characters such as '1' and 'I'. Defaults to `false`. + * + * @example + * faker.airline.recordLocator() // 'KIFRWE' + * faker.airline.recordLocator({ allowNumerics: true }) // 'E5TYEM' + * faker.airline.recordLocator({ allowVisuallySimilarCharacters: true }) // 'ANZNEI' + * faker.airline.recordLocator({ allowNumerics: true, allowVisuallySimilarCharacters: true }) // '1Z2Z3E' + * + * @since 8.0.0 + */ + recordLocator( + options: { + /** + * Whether to allow numeric characters. + * + * @default false + */ + allowNumerics?: boolean; + /** + * Whether to allow visually similar characters such as '1' and 'I'. + * + * @default false + */ + allowVisuallySimilarCharacters?: boolean; + } = {} + ): string { + const { allowNumerics = false, allowVisuallySimilarCharacters = false } = + options; + const excludedChars = []; + if (!allowNumerics) { + excludedChars.push(...numerics); + } + + if (!allowVisuallySimilarCharacters) { + excludedChars.push(...visuallySimilarCharacters); + } + + return this.faker.string.alphanumeric({ + length: 6, + casing: 'upper', + exclude: excludedChars, + }); + } + + /** + * Generates a random seat. + * + * @param options The options to use. Defaults to `{}`. + * @param options.aircraftType The aircraft type. Can be one of `narrowbody`, `regional`, `widebody`. Defaults to `narrowbody`. + * + * @example + * faker.airline.seat() // '22C' + * faker.airline.seat({ aircraftType: 'regional' }) // '7A' + * faker.airline.seat({ aircraftType: 'widebody' }) // '42K' + * + * @since 8.0.0 + */ + seat( + options: { + /** + * The aircraft type. Can be one of `narrowbody`, `regional`, `widebody`. + * + * @default 'narrowbody' + */ + aircraftType?: AircraftType; + } = {} + ): string { + const { aircraftType = Aircraft.Narrowbody } = options; + const maxRow = aircraftTypeMaxRows[aircraftType]; + const allowedSeats = aircraftTypeSeats[aircraftType]; + const row = this.faker.number.int({ min: 1, max: maxRow }); + const seat = this.faker.helpers.arrayElement(allowedSeats); + return `${row}${seat}`; + } + + /** + * Returns a random aircraft type. + * + * @example + * faker.airline.aircraftType() // 'narrowbody' + * + * @since 8.0.0 + */ + aircraftType(): AircraftType { + return this.faker.helpers.objectValue(Aircraft); + } + + /** + * Returns a random flight number. Flight numbers are always 1 to 4 digits long. Sometimes they are + * used without leading zeros (e.g.: `American Airlines flight 425`) and sometimes with leading + * zeros, often with the airline code prepended (e.g.: `AA0425`). + * + * To generate a flight number prepended with an airline code, combine this function with the + * `airline()` function and use template literals: + * ``` + * `${faker.airline.airline().iataCode}${faker.airline.flightNumber({ addLeadingZeros: true })}` // 'AA0798' + * ``` + * + * @param options The options to use. Defaults to `{}`. + * @param options.length The number or range of digits to generate. Defaults to `{ min: 1, max: 4 }`. + * @param options.addLeadingZeros Whether to pad the flight number up to 4 digits with leading zeros. Defaults to `false`. + * + * @example + * faker.airline.flightNumber() // '2405' + * faker.airline.flightNumber({ addLeadingZeros: true }) // '0249' + * faker.airline.flightNumber({ addLeadingZeros: true, length: 2 }) // '0042' + * faker.airline.flightNumber({ addLeadingZeros: true, length: { min: 2, max: 3 } }) // '0624' + * faker.airline.flightNumber({ length: 3 }) // '425' + * faker.airline.flightNumber({ length: { min: 2, max: 3 } }) // '84' + * + * @since 8.0.0 + */ + flightNumber( + options: { + /** + * The number or range of digits to generate. + * + * @default { min: 1, max: 4 } + */ + length?: + | number + | { + /** + * The minimum number of digits to generate. + */ + min: number; + /** + * The maximum number of digits to generate. + */ + max: number; + }; + /** + * Whether to pad the flight number up to 4 digits with leading zeros. + * + * @default false + */ + addLeadingZeros?: boolean; + } = {} + ): string { + const { length = { min: 1, max: 4 }, addLeadingZeros = false } = options; + const flightNumber = this.faker.string.numeric({ + length, + allowLeadingZeros: false, + }); + return addLeadingZeros ? flightNumber.padStart(4, '0') : flightNumber; + } +} |
