aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Petro <[email protected]>2023-01-30 14:13:46 -0700
committerGitHub <[email protected]>2023-01-30 21:13:46 +0000
commit579c9adb5affa01ee5ee384942f56d662a21022e (patch)
treeaacc7cc0304f5fca777228c63bf26d5f309a7ed7 /src
parent05d6eb43f3f5766275333c6e960470e38bae7162 (diff)
downloadfaker-579c9adb5affa01ee5ee384942f56d662a21022e.tar.xz
faker-579c9adb5affa01ee5ee384942f56d662a21022e.zip
feat(airline): add airline module (#1699)
Diffstat (limited to 'src')
-rw-r--r--src/definitions/airline.ts19
-rw-r--r--src/definitions/definitions.ts2
-rw-r--r--src/definitions/index.ts1
-rw-r--r--src/faker.ts2
-rw-r--r--src/index.ts3
-rw-r--r--src/locales/en/airline/airline.ts127
-rw-r--r--src/locales/en/airline/airplane.ts157
-rw-r--r--src/locales/en/airline/airport.ts138
-rw-r--r--src/locales/en/airline/index.ts16
-rw-r--r--src/locales/en/index.ts2
-rw-r--r--src/modules/airline/index.ts273
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;
+ }
+}