From c11fff772db529fe90545be3feadcbc7e3c4f6cc Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sat, 24 Dec 2022 10:58:32 -0700 Subject: [PATCH 01/54] Add airline module --- docs/.vitepress/api-pages.ts | 1 + src/definitions/airline.ts | 8 +++ src/definitions/definitions.ts | 2 + src/definitions/index.ts | 1 + src/faker.ts | 2 + src/index.ts | 2 + src/locales/en/airline/airports.ts | 1 + src/locales/en/airline/index.ts | 11 +++ src/locales/en/index.ts | 2 + src/modules/airline/index.ts | 112 +++++++++++++++++++++++++++++ 10 files changed, 142 insertions(+) create mode 100644 src/definitions/airline.ts create mode 100644 src/locales/en/airline/airports.ts create mode 100644 src/locales/en/airline/index.ts create mode 100644 src/modules/airline/index.ts diff --git a/docs/.vitepress/api-pages.ts b/docs/.vitepress/api-pages.ts index 188e24d371d..dc62235786b 100644 --- a/docs/.vitepress/api-pages.ts +++ b/docs/.vitepress/api-pages.ts @@ -2,6 +2,7 @@ // Run 'pnpm run generate:api-docs' to update export const apiPages = [ { text: 'Overview', link: '/api/' }, + { text: 'Airline', link: '/api/airline.html' }, { text: 'Animal', link: '/api/animal.html' }, { text: 'Color', link: '/api/color.html' }, { text: 'Commerce', link: '/api/commerce.html' }, diff --git a/src/definitions/airline.ts b/src/definitions/airline.ts new file mode 100644 index 00000000000..de4b188afbf --- /dev/null +++ b/src/definitions/airline.ts @@ -0,0 +1,8 @@ +import type { LocaleEntry } from './definitions'; + +export type AirlineDefinitions = LocaleEntry<{ + /** + * IATA three-letter airport codes. + */ + airport: string[]; +}>; diff --git a/src/definitions/definitions.ts b/src/definitions/definitions.ts index 59c133eb77b..7a0bd3344e4 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 = Partial & * 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 230a19fb2c6..9ba6f21145e 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 7870d9c5618..b89b932e8f7 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'; @@ -89,6 +90,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 5d5c280c86c..470954a7338 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,7 @@ export type { } from './definitions'; export { FakerError } from './errors/faker-error'; export type { FakerOptions, UsableLocale, UsedLocales } from './faker'; +export type { AirlineModule } from './modules/airline'; export type { AnimalModule } from './modules/animal'; export type { Casing, diff --git a/src/locales/en/airline/airports.ts b/src/locales/en/airline/airports.ts new file mode 100644 index 00000000000..d151c4dcb0a --- /dev/null +++ b/src/locales/en/airline/airports.ts @@ -0,0 +1 @@ +export default ['DFW', 'PHX']; diff --git a/src/locales/en/airline/index.ts b/src/locales/en/airline/index.ts new file mode 100644 index 00000000000..5d602db3bad --- /dev/null +++ b/src/locales/en/airline/index.ts @@ -0,0 +1,11 @@ +/* + * This file is automatically generated. + * Run 'pnpm run generate:locales' to update. + */ +import airports from './airports'; + +const airline = { + airports, +}; + +export default airline; diff --git a/src/locales/en/index.ts b/src/locales/en/index.ts index 3cd7a1b69ff..b258a2d0da1 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'; @@ -29,6 +30,7 @@ import word from './word'; const en: LocaleDefinition = { title: 'English', separator: ' & ', + airline, animal, app, business, diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts new file mode 100644 index 00000000000..ef9b39dba57 --- /dev/null +++ b/src/modules/airline/index.ts @@ -0,0 +1,112 @@ +import type { Faker } from '../..'; + +const aircraftTypes = ['narrowbody', 'widebody', 'regional'] as const; + +/** + * 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 IATA airport code. + * + * @example + * faker.airline.airportCode() // 'JFK' + * + * @since 7.7.0 + */ + airportCode(): string { + return this.faker.helpers.arrayElement( + this.faker.definitions.airline.airport + ); + } + + /** + * Generates a random record locator. + * + * @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 7.7.0 + */ + recordLocator( + options: { + allowNumerics?: boolean; + allowVisuallySimilarCharacters?: boolean; + } = {} + ): string { + const numerics = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; + const visuallySimilarCharacters = ['0', 'O', '1', 'I', 'L']; + const bannedChars = []; + if (!options.allowNumerics) { + bannedChars.push(...numerics); + } + if (!options.allowVisuallySimilarCharacters) { + bannedChars.push(...visuallySimilarCharacters); + } + return this.faker.random.alphaNumeric(6, { + casing: 'upper', + bannedChars, + }); + } + + /** + * 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`. + * + * @example + * faker.airline.seat() // '22C' + * faker.airline.seat({ aircraftType: 'regional' }) // '7A' + * faker.airline.seat({ aircraftType: 'widebody' }) // '42K' + * + * @since 7.7.0 + */ + + seat( + options: { + aircraftType?: typeof aircraftTypes[number]; + } = {} + ): string { + const generateRandomRow = (maxRow: number): number => + Math.floor(Math.random() * maxRow) + 1; + + const maxRows = { + regional: 20, + narrowbody: 35, + widebody: 60, + }; + + const seats = { + regional: ['A', 'B', 'C', 'D'], + narrowbody: ['A', 'B', 'C', 'D', 'E', 'F'], + widebody: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K'], + }; + + const { aircraftType = 'narrowbody' } = options; + + const maxRow = maxRows[aircraftType]; + const allowedSeats = seats[aircraftType]; + + const row = generateRandomRow(maxRow); + const seat = this.faker.helpers.arrayElement(allowedSeats); + return `${row}${seat}`; + } +} From 48e543f05626edb1ee4c6cf3ad0e46c56356cc02 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Wed, 28 Dec 2022 06:53:54 -0700 Subject: [PATCH 02/54] Added airline module --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 93acf86073f..534fe6ba19c 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ The API covers the following modules: | Module | Example | Output | | -------- | --------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| Airline | `faker.airline.recordLocator()` | KIFRWE | Animal | `faker.animal.cat()` | Norwegian Forest Cat | | Color | `faker.color.rgb()` | #cdfcdc | | Commerce | `faker.commerce.product()` | Polo t-shirt | From 07917583731ac9cd6dfff89a395067b688ad46e8 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Thu, 29 Dec 2022 11:56:30 -0700 Subject: [PATCH 03/54] Added airline definitions --- scripts/generateLocales.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/generateLocales.ts b/scripts/generateLocales.ts index d5540672b31..a9915a9a910 100644 --- a/scripts/generateLocales.ts +++ b/scripts/generateLocales.ts @@ -45,6 +45,7 @@ type DefinitionsType = { * The types of the definitions. */ const definitionsTypes: DefinitionsType = { + airline: 'AirlineDefinitions', animal: 'AnimalDefinitions', color: 'ColorDefinitions', commerce: 'CommerceDefinitions', From 405bfc49e3dd3468dcaa245815abc8de806ea08c Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Thu, 29 Dec 2022 11:58:34 -0700 Subject: [PATCH 04/54] Correctly generated locale index file for airline module --- src/locales/en/airline/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/locales/en/airline/index.ts b/src/locales/en/airline/index.ts index 5d602db3bad..f83b66b6691 100644 --- a/src/locales/en/airline/index.ts +++ b/src/locales/en/airline/index.ts @@ -2,9 +2,10 @@ * This file is automatically generated. * Run 'pnpm run generate:locales' to update. */ +import type { AirlineDefinitions } from '../../..'; import airports from './airports'; -const airline = { +const airline: AirlineDefinitions = { airports, }; From 488f9bf56e297dbba38acaf1e41993f265073967 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Thu, 29 Dec 2022 13:14:01 -0700 Subject: [PATCH 05/54] Added definition file for airport codes --- src/locales/en/airline/airports.ts | 6075 +++++++++++++++++++++++++++- 1 file changed, 6074 insertions(+), 1 deletion(-) diff --git a/src/locales/en/airline/airports.ts b/src/locales/en/airline/airports.ts index d151c4dcb0a..df3656fd464 100644 --- a/src/locales/en/airline/airports.ts +++ b/src/locales/en/airline/airports.ts @@ -1 +1,6074 @@ -export default ['DFW', 'PHX']; +export default [ + 'AAA', + 'AAC', + 'AAE', + 'AAF', + 'AAH', + 'AAK', + 'AAL', + 'AAM', + 'AAN', + 'AAO', + 'AAP', + 'AAQ', + 'AAR', + 'AAT', + 'AAV', + 'AAX', + 'AAY', + 'AAZ', + 'ABA', + 'ABB', + 'ABC', + 'ABD', + 'ABE', + 'ABF', + 'ABH', + 'ABI', + 'ABJ', + 'ABK', + 'ABL', + 'ABM', + 'ABN', + 'ABQ', + 'ABR', + 'ABS', + 'ABT', + 'ABV', + 'ABX', + 'ABY', + 'ABZ', + 'ACA', + 'ACC', + 'ACD', + 'ACE', + 'ACF', + 'ACH', + 'ACI', + 'ACJ', + 'ACK', + 'ACN', + 'ACP', + 'ACR', + 'ACS', + 'ACT', + 'ACV', + 'ACX', + 'ACY', + 'ACZ', + 'ADA', + 'ADB', + 'ADD', + 'ADE', + 'ADF', + 'ADH', + 'ADI', + 'ADJ', + 'ADK', + 'ADL', + 'ADM', + 'ADP', + 'ADQ', + 'ADS', + 'ADT', + 'ADU', + 'ADW', + 'ADX', + 'ADY', + 'ADZ', + 'AEA', + 'AEB', + 'AEG', + 'AEH', + 'AEI', + 'AEO', + 'AEP', + 'AER', + 'AES', + 'AET', + 'AEU', + 'AEX', + 'AEY', + 'AFA', + 'AFL', + 'AFS', + 'AFT', + 'AFW', + 'AFY', + 'AFZ', + 'AGA', + 'AGB', + 'AGC', + 'AGE', + 'AGF', + 'AGH', + 'AGI', + 'AGJ', + 'AGN', + 'AGP', + 'AGQ', + 'AGR', + 'AGS', + 'AGT', + 'AGU', + 'AGV', + 'AGX', + 'AGZ', + 'AHB', + 'AHE', + 'AHJ', + 'AHN', + 'AHO', + 'AHS', + 'AHU', + 'AIA', + 'AID', + 'AIK', + 'AIN', + 'AIP', + 'AIR', + 'AIS', + 'AIT', + 'AIU', + 'AIZ', + 'AJA', + 'AJF', + 'AJI', + 'AJK', + 'AJL', + 'AJN', + 'AJR', + 'AJU', + 'AJY', + 'AKA', + 'AKB', + 'AKC', + 'AKD', + 'AKF', + 'AKH', + 'AKI', + 'AKJ', + 'AKK', + 'AKL', + 'AKN', + 'AKO', + 'AKP', + 'AKR', + 'AKS', + 'AKT', + 'AKU', + 'AKV', + 'AKW', + 'AKX', + 'AKY', + 'ALA', + 'ALB', + 'ALC', + 'ALE', + 'ALF', + 'ALG', + 'ALH', + 'ALI', + 'ALJ', + 'ALL', + 'ALM', + 'ALN', + 'ALO', + 'ALP', + 'ALR', + 'ALS', + 'ALU', + 'ALW', + 'ALX', + 'ALY', + 'AMA', + 'AMB', + 'AMC', + 'AMD', + 'AMH', + 'AMI', + 'AMM', + 'AMN', + 'AMQ', + 'AMS', + 'AMT', + 'AMV', + 'AMZ', + 'ANB', + 'ANC', + 'AND', + 'ANE', + 'ANF', + 'ANG', + 'ANI', + 'ANK', + 'ANM', + 'ANN', + 'ANP', + 'ANQ', + 'ANR', + 'ANS', + 'ANU', + 'ANV', + 'ANX', + 'AOC', + 'AOE', + 'AOG', + 'AOH', + 'AOI', + 'AOJ', + 'AOK', + 'AOL', + 'AOO', + 'AOP', + 'AOR', + 'AOT', + 'AOU', + 'APA', + 'APC', + 'APF', + 'APG', + 'API', + 'APK', + 'APL', + 'APN', + 'APO', + 'APQ', + 'APT', + 'APW', + 'APZ', + 'AQA', + 'AQB', + 'AQG', + 'AQI', + 'AQJ', + 'AQP', + 'ARA', + 'ARB', + 'ARC', + 'ARD', + 'ARE', + 'ARH', + 'ARI', + 'ARK', + 'ARM', + 'ARN', + 'ARR', + 'ART', + 'ARU', + 'ARV', + 'ARW', + 'ARY', + 'ASA', + 'ASB', + 'ASD', + 'ASE', + 'ASF', + 'ASH', + 'ASI', + 'ASJ', + 'ASK', + 'ASM', + 'ASN', + 'ASO', + 'ASP', + 'ASR', + 'ASS', + 'AST', + 'ASU', + 'ASV', + 'ASW', + 'ATA', + 'ATB', + 'ATC', + 'ATD', + 'ATF', + 'ATG', + 'ATH', + 'ATI', + 'ATJ', + 'ATK', + 'ATL', + 'ATM', + 'ATO', + 'ATQ', + 'ATR', + 'ATW', + 'ATY', + 'ATZ', + 'AUA', + 'AUC', + 'AUF', + 'AUG', + 'AUH', + 'AUK', + 'AUO', + 'AUQ', + 'AUR', + 'AUS', + 'AUU', + 'AUW', + 'AUX', + 'AUY', + 'AVA', + 'AVB', + 'AVI', + 'AVK', + 'AVL', + 'AVN', + 'AVO', + 'AVP', + 'AVR', + 'AVV', + 'AVW', + 'AVX', + 'AWA', + 'AWD', + 'AWK', + 'AWZ', + 'AXA', + 'AXD', + 'AXF', + 'AXJ', + 'AXK', + 'AXM', + 'AXN', + 'AXP', + 'AXR', + 'AXT', + 'AXU', + 'AYK', + 'AYO', + 'AYP', + 'AYQ', + 'AYS', + 'AYT', + 'AYW', + 'AZA', + 'AZD', + 'AZI', + 'AZN', + 'AZO', + 'AZR', + 'AZS', + 'BAB', + 'BAD', + 'BAF', + 'BAG', + 'BAH', + 'BAI', + 'BAL', + 'BAQ', + 'BAR', + 'BAS', + 'BAT', + 'BAU', + 'BAV', + 'BAX', + 'BAY', + 'BAZ', + 'BBA', + 'BBC', + 'BBD', + 'BBG', + 'BBH', + 'BBI', + 'BBJ', + 'BBK', + 'BBL', + 'BBM', + 'BBN', + 'BBO', + 'BBP', + 'BBQ', + 'BBR', + 'BBS', + 'BBT', + 'BBU', + 'BBX', + 'BCA', + 'BCD', + 'BCE', + 'BCH', + 'BCI', + 'BCL', + 'BCM', + 'BCN', + 'BCO', + 'BCT', + 'BCU', + 'BDA', + 'BDB', + 'BDD', + 'BDE', + 'BDH', + 'BDI', + 'BDJ', + 'BDL', + 'BDM', + 'BDN', + 'BDO', + 'BDP', + 'BDQ', + 'BDR', + 'BDS', + 'BDT', + 'BDU', + 'BEB', + 'BEC', + 'BED', + 'BEF', + 'BEG', + 'BEI', + 'BEJ', + 'BEK', + 'BEL', + 'BEM', + 'BEN', + 'BEO', + 'BEP', + 'BEQ', + 'BES', + 'BET', + 'BEU', + 'BEV', + 'BEW', + 'BEX', + 'BEY', + 'BEZ', + 'BFD', + 'BFE', + 'BFF', + 'BFH', + 'BFI', + 'BFJ', + 'BFK', + 'BFL', + 'BFM', + 'BFN', + 'BFO', + 'BFP', + 'BFS', + 'BFT', + 'BFU', + 'BFV', + 'BFW', + 'BFX', + 'BGA', + 'BGC', + 'BGD', + 'BGE', + 'BGF', + 'BGG', + 'BGI', + 'BGL', + 'BGM', + 'BGN', + 'BGO', + 'BGR', + 'BGW', + 'BGX', + 'BGY', + 'BGZ', + 'BHB', + 'BHD', + 'BHE', + 'BHG', + 'BHH', + 'BHI', + 'BHJ', + 'BHK', + 'BHM', + 'BHN', + 'BHO', + 'BHP', + 'BHQ', + 'BHR', + 'BHS', + 'BHU', + 'BHV', + 'BHW', + 'BHX', + 'BHY', + 'BIA', + 'BIB', + 'BID', + 'BIF', + 'BIG', + 'BIH', + 'BIK', + 'BIL', + 'BIM', + 'BIN', + 'BIO', + 'BIQ', + 'BIR', + 'BIS', + 'BIU', + 'BIX', + 'BIY', + 'BJA', + 'BJB', + 'BJC', + 'BJF', + 'BJH', + 'BJI', + 'BJL', + 'BJM', + 'BJO', + 'BJP', + 'BJR', + 'BJU', + 'BJV', + 'BJW', + 'BJX', + 'BJY', + 'BJZ', + 'BKA', + 'BKB', + 'BKC', + 'BKD', + 'BKE', + 'BKG', + 'BKH', + 'BKI', + 'BKK', + 'BKL', + 'BKM', + 'BKO', + 'BKQ', + 'BKS', + 'BKW', + 'BKY', + 'BKZ', + 'BLA', + 'BLB', + 'BLE', + 'BLF', + 'BLG', + 'BLH', + 'BLI', + 'BLJ', + 'BLK', + 'BLL', + 'BLN', + 'BLQ', + 'BLR', + 'BLT', + 'BLV', + 'BLZ', + 'BMA', + 'BMB', + 'BMC', + 'BMD', + 'BME', + 'BMG', + 'BMI', + 'BMK', + 'BMM', + 'BMO', + 'BMP', + 'BMR', + 'BMT', + 'BMU', + 'BMV', + 'BMW', + 'BMX', + 'BMY', + 'BNA', + 'BNB', + 'BNC', + 'BND', + 'BNE', + 'BNG', + 'BNI', + 'BNJ', + 'BNK', + 'BNM', + 'BNN', + 'BNO', + 'BNP', + 'BNS', + 'BNU', + 'BNX', + 'BOA', + 'BOB', + 'BOC', + 'BOD', + 'BOG', + 'BOH', + 'BOI', + 'BOJ', + 'BOM', + 'BON', + 'BOO', + 'BOR', + 'BOS', + 'BOU', + 'BOW', + 'BOX', + 'BOY', + 'BPC', + 'BPE', + 'BPF', + 'BPG', + 'BPH', + 'BPI', + 'BPL', + 'BPM', + 'BPN', + 'BPS', + 'BPT', + 'BPX', + 'BPY', + 'BQA', + 'BQB', + 'BQE', + 'BQG', + 'BQH', + 'BQJ', + 'BQK', + 'BQL', + 'BQN', + 'BQS', + 'BQT', + 'BQU', + 'BRA', + 'BRC', + 'BRD', + 'BRE', + 'BRI', + 'BRK', + 'BRL', + 'BRM', + 'BRN', + 'BRO', + 'BRQ', + 'BRR', + 'BRS', + 'BRT', + 'BRU', + 'BRV', + 'BRW', + 'BRX', + 'BSA', + 'BSB', + 'BSC', + 'BSD', + 'BSF', + 'BSG', + 'BSJ', + 'BSK', + 'BSL', + 'BSO', + 'BSR', + 'BST', + 'BSU', + 'BSX', + 'BTC', + 'BTE', + 'BTH', + 'BTI', + 'BTJ', + 'BTK', + 'BTL', + 'BTM', + 'BTR', + 'BTS', + 'BTT', + 'BTU', + 'BTV', + 'BTW', + 'BTZ', + 'BUA', + 'BUC', + 'BUD', + 'BUF', + 'BUG', + 'BUI', + 'BUJ', + 'BUL', + 'BUN', + 'BUO', + 'BUP', + 'BUQ', + 'BUR', + 'BUS', + 'BUT', + 'BUU', + 'BUW', + 'BUX', + 'BUY', + 'BUZ', + 'BVA', + 'BVB', + 'BVC', + 'BVE', + 'BVG', + 'BVH', + 'BVI', + 'BVS', + 'BVY', + 'BWA', + 'BWB', + 'BWE', + 'BWF', + 'BWG', + 'BWH', + 'BWI', + 'BWK', + 'BWN', + 'BWO', + 'BWQ', + 'BWT', + 'BWU', + 'BWW', + 'BWX', + 'BXB', + 'BXE', + 'BXG', + 'BXH', + 'BXK', + 'BXN', + 'BXO', + 'BXP', + 'BXR', + 'BXU', + 'BXY', + 'BYC', + 'BYF', + 'BYH', + 'BYI', + 'BYJ', + 'BYK', + 'BYM', + 'BYN', + 'BYO', + 'BYP', + 'BYQ', + 'BYR', + 'BYS', + 'BYT', + 'BYU', + 'BZA', + 'BZC', + 'BZD', + 'BZE', + 'BZG', + 'BZH', + 'BZI', + 'BZK', + 'BZL', + 'BZN', + 'BZO', + 'BZR', + 'BZU', + 'BZV', + 'BZY', + 'BZZ', + 'CAB', + 'CAC', + 'CAE', + 'CAF', + 'CAG', + 'CAH', + 'CAI', + 'CAJ', + 'CAK', + 'CAL', + 'CAN', + 'CAP', + 'CAQ', + 'CAR', + 'CAT', + 'CAU', + 'CAW', + 'CAX', + 'CAY', + 'CAZ', + 'CBB', + 'CBD', + 'CBE', + 'CBF', + 'CBG', + 'CBH', + 'CBJ', + 'CBL', + 'CBM', + 'CBN', + 'CBO', + 'CBQ', + 'CBR', + 'CBT', + 'CBU', + 'CBV', + 'CCA', + 'CCB', + 'CCC', + 'CCF', + 'CCH', + 'CCI', + 'CCJ', + 'CCK', + 'CCL', + 'CCM', + 'CCN', + 'CCP', + 'CCR', + 'CCS', + 'CCU', + 'CCV', + 'CCX', + 'CCY', + 'CCZ', + 'CDA', + 'CDB', + 'CDC', + 'CDE', + 'CDG', + 'CDJ', + 'CDN', + 'CDP', + 'CDR', + 'CDS', + 'CDT', + 'CDU', + 'CDV', + 'CDW', + 'CEB', + 'CEC', + 'CED', + 'CEE', + 'CEF', + 'CEG', + 'CEI', + 'CEJ', + 'CEK', + 'CEM', + 'CEN', + 'CEQ', + 'CER', + 'CES', + 'CET', + 'CEU', + 'CEW', + 'CEZ', + 'CFB', + 'CFC', + 'CFD', + 'CFE', + 'CFG', + 'CFK', + 'CFN', + 'CFO', + 'CFR', + 'CFS', + 'CFU', + 'CFV', + 'CGB', + 'CGD', + 'CGF', + 'CGH', + 'CGI', + 'CGJ', + 'CGK', + 'CGM', + 'CGN', + 'CGO', + 'CGP', + 'CGQ', + 'CGR', + 'CGX', + 'CGY', + 'CGZ', + 'CHA', + 'CHC', + 'CHF', + 'CHG', + 'CHH', + 'CHM', + 'CHN', + 'CHO', + 'CHQ', + 'CHR', + 'CHS', + 'CHT', + 'CHU', + 'CHX', + 'CHY', + 'CIA', + 'CIC', + 'CID', + 'CIF', + 'CIH', + 'CIJ', + 'CIK', + 'CIO', + 'CIP', + 'CIS', + 'CIT', + 'CIU', + 'CIW', + 'CIX', + 'CIY', + 'CIZ', + 'CJA', + 'CJB', + 'CJC', + 'CJF', + 'CJJ', + 'CJL', + 'CJM', + 'CJN', + 'CJS', + 'CJU', + 'CKB', + 'CKC', + 'CKG', + 'CKH', + 'CKI', + 'CKL', + 'CKS', + 'CKT', + 'CKV', + 'CKY', + 'CKZ', + 'CLD', + 'CLE', + 'CLJ', + 'CLL', + 'CLM', + 'CLN', + 'CLO', + 'CLP', + 'CLQ', + 'CLS', + 'CLT', + 'CLU', + 'CLV', + 'CLW', + 'CLY', + 'CLZ', + 'CMA', + 'CMB', + 'CMD', + 'CME', + 'CMF', + 'CMG', + 'CMH', + 'CMI', + 'CMJ', + 'CMK', + 'CMN', + 'CMP', + 'CMQ', + 'CMR', + 'CMU', + 'CMW', + 'CMX', + 'CNB', + 'CNC', + 'CND', + 'CNF', + 'CNG', + 'CNI', + 'CNJ', + 'CNL', + 'CNM', + 'CNN', + 'CNO', + 'CNP', + 'CNQ', + 'CNR', + 'CNS', + 'CNU', + 'CNW', + 'CNX', + 'CNY', + 'COC', + 'COD', + 'COE', + 'COF', + 'COG', + 'COH', + 'COJ', + 'COK', + 'CON', + 'COO', + 'COQ', + 'COR', + 'COS', + 'COT', + 'COU', + 'COX', + 'COZ', + 'CPA', + 'CPB', + 'CPC', + 'CPD', + 'CPE', + 'CPH', + 'CPO', + 'CPQ', + 'CPR', + 'CPT', + 'CPV', + 'CPX', + 'CQA', + 'CQD', + 'CQF', + 'CQM', + 'CQS', + 'CRA', + 'CRC', + 'CRD', + 'CRE', + 'CRG', + 'CRI', + 'CRK', + 'CRL', + 'CRM', + 'CRP', + 'CRQ', + 'CRV', + 'CRW', + 'CRZ', + 'CSA', + 'CSB', + 'CSF', + 'CSG', + 'CSH', + 'CSK', + 'CSM', + 'CSO', + 'CSV', + 'CSX', + 'CSY', + 'CSZ', + 'CTA', + 'CTB', + 'CTC', + 'CTD', + 'CTG', + 'CTH', + 'CTL', + 'CTM', + 'CTN', + 'CTS', + 'CTT', + 'CTU', + 'CTY', + 'CUA', + 'CUB', + 'CUC', + 'CUD', + 'CUE', + 'CUF', + 'CUH', + 'CUL', + 'CUM', + 'CUN', + 'CUP', + 'CUQ', + 'CUR', + 'CUT', + 'CUU', + 'CUZ', + 'CVC', + 'CVE', + 'CVF', + 'CVG', + 'CVJ', + 'CVM', + 'CVN', + 'CVO', + 'CVQ', + 'CVS', + 'CVT', + 'CVU', + 'CWA', + 'CWB', + 'CWC', + 'CWE', + 'CWI', + 'CWJ', + 'CWL', + 'CWT', + 'CWW', + 'CXA', + 'CXB', + 'CXH', + 'CXI', + 'CXJ', + 'CXL', + 'CXO', + 'CXP', + 'CXR', + 'CYA', + 'CYB', + 'CYF', + 'CYG', + 'CYI', + 'CYO', + 'CYP', + 'CYR', + 'CYS', + 'CYT', + 'CYU', + 'CYW', + 'CYX', + 'CYZ', + 'CZA', + 'CZE', + 'CZF', + 'CZL', + 'CZM', + 'CZS', + 'CZU', + 'CZX', + 'DAA', + 'DAB', + 'DAC', + 'DAD', + 'DAG', + 'DAL', + 'DAM', + 'DAN', + 'DAR', + 'DAT', + 'DAU', + 'DAV', + 'DAX', + 'DAY', + 'DBA', + 'DBB', + 'DBC', + 'DBD', + 'DBM', + 'DBN', + 'DBO', + 'DBQ', + 'DBT', + 'DBV', + 'DCA', + 'DCF', + 'DCI', + 'DCM', + 'DCN', + 'DCT', + 'DCU', + 'DCY', + 'DDC', + 'DDG', + 'DEA', + 'DEB', + 'DEC', + 'DED', + 'DEE', + 'DEF', + 'DEL', + 'DEM', + 'DEN', + 'DES', + 'DET', + 'DEX', + 'DEZ', + 'DFW', + 'DGE', + 'DGL', + 'DGO', + 'DGP', + 'DGT', + 'DHA', + 'DHF', + 'DHI', + 'DHM', + 'DHN', + 'DHR', + 'DHT', + 'DIA', + 'DIB', + 'DIE', + 'DIG', + 'DIJ', + 'DIK', + 'DIL', + 'DIN', + 'DIQ', + 'DIR', + 'DIS', + 'DIU', + 'DIY', + 'DJB', + 'DJE', + 'DJG', + 'DJJ', + 'DJO', + 'DKI', + 'DKK', + 'DKR', + 'DKS', + 'DKV', + 'DLA', + 'DLC', + 'DLD', + 'DLE', + 'DLF', + 'DLG', + 'DLH', + 'DLI', + 'DLK', + 'DLM', + 'DLS', + 'DLU', + 'DLY', + 'DLZ', + 'DMA', + 'DMB', + 'DMD', + 'DME', + 'DMK', + 'DMM', + 'DMN', + 'DMT', + 'DMU', + 'DNA', + 'DND', + 'DNH', + 'DNK', + 'DNL', + 'DNN', + 'DNP', + 'DNQ', + 'DNR', + 'DNV', + 'DNZ', + 'DOB', + 'DOD', + 'DOG', + 'DOH', + 'DOK', + 'DOL', + 'DOM', + 'DOP', + 'DOU', + 'DOV', + 'DOY', + 'DPA', + 'DPL', + 'DPO', + 'DPS', + 'DQA', + 'DQM', + 'DRA', + 'DRB', + 'DRE', + 'DRG', + 'DRI', + 'DRJ', + 'DRK', + 'DRN', + 'DRO', + 'DRS', + 'DRT', + 'DRV', + 'DRW', + 'DSA', + 'DSD', + 'DSE', + 'DSI', + 'DSK', + 'DSM', + 'DSN', + 'DSO', + 'DSS', + 'DTA', + 'DTB', + 'DTD', + 'DTE', + 'DTI', + 'DTM', + 'DTN', + 'DTU', + 'DTW', + 'DU9', + 'DUB', + 'DUC', + 'DUD', + 'DUE', + 'DUG', + 'DUJ', + 'DUM', + 'DUR', + 'DUS', + 'DUT', + 'DVL', + 'DVO', + 'DVT', + 'DWA', + 'DWB', + 'DWC', + 'DWD', + 'DWH', + 'DXB', + 'DXR', + 'DYA', + 'DYG', + 'DYL', + 'DYR', + 'DYS', + 'DYU', + 'DZA', + 'DZN', + 'DZO', + 'EAA', + 'EAE', + 'EAM', + 'EAS', + 'EAT', + 'EAU', + 'EBA', + 'EBB', + 'EBD', + 'EBG', + 'EBH', + 'EBJ', + 'EBL', + 'EBM', + 'EBU', + 'ECA', + 'ECG', + 'ECH', + 'ECI', + 'ECN', + 'ECP', + 'ECV', + 'EDD', + 'EDF', + 'EDI', + 'EDL', + 'EDM', + 'EDO', + 'EDR', + 'EDW', + 'EED', + 'EEK', + 'EEN', + 'EFD', + 'EFG', + 'EFL', + 'EGC', + 'EGE', + 'EGH', + 'EGI', + 'EGM', + 'EGN', + 'EGO', + 'EGS', + 'EGV', + 'EGX', + 'EHL', + 'EHM', + 'EIB', + 'EIE', + 'EIK', + 'EIL', + 'EIN', + 'EIS', + 'EIY', + 'EJA', + 'EJH', + 'EJN', + 'EKA', + 'EKB', + 'EKI', + 'EKN', + 'EKO', + 'EKS', + 'EKT', + 'ELB', + 'ELC', + 'ELD', + 'ELF', + 'ELG', + 'ELH', + 'ELI', + 'ELM', + 'ELO', + 'ELP', + 'ELQ', + 'ELS', + 'ELT', + 'ELU', + 'ELV', + 'ELY', + 'EMA', + 'EMD', + 'EME', + 'EMK', + 'EML', + 'EMN', + 'EMP', + 'EMT', + 'ENA', + 'ENC', + 'END', + 'ENE', + 'ENF', + 'ENH', + 'ENK', + 'ENN', + 'ENO', + 'ENS', + 'ENT', + 'ENU', + 'ENV', + 'ENW', + 'ENY', + 'EOH', + 'EOI', + 'EOK', + 'EOR', + 'EOZ', + 'EPA', + 'EPL', + 'EPR', + 'EPU', + 'EQS', + 'ERC', + 'ERD', + 'ERF', + 'ERG', + 'ERH', + 'ERI', + 'ERL', + 'ERM', + 'ERN', + 'ERS', + 'ERV', + 'ERZ', + 'ESB', + 'ESC', + 'ESD', + 'ESE', + 'ESF', + 'ESG', + 'ESH', + 'ESK', + 'ESL', + 'ESM', + 'ESN', + 'ESR', + 'ESS', + 'ESU', + 'ETB', + 'ETH', + 'ETM', + 'ETR', + 'ETS', + 'ETZ', + 'EUA', + 'EUF', + 'EUG', + 'EUM', + 'EUN', + 'EUQ', + 'EUX', + 'EVE', + 'EVG', + 'EVN', + 'EVV', + 'EVW', + 'EVX', + 'EWB', + 'EWK', + 'EWN', + 'EWR', + 'EXT', + 'EYK', + 'EYP', + 'EYW', + 'EZE', + 'EZS', + 'EZV', + 'FAA', + 'FAB', + 'FAC', + 'FAE', + 'FAF', + 'FAH', + 'FAI', + 'FAJ', + 'FAN', + 'FAO', + 'FAR', + 'FAT', + 'FAV', + 'FAY', + 'FAZ', + 'FBA', + 'FBD', + 'FBE', + 'FBG', + 'FBK', + 'FBM', + 'FBR', + 'FBU', + 'FCA', + 'FCB', + 'FCM', + 'FCN', + 'FCO', + 'FCS', + 'FDF', + 'FDH', + 'FDO', + 'FDU', + 'FDY', + 'FEG', + 'FEL', + 'FEN', + 'FET', + 'FEZ', + 'FFA', + 'FFD', + 'FFO', + 'FFT', + 'FFU', + 'FGI', + 'FGU', + 'FHU', + 'FIE', + 'FIG', + 'FIH', + 'FIK', + 'FIZ', + 'FJR', + 'FKB', + 'FKI', + 'FKJ', + 'FKL', + 'FKQ', + 'FKS', + 'FLA', + 'FLB', + 'FLD', + 'FLF', + 'FLG', + 'FLL', + 'FLN', + 'FLO', + 'FLP', + 'FLR', + 'FLS', + 'FLV', + 'FLW', + 'FLZ', + 'FMA', + 'FME', + 'FMH', + 'FMI', + 'FMM', + 'FMN', + 'FMO', + 'FMY', + 'FNA', + 'FNB', + 'FNC', + 'FNI', + 'FNJ', + 'FNL', + 'FNR', + 'FNT', + 'FNU', + 'FOC', + 'FOD', + 'FOE', + 'FOG', + 'FOK', + 'FOM', + 'FON', + 'FOR', + 'FOS', + 'FPO', + 'FPR', + 'FRA', + 'FRB', + 'FRC', + 'FRD', + 'FRE', + 'FRG', + 'FRI', + 'FRJ', + 'FRL', + 'FRN', + 'FRO', + 'FRS', + 'FRU', + 'FRW', + 'FRY', + 'FRZ', + 'FSC', + 'FSD', + 'FSI', + 'FSM', + 'FSP', + 'FSS', + 'FST', + 'FTA', + 'FTE', + 'FTI', + 'FTK', + 'FTU', + 'FTW', + 'FTX', + 'FTY', + 'FUE', + 'FUG', + 'FUJ', + 'FUK', + 'FUL', + 'FUN', + 'FUO', + 'FUT', + 'FWA', + 'FWH', + 'FXE', + 'FXO', + 'FYJ', + 'FYN', + 'FYT', + 'FYU', + 'FYV', + 'FZO', + 'GAD', + 'GAE', + 'GAF', + 'GAH', + 'GAI', + 'GAJ', + 'GAL', + 'GAM', + 'GAN', + 'GAO', + 'GAQ', + 'GAS', + 'GAU', + 'GAY', + 'GBA', + 'GBB', + 'GBD', + 'GBE', + 'GBG', + 'GBJ', + 'GBK', + 'GBT', + 'GBZ', + 'GCC', + 'GCH', + 'GCI', + 'GCJ', + 'GCK', + 'GCM', + 'GCN', + 'GDC', + 'GDE', + 'GDL', + 'GDN', + 'GDO', + 'GDQ', + 'GDT', + 'GDV', + 'GDW', + 'GDX', + 'GDZ', + 'GEA', + 'GEC', + 'GED', + 'GEG', + 'GEL', + 'GEO', + 'GER', + 'GES', + 'GET', + 'GEV', + 'GEX', + 'GFF', + 'GFK', + 'GFL', + 'GFN', + 'GFO', + 'GFR', + 'GFY', + 'GGE', + 'GGG', + 'GGM', + 'GGS', + 'GGT', + 'GGW', + 'GHA', + 'GHB', + 'GHC', + 'GHF', + 'GHT', + 'GHU', + 'GIB', + 'GIC', + 'GID', + 'GIF', + 'GIG', + 'GII', + 'GIL', + 'GIR', + 'GIS', + 'GIT', + 'GIU', + 'GIZ', + 'GJA', + 'GJL', + 'GJM', + 'GJR', + 'GJT', + 'GKA', + 'GKE', + 'GKK', + 'GKL', + 'GKN', + 'GLA', + 'GLD', + 'GLF', + 'GLH', + 'GLI', + 'GLK', + 'GLO', + 'GLR', + 'GLS', + 'GLT', + 'GLU', + 'GLV', + 'GLW', + 'GLZ', + 'GMA', + 'GMB', + 'GMD', + 'GME', + 'GML', + 'GMO', + 'GMP', + 'GMQ', + 'GMR', + 'GMU', + 'GMV', + 'GMZ', + 'GNA', + 'GNB', + 'GND', + 'GNI', + 'GNM', + 'GNR', + 'GNS', + 'GNT', + 'GNV', + 'GNY', + 'GNZ', + 'GOA', + 'GOB', + 'GOH', + 'GOI', + 'GOJ', + 'GOM', + 'GON', + 'GOO', + 'GOP', + 'GOQ', + 'GOR', + 'GOT', + 'GOU', + 'GOV', + 'GOZ', + 'GPA', + 'GPB', + 'GPI', + 'GPL', + 'GPN', + 'GPO', + 'GPS', + 'GPT', + 'GPZ', + 'GQQ', + 'GRB', + 'GRF', + 'GRI', + 'GRJ', + 'GRK', + 'GRM', + 'GRO', + 'GRP', + 'GRQ', + 'GRR', + 'GRS', + 'GRU', + 'GRW', + 'GRX', + 'GRY', + 'GRZ', + 'GSB', + 'GSE', + 'GSI', + 'GSJ', + 'GSO', + 'GSP', + 'GSQ', + 'GST', + 'GTE', + 'GTF', + 'GTI', + 'GTN', + 'GTO', + 'GTR', + 'GUA', + 'GUB', + 'GUC', + 'GUF', + 'GUH', + 'GUI', + 'GUJ', + 'GUL', + 'GUM', + 'GUP', + 'GUQ', + 'GUR', + 'GUS', + 'GUT', + 'GUU', + 'GUW', + 'GUX', + 'GUY', + 'GUZ', + 'GVA', + 'GVL', + 'GVN', + 'GVR', + 'GVT', + 'GVX', + 'GWD', + 'GWE', + 'GWL', + 'GWO', + 'GWT', + 'GWY', + 'GXF', + 'GXG', + 'GXH', + 'GXQ', + 'GXY', + 'GYA', + 'GYD', + 'GYE', + 'GYG', + 'GYI', + 'GYL', + 'GYM', + 'GYN', + 'GYR', + 'GYS', + 'GYU', + 'GYY', + 'GZA', + 'GZI', + 'GZM', + 'GZO', + 'GZP', + 'GZT', + 'GZW', + 'HAA', + 'HAC', + 'HAD', + 'HAF', + 'HAH', + 'HAJ', + 'HAK', + 'HAM', + 'HAN', + 'HAO', + 'HAQ', + 'HAR', + 'HAS', + 'HAU', + 'HAV', + 'HAW', + 'HBA', + 'HBE', + 'HBG', + 'HBR', + 'HBX', + 'HCJ', + 'HCN', + 'HCQ', + 'HCR', + 'HCW', + 'HDD', + 'HDE', + 'HDF', + 'HDG', + 'HDH', + 'HDI', + 'HDM', + 'HDN', + 'HDR', + 'HDS', + 'HDY', + 'HEA', + 'HEH', + 'HEI', + 'HEK', + 'HEL', + 'HEM', + 'HER', + 'HET', + 'HEW', + 'HEX', + 'HFA', + 'HFD', + 'HFE', + 'HFN', + 'HFS', + 'HFT', + 'HGA', + 'HGD', + 'HGE', + 'HGH', + 'HGI', + 'HGL', + 'HGN', + 'HGO', + 'HGR', + 'HGS', + 'HGU', + 'HHE', + 'HHH', + 'HHI', + 'HHN', + 'HHP', + 'HHQ', + 'HHR', + 'HHZ', + 'HIA', + 'HIB', + 'HID', + 'HIF', + 'HII', + 'HIJ', + 'HIM', + 'HIN', + 'HIO', + 'HIR', + 'HIW', + 'HJJ', + 'HJR', + 'HKD', + 'HKG', + 'HKK', + 'HKN', + 'HKT', + 'HKY', + 'HLA', + 'HLD', + 'HLE', + 'HLF', + 'HLG', + 'HLH', + 'HLI', + 'HLJ', + 'HLN', + 'HLP', + 'HLR', + 'HLT', + 'HLZ', + 'HMA', + 'HMB', + 'HME', + 'HMG', + 'HMI', + 'HMJ', + 'HMN', + 'HMO', + 'HMR', + 'HMV', + 'HMY', + 'HNA', + 'HND', + 'HNH', + 'HNL', + 'HNM', + 'HNS', + 'HNY', + 'HOA', + 'HOB', + 'HOD', + 'HOE', + 'HOF', + 'HOG', + 'HOH', + 'HOI', + 'HOK', + 'HOM', + 'HON', + 'HOP', + 'HOQ', + 'HOR', + 'HOS', + 'HOT', + 'HOU', + 'HOV', + 'HOX', + 'HPA', + 'HPB', + 'HPG', + 'HPH', + 'HPN', + 'HQM', + 'HRB', + 'HRE', + 'HRG', + 'HRI', + 'HRK', + 'HRL', + 'HRM', + 'HRO', + 'HRS', + 'HRT', + 'HSG', + 'HSH', + 'HSK', + 'HSL', + 'HSM', + 'HSN', + 'HSS', + 'HST', + 'HSV', + 'HSZ', + 'HTA', + 'HTG', + 'HTI', + 'HTL', + 'HTN', + 'HTR', + 'HTS', + 'HTT', + 'HTU', + 'HTV', + 'HTY', + 'HUA', + 'HUE', + 'HUF', + 'HUH', + 'HUI', + 'HUL', + 'HUN', + 'HUO', + 'HUQ', + 'HUS', + 'HUT', + 'HUU', + 'HUV', + 'HUW', + 'HUX', + 'HUY', + 'HUZ', + 'HVA', + 'HVB', + 'HVD', + 'HVG', + 'HVN', + 'HVR', + 'HVS', + 'HWD', + 'HWN', + 'HWO', + 'HXD', + 'HXX', + 'HYA', + 'HYC', + 'HYD', + 'HYG', + 'HYN', + 'HYR', + 'HYS', + 'HYV', + 'HZB', + 'HZG', + 'HZH', + 'HZK', + 'HZL', + 'HZP', + 'IAA', + 'IAB', + 'IAD', + 'IAG', + 'IAH', + 'IAM', + 'IAN', + 'IAO', + 'IAR', + 'IAS', + 'IBA', + 'IBB', + 'IBE', + 'IBP', + 'IBR', + 'IBZ', + 'ICC', + 'ICI', + 'ICK', + 'ICN', + 'ICT', + 'IDA', + 'IDP', + 'IDR', + 'IDY', + 'IEG', + 'IEJ', + 'IES', + 'IEV', + 'IFH', + 'IFJ', + 'IFL', + 'IFN', + 'IFO', + 'IFU', + 'IGA', + 'IGB', + 'IGD', + 'IGG', + 'IGL', + 'IGR', + 'IGS', + 'IGT', + 'IGU', + 'IHC', + 'IHR', + 'IIA', + 'IIL', + 'IJK', + 'IKA', + 'IKB', + 'IKI', + 'IKK', + 'IKL', + 'IKO', + 'IKS', + 'IKT', + 'IKU', + 'ILA', + 'ILD', + 'ILF', + 'ILG', + 'ILI', + 'ILM', + 'ILN', + 'ILO', + 'ILP', + 'ILQ', + 'ILR', + 'ILU', + 'ILY', + 'ILZ', + 'IMB', + 'IMF', + 'IMK', + 'IMM', + 'IMP', + 'IMT', + 'INA', + 'IND', + 'ING', + 'INH', + 'INI', + 'INK', + 'INL', + 'INN', + 'INO', + 'INQ', + 'INS', + 'INT', + 'INU', + 'INV', + 'INW', + 'INZ', + 'IOA', + 'IOM', + 'ION', + 'IOR', + 'IOS', + 'IOW', + 'IPA', + 'IPC', + 'IPH', + 'IPI', + 'IPL', + 'IPN', + 'IPT', + 'IQA', + 'IQM', + 'IQN', + 'IQQ', + 'IQT', + 'IRA', + 'IRB', + 'IRC', + 'IRD', + 'IRG', + 'IRI', + 'IRJ', + 'IRK', + 'IRP', + 'IRZ', + 'ISA', + 'ISB', + 'ISC', + 'ISE', + 'ISG', + 'ISJ', + 'ISK', + 'ISL', + 'ISM', + 'ISN', + 'ISO', + 'ISP', + 'IST', + 'ISU', + 'ISW', + 'ITA', + 'ITB', + 'ITH', + 'ITM', + 'ITO', + 'ITP', + 'ITR', + 'IUE', + 'IVA', + 'IVC', + 'IVL', + 'IVR', + 'IWA', + 'IWJ', + 'IWK', + 'IWO', + 'IWS', + 'IXA', + 'IXB', + 'IXC', + 'IXD', + 'IXE', + 'IXG', + 'IXH', + 'IXI', + 'IXJ', + 'IXK', + 'IXL', + 'IXM', + 'IXP', + 'IXR', + 'IXS', + 'IXT', + 'IXU', + 'IXV', + 'IXW', + 'IXY', + 'IXZ', + 'IYK', + 'IZA', + 'IZO', + 'IZT', + 'JAA', + 'JAB', + 'JAC', + 'JAD', + 'JAE', + 'JAF', + 'JAG', + 'JAI', + 'JAK', + 'JAL', + 'JAM', + 'JAN', + 'JAP', + 'JAR', + 'JAS', + 'JAU', + 'JAV', + 'JAX', + 'JBQ', + 'JBR', + 'JCB', + 'JCH', + 'JCI', + 'JCK', + 'JCR', + 'JCT', + 'JDF', + 'JDG', + 'JDH', + 'JDO', + 'JDZ', + 'JED', + 'JEE', + 'JEF', + 'JEG', + 'JER', + 'JFK', + 'JFR', + 'JGA', + 'JGD', + 'JGN', + 'JGO', + 'JGS', + 'JHB', + 'JHG', + 'JHM', + 'JHQ', + 'JHS', + 'JHW', + 'JIA', + 'JIB', + 'JIC', + 'JIJ', + 'JIK', + 'JIM', + 'JIQ', + 'JIU', + 'JIW', + 'JJG', + 'JJI', + 'JJM', + 'JJN', + 'JJU', + 'JKG', + 'JKH', + 'JKL', + 'JKR', + 'JLN', + 'JLR', + 'JMJ', + 'JMK', + 'JMO', + 'JMS', + 'JMU', + 'JNB', + 'JNG', + 'JNI', + 'JNN', + 'JNS', + 'JNU', + 'JNX', + 'JNZ', + 'JOE', + 'JOG', + 'JOH', + 'JOI', + 'JOJ', + 'JOK', + 'JOL', + 'JON', + 'JOS', + 'JOT', + 'JPA', + 'JPR', + 'JQA', + 'JQE', + 'JRA', + 'JRB', + 'JRF', + 'JRH', + 'JRN', + 'JRO', + 'JSA', + 'JSH', + 'JSI', + 'JSJ', + 'JSK', + 'JSM', + 'JSR', + 'JST', + 'JSU', + 'JSY', + 'JTC', + 'JTR', + 'JTY', + 'JUA', + 'JUB', + 'JUH', + 'JUI', + 'JUJ', + 'JUL', + 'JUM', + 'JUV', + 'JUZ', + 'JVA', + 'JVL', + 'JWA', + 'JWN', + 'JXA', + 'JXN', + 'JYR', + 'JYV', + 'JZH', + 'KAA', + 'KAB', + 'KAC', + 'KAD', + 'KAG', + 'KAI', + 'KAJ', + 'KAL', + 'KAN', + 'KAO', + 'KAR', + 'KAT', + 'KAU', + 'KAW', + 'KAX', + 'KAZ', + 'KBL', + 'KBN', + 'KBP', + 'KBQ', + 'KBR', + 'KBS', + 'KBV', + 'KBZ', + 'KCA', + 'KCF', + 'KCH', + 'KCK', + 'KCM', + 'KCO', + 'KCS', + 'KCT', + 'KCZ', + 'KDA', + 'KDC', + 'KDD', + 'KDH', + 'KDI', + 'KDL', + 'KDM', + 'KDO', + 'KDT', + 'KDU', + 'KDV', + 'KDX', + 'KDY', + 'KED', + 'KEF', + 'KEJ', + 'KEL', + 'KEM', + 'KEN', + 'KEO', + 'KEP', + 'KER', + 'KES', + 'KET', + 'KEV', + 'KEW', + 'KEY', + 'KFA', + 'KFE', + 'KFG', + 'KFP', + 'KFS', + 'KGA', + 'KGC', + 'KGD', + 'KGE', + 'KGF', + 'KGG', + 'KGI', + 'KGJ', + 'KGK', + 'KGL', + 'KGO', + 'KGP', + 'KGS', + 'KGT', + 'KGW', + 'KGY', + 'KHC', + 'KHD', + 'KHE', + 'KHG', + 'KHH', + 'KHI', + 'KHJ', + 'KHK', + 'KHM', + 'KHN', + 'KHS', + 'KHT', + 'KHV', + 'KHW', + 'KHY', + 'KHZ', + 'KID', + 'KIF', + 'KIH', + 'KIJ', + 'KIK', + 'KIM', + 'KIN', + 'KIO', + 'KIR', + 'KIS', + 'KIT', + 'KIV', + 'KIW', + 'KIX', + 'KIY', + 'KJA', + 'KJH', + 'KJI', + 'KJK', + 'KJP', + 'KKA', + 'KKC', + 'KKE', + 'KKH', + 'KKJ', + 'KKN', + 'KKR', + 'KKS', + 'KKW', + 'KKX', + 'KLC', + 'KLD', + 'KLF', + 'KLG', + 'KLH', + 'KLI', + 'KLJ', + 'KLM', + 'KLN', + 'KLO', + 'KLR', + 'KLS', + 'KLU', + 'KLV', + 'KLW', + 'KLX', + 'KLZ', + 'KMA', + 'KMC', + 'KME', + 'KMG', + 'KMH', + 'KMI', + 'KMJ', + 'KMN', + 'KMO', + 'KMP', + 'KMQ', + 'KMS', + 'KMU', + 'KMV', + 'KMW', + 'KMX', + 'KNA', + 'KND', + 'KNF', + 'KNG', + 'KNH', + 'KNO', + 'KNP', + 'KNQ', + 'KNR', + 'KNS', + 'KNU', + 'KNW', + 'KNX', + 'KOA', + 'KOC', + 'KOE', + 'KOI', + 'KOJ', + 'KOK', + 'KOO', + 'KOP', + 'KOQ', + 'KOS', + 'KOT', + 'KOU', + 'KOV', + 'KOW', + 'KOX', + 'KPC', + 'KPN', + 'KPO', + 'KPS', + 'KPV', + 'KQA', + 'KQH', + 'KQT', + 'KRA', + 'KRB', + 'KRC', + 'KRF', + 'KRH', + 'KRI', + 'KRK', + 'KRL', + 'KRN', + 'KRO', + 'KRP', + 'KRQ', + 'KRR', + 'KRS', + 'KRT', + 'KRW', + 'KRY', + 'KRZ', + 'KSA', + 'KSC', + 'KSD', + 'KSE', + 'KSF', + 'KSH', + 'KSI', + 'KSJ', + 'KSK', + 'KSL', + 'KSM', + 'KSN', + 'KSO', + 'KSQ', + 'KSS', + 'KSU', + 'KSY', + 'KSZ', + 'KTA', + 'KTD', + 'KTE', + 'KTF', + 'KTG', + 'KTI', + 'KTL', + 'KTM', + 'KTN', + 'KTP', + 'KTQ', + 'KTR', + 'KTS', + 'KTT', + 'KTU', + 'KTW', + 'KUA', + 'KUC', + 'KUD', + 'KUF', + 'KUG', + 'KUH', + 'KUK', + 'KUL', + 'KUM', + 'KUN', + 'KUO', + 'KUT', + 'KUU', + 'KUV', + 'KVA', + 'KVB', + 'KVC', + 'KVD', + 'KVG', + 'KVK', + 'KVL', + 'KVM', + 'KVR', + 'KVX', + 'KWA', + 'KWB', + 'KWE', + 'KWG', + 'KWI', + 'KWJ', + 'KWK', + 'KWL', + 'KWM', + 'KWN', + 'KWT', + 'KWZ', + 'KXE', + 'KXF', + 'KXK', + 'KYA', + 'KYD', + 'KYE', + 'KYI', + 'KYK', + 'KYP', + 'KYS', + 'KYU', + 'KYZ', + 'KZC', + 'KZF', + 'KZG', + 'KZI', + 'KZN', + 'KZO', + 'KZR', + 'KZS', + 'LAA', + 'LAD', + 'LAE', + 'LAF', + 'LAI', + 'LAJ', + 'LAK', + 'LAL', + 'LAM', + 'LAN', + 'LAO', + 'LAP', + 'LAQ', + 'LAR', + 'LAS', + 'LAU', + 'LAW', + 'LAX', + 'LAY', + 'LAZ', + 'LBA', + 'LBB', + 'LBC', + 'LBD', + 'LBE', + 'LBF', + 'LBG', + 'LBI', + 'LBJ', + 'LBL', + 'LBQ', + 'LBR', + 'LBS', + 'LBT', + 'LBU', + 'LBV', + 'LBW', + 'LBX', + 'LBY', + 'LBZ', + 'LCA', + 'LCC', + 'LCE', + 'LCG', + 'LCH', + 'LCJ', + 'LCK', + 'LCL', + 'LCQ', + 'LCX', + 'LCY', + 'LDB', + 'LDE', + 'LDG', + 'LDH', + 'LDI', + 'LDJ', + 'LDK', + 'LDM', + 'LDN', + 'LDS', + 'LDU', + 'LDV', + 'LDX', + 'LDY', + 'LEA', + 'LEB', + 'LEC', + 'LED', + 'LEE', + 'LEH', + 'LEI', + 'LEJ', + 'LEK', + 'LEL', + 'LEN', + 'LEQ', + 'LER', + 'LET', + 'LEU', + 'LEV', + 'LEW', + 'LEX', + 'LEY', + 'LFB', + 'LFI', + 'LFK', + 'LFM', + 'LFQ', + 'LFR', + 'LFT', + 'LFW', + 'LGA', + 'LGB', + 'LGC', + 'LGD', + 'LGG', + 'LGH', + 'LGI', + 'LGK', + 'LGL', + 'LGO', + 'LGP', + 'LGS', + 'LGU', + 'LGW', + 'LHA', + 'LHE', + 'LHG', + 'LHK', + 'LHR', + 'LHS', + 'LHV', + 'LHW', + 'LID', + 'LIF', + 'LIG', + 'LIH', + 'LII', + 'LIL', + 'LIM', + 'LIN', + 'LIO', + 'LIP', + 'LIQ', + 'LIR', + 'LIS', + 'LIT', + 'LIW', + 'LIX', + 'LIY', + 'LJA', + 'LJG', + 'LJN', + 'LJU', + 'LKB', + 'LKG', + 'LKH', + 'LKL', + 'LKN', + 'LKO', + 'LKP', + 'LKV', + 'LKY', + 'LKZ', + 'LLA', + 'LLB', + 'LLE', + 'LLF', + 'LLI', + 'LLK', + 'LLU', + 'LLV', + 'LLW', + 'LLY', + 'LMA', + 'LME', + 'LMM', + 'LMN', + 'LMO', + 'LMP', + 'LMQ', + 'LMR', + 'LMT', + 'LNA', + 'LNB', + 'LND', + 'LNE', + 'LNJ', + 'LNK', + 'LNL', + 'LNN', + 'LNO', + 'LNR', + 'LNS', + 'LNX', + 'LNY', + 'LNZ', + 'LOD', + 'LOE', + 'LOH', + 'LOK', + 'LOL', + 'LOO', + 'LOP', + 'LOS', + 'LOT', + 'LOU', + 'LOV', + 'LOZ', + 'LPA', + 'LPB', + 'LPC', + 'LPD', + 'LPF', + 'LPG', + 'LPI', + 'LPK', + 'LPL', + 'LPM', + 'LPP', + 'LPQ', + 'LPS', + 'LPT', + 'LPU', + 'LPX', + 'LPY', + 'LQM', + 'LRA', + 'LRD', + 'LRE', + 'LRF', + 'LRH', + 'LRL', + 'LRM', + 'LRR', + 'LRS', + 'LRT', + 'LRU', + 'LRV', + 'LSC', + 'LSE', + 'LSF', + 'LSH', + 'LSI', + 'LSL', + 'LSP', + 'LSQ', + 'LSS', + 'LST', + 'LSV', + 'LSW', + 'LSX', + 'LSY', + 'LSZ', + 'LTA', + 'LTD', + 'LTI', + 'LTK', + 'LTM', + 'LTN', + 'LTO', + 'LTQ', + 'LTS', + 'LTT', + 'LTX', + 'LUA', + 'LUC', + 'LUD', + 'LUF', + 'LUG', + 'LUH', + 'LUK', + 'LUM', + 'LUN', + 'LUO', + 'LUP', + 'LUQ', + 'LUR', + 'LUV', + 'LUW', + 'LUX', + 'LUZ', + 'LVA', + 'LVI', + 'LVK', + 'LVM', + 'LVO', + 'LVP', + 'LVS', + 'LWB', + 'LWC', + 'LWK', + 'LWM', + 'LWN', + 'LWO', + 'LWR', + 'LWS', + 'LWT', + 'LWY', + 'LXA', + 'LXG', + 'LXN', + 'LXR', + 'LXS', + 'LYA', + 'LYB', + 'LYC', + 'LYE', + 'LYG', + 'LYH', + 'LYI', + 'LYM', + 'LYN', + 'LYP', + 'LYR', + 'LYS', + 'LYU', + 'LYX', + 'LZC', + 'LZH', + 'LZN', + 'LZO', + 'LZR', + 'LZU', + 'LZY', + 'MAA', + 'MAB', + 'MAD', + 'MAE', + 'MAF', + 'MAG', + 'MAH', + 'MAI', + 'MAJ', + 'MAK', + 'MAM', + 'MAN', + 'MAO', + 'MAQ', + 'MAR', + 'MAS', + 'MAT', + 'MAU', + 'MAX', + 'MAY', + 'MAZ', + 'MBA', + 'MBD', + 'MBE', + 'MBG', + 'MBH', + 'MBI', + 'MBJ', + 'MBL', + 'MBO', + 'MBS', + 'MBT', + 'MBU', + 'MBW', + 'MBX', + 'MBZ', + 'MCB', + 'MCC', + 'MCE', + 'MCF', + 'MCG', + 'MCH', + 'MCI', + 'MCJ', + 'MCK', + 'MCL', + 'MCN', + 'MCO', + 'MCP', + 'MCS', + 'MCT', + 'MCU', + 'MCV', + 'MCW', + 'MCX', + 'MCY', + 'MCZ', + 'MDC', + 'MDE', + 'MDG', + 'MDH', + 'MDI', + 'MDK', + 'MDL', + 'MDQ', + 'MDS', + 'MDT', + 'MDU', + 'MDW', + 'MDY', + 'MDZ', + 'MEA', + 'MEB', + 'MEC', + 'MED', + 'MEE', + 'MEG', + 'MEH', + 'MEI', + 'MEK', + 'MEL', + 'MEM', + 'MEN', + 'MEO', + 'MEQ', + 'MER', + 'MES', + 'MEU', + 'MEX', + 'MEY', + 'MFA', + 'MFD', + 'MFE', + 'MFG', + 'MFI', + 'MFJ', + 'MFK', + 'MFM', + 'MFN', + 'MFQ', + 'MFR', + 'MFU', + 'MFX', + 'MGA', + 'MGB', + 'MGC', + 'MGE', + 'MGF', + 'MGH', + 'MGJ', + 'MGL', + 'MGM', + 'MGN', + 'MGQ', + 'MGS', + 'MGT', + 'MGW', + 'MGY', + 'MGZ', + 'MHA', + 'MHC', + 'MHD', + 'MHE', + 'MHG', + 'MHH', + 'MHK', + 'MHP', + 'MHQ', + 'MHR', + 'MHT', + 'MHU', + 'MHV', + 'MHX', + 'MHZ', + 'MIA', + 'MIB', + 'MID', + 'MIE', + 'MIG', + 'MII', + 'MIJ', + 'MIK', + 'MIM', + 'MIP', + 'MIR', + 'MIS', + 'MIU', + 'MIV', + 'MJA', + 'MJC', + 'MJD', + 'MJF', + 'MJI', + 'MJK', + 'MJL', + 'MJM', + 'MJN', + 'MJT', + 'MJV', + 'MJZ', + 'MKC', + 'MKE', + 'MKG', + 'MKK', + 'MKL', + 'MKM', + 'MKP', + 'MKQ', + 'MKR', + 'MKS', + 'MKU', + 'MKW', + 'MKY', + 'MKZ', + 'MLA', + 'MLB', + 'MLC', + 'MLE', + 'MLG', + 'MLI', + 'MLL', + 'MLM', + 'MLN', + 'MLO', + 'MLS', + 'MLU', + 'MLW', + 'MLX', + 'MLY', + 'MLZ', + 'MMB', + 'MMD', + 'MME', + 'MMG', + 'MMH', + 'MMI', + 'MMJ', + 'MMK', + 'MMO', + 'MMT', + 'MMU', + 'MMX', + 'MMY', + 'MMZ', + 'MNA', + 'MNB', + 'MNC', + 'MNF', + 'MNG', + 'MNH', + 'MNI', + 'MNJ', + 'MNK', + 'MNL', + 'MNM', + 'MNR', + 'MNS', + 'MNU', + 'MNX', + 'MNY', + 'MNZ', + 'MOA', + 'MOB', + 'MOC', + 'MOD', + 'MOE', + 'MOF', + 'MOG', + 'MOI', + 'MOJ', + 'MOL', + 'MON', + 'MOO', + 'MOQ', + 'MOT', + 'MOU', + 'MOV', + 'MOZ', + 'MPA', + 'MPH', + 'MPK', + 'MPL', + 'MPM', + 'MPN', + 'MPO', + 'MPV', + 'MPW', + 'MPY', + 'MQC', + 'MQF', + 'MQH', + 'MQJ', + 'MQL', + 'MQM', + 'MQN', + 'MQP', + 'MQQ', + 'MQS', + 'MQT', + 'MQU', + 'MQX', + 'MQY', + 'MRB', + 'MRD', + 'MRE', + 'MRF', + 'MRG', + 'MRI', + 'MRK', + 'MRN', + 'MRO', + 'MRQ', + 'MRR', + 'MRS', + 'MRU', + 'MRV', + 'MRW', + 'MRX', + 'MRY', + 'MRZ', + 'MSA', + 'MSC', + 'MSE', + 'MSH', + 'MSJ', + 'MSL', + 'MSN', + 'MSO', + 'MSP', + 'MSQ', + 'MSR', + 'MSS', + 'MST', + 'MSU', + 'MSW', + 'MSY', + 'MSZ', + 'MTC', + 'MTF', + 'MTG', + 'MTH', + 'MTJ', + 'MTK', + 'MTL', + 'MTM', + 'MTN', + 'MTP', + 'MTR', + 'MTS', + 'MTT', + 'MTV', + 'MTY', + 'MTZ', + 'MUA', + 'MUB', + 'MUC', + 'MUD', + 'MUE', + 'MUH', + 'MUI', + 'MUK', + 'MUN', + 'MUO', + 'MUR', + 'MUS', + 'MUW', + 'MUX', + 'MUZ', + 'MVA', + 'MVB', + 'MVD', + 'MVF', + 'MVL', + 'MVP', + 'MVQ', + 'MVR', + 'MVS', + 'MVT', + 'MVV', + 'MVW', + 'MVY', + 'MVZ', + 'MWA', + 'MWC', + 'MWD', + 'MWE', + 'MWF', + 'MWH', + 'MWK', + 'MWL', + 'MWQ', + 'MWX', + 'MWZ', + 'MXB', + 'MXF', + 'MXH', + 'MXI', + 'MXJ', + 'MXL', + 'MXM', + 'MXN', + 'MXP', + 'MXS', + 'MXT', + 'MXV', + 'MXX', + 'MXZ', + 'MYA', + 'MYB', + 'MYC', + 'MYD', + 'MYE', + 'MYG', + 'MYI', + 'MYJ', + 'MYL', + 'MYP', + 'MYQ', + 'MYR', + 'MYT', + 'MYU', + 'MYV', + 'MYW', + 'MYY', + 'MYZ', + 'MZB', + 'MZG', + 'MZH', + 'MZI', + 'MZJ', + 'MZK', + 'MZL', + 'MZM', + 'MZO', + 'MZP', + 'MZQ', + 'MZR', + 'MZT', + 'MZU', + 'MZV', + 'MZW', + 'NAA', + 'NAC', + 'NAG', + 'NAH', + 'NAI', + 'NAJ', + 'NAK', + 'NAL', + 'NAM', + 'NAN', + 'NAO', + 'NAP', + 'NAQ', + 'NAS', + 'NAT', + 'NAU', + 'NAV', + 'NAW', + 'NAY', + 'NBC', + 'NBE', + 'NBG', + 'NBN', + 'NBO', + 'NBS', + 'NBW', + 'NBX', + 'NCA', + 'NCE', + 'NCG', + 'NCJ', + 'NCL', + 'NCN', + 'NCO', + 'NCR', + 'NCS', + 'NCU', + 'NCY', + 'NDB', + 'NDC', + 'NDD', + 'NDG', + 'NDJ', + 'NDN', + 'NDR', + 'NDU', + 'NDY', + 'NEC', + 'NEG', + 'NEL', + 'NER', + 'NEU', + 'NEV', + 'NEW', + 'NFG', + 'NFL', + 'NFO', + 'NGA', + 'NGB', + 'NGD', + 'NGE', + 'NGF', + 'NGI', + 'NGK', + 'NGO', + 'NGQ', + 'NGS', + 'NGU', + 'NGX', + 'NGZ', + 'NHA', + 'NHD', + 'NHK', + 'NHT', + 'NHV', + 'NHZ', + 'NIB', + 'NIG', + 'NIM', + 'NIO', + 'NIP', + 'NIS', + 'NIT', + 'NIU', + 'NJA', + 'NJC', + 'NJF', + 'NJK', + 'NKB', + 'NKC', + 'NKG', + 'NKM', + 'NKT', + 'NKW', + 'NKX', + 'NLA', + 'NLC', + 'NLD', + 'NLF', + 'NLG', + 'NLH', + 'NLI', + 'NLK', + 'NLO', + 'NLP', + 'NLT', + 'NLV', + 'NMA', + 'NMB', + 'NMC', + 'NME', + 'NMS', + 'NMT', + 'NNA', + 'NNB', + 'NNG', + 'NNL', + 'NNM', + 'NNR', + 'NNT', + 'NNX', + 'NNY', + 'NOA', + 'NOB', + 'NOC', + 'NOD', + 'NOG', + 'NOJ', + 'NON', + 'NOP', + 'NOR', + 'NOS', + 'NOT', + 'NOU', + 'NOV', + 'NOZ', + 'NPA', + 'NPE', + 'NPL', + 'NPO', + 'NPR', + 'NQA', + 'NQI', + 'NQN', + 'NQT', + 'NQU', + 'NQX', + 'NQY', + 'NRA', + 'NRB', + 'NRD', + 'NRE', + 'NRK', + 'NRL', + 'NRN', + 'NRR', + 'NRT', + 'NSE', + 'NSH', + 'NSI', + 'NSK', + 'NSN', + 'NSO', + 'NST', + 'NSY', + 'NTB', + 'NTD', + 'NTE', + 'NTI', + 'NTL', + 'NTN', + 'NTQ', + 'NTR', + 'NTT', + 'NTU', + 'NTX', + 'NTY', + 'NUE', + 'NUI', + 'NUK', + 'NUL', + 'NUQ', + 'NUS', + 'NUW', + 'NUX', + 'NVA', + 'NVI', + 'NVK', + 'NVP', + 'NVS', + 'NVT', + 'NWA', + 'NWI', + 'NXX', + 'NYA', + 'NYE', + 'NYI', + 'NYK', + 'NYM', + 'NYO', + 'NYR', + 'NYT', + 'NYU', + 'NYW', + 'NZA', + 'NZC', + 'NZE', + 'NZH', + 'NZJ', + 'NZL', + 'NZY', + 'OAA', + 'OAG', + 'OAH', + 'OAI', + 'OAJ', + 'OAK', + 'OAL', + 'OAM', + 'OAR', + 'OAS', + 'OAX', + 'OAZ', + 'OBC', + 'OBE', + 'OBF', + 'OBL', + 'OBN', + 'OBO', + 'OBS', + 'OBU', + 'OBY', + 'OCA', + 'OCC', + 'OCF', + 'OCJ', + 'OCM', + 'OCN', + 'OCV', + 'OCW', + 'ODB', + 'ODE', + 'ODH', + 'ODN', + 'ODO', + 'ODS', + 'ODY', + 'OEL', + 'OEM', + 'OER', + 'OES', + 'OFF', + 'OFK', + 'OGB', + 'OGD', + 'OGG', + 'OGL', + 'OGN', + 'OGS', + 'OGU', + 'OGX', + 'OGZ', + 'OHA', + 'OHD', + 'OHE', + 'OHO', + 'OHS', + 'OIA', + 'OIM', + 'OIR', + 'OIT', + 'OJC', + 'OKA', + 'OKC', + 'OKD', + 'OKE', + 'OKF', + 'OKI', + 'OKJ', + 'OKK', + 'OKL', + 'OKM', + 'OKN', + 'OKO', + 'OKR', + 'OKU', + 'OKY', + 'OLA', + 'OLB', + 'OLC', + 'OLF', + 'OLJ', + 'OLL', + 'OLM', + 'OLP', + 'OLS', + 'OLV', + 'OLZ', + 'OMA', + 'OMB', + 'OMC', + 'OMD', + 'OME', + 'OMF', + 'OMH', + 'OMI', + 'OMO', + 'OMR', + 'OMS', + 'OND', + 'ONG', + 'ONJ', + 'ONK', + 'ONO', + 'ONP', + 'ONQ', + 'ONS', + 'ONT', + 'ONX', + 'OOK', + 'OOL', + 'OOM', + 'OPF', + 'OPO', + 'OPS', + 'OPU', + 'ORA', + 'ORB', + 'ORD', + 'ORE', + 'ORF', + 'ORG', + 'ORH', + 'ORJ', + 'ORK', + 'ORL', + 'ORN', + 'ORP', + 'ORT', + 'ORU', + 'ORV', + 'ORW', + 'ORX', + 'ORY', + 'OSC', + 'OSD', + 'OSF', + 'OSH', + 'OSI', + 'OSK', + 'OSL', + 'OSM', + 'OSN', + 'OSP', + 'OSR', + 'OSS', + 'OST', + 'OSU', + 'OSW', + 'OSY', + 'OTH', + 'OTI', + 'OTJ', + 'OTK', + 'OTM', + 'OTP', + 'OTR', + 'OTU', + 'OTZ', + 'OUA', + 'OUD', + 'OUE', + 'OUH', + 'OUK', + 'OUL', + 'OUZ', + 'OVA', + 'OVB', + 'OVD', + 'OVG', + 'OVR', + 'OVS', + 'OWB', + 'OWD', + 'OXB', + 'OXC', + 'OXF', + 'OXR', + 'OYA', + 'OYE', + 'OYK', + 'OYL', + 'OYO', + 'OYP', + 'OZA', + 'OZC', + 'OZG', + 'OZH', + 'OZP', + 'OZR', + 'OZZ', + 'PAA', + 'PAB', + 'PAC', + 'PAD', + 'PAE', + 'PAG', + 'PAH', + 'PAJ', + 'PAL', + 'PAM', + 'PAN', + 'PAO', + 'PAP', + 'PAQ', + 'PAS', + 'PAT', + 'PAV', + 'PAX', + 'PAZ', + 'PBC', + 'PBD', + 'PBF', + 'PBG', + 'PBH', + 'PBI', + 'PBJ', + 'PBL', + 'PBM', + 'PBN', + 'PBO', + 'PBP', + 'PBQ', + 'PBR', + 'PBU', + 'PBZ', + 'PCB', + 'PCD', + 'PCF', + 'PCL', + 'PCN', + 'PCP', + 'PCQ', + 'PCR', + 'PCS', + 'PDA', + 'PDG', + 'PDK', + 'PDL', + 'PDO', + 'PDP', + 'PDS', + 'PDT', + 'PDU', + 'PDV', + 'PDX', + 'PEA', + 'PED', + 'PEE', + 'PEF', + 'PEG', + 'PEH', + 'PEI', + 'PEK', + 'PEM', + 'PEN', + 'PEQ', + 'PER', + 'PES', + 'PET', + 'PEU', + 'PEV', + 'PEW', + 'PEX', + 'PEZ', + 'PFB', + 'PFJ', + 'PFN', + 'PFO', + 'PFQ', + 'PFR', + 'PGA', + 'PGD', + 'PGF', + 'PGH', + 'PGK', + 'PGU', + 'PGV', + 'PGX', + 'PGZ', + 'PHA', + 'PHB', + 'PHC', + 'PHD', + 'PHE', + 'PHF', + 'PHK', + 'PHL', + 'PHN', + 'PHS', + 'PHW', + 'PHX', + 'PHY', + 'PIA', + 'PIB', + 'PID', + 'PIE', + 'PIF', + 'PIH', + 'PIK', + 'PIL', + 'PIM', + 'PIN', + 'PIO', + 'PIP', + 'PIR', + 'PIS', + 'PIT', + 'PIU', + 'PIW', + 'PIX', + 'PIZ', + 'PJA', + 'PJC', + 'PJG', + 'PJM', + 'PKA', + 'PKB', + 'PKC', + 'PKE', + 'PKG', + 'PKH', + 'PKK', + 'PKN', + 'PKO', + 'PKP', + 'PKR', + 'PKT', + 'PKU', + 'PKV', + 'PKW', + 'PKX', + 'PKY', + 'PKZ', + 'PLD', + 'PLH', + 'PLL', + 'PLM', + 'PLN', + 'PLO', + 'PLP', + 'PLQ', + 'PLS', + 'PLU', + 'PLV', + 'PLW', + 'PLX', + 'PLZ', + 'PMA', + 'PMB', + 'PMC', + 'PMD', + 'PMF', + 'PMG', + 'PMH', + 'PMI', + 'PMK', + 'PML', + 'PMO', + 'PMQ', + 'PMR', + 'PMS', + 'PMV', + 'PMW', + 'PMY', + 'PMZ', + 'PNA', + 'PNB', + 'PNC', + 'PNE', + 'PNH', + 'PNI', + 'PNK', + 'PNL', + 'PNP', + 'PNQ', + 'PNR', + 'PNS', + 'PNT', + 'PNV', + 'PNY', + 'PNZ', + 'POA', + 'POB', + 'POC', + 'POE', + 'POF', + 'POG', + 'POI', + 'POJ', + 'POL', + 'POM', + 'POO', + 'POP', + 'POR', + 'POS', + 'POT', + 'POU', + 'POW', + 'POX', + 'POZ', + 'PPA', + 'PPB', + 'PPC', + 'PPE', + 'PPF', + 'PPG', + 'PPI', + 'PPK', + 'PPL', + 'PPM', + 'PPN', + 'PPP', + 'PPQ', + 'PPR', + 'PPS', + 'PPT', + 'PPW', + 'PPY', + 'PQC', + 'PQI', + 'PQM', + 'PQQ', + 'PRA', + 'PRB', + 'PRC', + 'PRG', + 'PRH', + 'PRI', + 'PRM', + 'PRN', + 'PRP', + 'PRQ', + 'PRU', + 'PRV', + 'PRX', + 'PRY', + 'PRZ', + 'PSA', + 'PSC', + 'PSD', + 'PSE', + 'PSG', + 'PSH', + 'PSI', + 'PSJ', + 'PSL', + 'PSM', + 'PSO', + 'PSP', + 'PSR', + 'PSS', + 'PSU', + 'PSX', + 'PSY', + 'PSZ', + 'PTA', + 'PTB', + 'PTF', + 'PTG', + 'PTH', + 'PTJ', + 'PTK', + 'PTM', + 'PTP', + 'PTT', + 'PTU', + 'PTX', + 'PTY', + 'PTZ', + 'PUB', + 'PUC', + 'PUD', + 'PUE', + 'PUF', + 'PUG', + 'PUJ', + 'PUK', + 'PUQ', + 'PUR', + 'PUS', + 'PUT', + 'PUU', + 'PUW', + 'PUY', + 'PUZ', + 'PVA', + 'PVC', + 'PVD', + 'PVG', + 'PVH', + 'PVK', + 'PVL', + 'PVO', + 'PVR', + 'PVS', + 'PVU', + 'PWA', + 'PWE', + 'PWK', + 'PWM', + 'PWQ', + 'PWT', + 'PWY', + 'PXH', + 'PXM', + 'PXO', + 'PXR', + 'PXU', + 'PYB', + 'PYE', + 'PYH', + 'PYJ', + 'PYK', + 'PYM', + 'PYR', + 'PYY', + 'PZA', + 'PZB', + 'PZE', + 'PZH', + 'PZI', + 'PZL', + 'PZO', + 'PZS', + 'PZU', + 'PZY', + 'QBC', + 'QCJ', + 'QCY', + 'QDJ', + 'QEF', + 'QFG', + 'QFO', + 'QGQ', + 'QGU', + 'QHP', + 'QHR', + 'QIG', + 'QJB', + 'QJE', + 'QJI', + 'QKX', + 'QLA', + 'QLD', + 'QLF', + 'QLP', + 'QLR', + 'QLS', + 'QLT', + 'QNC', + 'QND', + 'QNJ', + 'QNV', + 'QOW', + 'QPA', + 'QPD', + 'QPG', + 'QPS', + 'QPW', + 'QQT', + 'QRA', + 'QRC', + 'QRM', + 'QRO', + 'QRR', + 'QRW', + 'QRY', + 'QSA', + 'QSC', + 'QSF', + 'QSI', + 'QSN', + 'QSR', + 'QSZ', + 'QUG', + 'QUO', + 'QUY', + 'QXH', + 'QYD', + 'RAB', + 'RAC', + 'RAE', + 'RAH', + 'RAI', + 'RAJ', + 'RAK', + 'RAL', + 'RAM', + 'RAO', + 'RAP', + 'RAQ', + 'RAR', + 'RAS', + 'RAT', + 'RAZ', + 'RBA', + 'RBB', + 'RBD', + 'RBE', + 'RBK', + 'RBL', + 'RBM', + 'RBQ', + 'RBR', + 'RBV', + 'RBX', + 'RBY', + 'RCA', + 'RCB', + 'RCH', + 'RCL', + 'RCM', + 'RCO', + 'RCQ', + 'RCS', + 'RCU', + 'RCY', + 'RDB', + 'RDC', + 'RDD', + 'RDG', + 'RDM', + 'RDN', + 'RDO', + 'RDP', + 'RDR', + 'RDS', + 'RDU', + 'RDZ', + 'REA', + 'REB', + 'REC', + 'REG', + 'REL', + 'REN', + 'REP', + 'RER', + 'RES', + 'RET', + 'REU', + 'REX', + 'REY', + 'REZ', + 'RFD', + 'RFP', + 'RFS', + 'RGA', + 'RGI', + 'RGK', + 'RGL', + 'RGN', + 'RGO', + 'RGS', + 'RGT', + 'RHD', + 'RHE', + 'RHI', + 'RHO', + 'RHP', + 'RHT', + 'RHV', + 'RIA', + 'RIB', + 'RIC', + 'RIH', + 'RIJ', + 'RIL', + 'RIN', + 'RIS', + 'RIV', + 'RIW', + 'RIX', + 'RIY', + 'RIZ', + 'RJA', + 'RJB', + 'RJH', + 'RJK', + 'RJL', + 'RJN', + 'RKD', + 'RKE', + 'RKH', + 'RKO', + 'RKP', + 'RKS', + 'RKT', + 'RKV', + 'RKZ', + 'RLG', + 'RLK', + 'RMA', + 'RME', + 'RMF', + 'RMG', + 'RMI', + 'RMK', + 'RML', + 'RMQ', + 'RMS', + 'RMT', + 'RMU', + 'RMY', + 'RNA', + 'RNB', + 'RND', + 'RNE', + 'RNI', + 'RNJ', + 'RNL', + 'RNN', + 'RNO', + 'RNS', + 'RNT', + 'RNZ', + 'ROA', + 'ROB', + 'ROC', + 'ROD', + 'ROI', + 'ROK', + 'ROO', + 'ROP', + 'ROR', + 'ROS', + 'ROT', + 'ROV', + 'ROW', + 'ROZ', + 'RPB', + 'RPM', + 'RPN', + 'RPR', + 'RQW', + 'RRG', + 'RRK', + 'RRR', + 'RRS', + 'RSA', + 'RSD', + 'RSH', + 'RSL', + 'RSS', + 'RST', + 'RSU', + 'RSW', + 'RTA', + 'RTB', + 'RTC', + 'RTG', + 'RTM', + 'RTN', + 'RTS', + 'RTW', + 'RUA', + 'RUD', + 'RUG', + 'RUH', + 'RUI', + 'RUK', + 'RUM', + 'RUN', + 'RUR', + 'RUS', + 'RUT', + 'RUV', + 'RVA', + 'RVD', + 'RVE', + 'RVK', + 'RVN', + 'RVS', + 'RVT', + 'RVV', + 'RVY', + 'RWF', + 'RWI', + 'RWL', + 'RWN', + 'RXS', + 'RYB', + 'RYG', + 'RYK', + 'RYN', + 'RZA', + 'RZE', + 'RZP', + 'RZR', + 'RZS', + 'SAA', + 'SAB', + 'SAC', + 'SAD', + 'SAF', + 'SAG', + 'SAH', + 'SAK', + 'SAL', + 'SAN', + 'SAP', + 'SAQ', + 'SAT', + 'SAV', + 'SAW', + 'SAY', + 'SBA', + 'SBB', + 'SBD', + 'SBG', + 'SBH', + 'SBK', + 'SBL', + 'SBM', + 'SBN', + 'SBP', + 'SBR', + 'SBS', + 'SBT', + 'SBU', + 'SBW', + 'SBY', + 'SBZ', + 'SCC', + 'SCE', + 'SCF', + 'SCH', + 'SCI', + 'SCK', + 'SCL', + 'SCM', + 'SCN', + 'SCO', + 'SCQ', + 'SCS', + 'SCT', + 'SCU', + 'SCV', + 'SCW', + 'SCY', + 'SCZ', + 'SDB', + 'SDD', + 'SDE', + 'SDF', + 'SDG', + 'SDJ', + 'SDK', + 'SDL', + 'SDM', + 'SDN', + 'SDP', + 'SDQ', + 'SDR', + 'SDS', + 'SDT', + 'SDU', + 'SDV', + 'SDX', + 'SDY', + 'SEA', + 'SEB', + 'SEE', + 'SEF', + 'SEH', + 'SEK', + 'SEM', + 'SEN', + 'SEP', + 'SEU', + 'SEY', + 'SEZ', + 'SFA', + 'SFB', + 'SFC', + 'SFD', + 'SFE', + 'SFF', + 'SFG', + 'SFH', + 'SFJ', + 'SFK', + 'SFL', + 'SFN', + 'SFO', + 'SFQ', + 'SFS', + 'SFT', + 'SFZ', + 'SGC', + 'SGD', + 'SGE', + 'SGF', + 'SGH', + 'SGI', + 'SGN', + 'SGO', + 'SGQ', + 'SGR', + 'SGU', + 'SGV', + 'SGX', + 'SGY', + 'SGZ', + 'SHA', + 'SHB', + 'SHD', + 'SHE', + 'SHG', + 'SHH', + 'SHI', + 'SHJ', + 'SHL', + 'SHM', + 'SHN', + 'SHO', + 'SHP', + 'SHR', + 'SHT', + 'SHV', + 'SHW', + 'SHX', + 'SHY', + 'SIA', + 'SID', + 'SIF', + 'SIG', + 'SIJ', + 'SIK', + 'SIN', + 'SIO', + 'SIP', + 'SIQ', + 'SIR', + 'SIS', + 'SIT', + 'SIU', + 'SJC', + 'SJD', + 'SJE', + 'SJI', + 'SJJ', + 'SJK', + 'SJL', + 'SJO', + 'SJP', + 'SJT', + 'SJU', + 'SJW', + 'SJY', + 'SJZ', + 'SKA', + 'SKB', + 'SKD', + 'SKE', + 'SKF', + 'SKG', + 'SKH', + 'SKK', + 'SKN', + 'SKO', + 'SKP', + 'SKS', + 'SKT', + 'SKU', + 'SKV', + 'SKX', + 'SKY', + 'SKZ', + 'SLA', + 'SLC', + 'SLD', + 'SLE', + 'SLF', + 'SLH', + 'SLJ', + 'SLK', + 'SLL', + 'SLM', + 'SLN', + 'SLP', + 'SLQ', + 'SLU', + 'SLV', + 'SLW', + 'SLX', + 'SLY', + 'SLZ', + 'SMA', + 'SMD', + 'SME', + 'SMF', + 'SMI', + 'SMK', + 'SML', + 'SMN', + 'SMO', + 'SMQ', + 'SMR', + 'SMS', + 'SMT', + 'SMV', + 'SMW', + 'SMX', + 'SMZ', + 'SNA', + 'SNB', + 'SNC', + 'SNE', + 'SNF', + 'SNJ', + 'SNN', + 'SNO', + 'SNP', + 'SNR', + 'SNS', + 'SNU', + 'SNV', + 'SNW', + 'SNY', + 'SNZ', + 'SOB', + 'SOC', + 'SOD', + 'SOF', + 'SOG', + 'SOJ', + 'SOM', + 'SON', + 'SOO', + 'SOP', + 'SOQ', + 'SOT', + 'SOU', + 'SOV', + 'SOW', + 'SOY', + 'SOZ', + 'SPA', + 'SPB', + 'SPC', + 'SPD', + 'SPF', + 'SPG', + 'SPI', + 'SPJ', + 'SPM', + 'SPN', + 'SPP', + 'SPR', + 'SPS', + 'SPU', + 'SPW', + 'SPY', + 'SQA', + 'SQD', + 'SQG', + 'SQH', + 'SQJ', + 'SQL', + 'SQN', + 'SQO', + 'SQQ', + 'SQR', + 'SQW', + 'SQX', + 'SQZ', + 'SRA', + 'SRE', + 'SRG', + 'SRH', + 'SRI', + 'SRJ', + 'SRN', + 'SRP', + 'SRQ', + 'SRT', + 'SRX', + 'SRY', + 'SRZ', + 'SSA', + 'SSC', + 'SSE', + 'SSF', + 'SSG', + 'SSH', + 'SSI', + 'SSJ', + 'SSN', + 'SSR', + 'SST', + 'SSY', + 'SSZ', + 'STA', + 'STB', + 'STC', + 'STD', + 'STE', + 'STG', + 'STI', + 'STJ', + 'STK', + 'STL', + 'STM', + 'STN', + 'STP', + 'STR', + 'STS', + 'STT', + 'STV', + 'STW', + 'STX', + 'STY', + 'STZ', + 'SUA', + 'SUB', + 'SUF', + 'SUG', + 'SUI', + 'SUJ', + 'SUK', + 'SUL', + 'SUN', + 'SUP', + 'SUR', + 'SUS', + 'SUU', + 'SUV', + 'SUX', + 'SUY', + 'SVA', + 'SVB', + 'SVD', + 'SVG', + 'SVH', + 'SVI', + 'SVJ', + 'SVL', + 'SVN', + 'SVO', + 'SVP', + 'SVQ', + 'SVU', + 'SVW', + 'SVX', + 'SVZ', + 'SWA', + 'SWC', + 'SWD', + 'SWF', + 'SWH', + 'SWJ', + 'SWO', + 'SWP', + 'SWQ', + 'SWS', + 'SWT', + 'SWU', + 'SWX', + 'SXB', + 'SXE', + 'SXF', + 'SXI', + 'SXJ', + 'SXK', + 'SXL', + 'SXM', + 'SXN', + 'SXO', + 'SXQ', + 'SXR', + 'SXV', + 'SXX', + 'SXZ', + 'SYA', + 'SYD', + 'SYH', + 'SYJ', + 'SYM', + 'SYO', + 'SYP', + 'SYQ', + 'SYR', + 'SYS', + 'SYT', + 'SYU', + 'SYW', + 'SYX', + 'SYY', + 'SYZ', + 'SZA', + 'SZB', + 'SZF', + 'SZG', + 'SZJ', + 'SZK', + 'SZL', + 'SZR', + 'SZS', + 'SZT', + 'SZV', + 'SZW', + 'SZX', + 'SZY', + 'SZZ', + 'TAB', + 'TAC', + 'TAE', + 'TAF', + 'TAG', + 'TAH', + 'TAI', + 'TAK', + 'TAM', + 'TAO', + 'TAP', + 'TAR', + 'TAS', + 'TAT', + 'TAY', + 'TAZ', + 'TBB', + 'TBF', + 'TBG', + 'TBH', + 'TBI', + 'TBJ', + 'TBN', + 'TBO', + 'TBP', + 'TBR', + 'TBS', + 'TBT', + 'TBU', + 'TBW', + 'TBZ', + 'TCA', + 'TCB', + 'TCC', + 'TCE', + 'TCG', + 'TCH', + 'TCL', + 'TCM', + 'TCN', + 'TCO', + 'TCP', + 'TCQ', + 'TCS', + 'TCX', + 'TCZ', + 'TDD', + 'TDG', + 'TDJ', + 'TDL', + 'TDR', + 'TDS', + 'TDX', + 'TEA', + 'TEB', + 'TEC', + 'TED', + 'TEE', + 'TEF', + 'TEI', + 'TEM', + 'TEN', + 'TEQ', + 'TER', + 'TET', + 'TEU', + 'TEV', + 'TEX', + 'TEZ', + 'TFF', + 'TFL', + 'TFN', + 'TFS', + 'TGA', + 'TGD', + 'TGG', + 'TGH', + 'TGI', + 'TGJ', + 'TGK', + 'TGM', + 'TGN', + 'TGO', + 'TGP', + 'TGQ', + 'TGR', + 'TGT', + 'TGU', + 'TGZ', + 'THE', + 'THF', + 'THG', + 'THL', + 'THN', + 'THO', + 'THQ', + 'THR', + 'THS', + 'THU', + 'THX', + 'THZ', + 'TIA', + 'TID', + 'TIE', + 'TIF', + 'TIH', + 'TII', + 'TIJ', + 'TIK', + 'TIM', + 'TIN', + 'TIP', + 'TIQ', + 'TIR', + 'TIU', + 'TIV', + 'TIW', + 'TIX', + 'TIY', + 'TIZ', + 'TJA', + 'TJB', + 'TJG', + 'TJH', + 'TJI', + 'TJK', + 'TJL', + 'TJM', + 'TJQ', + 'TJS', + 'TJU', + 'TJV', + 'TKA', + 'TKC', + 'TKD', + 'TKF', + 'TKG', + 'TKH', + 'TKJ', + 'TKK', + 'TKN', + 'TKP', + 'TKQ', + 'TKS', + 'TKT', + 'TKU', + 'TKV', + 'TKX', + 'TLA', + 'TLC', + 'TLD', + 'TLE', + 'TLH', + 'TLI', + 'TLJ', + 'TLK', + 'TLL', + 'TLM', + 'TLN', + 'TLQ', + 'TLS', + 'TLU', + 'TLV', + 'TLX', + 'TMA', + 'TMB', + 'TMC', + 'TME', + 'TMF', + 'TMG', + 'TMH', + 'TMI', + 'TMJ', + 'TML', + 'TMM', + 'TMN', + 'TMO', + 'TMP', + 'TMR', + 'TMS', + 'TMT', + 'TMU', + 'TMW', + 'TMX', + 'TNA', + 'TNC', + 'TND', + 'TNE', + 'TNF', + 'TNG', + 'TNH', + 'TNI', + 'TNJ', + 'TNM', + 'TNN', + 'TNR', + 'TNT', + 'TNW', + 'TNX', + 'TOA', + 'TOB', + 'TOC', + 'TOD', + 'TOE', + 'TOF', + 'TOG', + 'TOH', + 'TOI', + 'TOJ', + 'TOL', + 'TOM', + 'TOO', + 'TOP', + 'TOQ', + 'TOS', + 'TOT', + 'TOU', + 'TOW', + 'TOY', + 'TPA', + 'TPC', + 'TPE', + 'TPF', + 'TPH', + 'TPJ', + 'TPL', + 'TPN', + 'TPP', + 'TPQ', + 'TPS', + 'TQD', + 'TQL', + 'TQQ', + 'TQS', + 'TRA', + 'TRC', + 'TRD', + 'TRE', + 'TRF', + 'TRG', + 'TRI', + 'TRK', + 'TRM', + 'TRN', + 'TRO', + 'TRQ', + 'TRR', + 'TRS', + 'TRU', + 'TRV', + 'TRW', + 'TRZ', + 'TSA', + 'TSB', + 'TSE', + 'TSF', + 'TSH', + 'TSJ', + 'TSL', + 'TSM', + 'TSN', + 'TSR', + 'TST', + 'TSU', + 'TSV', + 'TSX', + 'TSY', + 'TTA', + 'TTB', + 'TTC', + 'TTD', + 'TTE', + 'TTG', + 'TTH', + 'TTI', + 'TTJ', + 'TTL', + 'TTN', + 'TTQ', + 'TTR', + 'TTT', + 'TTU', + 'TUA', + 'TUB', + 'TUC', + 'TUD', + 'TUF', + 'TUG', + 'TUI', + 'TUK', + 'TUL', + 'TUM', + 'TUN', + 'TUO', + 'TUP', + 'TUR', + 'TUS', + 'TUU', + 'TUV', + 'TVA', + 'TVC', + 'TVF', + 'TVI', + 'TVL', + 'TVU', + 'TVY', + 'TWB', + 'TWF', + 'TWT', + 'TWU', + 'TWZ', + 'TXF', + 'TXG', + 'TXK', + 'TXL', + 'TXN', + 'TYB', + 'TYF', + 'TYL', + 'TYM', + 'TYN', + 'TYR', + 'TYS', + 'TZL', + 'TZR', + 'TZX', + 'UAB', + 'UAH', + 'UAI', + 'UAK', + 'UAM', + 'UAP', + 'UAQ', + 'UAR', + 'UAS', + 'UBA', + 'UBB', + 'UBJ', + 'UBP', + 'UBT', + 'UCB', + 'UCK', + 'UCT', + 'UDD', + 'UDI', + 'UDJ', + 'UDR', + 'UEL', + 'UEO', + 'UET', + 'UFA', + 'UGA', + 'UGC', + 'UGN', + 'UGO', + 'UGU', + 'UHE', + 'UIB', + 'UIH', + 'UII', + 'UIK', + 'UIN', + 'UIO', + 'UIP', + 'UJE', + 'UKA', + 'UKB', + 'UKG', + 'UKI', + 'UKK', + 'UKS', + 'UKT', + 'UKX', + 'ULA', + 'ULB', + 'ULD', + 'ULG', + 'ULH', + 'ULK', + 'ULN', + 'ULO', + 'ULP', + 'ULQ', + 'ULU', + 'ULV', + 'ULY', + 'ULZ', + 'UMD', + 'UME', + 'UMR', + 'UMS', + 'UMU', + 'UNA', + 'UND', + 'UNG', + 'UNI', + 'UNK', + 'UNN', + 'UNT', + 'UOL', + 'UOS', + 'UOX', + 'UPB', + 'UPG', + 'UPL', + 'UPN', + 'UPP', + 'URA', + 'URC', + 'URD', + 'URE', + 'URG', + 'URJ', + 'URO', + 'URS', + 'URT', + 'URY', + 'USA', + 'USH', + 'USI', + 'USK', + 'USM', + 'USN', + 'USQ', + 'USR', + 'USS', + 'UST', + 'USU', + 'UTA', + 'UTC', + 'UTH', + 'UTI', + 'UTK', + 'UTM', + 'UTN', + 'UTO', + 'UTP', + 'UTS', + 'UTT', + 'UTW', + 'UUA', + 'UUD', + 'UUK', + 'UUN', + 'UUS', + 'UVA', + 'UVE', + 'UVF', + 'UYL', + 'UYN', + 'UYU', + 'UZR', + 'UZU', + 'VAA', + 'VAD', + 'VAF', + 'VAG', + 'VAI', + 'VAK', + 'VAL', + 'VAM', + 'VAN', + 'VAO', + 'VAR', + 'VAS', + 'VAV', + 'VAW', + 'VBA', + 'VBG', + 'VBP', + 'VBS', + 'VBV', + 'VBY', + 'VCA', + 'VCD', + 'VCE', + 'VCL', + 'VCP', + 'VCR', + 'VCS', + 'VCT', + 'VCV', + 'VDA', + 'VDB', + 'VDC', + 'VDE', + 'VDH', + 'VDI', + 'VDM', + 'VDP', + 'VDR', + 'VDS', + 'VDY', + 'VDZ', + 'VEE', + 'VEL', + 'VER', + 'VEY', + 'VFA', + 'VGA', + 'VGD', + 'VGO', + 'VGT', + 'VGZ', + 'VHC', + 'VHM', + 'VHV', + 'VHY', + 'VHZ', + 'VIC', + 'VIE', + 'VIG', + 'VII', + 'VIJ', + 'VIL', + 'VIN', + 'VIR', + 'VIS', + 'VIT', + 'VIX', + 'VIY', + 'VKG', + 'VKO', + 'VKT', + 'VLC', + 'VLD', + 'VLG', + 'VLI', + 'VLK', + 'VLL', + 'VLM', + 'VLN', + 'VLP', + 'VLR', + 'VLS', + 'VLU', + 'VLV', + 'VLY', + 'VME', + 'VMU', + 'VNA', + 'VNC', + 'VNE', + 'VNO', + 'VNS', + 'VNT', + 'VNX', + 'VNY', + 'VOD', + 'VOG', + 'VOH', + 'VOK', + 'VOL', + 'VOZ', + 'VPE', + 'VPN', + 'VPS', + 'VPY', + 'VPZ', + 'VQQ', + 'VQS', + 'VRA', + 'VRB', + 'VRC', + 'VRE', + 'VRK', + 'VRL', + 'VRN', + 'VRO', + 'VRU', + 'VRY', + 'VSA', + 'VSE', + 'VSG', + 'VST', + 'VTB', + 'VTE', + 'VTM', + 'VTN', + 'VTU', + 'VTZ', + 'VUP', + 'VUS', + 'VVC', + 'VVI', + 'VVO', + 'VVZ', + 'VXC', + 'VXE', + 'VXO', + 'VYI', + 'VYS', + 'WAA', + 'WAE', + 'WAF', + 'WAG', + 'WAI', + 'WAL', + 'WAM', + 'WAQ', + 'WAR', + 'WAT', + 'WAW', + 'WBG', + 'WBM', + 'WBQ', + 'WBU', + 'WBW', + 'WCH', + 'WDH', + 'WDR', + 'WDS', + 'WEF', + 'WEH', + 'WEI', + 'WFI', + 'WFK', + 'WGA', + 'WGE', + 'WGN', + 'WGP', + 'WGT', + 'WHF', + 'WHK', + 'WHP', + 'WHU', + 'WIC', + 'WIE', + 'WIK', + 'WIL', + 'WIN', + 'WIO', + 'WIR', + 'WJF', + 'WJR', + 'WJU', + 'WKA', + 'WKB', + 'WKF', + 'WKI', + 'WKJ', + 'WKK', + 'WKL', + 'WKR', + 'WLD', + 'WLG', + 'WLH', + 'WLK', + 'WLS', + 'WMA', + 'WMB', + 'WMC', + 'WME', + 'WMH', + 'WMI', + 'WMN', + 'WMO', + 'WMP', + 'WMR', + 'WMT', + 'WMX', + 'WNA', + 'WNN', + 'WNP', + 'WNR', + 'WNS', + 'WNZ', + 'WOE', + 'WOL', + 'WOS', + 'WOT', + 'WPB', + 'WPC', + 'WPR', + 'WPU', + 'WRB', + 'WRE', + 'WRG', + 'WRI', + 'WRL', + 'WRO', + 'WRT', + 'WRY', + 'WRZ', + 'WSD', + 'WSN', + 'WSO', + 'WSP', + 'WSR', + 'WST', + 'WSY', + 'WSZ', + 'WTA', + 'WTB', + 'WTK', + 'WTN', + 'WTS', + 'WTZ', + 'WUA', + 'WUH', + 'WUN', + 'WUS', + 'WUT', + 'WUU', + 'WUX', + 'WUZ', + 'WVB', + 'WVI', + 'WVK', + 'WVN', + 'WWA', + 'WWD', + 'WWK', + 'WWR', + 'WWY', + 'WXN', + 'WYA', + 'WYE', + 'WYN', + 'WYS', + 'XAB', + 'XAP', + 'XAU', + 'XBE', + 'XBJ', + 'XCH', + 'XCR', + 'XCZ', + 'XEN', + 'XFN', + 'XFW', + 'XGN', + 'XGR', + 'XIC', + 'XIJ', + 'XIL', + 'XIQ', + 'XIY', + 'XJD', + 'XJM', + 'XKH', + 'XKS', + 'XLB', + 'XLS', + 'XMC', + 'XME', + 'XMH', + 'XMN', + 'XMS', + 'XMW', + 'XMY', + 'XNA', + 'XNN', + 'XOG', + 'XPK', + 'XPL', + 'XPP', + 'XQC', + 'XQP', + 'XRH', + 'XRR', + 'XRY', + 'XSB', + 'XSC', + 'XSD', + 'XSI', + 'XSP', + 'XTG', + 'XTL', + 'XTO', + 'XUZ', + 'XVS', + 'XXN', + 'XYA', + 'XYE', + 'YAA', + 'YAB', + 'YAC', + 'YAG', + 'YAH', + 'YAI', + 'YAK', + 'YAL', + 'YAM', + 'YAO', + 'YAP', + 'YAS', + 'YAT', + 'YAX', + 'YAY', + 'YAZ', + 'YBA', + 'YBB', + 'YBC', + 'YBE', + 'YBG', + 'YBI', + 'YBK', + 'YBL', + 'YBO', + 'YBP', + 'YBR', + 'YBS', + 'YBT', + 'YBV', + 'YBW', + 'YBX', + 'YBY', + 'YCB', + 'YCC', + 'YCD', + 'YCE', + 'YCG', + 'YCH', + 'YCK', + 'YCL', + 'YCM', + 'YCN', + 'YCO', + 'YCQ', + 'YCR', + 'YCS', + 'YCT', + 'YCU', + 'YCW', + 'YCY', + 'YDA', + 'YDB', + 'YDF', + 'YDG', + 'YDL', + 'YDN', + 'YDO', + 'YDP', + 'YDQ', + 'YDT', + 'YEC', + 'YEG', + 'YEI', + 'YEK', + 'YEL', + 'YEM', + 'YEN', + 'YEO', + 'YER', + 'YES', + 'YET', + 'YEU', + 'YEV', + 'YEY', + 'YFA', + 'YFB', + 'YFC', + 'YFE', + 'YFH', + 'YFJ', + 'YFO', + 'YFR', + 'YFS', + 'YFX', + 'YGB', + 'YGG', + 'YGH', + 'YGJ', + 'YGK', + 'YGL', + 'YGM', + 'YGO', + 'YGP', + 'YGQ', + 'YGR', + 'YGT', + 'YGV', + 'YGW', + 'YGX', + 'YGZ', + 'YHA', + 'YHB', + 'YHD', + 'YHE', + 'YHF', + 'YHI', + 'YHK', + 'YHM', + 'YHN', + 'YHO', + 'YHP', + 'YHR', + 'YHT', + 'YHU', + 'YHY', + 'YHZ', + 'YIB', + 'YIC', + 'YIE', + 'YIF', + 'YIH', + 'YIK', + 'YIN', + 'YIO', + 'YIP', + 'YIV', + 'YIW', + 'YJF', + 'YJN', + 'YJP', + 'YJT', + 'YKA', + 'YKF', + 'YKG', + 'YKH', + 'YKJ', + 'YKL', + 'YKM', + 'YKN', + 'YKO', + 'YKQ', + 'YKS', + 'YKU', + 'YKX', + 'YKY', + 'YKZ', + 'YLC', + 'YLD', + 'YLE', + 'YLH', + 'YLI', + 'YLJ', + 'YLK', + 'YLL', + 'YLR', + 'YLT', + 'YLW', + 'YLY', + 'YMA', + 'YME', + 'YMG', + 'YMH', + 'YMJ', + 'YML', + 'YMM', + 'YMN', + 'YMO', + 'YMS', + 'YMT', + 'YMW', + 'YMX', + 'YNA', + 'YNB', + 'YNC', + 'YND', + 'YNE', + 'YNG', + 'YNJ', + 'YNL', + 'YNM', + 'YNO', + 'YNP', + 'YNS', + 'YNT', + 'YNY', + 'YNZ', + 'YOA', + 'YOC', + 'YOD', + 'YOG', + 'YOH', + 'YOJ', + 'YOL', + 'YOO', + 'YOP', + 'YOS', + 'YOW', + 'YPA', + 'YPC', + 'YPD', + 'YPE', + 'YPG', + 'YPH', + 'YPJ', + 'YPL', + 'YPM', + 'YPN', + 'YPO', + 'YPQ', + 'YPR', + 'YPS', + 'YPW', + 'YPX', + 'YPY', + 'YQA', + 'YQB', + 'YQC', + 'YQD', + 'YQF', + 'YQG', + 'YQH', + 'YQI', + 'YQK', + 'YQL', + 'YQM', + 'YQN', + 'YQQ', + 'YQR', + 'YQS', + 'YQT', + 'YQU', + 'YQV', + 'YQW', + 'YQX', + 'YQY', + 'YQZ', + 'YRA', + 'YRB', + 'YRF', + 'YRG', + 'YRI', + 'YRJ', + 'YRL', + 'YRM', + 'YRO', + 'YRQ', + 'YRS', + 'YRT', + 'YRV', + 'YSB', + 'YSC', + 'YSD', + 'YSE', + 'YSF', + 'YSG', + 'YSH', + 'YSJ', + 'YSK', + 'YSL', + 'YSM', + 'YSN', + 'YSO', + 'YSP', + 'YSQ', + 'YSR', + 'YST', + 'YSU', + 'YSY', + 'YTA', + 'YTD', + 'YTE', + 'YTF', + 'YTH', + 'YTL', + 'YTM', + 'YTQ', + 'YTR', + 'YTS', + 'YTY', + 'YTZ', + 'YUA', + 'YUB', + 'YUD', + 'YUE', + 'YUL', + 'YUM', + 'YUS', + 'YUT', + 'YUX', + 'YUY', + 'YVA', + 'YVB', + 'YVC', + 'YVE', + 'YVG', + 'YVM', + 'YVO', + 'YVP', + 'YVQ', + 'YVR', + 'YVT', + 'YVV', + 'YVZ', + 'YWA', + 'YWB', + 'YWG', + 'YWH', + 'YWJ', + 'YWK', + 'YWL', + 'YWM', + 'YWP', + 'YWS', + 'YWY', + 'YXC', + 'YXD', + 'YXE', + 'YXH', + 'YXJ', + 'YXK', + 'YXL', + 'YXN', + 'YXP', + 'YXQ', + 'YXR', + 'YXS', + 'YXT', + 'YXU', + 'YXX', + 'YXY', + 'YXZ', + 'YYB', + 'YYC', + 'YYD', + 'YYE', + 'YYF', + 'YYG', + 'YYH', + 'YYJ', + 'YYL', + 'YYN', + 'YYQ', + 'YYR', + 'YYT', + 'YYU', + 'YYW', + 'YYY', + 'YYZ', + 'YZD', + 'YZE', + 'YZF', + 'YZG', + 'YZH', + 'YZP', + 'YZR', + 'YZS', + 'YZT', + 'YZU', + 'YZV', + 'YZW', + 'YZX', + 'YZY', + 'YZZ', + 'ZAC', + 'ZAD', + 'ZAG', + 'ZAH', + 'ZAJ', + 'ZAL', + 'ZAM', + 'ZAO', + 'ZAR', + 'ZAT', + 'ZAZ', + 'ZBF', + 'ZBM', + 'ZBO', + 'ZBR', + 'ZBY', + 'ZCL', + 'ZCN', + 'ZCO', + 'ZEC', + 'ZEM', + 'ZER', + 'ZFA', + 'ZFD', + 'ZFM', + 'ZFN', + 'ZGF', + 'ZGI', + 'ZGR', + 'ZGS', + 'ZGU', + 'ZHA', + 'ZHI', + 'ZHY', + 'ZIA', + 'ZIC', + 'ZIG', + 'ZIH', + 'ZIN', + 'ZIS', + 'ZIX', + 'ZJG', + 'ZJI', + 'ZJN', + 'ZKB', + 'ZKE', + 'ZKG', + 'ZKP', + 'ZLO', + 'ZLT', + 'ZMG', + 'ZMH', + 'ZMM', + 'ZMT', + 'ZNA', + 'ZND', + 'ZNE', + 'ZNF', + 'ZNZ', + 'ZOS', + 'ZPB', + 'ZPC', + 'ZPH', + 'ZQL', + 'ZQN', + 'ZQW', + 'ZQZ', + 'ZRH', + 'ZRJ', + 'ZSA', + 'ZSE', + 'ZSJ', + 'ZST', + 'ZSW', + 'ZTA', + 'ZTB', + 'ZTH', + 'ZTM', + 'ZTR', + 'ZTU', + 'ZUC', + 'ZUH', + 'ZUM', + 'ZVA', + 'ZVK', + 'ZWA', + 'ZWL', + 'ZXT', + 'ZYI', + 'ZYL', + 'ZZU', + 'ZZV', +]; From 3a783ee4ab73706b65718d1c495ada43500068ef Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Thu, 29 Dec 2022 13:55:13 -0700 Subject: [PATCH 06/54] Code and comment cleanup --- src/modules/airline/index.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index ef9b39dba57..3a5dd5fa687 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -22,7 +22,7 @@ export class AirlineModule { * @example * faker.airline.airportCode() // 'JFK' * - * @since 7.7.0 + * @since 8.0.0 */ airportCode(): string { return this.faker.helpers.arrayElement( @@ -43,7 +43,7 @@ export class AirlineModule { * faker.airline.recordLocator({ allowVisuallySimilarCharacters: true }) // 'ANZNEI' * faker.airline.recordLocator({ allowNumerics: true, allowVisuallySimilarCharacters: true }) // '1Z2Z3E' * - * @since 7.7.0 + * @since 8.0.0 */ recordLocator( options: { @@ -53,16 +53,17 @@ export class AirlineModule { ): string { const numerics = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; const visuallySimilarCharacters = ['0', 'O', '1', 'I', 'L']; - const bannedChars = []; + const excludedChars = []; if (!options.allowNumerics) { - bannedChars.push(...numerics); + excludedChars.push(...numerics); } if (!options.allowVisuallySimilarCharacters) { - bannedChars.push(...visuallySimilarCharacters); + excludedChars.push(...visuallySimilarCharacters); } - return this.faker.random.alphaNumeric(6, { + return this.faker.string.alphanumeric({ + length: 6, casing: 'upper', - bannedChars, + exclude: excludedChars, }); } @@ -77,7 +78,7 @@ export class AirlineModule { * faker.airline.seat({ aircraftType: 'regional' }) // '7A' * faker.airline.seat({ aircraftType: 'widebody' }) // '42K' * - * @since 7.7.0 + * @since 8.0.0 */ seat( From aac2e5fce15413c98d08c8e172f1c40f2cd85ef8 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Thu, 29 Dec 2022 13:59:47 -0700 Subject: [PATCH 07/54] More code and comment cleanup --- src/modules/airline/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 3a5dd5fa687..9d11fec0941 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -1,6 +1,6 @@ import type { Faker } from '../..'; -const aircraftTypes = ['narrowbody', 'widebody', 'regional'] as const; +const aircraftTypes = ['narrowbody', 'regional', 'widebody'] as const; /** * Module to generate airline related data. @@ -71,7 +71,7 @@ export class AirlineModule { * 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`. + * @param options.aircraftType The aircraft type. Can be one of `narrowbody`, `regional`, `widebody`. Defaults to `narrowbody`. * * @example * faker.airline.seat() // '22C' From 882f03d2259ba89b9ab7feb09f7dbba09e9c14f8 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 30 Dec 2022 08:31:14 -0700 Subject: [PATCH 08/54] Renamed airport definition file --- src/locales/en/airline/{airports.ts => airport.ts} | 0 src/locales/en/airline/index.ts | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/locales/en/airline/{airports.ts => airport.ts} (100%) diff --git a/src/locales/en/airline/airports.ts b/src/locales/en/airline/airport.ts similarity index 100% rename from src/locales/en/airline/airports.ts rename to src/locales/en/airline/airport.ts diff --git a/src/locales/en/airline/index.ts b/src/locales/en/airline/index.ts index f83b66b6691..a248eafa314 100644 --- a/src/locales/en/airline/index.ts +++ b/src/locales/en/airline/index.ts @@ -3,10 +3,10 @@ * Run 'pnpm run generate:locales' to update. */ import type { AirlineDefinitions } from '../../..'; -import airports from './airports'; +import airport from './airport'; const airline: AirlineDefinitions = { - airports, + airport, }; export default airline; From 8a01b08899c9eb811855edd1365155fe4b68a774 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 30 Dec 2022 08:32:18 -0700 Subject: [PATCH 09/54] Use faker's random number generator --- src/modules/airline/index.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 9d11fec0941..37f34a34b5e 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -86,9 +86,6 @@ export class AirlineModule { aircraftType?: typeof aircraftTypes[number]; } = {} ): string { - const generateRandomRow = (maxRow: number): number => - Math.floor(Math.random() * maxRow) + 1; - const maxRows = { regional: 20, narrowbody: 35, @@ -106,7 +103,10 @@ export class AirlineModule { const maxRow = maxRows[aircraftType]; const allowedSeats = seats[aircraftType]; - const row = generateRandomRow(maxRow); + const row = this.faker.string.numeric({ + length: { min: 1, max: maxRow }, + allowLeadingZeros: false, + }); const seat = this.faker.helpers.arrayElement(allowedSeats); return `${row}${seat}`; } From 7ca3d3c4d9ca77dc69d5bc42782acfc3b24fdf24 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 30 Dec 2022 08:37:19 -0700 Subject: [PATCH 10/54] Correctly use faker's random number generator --- src/modules/airline/index.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 37f34a34b5e..37d416507da 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -103,10 +103,7 @@ export class AirlineModule { const maxRow = maxRows[aircraftType]; const allowedSeats = seats[aircraftType]; - const row = this.faker.string.numeric({ - length: { min: 1, max: maxRow }, - allowLeadingZeros: false, - }); + const row = this.faker.number.int({ min: 1, max: maxRow }); const seat = this.faker.helpers.arrayElement(allowedSeats); return `${row}${seat}`; } From 5f52725ef2b6d3973dd3674dfd01b322cb09fbfb Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 30 Dec 2022 09:30:35 -0700 Subject: [PATCH 11/54] Added tests for airline module --- test/airline.spec.ts | 102 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 test/airline.spec.ts diff --git a/test/airline.spec.ts b/test/airline.spec.ts new file mode 100644 index 00000000000..c33912339ac --- /dev/null +++ b/test/airline.spec.ts @@ -0,0 +1,102 @@ +import { afterEach, describe, expect, it } from 'vitest'; +import { faker } from '../src'; +import { seededTests } from './support/seededRuns'; + +const NON_SEEDED_BASED_RUN = 5; + +describe('airline', () => { + afterEach(() => { + faker.locale = 'en'; + }); + + seededTests(faker, 'airline', (t) => { + t.it('airportCode'); + t.describe('recordLocator', (t) => { + t.it('noArgs') + .it('allowNumerics', { allowNumerics: true }) + .it('allowVisuallySimilarCharacters', { + allowVisuallySimilarCharacters: true, + }) + .it('both allowNumerics and allowVisuallySimilarCharacters', { + allowNumerics: true, + allowVisuallySimilarCharacters: true, + }); + }); + t.describe('seat', (t) => { + t.it('noArgs') + .it('aircraftType narrowbody', { aircraftType: 'narrowbody' }) + .it('aircraftType regional', { aircraftType: 'regional' }) + .it('aircraftType widebody', { aircraftType: 'widebody' }); + }); + }); + + describe(`random seeded tests for seed ${faker.seed()}`, () => { + for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { + describe(`airportCode()`, () => { + it('should return a random value from airport array', () => { + const airport = faker.airline.airportCode(); + expect(faker.definitions.airline.airport).toContain(airport); + }); + }); + + describe(`recordLocator()`, () => { + it('should use the default values when not passing arguments', () => { + const recordLocator = faker.airline.recordLocator(); + expect(recordLocator).toMatch(/^[A-HJ-KM-NP-Z]{6}$/); + }); + it('should allow numeric characters', () => { + const recordLocator = faker.airline.recordLocator({ allowNumerics: true }); + expect(recordLocator).toMatch(/^[2-9A-HJ-KM-NP-Z]{6}$/); + }); + it('should allow visually similar characters', () => { + const recordLocator = faker.airline.recordLocator({ allowVisuallySimilarCharacters: true }); + expect(recordLocator).toMatch(/^[A-Z]{6}$/); + }); + it('should allow both numeric and visually similar characters', () => { + const recordLocator = faker.airline.recordLocator({ allowNumerics: true, allowVisuallySimilarCharacters: true }); + expect(recordLocator).toMatch(/^[0-9A-Z]{6}$/); + }); + }); + + describe(`seat()`, () => { + const seatRegex = /^(\d{1,2})([A-K])$/ + it('should return a random narrowbody seat when not passing an argument', () => { + const seat = faker.airline.seat(); + const matchResult = seat.match(seatRegex); + expect(matchResult).not.toBeNull(); + const row = matchResult[1]; + const seatLetter = matchResult[2]; + expect(row).toSatisfy((row: number) => row >= 1 && row <= 35); + expect(seatLetter).toMatch(/^[A-F]$/); + }); + it('should return a random narrowbody seat', () => { + const seat = faker.airline.seat({ aircraftType: 'narrowbody' }); + const matchResult = seat.match(seatRegex); + expect(matchResult).not.toBeNull(); + const row = matchResult[1]; + const seatLetter = matchResult[2]; + expect(row).toSatisfy((row: number) => row >= 1 && row <= 35); + expect(seatLetter).toMatch(/^[A-F]$/); + }); + it('should return a random regional seat', () => { + const seat = faker.airline.seat({ aircraftType: 'regional' }); + const matchResult = seat.match(seatRegex); + expect(matchResult).not.toBeNull(); + const row = matchResult[1]; + const seatLetter = matchResult[2]; + expect(row).toSatisfy((row: number) => row >= 1 && row <= 20); + expect(seatLetter).toMatch(/^[A-D]$/); + }); + it('should return a random widebody seat', () => { + const seat = faker.airline.seat({ aircraftType: 'widebody' }); + const matchResult = seat.match(seatRegex); + expect(matchResult).not.toBeNull(); + const row = matchResult[1]; + const seatLetter = matchResult[2]; + expect(row).toSatisfy((row: number) => row >= 1 && row <= 60); + expect(seatLetter).toMatch(/^[A-HJ-K]$/); + }); + }); + } + }); +}); From c6983ae26e62adbb6939af6be2e35fbe8c595186 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 30 Dec 2022 09:48:23 -0700 Subject: [PATCH 12/54] Added airline test snapshot --- test/__snapshots__/airline.spec.ts.snap | 55 +++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 test/__snapshots__/airline.spec.ts.snap diff --git a/test/__snapshots__/airline.spec.ts.snap b/test/__snapshots__/airline.spec.ts.snap new file mode 100644 index 00000000000..59a3de00916 --- /dev/null +++ b/test/__snapshots__/airline.spec.ts.snap @@ -0,0 +1,55 @@ +// Vitest Snapshot v1 + +exports[`airline > 42 > airportCode 1`] = `"IXV"`; + +exports[`airline > 42 > recordLocator > allowNumerics 1`] = `"DTY7RT"`; + +exports[`airline > 42 > recordLocator > allowVisuallySimilarCharacters 1`] = `"JUYETU"`; + +exports[`airline > 42 > recordLocator > both allowNumerics and allowVisuallySimilarCharacters 1`] = `"DSY6QS"`; + +exports[`airline > 42 > recordLocator > noArgs 1`] = `"JVYETU"`; + +exports[`airline > 42 > seat > aircraftType narrowbody 1`] = `"14E"`; + +exports[`airline > 42 > seat > aircraftType regional 1`] = `"8D"`; + +exports[`airline > 42 > seat > aircraftType widebody 1`] = `"23H"`; + +exports[`airline > 42 > seat > noArgs 1`] = `"14E"`; + +exports[`airline > 1211 > airportCode 1`] = `"YBI"`; + +exports[`airline > 1211 > recordLocator > allowNumerics 1`] = `"XGWT86"`; + +exports[`airline > 1211 > recordLocator > allowVisuallySimilarCharacters 1`] = `"YLXUFD"`; + +exports[`airline > 1211 > recordLocator > both allowNumerics and allowVisuallySimilarCharacters 1`] = `"XGWS84"`; + +exports[`airline > 1211 > recordLocator > noArgs 1`] = `"YMXUFC"`; + +exports[`airline > 1211 > seat > aircraftType narrowbody 1`] = `"33C"`; + +exports[`airline > 1211 > seat > aircraftType regional 1`] = `"19B"`; + +exports[`airline > 1211 > seat > aircraftType widebody 1`] = `"56E"`; + +exports[`airline > 1211 > seat > noArgs 1`] = `"33C"`; + +exports[`airline > 1337 > airportCode 1`] = `"FPO"`; + +exports[`airline > 1337 > recordLocator > allowNumerics 1`] = `"AK68AJ"`; + +exports[`airline > 1337 > recordLocator > allowVisuallySimilarCharacters 1`] = `"GOEFHO"`; + +exports[`airline > 1337 > recordLocator > both allowNumerics and allowVisuallySimilarCharacters 1`] = `"9K57AJ"`; + +exports[`airline > 1337 > recordLocator > noArgs 1`] = `"GPDEGP"`; + +exports[`airline > 1337 > seat > aircraftType narrowbody 1`] = `"10D"`; + +exports[`airline > 1337 > seat > aircraftType regional 1`] = `"6C"`; + +exports[`airline > 1337 > seat > aircraftType widebody 1`] = `"16F"`; + +exports[`airline > 1337 > seat > noArgs 1`] = `"10D"`; From 353dedaf9cc4982329c78864f0553487eaebd865 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 30 Dec 2022 15:28:48 -0700 Subject: [PATCH 13/54] Improvements based on PR comments --- src/index.ts | 1 + src/modules/airline/index.ts | 54 ++++++++++++++++++++---------------- test/airline.spec.ts | 8 +++--- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/index.ts b/src/index.ts index 470954a7338..248dc14e6aa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -36,6 +36,7 @@ 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 { diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 37d416507da..b8b9be55f37 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -1,6 +1,25 @@ import type { Faker } from '../..'; -const aircraftTypes = ['narrowbody', 'regional', 'widebody'] as const; +export enum Aircraft { + Narrowbody = 'narrowbody', + Regional = 'regional', + Widebody = 'widebody', +} + +export type AircraftType = `${Aircraft}`; + +const numerics = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; +const visuallySimilarCharacters = ['0', 'O', '1', 'I', 'L']; +const aircraftTypeMaxRows = { + regional: 20, + narrowbody: 35, + widebody: 60, +}; +const aircraftTypeSeats = { + 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. @@ -37,6 +56,8 @@ export class AirlineModule { * @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`. * + * @see https://en.wikipedia.org/wiki/Record_locator + * * @example * faker.airline.recordLocator() // 'KIFRWE' * faker.airline.recordLocator({ allowNumerics: true }) // 'E5TYEM' @@ -51,13 +72,13 @@ export class AirlineModule { allowVisuallySimilarCharacters?: boolean; } = {} ): string { - const numerics = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; - const visuallySimilarCharacters = ['0', 'O', '1', 'I', 'L']; + const { allowNumerics = false, allowVisuallySimilarCharacters = false } = + options; const excludedChars = []; - if (!options.allowNumerics) { + if (!allowNumerics) { excludedChars.push(...numerics); } - if (!options.allowVisuallySimilarCharacters) { + if (!allowVisuallySimilarCharacters) { excludedChars.push(...visuallySimilarCharacters); } return this.faker.string.alphanumeric({ @@ -80,29 +101,14 @@ export class AirlineModule { * * @since 8.0.0 */ - seat( options: { - aircraftType?: typeof aircraftTypes[number]; + aircraftType?: AircraftType; } = {} ): string { - const maxRows = { - regional: 20, - narrowbody: 35, - widebody: 60, - }; - - const seats = { - regional: ['A', 'B', 'C', 'D'], - narrowbody: ['A', 'B', 'C', 'D', 'E', 'F'], - widebody: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K'], - }; - - const { aircraftType = 'narrowbody' } = options; - - const maxRow = maxRows[aircraftType]; - const allowedSeats = seats[aircraftType]; - + 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}`; diff --git a/test/airline.spec.ts b/test/airline.spec.ts index c33912339ac..7e5dbc5839c 100644 --- a/test/airline.spec.ts +++ b/test/airline.spec.ts @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it } from 'vitest'; -import { faker } from '../src'; +import { faker, Aircraft } from '../src'; import { seededTests } from './support/seededRuns'; const NON_SEEDED_BASED_RUN = 5; @@ -70,7 +70,7 @@ describe('airline', () => { expect(seatLetter).toMatch(/^[A-F]$/); }); it('should return a random narrowbody seat', () => { - const seat = faker.airline.seat({ aircraftType: 'narrowbody' }); + const seat = faker.airline.seat({ aircraftType: Aircraft.Narrowbody }); const matchResult = seat.match(seatRegex); expect(matchResult).not.toBeNull(); const row = matchResult[1]; @@ -79,7 +79,7 @@ describe('airline', () => { expect(seatLetter).toMatch(/^[A-F]$/); }); it('should return a random regional seat', () => { - const seat = faker.airline.seat({ aircraftType: 'regional' }); + const seat = faker.airline.seat({ aircraftType: Aircraft.Regional }); const matchResult = seat.match(seatRegex); expect(matchResult).not.toBeNull(); const row = matchResult[1]; @@ -88,7 +88,7 @@ describe('airline', () => { expect(seatLetter).toMatch(/^[A-D]$/); }); it('should return a random widebody seat', () => { - const seat = faker.airline.seat({ aircraftType: 'widebody' }); + const seat = faker.airline.seat({ aircraftType: Aircraft.Widebody }); const matchResult = seat.match(seatRegex); expect(matchResult).not.toBeNull(); const row = matchResult[1]; From de8e31df167c274f612890d2f865638f61ae4b57 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 30 Dec 2022 15:50:20 -0700 Subject: [PATCH 14/54] Reduced to only 1000 entries --- src/locales/en/airline/airport.ts | 5072 ----------------------------- 1 file changed, 5072 deletions(-) diff --git a/src/locales/en/airline/airport.ts b/src/locales/en/airline/airport.ts index df3656fd464..08f76e714d2 100644 --- a/src/locales/en/airline/airport.ts +++ b/src/locales/en/airline/airport.ts @@ -1,6074 +1,1002 @@ export default [ - 'AAA', - 'AAC', - 'AAE', - 'AAF', - 'AAH', 'AAK', - 'AAL', - 'AAM', - 'AAN', 'AAO', - 'AAP', - 'AAQ', - 'AAR', - 'AAT', - 'AAV', - 'AAX', 'AAY', - 'AAZ', - 'ABA', - 'ABB', - 'ABC', - 'ABD', - 'ABE', - 'ABF', - 'ABH', - 'ABI', - 'ABJ', - 'ABK', - 'ABL', - 'ABM', - 'ABN', - 'ABQ', - 'ABR', - 'ABS', - 'ABT', - 'ABV', - 'ABX', 'ABY', - 'ABZ', - 'ACA', - 'ACC', 'ACD', - 'ACE', - 'ACF', - 'ACH', - 'ACI', - 'ACJ', - 'ACK', - 'ACN', - 'ACP', - 'ACR', - 'ACS', - 'ACT', - 'ACV', - 'ACX', - 'ACY', 'ACZ', - 'ADA', - 'ADB', 'ADD', 'ADE', 'ADF', - 'ADH', - 'ADI', 'ADJ', - 'ADK', - 'ADL', 'ADM', - 'ADP', - 'ADQ', - 'ADS', - 'ADT', - 'ADU', 'ADW', - 'ADX', - 'ADY', - 'ADZ', - 'AEA', - 'AEB', - 'AEG', - 'AEH', - 'AEI', - 'AEO', 'AEP', - 'AER', - 'AES', - 'AET', - 'AEU', - 'AEX', - 'AEY', - 'AFA', - 'AFL', - 'AFS', - 'AFT', 'AFW', - 'AFY', - 'AFZ', - 'AGA', - 'AGB', 'AGC', - 'AGE', - 'AGF', 'AGH', - 'AGI', - 'AGJ', 'AGN', - 'AGP', - 'AGQ', - 'AGR', - 'AGS', 'AGT', - 'AGU', - 'AGV', - 'AGX', - 'AGZ', - 'AHB', - 'AHE', - 'AHJ', - 'AHN', - 'AHO', - 'AHS', - 'AHU', 'AIA', - 'AID', - 'AIK', 'AIN', - 'AIP', - 'AIR', - 'AIS', - 'AIT', - 'AIU', - 'AIZ', - 'AJA', - 'AJF', - 'AJI', - 'AJK', - 'AJL', - 'AJN', - 'AJR', - 'AJU', - 'AJY', - 'AKA', - 'AKB', - 'AKC', - 'AKD', - 'AKF', - 'AKH', - 'AKI', 'AKJ', - 'AKK', 'AKL', - 'AKN', 'AKO', 'AKP', - 'AKR', - 'AKS', - 'AKT', - 'AKU', - 'AKV', - 'AKW', - 'AKX', - 'AKY', - 'ALA', - 'ALB', - 'ALC', - 'ALE', - 'ALF', - 'ALG', - 'ALH', - 'ALI', - 'ALJ', - 'ALL', - 'ALM', - 'ALN', - 'ALO', - 'ALP', - 'ALR', - 'ALS', - 'ALU', - 'ALW', - 'ALX', 'ALY', 'AMA', - 'AMB', 'AMC', - 'AMD', - 'AMH', 'AMI', - 'AMM', - 'AMN', - 'AMQ', - 'AMS', - 'AMT', - 'AMV', - 'AMZ', - 'ANB', - 'ANC', - 'AND', - 'ANE', 'ANF', - 'ANG', - 'ANI', - 'ANK', 'ANM', - 'ANN', - 'ANP', - 'ANQ', - 'ANR', - 'ANS', 'ANU', 'ANV', - 'ANX', - 'AOC', - 'AOE', - 'AOG', - 'AOH', - 'AOI', - 'AOJ', - 'AOK', - 'AOL', - 'AOO', - 'AOP', 'AOR', - 'AOT', - 'AOU', - 'APA', - 'APC', - 'APF', - 'APG', - 'API', 'APK', - 'APL', - 'APN', - 'APO', 'APQ', - 'APT', - 'APW', - 'APZ', - 'AQA', 'AQB', 'AQG', - 'AQI', 'AQJ', - 'AQP', 'ARA', - 'ARB', - 'ARC', - 'ARD', - 'ARE', - 'ARH', 'ARI', - 'ARK', - 'ARM', - 'ARN', - 'ARR', - 'ART', - 'ARU', - 'ARV', - 'ARW', 'ARY', 'ASA', - 'ASB', - 'ASD', - 'ASE', - 'ASF', - 'ASH', - 'ASI', - 'ASJ', - 'ASK', 'ASM', - 'ASN', 'ASO', - 'ASP', - 'ASR', - 'ASS', 'AST', - 'ASU', 'ASV', - 'ASW', - 'ATA', 'ATB', - 'ATC', - 'ATD', 'ATF', - 'ATG', - 'ATH', - 'ATI', 'ATJ', - 'ATK', - 'ATL', - 'ATM', - 'ATO', - 'ATQ', - 'ATR', - 'ATW', - 'ATY', - 'ATZ', - 'AUA', - 'AUC', - 'AUF', - 'AUG', 'AUH', - 'AUK', 'AUO', 'AUQ', - 'AUR', - 'AUS', - 'AUU', 'AUW', - 'AUX', - 'AUY', - 'AVA', - 'AVB', - 'AVI', - 'AVK', - 'AVL', - 'AVN', - 'AVO', - 'AVP', - 'AVR', - 'AVV', - 'AVW', - 'AVX', 'AWA', - 'AWD', - 'AWK', - 'AWZ', 'AXA', - 'AXD', - 'AXF', 'AXJ', - 'AXK', - 'AXM', 'AXN', 'AXP', - 'AXR', - 'AXT', - 'AXU', - 'AYK', - 'AYO', - 'AYP', - 'AYQ', - 'AYS', - 'AYT', - 'AYW', - 'AZA', 'AZD', - 'AZI', - 'AZN', - 'AZO', - 'AZR', - 'AZS', - 'BAB', - 'BAD', - 'BAF', - 'BAG', - 'BAH', - 'BAI', - 'BAL', - 'BAQ', - 'BAR', - 'BAS', - 'BAT', - 'BAU', - 'BAV', - 'BAX', 'BAY', - 'BAZ', - 'BBA', 'BBC', - 'BBD', - 'BBG', - 'BBH', - 'BBI', 'BBJ', - 'BBK', 'BBL', - 'BBM', - 'BBN', 'BBO', - 'BBP', - 'BBQ', - 'BBR', - 'BBS', - 'BBT', 'BBU', - 'BBX', - 'BCA', - 'BCD', - 'BCE', - 'BCH', - 'BCI', - 'BCL', - 'BCM', - 'BCN', - 'BCO', - 'BCT', - 'BCU', 'BDA', - 'BDB', 'BDD', - 'BDE', - 'BDH', - 'BDI', - 'BDJ', - 'BDL', 'BDM', - 'BDN', - 'BDO', - 'BDP', - 'BDQ', - 'BDR', - 'BDS', - 'BDT', - 'BDU', - 'BEB', - 'BEC', - 'BED', - 'BEF', - 'BEG', - 'BEI', - 'BEJ', - 'BEK', 'BEL', 'BEM', 'BEN', 'BEO', - 'BEP', - 'BEQ', - 'BES', - 'BET', - 'BEU', - 'BEV', - 'BEW', - 'BEX', 'BEY', - 'BEZ', - 'BFD', - 'BFE', 'BFF', 'BFH', - 'BFI', - 'BFJ', 'BFK', - 'BFL', - 'BFM', - 'BFN', - 'BFO', - 'BFP', 'BFS', - 'BFT', - 'BFU', 'BFV', - 'BFW', - 'BFX', - 'BGA', - 'BGC', - 'BGD', - 'BGE', - 'BGF', - 'BGG', 'BGI', - 'BGL', - 'BGM', - 'BGN', - 'BGO', - 'BGR', - 'BGW', - 'BGX', 'BGY', - 'BGZ', 'BHB', 'BHD', 'BHE', 'BHG', - 'BHH', - 'BHI', - 'BHJ', - 'BHK', - 'BHM', - 'BHN', - 'BHO', - 'BHP', - 'BHQ', - 'BHR', 'BHS', - 'BHU', - 'BHV', - 'BHW', - 'BHX', 'BHY', - 'BIA', - 'BIB', - 'BID', - 'BIF', - 'BIG', - 'BIH', - 'BIK', - 'BIL', - 'BIM', - 'BIN', 'BIO', - 'BIQ', - 'BIR', - 'BIS', - 'BIU', - 'BIX', 'BIY', 'BJA', - 'BJB', - 'BJC', - 'BJF', - 'BJH', 'BJI', 'BJL', 'BJM', - 'BJO', - 'BJP', - 'BJR', 'BJU', - 'BJV', - 'BJW', - 'BJX', - 'BJY', 'BJZ', - 'BKA', - 'BKB', - 'BKC', - 'BKD', - 'BKE', - 'BKG', - 'BKH', 'BKI', - 'BKK', - 'BKL', - 'BKM', - 'BKO', - 'BKQ', - 'BKS', - 'BKW', - 'BKY', 'BKZ', - 'BLA', 'BLB', - 'BLE', - 'BLF', - 'BLG', - 'BLH', - 'BLI', - 'BLJ', 'BLK', - 'BLL', - 'BLN', 'BLQ', - 'BLR', - 'BLT', - 'BLV', - 'BLZ', - 'BMA', - 'BMB', - 'BMC', - 'BMD', - 'BME', - 'BMG', - 'BMI', - 'BMK', - 'BMM', - 'BMO', - 'BMP', - 'BMR', - 'BMT', - 'BMU', - 'BMV', - 'BMW', - 'BMX', - 'BMY', 'BNA', 'BNB', - 'BNC', - 'BND', - 'BNE', - 'BNG', 'BNI', - 'BNJ', - 'BNK', - 'BNM', - 'BNN', 'BNO', - 'BNP', - 'BNS', - 'BNU', - 'BNX', - 'BOA', - 'BOB', 'BOC', - 'BOD', - 'BOG', - 'BOH', - 'BOI', 'BOJ', - 'BOM', - 'BON', 'BOO', - 'BOR', - 'BOS', - 'BOU', - 'BOW', - 'BOX', - 'BOY', - 'BPC', - 'BPE', - 'BPF', - 'BPG', 'BPH', 'BPI', - 'BPL', - 'BPM', - 'BPN', - 'BPS', - 'BPT', - 'BPX', - 'BPY', - 'BQA', - 'BQB', - 'BQE', - 'BQG', - 'BQH', - 'BQJ', - 'BQK', 'BQL', - 'BQN', - 'BQS', - 'BQT', - 'BQU', - 'BRA', - 'BRC', - 'BRD', - 'BRE', - 'BRI', - 'BRK', - 'BRL', - 'BRM', - 'BRN', - 'BRO', - 'BRQ', - 'BRR', 'BRS', - 'BRT', - 'BRU', 'BRV', - 'BRW', - 'BRX', - 'BSA', - 'BSB', - 'BSC', - 'BSD', - 'BSF', - 'BSG', - 'BSJ', - 'BSK', - 'BSL', - 'BSO', - 'BSR', - 'BST', - 'BSU', - 'BSX', - 'BTC', - 'BTE', - 'BTH', - 'BTI', 'BTJ', - 'BTK', - 'BTL', 'BTM', - 'BTR', - 'BTS', - 'BTT', - 'BTU', - 'BTV', 'BTW', 'BTZ', 'BUA', - 'BUC', - 'BUD', - 'BUF', - 'BUG', - 'BUI', 'BUJ', - 'BUL', - 'BUN', 'BUO', - 'BUP', - 'BUQ', - 'BUR', - 'BUS', - 'BUT', - 'BUU', - 'BUW', - 'BUX', - 'BUY', - 'BUZ', - 'BVA', - 'BVB', - 'BVC', - 'BVE', - 'BVG', - 'BVH', - 'BVI', - 'BVS', 'BVY', - 'BWA', - 'BWB', - 'BWE', - 'BWF', - 'BWG', - 'BWH', - 'BWI', 'BWK', - 'BWN', - 'BWO', - 'BWQ', - 'BWT', - 'BWU', - 'BWW', - 'BWX', - 'BXB', - 'BXE', - 'BXG', - 'BXH', - 'BXK', - 'BXN', - 'BXO', 'BXP', - 'BXR', - 'BXU', - 'BXY', - 'BYC', - 'BYF', - 'BYH', 'BYI', - 'BYJ', - 'BYK', - 'BYM', - 'BYN', - 'BYO', - 'BYP', - 'BYQ', 'BYR', - 'BYS', 'BYT', - 'BYU', - 'BZA', - 'BZC', - 'BZD', - 'BZE', 'BZG', - 'BZH', - 'BZI', 'BZK', - 'BZL', - 'BZN', 'BZO', - 'BZR', 'BZU', 'BZV', - 'BZY', - 'BZZ', 'CAB', - 'CAC', - 'CAE', - 'CAF', - 'CAG', - 'CAH', - 'CAI', 'CAJ', - 'CAK', - 'CAL', - 'CAN', - 'CAP', - 'CAQ', - 'CAR', - 'CAT', - 'CAU', - 'CAW', 'CAX', - 'CAY', - 'CAZ', - 'CBB', - 'CBD', - 'CBE', - 'CBF', - 'CBG', - 'CBH', 'CBJ', - 'CBL', - 'CBM', - 'CBN', - 'CBO', - 'CBQ', - 'CBR', - 'CBT', - 'CBU', - 'CBV', - 'CCA', - 'CCB', - 'CCC', - 'CCF', - 'CCH', - 'CCI', - 'CCJ', 'CCK', 'CCL', - 'CCM', - 'CCN', - 'CCP', - 'CCR', - 'CCS', - 'CCU', - 'CCV', - 'CCX', - 'CCY', - 'CCZ', - 'CDA', - 'CDB', - 'CDC', - 'CDE', - 'CDG', - 'CDJ', - 'CDN', - 'CDP', - 'CDR', - 'CDS', - 'CDT', - 'CDU', - 'CDV', - 'CDW', - 'CEB', - 'CEC', - 'CED', - 'CEE', - 'CEF', - 'CEG', - 'CEI', - 'CEJ', - 'CEK', - 'CEM', - 'CEN', - 'CEQ', - 'CER', - 'CES', - 'CET', - 'CEU', - 'CEW', - 'CEZ', - 'CFB', - 'CFC', - 'CFD', - 'CFE', - 'CFG', - 'CFK', - 'CFN', - 'CFO', - 'CFR', - 'CFS', - 'CFU', - 'CFV', - 'CGB', - 'CGD', - 'CGF', - 'CGH', 'CGI', - 'CGJ', - 'CGK', - 'CGM', 'CGN', 'CGO', - 'CGP', - 'CGQ', - 'CGR', - 'CGX', - 'CGY', 'CGZ', 'CHA', - 'CHC', - 'CHF', - 'CHG', - 'CHH', - 'CHM', - 'CHN', - 'CHO', - 'CHQ', - 'CHR', - 'CHS', - 'CHT', - 'CHU', - 'CHX', - 'CHY', - 'CIA', - 'CIC', - 'CID', - 'CIF', - 'CIH', - 'CIJ', - 'CIK', - 'CIO', - 'CIP', - 'CIS', - 'CIT', 'CIU', - 'CIW', - 'CIX', - 'CIY', 'CIZ', - 'CJA', 'CJB', 'CJC', 'CJF', - 'CJJ', - 'CJL', - 'CJM', 'CJN', - 'CJS', - 'CJU', - 'CKB', - 'CKC', - 'CKG', - 'CKH', - 'CKI', 'CKL', - 'CKS', - 'CKT', - 'CKV', - 'CKY', - 'CKZ', 'CLD', - 'CLE', - 'CLJ', - 'CLL', - 'CLM', - 'CLN', - 'CLO', - 'CLP', 'CLQ', - 'CLS', 'CLT', - 'CLU', - 'CLV', - 'CLW', - 'CLY', - 'CLZ', - 'CMA', - 'CMB', - 'CMD', - 'CME', - 'CMF', - 'CMG', - 'CMH', - 'CMI', 'CMJ', - 'CMK', 'CMN', - 'CMP', - 'CMQ', - 'CMR', - 'CMU', - 'CMW', - 'CMX', - 'CNB', 'CNC', - 'CND', - 'CNF', - 'CNG', 'CNI', - 'CNJ', - 'CNL', - 'CNM', - 'CNN', 'CNO', - 'CNP', 'CNQ', 'CNR', - 'CNS', - 'CNU', 'CNW', - 'CNX', - 'CNY', - 'COC', - 'COD', - 'COE', - 'COF', - 'COG', - 'COH', - 'COJ', - 'COK', 'CON', - 'COO', - 'COQ', 'COR', - 'COS', - 'COT', - 'COU', - 'COX', - 'COZ', - 'CPA', 'CPB', - 'CPC', - 'CPD', - 'CPE', - 'CPH', - 'CPO', - 'CPQ', - 'CPR', - 'CPT', - 'CPV', - 'CPX', 'CQA', - 'CQD', - 'CQF', - 'CQM', - 'CQS', 'CRA', - 'CRC', - 'CRD', 'CRE', - 'CRG', - 'CRI', - 'CRK', - 'CRL', - 'CRM', - 'CRP', - 'CRQ', - 'CRV', 'CRW', - 'CRZ', - 'CSA', - 'CSB', - 'CSF', - 'CSG', - 'CSH', - 'CSK', 'CSM', 'CSO', - 'CSV', - 'CSX', - 'CSY', - 'CSZ', - 'CTA', - 'CTB', - 'CTC', - 'CTD', - 'CTG', - 'CTH', - 'CTL', 'CTM', - 'CTN', - 'CTS', - 'CTT', - 'CTU', - 'CTY', - 'CUA', - 'CUB', - 'CUC', - 'CUD', - 'CUE', - 'CUF', - 'CUH', - 'CUL', - 'CUM', - 'CUN', - 'CUP', - 'CUQ', - 'CUR', - 'CUT', - 'CUU', - 'CUZ', - 'CVC', - 'CVE', - 'CVF', - 'CVG', - 'CVJ', - 'CVM', - 'CVN', - 'CVO', 'CVQ', - 'CVS', 'CVT', - 'CVU', - 'CWA', - 'CWB', - 'CWC', 'CWE', - 'CWI', - 'CWJ', - 'CWL', 'CWT', - 'CWW', - 'CXA', - 'CXB', - 'CXH', - 'CXI', - 'CXJ', - 'CXL', - 'CXO', - 'CXP', - 'CXR', - 'CYA', - 'CYB', 'CYF', - 'CYG', - 'CYI', - 'CYO', - 'CYP', - 'CYR', - 'CYS', - 'CYT', - 'CYU', - 'CYW', - 'CYX', - 'CYZ', - 'CZA', - 'CZE', 'CZF', 'CZL', - 'CZM', - 'CZS', - 'CZU', 'CZX', 'DAA', - 'DAB', - 'DAC', 'DAD', - 'DAG', - 'DAL', - 'DAM', - 'DAN', 'DAR', - 'DAT', 'DAU', 'DAV', 'DAX', - 'DAY', - 'DBA', - 'DBB', - 'DBC', - 'DBD', - 'DBM', - 'DBN', - 'DBO', - 'DBQ', - 'DBT', - 'DBV', - 'DCA', - 'DCF', - 'DCI', - 'DCM', - 'DCN', - 'DCT', - 'DCU', 'DCY', - 'DDC', 'DDG', - 'DEA', - 'DEB', - 'DEC', - 'DED', - 'DEE', - 'DEF', - 'DEL', - 'DEM', - 'DEN', - 'DES', - 'DET', - 'DEX', - 'DEZ', 'DFW', - 'DGE', - 'DGL', - 'DGO', 'DGP', 'DGT', - 'DHA', - 'DHF', 'DHI', - 'DHM', - 'DHN', - 'DHR', - 'DHT', - 'DIA', - 'DIB', - 'DIE', - 'DIG', - 'DIJ', - 'DIK', - 'DIL', - 'DIN', - 'DIQ', - 'DIR', - 'DIS', - 'DIU', - 'DIY', - 'DJB', - 'DJE', - 'DJG', - 'DJJ', - 'DJO', 'DKI', - 'DKK', - 'DKR', - 'DKS', - 'DKV', - 'DLA', - 'DLC', - 'DLD', - 'DLE', - 'DLF', - 'DLG', - 'DLH', - 'DLI', 'DLK', - 'DLM', - 'DLS', - 'DLU', - 'DLY', - 'DLZ', - 'DMA', - 'DMB', - 'DMD', - 'DME', - 'DMK', 'DMM', - 'DMN', - 'DMT', - 'DMU', - 'DNA', - 'DND', - 'DNH', - 'DNK', - 'DNL', - 'DNN', - 'DNP', - 'DNQ', - 'DNR', - 'DNV', - 'DNZ', - 'DOB', - 'DOD', - 'DOG', - 'DOH', - 'DOK', - 'DOL', 'DOM', - 'DOP', - 'DOU', - 'DOV', - 'DOY', - 'DPA', - 'DPL', - 'DPO', - 'DPS', - 'DQA', - 'DQM', - 'DRA', - 'DRB', - 'DRE', 'DRG', 'DRI', - 'DRJ', 'DRK', - 'DRN', - 'DRO', 'DRS', 'DRT', - 'DRV', - 'DRW', - 'DSA', - 'DSD', 'DSE', - 'DSI', - 'DSK', - 'DSM', - 'DSN', - 'DSO', - 'DSS', - 'DTA', - 'DTB', - 'DTD', - 'DTE', - 'DTI', - 'DTM', - 'DTN', - 'DTU', - 'DTW', - 'DU9', 'DUB', - 'DUC', - 'DUD', 'DUE', - 'DUG', - 'DUJ', 'DUM', - 'DUR', - 'DUS', - 'DUT', - 'DVL', - 'DVO', - 'DVT', - 'DWA', - 'DWB', - 'DWC', - 'DWD', 'DWH', 'DXB', - 'DXR', - 'DYA', - 'DYG', - 'DYL', - 'DYR', 'DYS', - 'DYU', - 'DZA', 'DZN', - 'DZO', - 'EAA', - 'EAE', - 'EAM', - 'EAS', - 'EAT', 'EAU', - 'EBA', - 'EBB', - 'EBD', - 'EBG', - 'EBH', - 'EBJ', - 'EBL', - 'EBM', - 'EBU', 'ECA', 'ECG', - 'ECH', - 'ECI', - 'ECN', - 'ECP', - 'ECV', - 'EDD', - 'EDF', - 'EDI', - 'EDL', - 'EDM', - 'EDO', - 'EDR', - 'EDW', - 'EED', - 'EEK', - 'EEN', - 'EFD', - 'EFG', - 'EFL', - 'EGC', - 'EGE', 'EGH', - 'EGI', - 'EGM', - 'EGN', - 'EGO', - 'EGS', - 'EGV', - 'EGX', 'EHL', - 'EHM', - 'EIB', - 'EIE', - 'EIK', 'EIL', - 'EIN', - 'EIS', - 'EIY', - 'EJA', - 'EJH', - 'EJN', - 'EKA', 'EKB', - 'EKI', - 'EKN', - 'EKO', - 'EKS', - 'EKT', 'ELB', - 'ELC', - 'ELD', - 'ELF', - 'ELG', - 'ELH', 'ELI', 'ELM', - 'ELO', - 'ELP', - 'ELQ', - 'ELS', - 'ELT', - 'ELU', - 'ELV', - 'ELY', - 'EMA', - 'EMD', - 'EME', - 'EMK', - 'EML', - 'EMN', - 'EMP', - 'EMT', - 'ENA', - 'ENC', - 'END', - 'ENE', - 'ENF', - 'ENH', 'ENK', - 'ENN', - 'ENO', - 'ENS', - 'ENT', - 'ENU', 'ENV', - 'ENW', - 'ENY', - 'EOH', - 'EOI', - 'EOK', - 'EOR', - 'EOZ', 'EPA', - 'EPL', - 'EPR', - 'EPU', 'EQS', - 'ERC', - 'ERD', - 'ERF', - 'ERG', - 'ERH', 'ERI', - 'ERL', 'ERM', - 'ERN', - 'ERS', - 'ERV', - 'ERZ', - 'ESB', - 'ESC', 'ESD', - 'ESE', - 'ESF', - 'ESG', - 'ESH', - 'ESK', - 'ESL', - 'ESM', - 'ESN', 'ESR', - 'ESS', - 'ESU', - 'ETB', 'ETH', - 'ETM', - 'ETR', - 'ETS', - 'ETZ', - 'EUA', - 'EUF', - 'EUG', 'EUM', - 'EUN', - 'EUQ', 'EUX', - 'EVE', - 'EVG', 'EVN', - 'EVV', - 'EVW', - 'EVX', - 'EWB', 'EWK', 'EWN', - 'EWR', - 'EXT', - 'EYK', - 'EYP', - 'EYW', - 'EZE', - 'EZS', 'EZV', - 'FAA', - 'FAB', - 'FAC', - 'FAE', - 'FAF', 'FAH', - 'FAI', - 'FAJ', 'FAN', - 'FAO', - 'FAR', - 'FAT', 'FAV', - 'FAY', - 'FAZ', - 'FBA', - 'FBD', - 'FBE', - 'FBG', - 'FBK', - 'FBM', 'FBR', - 'FBU', - 'FCA', - 'FCB', 'FCM', - 'FCN', 'FCO', 'FCS', 'FDF', - 'FDH', - 'FDO', - 'FDU', - 'FDY', - 'FEG', 'FEL', - 'FEN', - 'FET', - 'FEZ', - 'FFA', - 'FFD', - 'FFO', - 'FFT', - 'FFU', - 'FGI', - 'FGU', - 'FHU', - 'FIE', - 'FIG', - 'FIH', - 'FIK', - 'FIZ', 'FJR', - 'FKB', - 'FKI', - 'FKJ', - 'FKL', - 'FKQ', - 'FKS', - 'FLA', - 'FLB', - 'FLD', - 'FLF', - 'FLG', - 'FLL', - 'FLN', - 'FLO', - 'FLP', 'FLR', - 'FLS', 'FLV', - 'FLW', 'FLZ', 'FMA', - 'FME', - 'FMH', - 'FMI', - 'FMM', 'FMN', - 'FMO', - 'FMY', - 'FNA', - 'FNB', 'FNC', - 'FNI', 'FNJ', - 'FNL', - 'FNR', - 'FNT', - 'FNU', - 'FOC', 'FOD', - 'FOE', - 'FOG', - 'FOK', - 'FOM', - 'FON', - 'FOR', - 'FOS', - 'FPO', - 'FPR', - 'FRA', - 'FRB', - 'FRC', - 'FRD', - 'FRE', - 'FRG', - 'FRI', - 'FRJ', - 'FRL', - 'FRN', - 'FRO', - 'FRS', - 'FRU', - 'FRW', 'FRY', - 'FRZ', - 'FSC', - 'FSD', - 'FSI', 'FSM', - 'FSP', - 'FSS', - 'FST', - 'FTA', - 'FTE', - 'FTI', - 'FTK', 'FTU', - 'FTW', - 'FTX', - 'FTY', - 'FUE', - 'FUG', - 'FUJ', - 'FUK', - 'FUL', - 'FUN', - 'FUO', - 'FUT', 'FWA', - 'FWH', - 'FXE', - 'FXO', - 'FYJ', - 'FYN', - 'FYT', - 'FYU', - 'FYV', - 'FZO', - 'GAD', - 'GAE', - 'GAF', - 'GAH', 'GAI', - 'GAJ', - 'GAL', - 'GAM', - 'GAN', - 'GAO', - 'GAQ', - 'GAS', - 'GAU', - 'GAY', - 'GBA', 'GBB', - 'GBD', - 'GBE', - 'GBG', - 'GBJ', - 'GBK', 'GBT', 'GBZ', 'GCC', 'GCH', - 'GCI', - 'GCJ', - 'GCK', - 'GCM', - 'GCN', - 'GDC', - 'GDE', - 'GDL', - 'GDN', - 'GDO', 'GDQ', - 'GDT', - 'GDV', - 'GDW', - 'GDX', - 'GDZ', - 'GEA', - 'GEC', - 'GED', - 'GEG', - 'GEL', - 'GEO', - 'GER', 'GES', - 'GET', - 'GEV', 'GEX', - 'GFF', - 'GFK', 'GFL', 'GFN', - 'GFO', - 'GFR', - 'GFY', - 'GGE', - 'GGG', 'GGM', - 'GGS', - 'GGT', - 'GGW', 'GHA', - 'GHB', 'GHC', - 'GHF', - 'GHT', - 'GHU', - 'GIB', - 'GIC', - 'GID', - 'GIF', - 'GIG', - 'GII', 'GIL', - 'GIR', - 'GIS', - 'GIT', 'GIU', - 'GIZ', - 'GJA', - 'GJL', - 'GJM', - 'GJR', - 'GJT', - 'GKA', - 'GKE', - 'GKK', - 'GKL', - 'GKN', - 'GLA', - 'GLD', - 'GLF', - 'GLH', - 'GLI', - 'GLK', 'GLO', - 'GLR', 'GLS', - 'GLT', 'GLU', - 'GLV', - 'GLW', - 'GLZ', - 'GMA', - 'GMB', - 'GMD', - 'GME', - 'GML', - 'GMO', - 'GMP', - 'GMQ', - 'GMR', - 'GMU', - 'GMV', - 'GMZ', - 'GNA', - 'GNB', 'GND', - 'GNI', - 'GNM', - 'GNR', - 'GNS', - 'GNT', - 'GNV', - 'GNY', - 'GNZ', 'GOA', - 'GOB', - 'GOH', - 'GOI', - 'GOJ', - 'GOM', - 'GON', - 'GOO', 'GOP', - 'GOQ', - 'GOR', - 'GOT', - 'GOU', - 'GOV', - 'GOZ', - 'GPA', - 'GPB', - 'GPI', - 'GPL', 'GPN', - 'GPO', 'GPS', - 'GPT', - 'GPZ', - 'GQQ', - 'GRB', - 'GRF', 'GRI', 'GRJ', 'GRK', - 'GRM', - 'GRO', - 'GRP', - 'GRQ', - 'GRR', - 'GRS', - 'GRU', 'GRW', - 'GRX', - 'GRY', - 'GRZ', - 'GSB', - 'GSE', - 'GSI', - 'GSJ', 'GSO', - 'GSP', 'GSQ', - 'GST', - 'GTE', - 'GTF', 'GTI', - 'GTN', - 'GTO', 'GTR', 'GUA', 'GUB', - 'GUC', - 'GUF', - 'GUH', 'GUI', - 'GUJ', - 'GUL', - 'GUM', - 'GUP', - 'GUQ', - 'GUR', - 'GUS', - 'GUT', - 'GUU', 'GUW', - 'GUX', - 'GUY', - 'GUZ', - 'GVA', - 'GVL', - 'GVN', - 'GVR', 'GVT', 'GVX', 'GWD', - 'GWE', - 'GWL', - 'GWO', - 'GWT', - 'GWY', - 'GXF', - 'GXG', 'GXH', - 'GXQ', - 'GXY', 'GYA', 'GYD', - 'GYE', - 'GYG', 'GYI', - 'GYL', - 'GYM', - 'GYN', - 'GYR', - 'GYS', - 'GYU', - 'GYY', - 'GZA', - 'GZI', - 'GZM', - 'GZO', - 'GZP', - 'GZT', - 'GZW', - 'HAA', - 'HAC', - 'HAD', - 'HAF', - 'HAH', - 'HAJ', - 'HAK', 'HAM', - 'HAN', - 'HAO', - 'HAQ', - 'HAR', - 'HAS', - 'HAU', - 'HAV', - 'HAW', - 'HBA', - 'HBE', 'HBG', - 'HBR', - 'HBX', - 'HCJ', - 'HCN', - 'HCQ', - 'HCR', - 'HCW', - 'HDD', - 'HDE', 'HDF', - 'HDG', - 'HDH', 'HDI', - 'HDM', - 'HDN', - 'HDR', - 'HDS', - 'HDY', - 'HEA', 'HEH', - 'HEI', 'HEK', - 'HEL', - 'HEM', - 'HER', - 'HET', - 'HEW', - 'HEX', - 'HFA', - 'HFD', - 'HFE', - 'HFN', - 'HFS', 'HFT', - 'HGA', - 'HGD', - 'HGE', - 'HGH', - 'HGI', - 'HGL', - 'HGN', - 'HGO', - 'HGR', - 'HGS', - 'HGU', - 'HHE', - 'HHH', 'HHI', - 'HHN', - 'HHP', 'HHQ', - 'HHR', - 'HHZ', - 'HIA', 'HIB', - 'HID', - 'HIF', 'HII', - 'HIJ', 'HIM', - 'HIN', - 'HIO', - 'HIR', - 'HIW', - 'HJJ', - 'HJR', - 'HKD', - 'HKG', - 'HKK', - 'HKN', - 'HKT', 'HKY', - 'HLA', - 'HLD', - 'HLE', - 'HLF', 'HLG', - 'HLH', 'HLI', - 'HLJ', 'HLN', 'HLP', - 'HLR', - 'HLT', - 'HLZ', - 'HMA', - 'HMB', - 'HME', - 'HMG', - 'HMI', 'HMJ', - 'HMN', - 'HMO', 'HMR', - 'HMV', - 'HMY', - 'HNA', - 'HND', - 'HNH', - 'HNL', - 'HNM', - 'HNS', - 'HNY', - 'HOA', - 'HOB', - 'HOD', - 'HOE', - 'HOF', - 'HOG', - 'HOH', - 'HOI', - 'HOK', - 'HOM', 'HON', - 'HOP', - 'HOQ', - 'HOR', 'HOS', 'HOT', - 'HOU', - 'HOV', - 'HOX', - 'HPA', - 'HPB', - 'HPG', - 'HPH', - 'HPN', - 'HQM', - 'HRB', 'HRE', - 'HRG', - 'HRI', - 'HRK', - 'HRL', - 'HRM', - 'HRO', - 'HRS', - 'HRT', - 'HSG', 'HSH', 'HSK', - 'HSL', - 'HSM', - 'HSN', - 'HSS', - 'HST', 'HSV', - 'HSZ', - 'HTA', - 'HTG', - 'HTI', - 'HTL', - 'HTN', 'HTR', - 'HTS', - 'HTT', - 'HTU', 'HTV', - 'HTY', - 'HUA', - 'HUE', - 'HUF', - 'HUH', - 'HUI', - 'HUL', - 'HUN', - 'HUO', - 'HUQ', - 'HUS', 'HUT', - 'HUU', 'HUV', - 'HUW', - 'HUX', 'HUY', - 'HUZ', - 'HVA', - 'HVB', - 'HVD', - 'HVG', - 'HVN', - 'HVR', - 'HVS', - 'HWD', - 'HWN', - 'HWO', - 'HXD', - 'HXX', - 'HYA', 'HYC', - 'HYD', - 'HYG', - 'HYN', - 'HYR', - 'HYS', 'HYV', - 'HZB', - 'HZG', 'HZH', - 'HZK', - 'HZL', - 'HZP', - 'IAA', - 'IAB', - 'IAD', - 'IAG', - 'IAH', - 'IAM', 'IAN', - 'IAO', 'IAR', - 'IAS', - 'IBA', - 'IBB', - 'IBE', - 'IBP', - 'IBR', 'IBZ', 'ICC', - 'ICI', - 'ICK', - 'ICN', - 'ICT', - 'IDA', - 'IDP', - 'IDR', - 'IDY', 'IEG', - 'IEJ', 'IES', - 'IEV', 'IFH', - 'IFJ', - 'IFL', 'IFN', - 'IFO', - 'IFU', - 'IGA', - 'IGB', 'IGD', - 'IGG', - 'IGL', - 'IGR', - 'IGS', - 'IGT', - 'IGU', - 'IHC', - 'IHR', - 'IIA', - 'IIL', - 'IJK', - 'IKA', - 'IKB', - 'IKI', - 'IKK', - 'IKL', - 'IKO', - 'IKS', - 'IKT', - 'IKU', - 'ILA', - 'ILD', - 'ILF', 'ILG', - 'ILI', - 'ILM', - 'ILN', - 'ILO', - 'ILP', - 'ILQ', - 'ILR', - 'ILU', - 'ILY', 'ILZ', - 'IMB', - 'IMF', - 'IMK', - 'IMM', - 'IMP', 'IMT', - 'INA', - 'IND', - 'ING', - 'INH', - 'INI', 'INK', - 'INL', 'INN', - 'INO', - 'INQ', 'INS', 'INT', - 'INU', - 'INV', - 'INW', - 'INZ', - 'IOA', - 'IOM', - 'ION', - 'IOR', - 'IOS', - 'IOW', - 'IPA', 'IPC', - 'IPH', - 'IPI', - 'IPL', 'IPN', - 'IPT', - 'IQA', - 'IQM', 'IQN', - 'IQQ', - 'IQT', - 'IRA', - 'IRB', - 'IRC', - 'IRD', 'IRG', - 'IRI', 'IRJ', - 'IRK', - 'IRP', - 'IRZ', - 'ISA', - 'ISB', - 'ISC', - 'ISE', - 'ISG', - 'ISJ', 'ISK', - 'ISL', - 'ISM', 'ISN', - 'ISO', 'ISP', - 'IST', - 'ISU', - 'ISW', - 'ITA', - 'ITB', - 'ITH', - 'ITM', - 'ITO', - 'ITP', - 'ITR', - 'IUE', - 'IVA', - 'IVC', - 'IVL', 'IVR', - 'IWA', - 'IWJ', - 'IWK', - 'IWO', - 'IWS', - 'IXA', - 'IXB', - 'IXC', 'IXD', 'IXE', - 'IXG', - 'IXH', - 'IXI', - 'IXJ', 'IXK', - 'IXL', 'IXM', - 'IXP', - 'IXR', 'IXS', - 'IXT', - 'IXU', - 'IXV', 'IXW', - 'IXY', - 'IXZ', - 'IYK', - 'IZA', - 'IZO', - 'IZT', - 'JAA', - 'JAB', - 'JAC', - 'JAD', - 'JAE', - 'JAF', 'JAG', - 'JAI', - 'JAK', - 'JAL', - 'JAM', - 'JAN', - 'JAP', - 'JAR', - 'JAS', - 'JAU', 'JAV', - 'JAX', - 'JBQ', - 'JBR', - 'JCB', - 'JCH', - 'JCI', - 'JCK', - 'JCR', - 'JCT', - 'JDF', - 'JDG', - 'JDH', - 'JDO', 'JDZ', - 'JED', - 'JEE', 'JEF', - 'JEG', - 'JER', - 'JFK', - 'JFR', - 'JGA', 'JGD', - 'JGN', - 'JGO', - 'JGS', - 'JHB', - 'JHG', 'JHM', 'JHQ', - 'JHS', - 'JHW', - 'JIA', - 'JIB', - 'JIC', - 'JIJ', - 'JIK', - 'JIM', 'JIQ', - 'JIU', - 'JIW', - 'JJG', - 'JJI', 'JJM', - 'JJN', - 'JJU', 'JKG', - 'JKH', - 'JKL', - 'JKR', - 'JLN', - 'JLR', - 'JMJ', - 'JMK', - 'JMO', - 'JMS', - 'JMU', - 'JNB', 'JNG', - 'JNI', 'JNN', - 'JNS', - 'JNU', 'JNX', 'JNZ', - 'JOE', - 'JOG', - 'JOH', - 'JOI', - 'JOJ', - 'JOK', - 'JOL', - 'JON', - 'JOS', - 'JOT', - 'JPA', - 'JPR', - 'JQA', - 'JQE', - 'JRA', 'JRB', - 'JRF', - 'JRH', - 'JRN', - 'JRO', - 'JSA', - 'JSH', - 'JSI', - 'JSJ', - 'JSK', - 'JSM', 'JSR', 'JST', - 'JSU', - 'JSY', - 'JTC', - 'JTR', - 'JTY', - 'JUA', 'JUB', - 'JUH', - 'JUI', - 'JUJ', - 'JUL', - 'JUM', - 'JUV', - 'JUZ', - 'JVA', - 'JVL', 'JWA', - 'JWN', - 'JXA', - 'JXN', - 'JYR', 'JYV', - 'JZH', - 'KAA', - 'KAB', - 'KAC', - 'KAD', - 'KAG', - 'KAI', - 'KAJ', - 'KAL', - 'KAN', - 'KAO', - 'KAR', - 'KAT', - 'KAU', - 'KAW', - 'KAX', - 'KAZ', - 'KBL', - 'KBN', - 'KBP', - 'KBQ', - 'KBR', 'KBS', - 'KBV', - 'KBZ', - 'KCA', - 'KCF', - 'KCH', - 'KCK', 'KCM', - 'KCO', - 'KCS', - 'KCT', - 'KCZ', - 'KDA', - 'KDC', - 'KDD', - 'KDH', - 'KDI', - 'KDL', - 'KDM', - 'KDO', 'KDT', - 'KDU', - 'KDV', - 'KDX', - 'KDY', - 'KED', - 'KEF', - 'KEJ', 'KEL', 'KEM', - 'KEN', - 'KEO', - 'KEP', - 'KER', 'KES', - 'KET', - 'KEV', - 'KEW', - 'KEY', - 'KFA', - 'KFE', - 'KFG', - 'KFP', - 'KFS', - 'KGA', - 'KGC', - 'KGD', - 'KGE', - 'KGF', - 'KGG', - 'KGI', - 'KGJ', - 'KGK', - 'KGL', 'KGO', - 'KGP', - 'KGS', - 'KGT', - 'KGW', - 'KGY', - 'KHC', - 'KHD', - 'KHE', - 'KHG', - 'KHH', 'KHI', 'KHJ', - 'KHK', - 'KHM', - 'KHN', 'KHS', - 'KHT', - 'KHV', - 'KHW', - 'KHY', - 'KHZ', - 'KID', - 'KIF', - 'KIH', - 'KIJ', - 'KIK', - 'KIM', - 'KIN', - 'KIO', - 'KIR', 'KIS', - 'KIT', - 'KIV', 'KIW', - 'KIX', - 'KIY', - 'KJA', 'KJH', 'KJI', - 'KJK', 'KJP', 'KKA', - 'KKC', - 'KKE', 'KKH', 'KKJ', - 'KKN', - 'KKR', - 'KKS', 'KKW', - 'KKX', 'KLC', - 'KLD', - 'KLF', - 'KLG', 'KLH', - 'KLI', - 'KLJ', - 'KLM', 'KLN', - 'KLO', - 'KLR', - 'KLS', - 'KLU', - 'KLV', - 'KLW', - 'KLX', - 'KLZ', - 'KMA', - 'KMC', - 'KME', - 'KMG', - 'KMH', - 'KMI', - 'KMJ', - 'KMN', - 'KMO', - 'KMP', - 'KMQ', - 'KMS', - 'KMU', - 'KMV', - 'KMW', - 'KMX', 'KNA', - 'KND', - 'KNF', 'KNG', - 'KNH', - 'KNO', - 'KNP', 'KNQ', - 'KNR', - 'KNS', - 'KNU', - 'KNW', - 'KNX', - 'KOA', - 'KOC', 'KOE', - 'KOI', - 'KOJ', - 'KOK', - 'KOO', - 'KOP', 'KOQ', - 'KOS', 'KOT', - 'KOU', - 'KOV', - 'KOW', - 'KOX', - 'KPC', 'KPN', - 'KPO', - 'KPS', - 'KPV', - 'KQA', - 'KQH', 'KQT', - 'KRA', 'KRB', - 'KRC', - 'KRF', - 'KRH', - 'KRI', - 'KRK', 'KRL', - 'KRN', - 'KRO', - 'KRP', - 'KRQ', - 'KRR', - 'KRS', - 'KRT', - 'KRW', 'KRY', - 'KRZ', - 'KSA', - 'KSC', 'KSD', - 'KSE', - 'KSF', - 'KSH', - 'KSI', - 'KSJ', 'KSK', - 'KSL', - 'KSM', 'KSN', - 'KSO', - 'KSQ', 'KSS', - 'KSU', - 'KSY', - 'KSZ', - 'KTA', - 'KTD', - 'KTE', - 'KTF', 'KTG', - 'KTI', - 'KTL', 'KTM', - 'KTN', - 'KTP', - 'KTQ', - 'KTR', - 'KTS', - 'KTT', - 'KTU', - 'KTW', - 'KUA', - 'KUC', - 'KUD', - 'KUF', - 'KUG', - 'KUH', - 'KUK', - 'KUL', 'KUM', - 'KUN', - 'KUO', - 'KUT', - 'KUU', - 'KUV', - 'KVA', - 'KVB', - 'KVC', - 'KVD', - 'KVG', - 'KVK', - 'KVL', - 'KVM', 'KVR', - 'KVX', - 'KWA', 'KWB', - 'KWE', - 'KWG', - 'KWI', 'KWJ', - 'KWK', - 'KWL', 'KWM', 'KWN', - 'KWT', - 'KWZ', - 'KXE', - 'KXF', - 'KXK', - 'KYA', - 'KYD', - 'KYE', - 'KYI', - 'KYK', - 'KYP', 'KYS', - 'KYU', - 'KYZ', - 'KZC', - 'KZF', - 'KZG', - 'KZI', - 'KZN', - 'KZO', 'KZR', - 'KZS', - 'LAA', - 'LAD', - 'LAE', - 'LAF', - 'LAI', 'LAJ', - 'LAK', - 'LAL', - 'LAM', 'LAN', - 'LAO', - 'LAP', - 'LAQ', - 'LAR', - 'LAS', 'LAU', - 'LAW', - 'LAX', - 'LAY', - 'LAZ', - 'LBA', - 'LBB', - 'LBC', - 'LBD', - 'LBE', - 'LBF', - 'LBG', - 'LBI', - 'LBJ', 'LBL', - 'LBQ', - 'LBR', - 'LBS', - 'LBT', - 'LBU', 'LBV', - 'LBW', 'LBX', - 'LBY', 'LBZ', - 'LCA', - 'LCC', - 'LCE', - 'LCG', - 'LCH', 'LCJ', - 'LCK', - 'LCL', - 'LCQ', - 'LCX', - 'LCY', - 'LDB', - 'LDE', - 'LDG', - 'LDH', - 'LDI', - 'LDJ', - 'LDK', - 'LDM', - 'LDN', - 'LDS', - 'LDU', - 'LDV', - 'LDX', - 'LDY', - 'LEA', - 'LEB', 'LEC', - 'LED', - 'LEE', - 'LEH', - 'LEI', 'LEJ', - 'LEK', 'LEL', - 'LEN', - 'LEQ', - 'LER', - 'LET', - 'LEU', - 'LEV', 'LEW', - 'LEX', - 'LEY', - 'LFB', 'LFI', - 'LFK', - 'LFM', 'LFQ', - 'LFR', - 'LFT', - 'LFW', 'LGA', 'LGB', - 'LGC', 'LGD', - 'LGG', - 'LGH', - 'LGI', 'LGK', - 'LGL', - 'LGO', - 'LGP', - 'LGS', - 'LGU', - 'LGW', - 'LHA', - 'LHE', - 'LHG', - 'LHK', - 'LHR', - 'LHS', 'LHV', - 'LHW', - 'LID', - 'LIF', - 'LIG', - 'LIH', - 'LII', - 'LIL', - 'LIM', - 'LIN', - 'LIO', 'LIP', 'LIQ', 'LIR', - 'LIS', - 'LIT', - 'LIW', 'LIX', - 'LIY', - 'LJA', - 'LJG', - 'LJN', - 'LJU', - 'LKB', - 'LKG', - 'LKH', - 'LKL', - 'LKN', - 'LKO', - 'LKP', 'LKV', - 'LKY', - 'LKZ', - 'LLA', - 'LLB', - 'LLE', 'LLF', 'LLI', - 'LLK', - 'LLU', - 'LLV', - 'LLW', - 'LLY', 'LMA', - 'LME', 'LMM', - 'LMN', - 'LMO', - 'LMP', - 'LMQ', - 'LMR', - 'LMT', - 'LNA', - 'LNB', - 'LND', - 'LNE', - 'LNJ', - 'LNK', - 'LNL', - 'LNN', - 'LNO', - 'LNR', - 'LNS', - 'LNX', - 'LNY', - 'LNZ', - 'LOD', - 'LOE', 'LOH', - 'LOK', - 'LOL', 'LOO', - 'LOP', 'LOS', - 'LOT', - 'LOU', - 'LOV', - 'LOZ', - 'LPA', - 'LPB', 'LPC', - 'LPD', - 'LPF', - 'LPG', - 'LPI', - 'LPK', - 'LPL', - 'LPM', - 'LPP', - 'LPQ', - 'LPS', - 'LPT', - 'LPU', - 'LPX', - 'LPY', 'LQM', - 'LRA', - 'LRD', - 'LRE', - 'LRF', - 'LRH', - 'LRL', - 'LRM', - 'LRR', - 'LRS', - 'LRT', 'LRU', 'LRV', 'LSC', - 'LSE', - 'LSF', - 'LSH', 'LSI', - 'LSL', - 'LSP', - 'LSQ', 'LSS', - 'LST', - 'LSV', - 'LSW', - 'LSX', - 'LSY', - 'LSZ', - 'LTA', - 'LTD', - 'LTI', - 'LTK', - 'LTM', - 'LTN', - 'LTO', - 'LTQ', - 'LTS', 'LTT', - 'LTX', - 'LUA', - 'LUC', - 'LUD', - 'LUF', - 'LUG', - 'LUH', - 'LUK', - 'LUM', - 'LUN', - 'LUO', - 'LUP', 'LUQ', - 'LUR', - 'LUV', - 'LUW', - 'LUX', - 'LUZ', - 'LVA', - 'LVI', - 'LVK', - 'LVM', 'LVO', - 'LVP', - 'LVS', - 'LWB', - 'LWC', - 'LWK', - 'LWM', - 'LWN', - 'LWO', - 'LWR', - 'LWS', - 'LWT', - 'LWY', - 'LXA', - 'LXG', 'LXN', - 'LXR', - 'LXS', - 'LYA', - 'LYB', - 'LYC', - 'LYE', - 'LYG', 'LYH', - 'LYI', - 'LYM', - 'LYN', 'LYP', - 'LYR', - 'LYS', 'LYU', - 'LYX', - 'LZC', - 'LZH', 'LZN', 'LZO', - 'LZR', - 'LZU', - 'LZY', - 'MAA', - 'MAB', - 'MAD', 'MAE', 'MAF', - 'MAG', - 'MAH', - 'MAI', - 'MAJ', - 'MAK', - 'MAM', 'MAN', - 'MAO', - 'MAQ', - 'MAR', 'MAS', - 'MAT', - 'MAU', - 'MAX', - 'MAY', 'MAZ', 'MBA', - 'MBD', - 'MBE', 'MBG', - 'MBH', - 'MBI', - 'MBJ', - 'MBL', - 'MBO', - 'MBS', - 'MBT', - 'MBU', - 'MBW', 'MBX', - 'MBZ', - 'MCB', - 'MCC', - 'MCE', - 'MCF', - 'MCG', - 'MCH', - 'MCI', - 'MCJ', - 'MCK', - 'MCL', - 'MCN', - 'MCO', 'MCP', - 'MCS', 'MCT', - 'MCU', 'MCV', 'MCW', - 'MCX', - 'MCY', - 'MCZ', - 'MDC', - 'MDE', - 'MDG', - 'MDH', - 'MDI', 'MDK', 'MDL', - 'MDQ', - 'MDS', - 'MDT', - 'MDU', - 'MDW', - 'MDY', 'MDZ', - 'MEA', - 'MEB', - 'MEC', - 'MED', - 'MEE', - 'MEG', 'MEH', - 'MEI', - 'MEK', - 'MEL', - 'MEM', - 'MEN', - 'MEO', - 'MEQ', 'MER', - 'MES', - 'MEU', - 'MEX', - 'MEY', - 'MFA', - 'MFD', - 'MFE', - 'MFG', - 'MFI', - 'MFJ', - 'MFK', - 'MFM', - 'MFN', - 'MFQ', - 'MFR', - 'MFU', 'MFX', - 'MGA', 'MGB', - 'MGC', 'MGE', - 'MGF', 'MGH', - 'MGJ', 'MGL', - 'MGM', - 'MGN', - 'MGQ', - 'MGS', - 'MGT', - 'MGW', 'MGY', - 'MGZ', - 'MHA', 'MHC', - 'MHD', - 'MHE', - 'MHG', - 'MHH', - 'MHK', - 'MHP', 'MHQ', - 'MHR', - 'MHT', - 'MHU', - 'MHV', 'MHX', - 'MHZ', - 'MIA', - 'MIB', - 'MID', - 'MIE', - 'MIG', - 'MII', - 'MIJ', - 'MIK', 'MIM', - 'MIP', - 'MIR', - 'MIS', - 'MIU', 'MIV', - 'MJA', - 'MJC', - 'MJD', - 'MJF', - 'MJI', - 'MJK', - 'MJL', - 'MJM', - 'MJN', - 'MJT', 'MJV', 'MJZ', - 'MKC', - 'MKE', - 'MKG', - 'MKK', - 'MKL', - 'MKM', - 'MKP', 'MKQ', - 'MKR', - 'MKS', - 'MKU', - 'MKW', - 'MKY', - 'MKZ', 'MLA', 'MLB', - 'MLC', 'MLE', 'MLG', - 'MLI', 'MLL', - 'MLM', - 'MLN', - 'MLO', - 'MLS', - 'MLU', - 'MLW', - 'MLX', - 'MLY', - 'MLZ', - 'MMB', - 'MMD', 'MME', - 'MMG', - 'MMH', - 'MMI', - 'MMJ', 'MMK', - 'MMO', - 'MMT', 'MMU', - 'MMX', - 'MMY', - 'MMZ', - 'MNA', - 'MNB', - 'MNC', 'MNF', - 'MNG', - 'MNH', - 'MNI', 'MNJ', - 'MNK', - 'MNL', - 'MNM', - 'MNR', - 'MNS', - 'MNU', - 'MNX', - 'MNY', - 'MNZ', - 'MOA', - 'MOB', - 'MOC', - 'MOD', - 'MOE', - 'MOF', 'MOG', 'MOI', - 'MOJ', - 'MOL', - 'MON', - 'MOO', - 'MOQ', - 'MOT', - 'MOU', - 'MOV', - 'MOZ', - 'MPA', - 'MPH', - 'MPK', - 'MPL', - 'MPM', - 'MPN', - 'MPO', - 'MPV', 'MPW', - 'MPY', - 'MQC', - 'MQF', - 'MQH', - 'MQJ', - 'MQL', 'MQM', 'MQN', 'MQP', 'MQQ', 'MQS', - 'MQT', - 'MQU', - 'MQX', - 'MQY', 'MRB', - 'MRD', - 'MRE', - 'MRF', - 'MRG', - 'MRI', - 'MRK', - 'MRN', - 'MRO', - 'MRQ', - 'MRR', - 'MRS', - 'MRU', - 'MRV', - 'MRW', - 'MRX', - 'MRY', - 'MRZ', 'MSA', 'MSC', - 'MSE', 'MSH', - 'MSJ', - 'MSL', - 'MSN', 'MSO', - 'MSP', - 'MSQ', - 'MSR', 'MSS', - 'MST', - 'MSU', - 'MSW', - 'MSY', 'MSZ', 'MTC', - 'MTF', - 'MTG', - 'MTH', - 'MTJ', - 'MTK', - 'MTL', - 'MTM', - 'MTN', - 'MTP', - 'MTR', - 'MTS', - 'MTT', - 'MTV', - 'MTY', - 'MTZ', - 'MUA', 'MUB', - 'MUC', - 'MUD', - 'MUE', 'MUH', - 'MUI', - 'MUK', 'MUN', - 'MUO', 'MUR', - 'MUS', - 'MUW', 'MUX', - 'MUZ', - 'MVA', - 'MVB', - 'MVD', 'MVF', - 'MVL', - 'MVP', - 'MVQ', 'MVR', - 'MVS', - 'MVT', - 'MVV', - 'MVW', - 'MVY', - 'MVZ', 'MWA', 'MWC', - 'MWD', - 'MWE', - 'MWF', - 'MWH', - 'MWK', - 'MWL', - 'MWQ', - 'MWX', - 'MWZ', - 'MXB', - 'MXF', 'MXH', - 'MXI', - 'MXJ', - 'MXL', - 'MXM', - 'MXN', - 'MXP', - 'MXS', - 'MXT', 'MXV', - 'MXX', - 'MXZ', - 'MYA', - 'MYB', - 'MYC', - 'MYD', - 'MYE', - 'MYG', - 'MYI', - 'MYJ', - 'MYL', - 'MYP', - 'MYQ', - 'MYR', 'MYT', - 'MYU', - 'MYV', - 'MYW', - 'MYY', - 'MYZ', - 'MZB', - 'MZG', - 'MZH', - 'MZI', - 'MZJ', - 'MZK', - 'MZL', - 'MZM', - 'MZO', 'MZP', - 'MZQ', - 'MZR', - 'MZT', - 'MZU', - 'MZV', 'MZW', - 'NAA', - 'NAC', - 'NAG', - 'NAH', - 'NAI', - 'NAJ', 'NAK', - 'NAL', - 'NAM', - 'NAN', - 'NAO', - 'NAP', - 'NAQ', - 'NAS', - 'NAT', - 'NAU', 'NAV', - 'NAW', - 'NAY', - 'NBC', - 'NBE', - 'NBG', - 'NBN', 'NBO', - 'NBS', - 'NBW', - 'NBX', - 'NCA', - 'NCE', - 'NCG', - 'NCJ', - 'NCL', - 'NCN', - 'NCO', 'NCR', - 'NCS', - 'NCU', - 'NCY', - 'NDB', - 'NDC', 'NDD', - 'NDG', - 'NDJ', - 'NDN', - 'NDR', - 'NDU', - 'NDY', - 'NEC', - 'NEG', - 'NEL', - 'NER', - 'NEU', - 'NEV', 'NEW', - 'NFG', - 'NFL', - 'NFO', - 'NGA', - 'NGB', - 'NGD', - 'NGE', 'NGF', 'NGI', - 'NGK', - 'NGO', - 'NGQ', - 'NGS', - 'NGU', - 'NGX', 'NGZ', - 'NHA', 'NHD', - 'NHK', - 'NHT', 'NHV', - 'NHZ', 'NIB', - 'NIG', - 'NIM', - 'NIO', - 'NIP', - 'NIS', - 'NIT', - 'NIU', 'NJA', - 'NJC', - 'NJF', 'NJK', - 'NKB', - 'NKC', - 'NKG', - 'NKM', - 'NKT', - 'NKW', 'NKX', - 'NLA', - 'NLC', - 'NLD', 'NLF', - 'NLG', - 'NLH', - 'NLI', - 'NLK', - 'NLO', - 'NLP', - 'NLT', - 'NLV', - 'NMA', - 'NMB', - 'NMC', - 'NME', - 'NMS', - 'NMT', - 'NNA', - 'NNB', - 'NNG', - 'NNL', - 'NNM', - 'NNR', - 'NNT', - 'NNX', - 'NNY', - 'NOA', - 'NOB', - 'NOC', - 'NOD', - 'NOG', 'NOJ', - 'NON', - 'NOP', 'NOR', 'NOS', - 'NOT', - 'NOU', - 'NOV', - 'NOZ', - 'NPA', 'NPE', - 'NPL', - 'NPO', - 'NPR', - 'NQA', - 'NQI', - 'NQN', - 'NQT', - 'NQU', - 'NQX', 'NQY', - 'NRA', - 'NRB', - 'NRD', - 'NRE', - 'NRK', - 'NRL', - 'NRN', - 'NRR', - 'NRT', - 'NSE', - 'NSH', - 'NSI', - 'NSK', - 'NSN', - 'NSO', - 'NST', - 'NSY', - 'NTB', - 'NTD', - 'NTE', - 'NTI', - 'NTL', 'NTN', - 'NTQ', - 'NTR', - 'NTT', - 'NTU', - 'NTX', - 'NTY', - 'NUE', - 'NUI', - 'NUK', - 'NUL', - 'NUQ', - 'NUS', - 'NUW', 'NUX', - 'NVA', - 'NVI', - 'NVK', - 'NVP', - 'NVS', - 'NVT', - 'NWA', - 'NWI', 'NXX', - 'NYA', - 'NYE', 'NYI', 'NYK', - 'NYM', - 'NYO', - 'NYR', - 'NYT', 'NYU', 'NYW', - 'NZA', - 'NZC', - 'NZE', - 'NZH', - 'NZJ', - 'NZL', - 'NZY', - 'OAA', - 'OAG', - 'OAH', - 'OAI', - 'OAJ', - 'OAK', 'OAL', - 'OAM', - 'OAR', - 'OAS', - 'OAX', - 'OAZ', - 'OBC', - 'OBE', - 'OBF', - 'OBL', - 'OBN', - 'OBO', - 'OBS', 'OBU', 'OBY', - 'OCA', - 'OCC', 'OCF', - 'OCJ', - 'OCM', 'OCN', - 'OCV', - 'OCW', 'ODB', - 'ODE', - 'ODH', - 'ODN', 'ODO', - 'ODS', - 'ODY', - 'OEL', - 'OEM', 'OER', - 'OES', - 'OFF', - 'OFK', - 'OGB', 'OGD', - 'OGG', - 'OGL', - 'OGN', 'OGS', 'OGU', 'OGX', - 'OGZ', - 'OHA', - 'OHD', - 'OHE', - 'OHO', - 'OHS', - 'OIA', - 'OIM', - 'OIR', - 'OIT', 'OJC', 'OKA', - 'OKC', - 'OKD', - 'OKE', 'OKF', - 'OKI', 'OKJ', 'OKK', - 'OKL', - 'OKM', - 'OKN', - 'OKO', 'OKR', 'OKU', - 'OKY', - 'OLA', - 'OLB', - 'OLC', - 'OLF', - 'OLJ', - 'OLL', - 'OLM', - 'OLP', - 'OLS', 'OLV', - 'OLZ', 'OMA', 'OMB', - 'OMC', 'OMD', - 'OME', 'OMF', - 'OMH', - 'OMI', - 'OMO', 'OMR', - 'OMS', - 'OND', 'ONG', - 'ONJ', - 'ONK', 'ONO', - 'ONP', - 'ONQ', 'ONS', - 'ONT', - 'ONX', 'OOK', - 'OOL', - 'OOM', - 'OPF', 'OPO', - 'OPS', - 'OPU', - 'ORA', - 'ORB', 'ORD', - 'ORE', - 'ORF', 'ORG', 'ORH', - 'ORJ', - 'ORK', - 'ORL', 'ORN', - 'ORP', - 'ORT', - 'ORU', - 'ORV', - 'ORW', - 'ORX', - 'ORY', 'OSC', - 'OSD', - 'OSF', - 'OSH', - 'OSI', - 'OSK', - 'OSL', 'OSM', - 'OSN', - 'OSP', - 'OSR', - 'OSS', - 'OST', - 'OSU', - 'OSW', 'OSY', - 'OTH', 'OTI', - 'OTJ', 'OTK', 'OTM', - 'OTP', 'OTR', - 'OTU', - 'OTZ', 'OUA', - 'OUD', - 'OUE', 'OUH', - 'OUK', - 'OUL', - 'OUZ', 'OVA', - 'OVB', - 'OVD', - 'OVG', - 'OVR', - 'OVS', - 'OWB', - 'OWD', - 'OXB', - 'OXC', - 'OXF', - 'OXR', - 'OYA', - 'OYE', - 'OYK', 'OYL', - 'OYO', - 'OYP', 'OZA', - 'OZC', - 'OZG', - 'OZH', - 'OZP', - 'OZR', 'OZZ', - 'PAA', - 'PAB', - 'PAC', - 'PAD', - 'PAE', - 'PAG', - 'PAH', - 'PAJ', - 'PAL', - 'PAM', - 'PAN', - 'PAO', 'PAP', - 'PAQ', 'PAS', - 'PAT', - 'PAV', - 'PAX', - 'PAZ', - 'PBC', - 'PBD', - 'PBF', - 'PBG', - 'PBH', - 'PBI', - 'PBJ', 'PBL', - 'PBM', 'PBN', - 'PBO', - 'PBP', - 'PBQ', - 'PBR', - 'PBU', - 'PBZ', 'PCB', - 'PCD', - 'PCF', - 'PCL', - 'PCN', 'PCP', - 'PCQ', - 'PCR', 'PCS', 'PDA', - 'PDG', 'PDK', - 'PDL', - 'PDO', - 'PDP', - 'PDS', - 'PDT', - 'PDU', - 'PDV', - 'PDX', 'PEA', - 'PED', - 'PEE', - 'PEF', - 'PEG', 'PEH', - 'PEI', - 'PEK', - 'PEM', - 'PEN', - 'PEQ', - 'PER', - 'PES', - 'PET', 'PEU', - 'PEV', - 'PEW', - 'PEX', - 'PEZ', - 'PFB', - 'PFJ', - 'PFN', - 'PFO', - 'PFQ', - 'PFR', 'PGA', - 'PGD', - 'PGF', - 'PGH', - 'PGK', - 'PGU', - 'PGV', - 'PGX', - 'PGZ', 'PHA', - 'PHB', - 'PHC', - 'PHD', 'PHE', - 'PHF', - 'PHK', - 'PHL', - 'PHN', - 'PHS', - 'PHW', - 'PHX', - 'PHY', - 'PIA', - 'PIB', - 'PID', - 'PIE', - 'PIF', - 'PIH', - 'PIK', - 'PIL', - 'PIM', - 'PIN', - 'PIO', - 'PIP', - 'PIR', - 'PIS', - 'PIT', - 'PIU', - 'PIW', - 'PIX', - 'PIZ', - 'PJA', - 'PJC', - 'PJG', - 'PJM', - 'PKA', - 'PKB', - 'PKC', - 'PKE', - 'PKG', - 'PKH', - 'PKK', - 'PKN', - 'PKO', - 'PKP', - 'PKR', - 'PKT', - 'PKU', - 'PKV', - 'PKW', - 'PKX', - 'PKY', - 'PKZ', - 'PLD', - 'PLH', - 'PLL', - 'PLM', - 'PLN', 'PLO', - 'PLP', - 'PLQ', - 'PLS', - 'PLU', 'PLV', - 'PLW', - 'PLX', - 'PLZ', - 'PMA', 'PMB', - 'PMC', - 'PMD', - 'PMF', - 'PMG', - 'PMH', - 'PMI', 'PMK', - 'PML', - 'PMO', - 'PMQ', - 'PMR', - 'PMS', 'PMV', - 'PMW', - 'PMY', - 'PMZ', - 'PNA', 'PNB', - 'PNC', - 'PNE', 'PNH', - 'PNI', - 'PNK', - 'PNL', - 'PNP', - 'PNQ', - 'PNR', - 'PNS', - 'PNT', - 'PNV', 'PNY', - 'PNZ', - 'POA', - 'POB', - 'POC', - 'POE', - 'POF', 'POG', - 'POI', 'POJ', - 'POL', - 'POM', - 'POO', - 'POP', - 'POR', - 'POS', - 'POT', - 'POU', - 'POW', - 'POX', 'POZ', - 'PPA', 'PPB', - 'PPC', - 'PPE', - 'PPF', - 'PPG', - 'PPI', - 'PPK', 'PPL', - 'PPM', - 'PPN', - 'PPP', - 'PPQ', - 'PPR', - 'PPS', 'PPT', - 'PPW', - 'PPY', 'PQC', - 'PQI', - 'PQM', 'PQQ', 'PRA', 'PRB', - 'PRC', - 'PRG', - 'PRH', 'PRI', - 'PRM', - 'PRN', - 'PRP', - 'PRQ', 'PRU', - 'PRV', - 'PRX', - 'PRY', 'PRZ', - 'PSA', - 'PSC', - 'PSD', - 'PSE', 'PSG', 'PSH', - 'PSI', - 'PSJ', - 'PSL', - 'PSM', - 'PSO', - 'PSP', - 'PSR', 'PSS', - 'PSU', - 'PSX', 'PSY', - 'PSZ', - 'PTA', 'PTB', - 'PTF', - 'PTG', - 'PTH', - 'PTJ', - 'PTK', 'PTM', - 'PTP', - 'PTT', - 'PTU', - 'PTX', - 'PTY', - 'PTZ', - 'PUB', - 'PUC', 'PUD', - 'PUE', - 'PUF', - 'PUG', - 'PUJ', - 'PUK', - 'PUQ', - 'PUR', - 'PUS', - 'PUT', - 'PUU', - 'PUW', 'PUY', - 'PUZ', - 'PVA', - 'PVC', - 'PVD', - 'PVG', - 'PVH', - 'PVK', - 'PVL', - 'PVO', - 'PVR', - 'PVS', - 'PVU', - 'PWA', - 'PWE', - 'PWK', - 'PWM', - 'PWQ', - 'PWT', - 'PWY', - 'PXH', - 'PXM', - 'PXO', 'PXR', - 'PXU', - 'PYB', - 'PYE', 'PYH', - 'PYJ', - 'PYK', - 'PYM', - 'PYR', - 'PYY', - 'PZA', - 'PZB', - 'PZE', - 'PZH', - 'PZI', 'PZL', - 'PZO', - 'PZS', - 'PZU', - 'PZY', 'QBC', - 'QCJ', - 'QCY', - 'QDJ', - 'QEF', - 'QFG', - 'QFO', - 'QGQ', - 'QGU', - 'QHP', - 'QHR', - 'QIG', - 'QJB', - 'QJE', - 'QJI', - 'QKX', - 'QLA', 'QLD', - 'QLF', - 'QLP', - 'QLR', 'QLS', - 'QLT', - 'QNC', - 'QND', - 'QNJ', - 'QNV', 'QOW', - 'QPA', - 'QPD', 'QPG', - 'QPS', - 'QPW', - 'QQT', - 'QRA', 'QRC', - 'QRM', 'QRO', - 'QRR', - 'QRW', - 'QRY', - 'QSA', - 'QSC', - 'QSF', - 'QSI', - 'QSN', 'QSR', - 'QSZ', - 'QUG', - 'QUO', - 'QUY', - 'QXH', - 'QYD', - 'RAB', - 'RAC', - 'RAE', - 'RAH', - 'RAI', - 'RAJ', - 'RAK', - 'RAL', - 'RAM', - 'RAO', - 'RAP', - 'RAQ', - 'RAR', - 'RAS', - 'RAT', - 'RAZ', 'RBA', 'RBB', - 'RBD', - 'RBE', 'RBK', - 'RBL', - 'RBM', - 'RBQ', 'RBR', - 'RBV', 'RBX', - 'RBY', - 'RCA', 'RCB', - 'RCH', - 'RCL', - 'RCM', - 'RCO', - 'RCQ', - 'RCS', - 'RCU', 'RCY', - 'RDB', - 'RDC', 'RDD', - 'RDG', - 'RDM', - 'RDN', 'RDO', - 'RDP', - 'RDR', - 'RDS', - 'RDU', - 'RDZ', - 'REA', - 'REB', 'REC', - 'REG', - 'REL', - 'REN', - 'REP', - 'RER', - 'RES', - 'RET', - 'REU', - 'REX', - 'REY', - 'REZ', - 'RFD', - 'RFP', - 'RFS', - 'RGA', - 'RGI', - 'RGK', 'RGL', - 'RGN', - 'RGO', - 'RGS', - 'RGT', - 'RHD', - 'RHE', - 'RHI', - 'RHO', - 'RHP', - 'RHT', 'RHV', 'RIA', 'RIB', 'RIC', - 'RIH', - 'RIJ', 'RIL', - 'RIN', - 'RIS', - 'RIV', - 'RIW', - 'RIX', 'RIY', - 'RIZ', - 'RJA', - 'RJB', - 'RJH', - 'RJK', - 'RJL', - 'RJN', - 'RKD', - 'RKE', - 'RKH', - 'RKO', - 'RKP', - 'RKS', 'RKT', - 'RKV', - 'RKZ', - 'RLG', - 'RLK', - 'RMA', 'RME', - 'RMF', - 'RMG', 'RMI', - 'RMK', - 'RML', - 'RMQ', 'RMS', - 'RMT', - 'RMU', - 'RMY', 'RNA', - 'RNB', - 'RND', - 'RNE', - 'RNI', - 'RNJ', - 'RNL', - 'RNN', - 'RNO', - 'RNS', 'RNT', - 'RNZ', - 'ROA', 'ROB', - 'ROC', - 'ROD', - 'ROI', - 'ROK', - 'ROO', - 'ROP', - 'ROR', - 'ROS', - 'ROT', - 'ROV', - 'ROW', - 'ROZ', 'RPB', - 'RPM', - 'RPN', - 'RPR', - 'RQW', - 'RRG', - 'RRK', - 'RRR', - 'RRS', - 'RSA', - 'RSD', - 'RSH', - 'RSL', - 'RSS', - 'RST', 'RSU', 'RSW', - 'RTA', - 'RTB', 'RTC', - 'RTG', - 'RTM', - 'RTN', - 'RTS', - 'RTW', - 'RUA', - 'RUD', - 'RUG', - 'RUH', - 'RUI', - 'RUK', - 'RUM', - 'RUN', - 'RUR', 'RUS', - 'RUT', - 'RUV', - 'RVA', 'RVD', - 'RVE', - 'RVK', - 'RVN', - 'RVS', - 'RVT', - 'RVV', 'RVY', - 'RWF', - 'RWI', - 'RWL', - 'RWN', - 'RXS', - 'RYB', - 'RYG', 'RYK', - 'RYN', - 'RZA', - 'RZE', - 'RZP', - 'RZR', 'RZS', 'SAA', - 'SAB', - 'SAC', 'SAD', 'SAF', - 'SAG', - 'SAH', - 'SAK', - 'SAL', 'SAN', - 'SAP', - 'SAQ', - 'SAT', - 'SAV', - 'SAW', 'SAY', - 'SBA', 'SBB', - 'SBD', - 'SBG', - 'SBH', - 'SBK', - 'SBL', 'SBM', - 'SBN', 'SBP', - 'SBR', 'SBS', - 'SBT', 'SBU', - 'SBW', 'SBY', 'SBZ', - 'SCC', - 'SCE', 'SCF', - 'SCH', 'SCI', - 'SCK', - 'SCL', - 'SCM', - 'SCN', - 'SCO', - 'SCQ', - 'SCS', - 'SCT', - 'SCU', - 'SCV', - 'SCW', 'SCY', - 'SCZ', - 'SDB', 'SDD', - 'SDE', - 'SDF', - 'SDG', - 'SDJ', - 'SDK', - 'SDL', - 'SDM', 'SDN', - 'SDP', - 'SDQ', - 'SDR', - 'SDS', 'SDT', - 'SDU', - 'SDV', - 'SDX', 'SDY', - 'SEA', - 'SEB', - 'SEE', - 'SEF', - 'SEH', 'SEK', - 'SEM', - 'SEN', - 'SEP', - 'SEU', - 'SEY', - 'SEZ', - 'SFA', - 'SFB', - 'SFC', - 'SFD', - 'SFE', 'SFF', - 'SFG', - 'SFH', - 'SFJ', - 'SFK', - 'SFL', - 'SFN', - 'SFO', - 'SFQ', - 'SFS', - 'SFT', - 'SFZ', - 'SGC', 'SGD', - 'SGE', - 'SGF', - 'SGH', - 'SGI', 'SGN', - 'SGO', - 'SGQ', - 'SGR', - 'SGU', - 'SGV', - 'SGX', - 'SGY', - 'SGZ', - 'SHA', - 'SHB', - 'SHD', - 'SHE', - 'SHG', - 'SHH', - 'SHI', - 'SHJ', - 'SHL', - 'SHM', - 'SHN', - 'SHO', 'SHP', - 'SHR', - 'SHT', - 'SHV', - 'SHW', - 'SHX', - 'SHY', - 'SIA', - 'SID', 'SIF', 'SIG', - 'SIJ', - 'SIK', - 'SIN', - 'SIO', - 'SIP', - 'SIQ', - 'SIR', - 'SIS', - 'SIT', - 'SIU', - 'SJC', - 'SJD', - 'SJE', - 'SJI', - 'SJJ', - 'SJK', 'SJL', - 'SJO', - 'SJP', - 'SJT', - 'SJU', - 'SJW', 'SJY', - 'SJZ', 'SKA', - 'SKB', - 'SKD', - 'SKE', - 'SKF', - 'SKG', - 'SKH', - 'SKK', - 'SKN', - 'SKO', - 'SKP', - 'SKS', - 'SKT', - 'SKU', 'SKV', - 'SKX', - 'SKY', - 'SKZ', - 'SLA', - 'SLC', - 'SLD', - 'SLE', - 'SLF', - 'SLH', - 'SLJ', - 'SLK', - 'SLL', - 'SLM', - 'SLN', - 'SLP', - 'SLQ', - 'SLU', - 'SLV', - 'SLW', - 'SLX', - 'SLY', - 'SLZ', - 'SMA', - 'SMD', - 'SME', - 'SMF', - 'SMI', 'SMK', - 'SML', - 'SMN', - 'SMO', - 'SMQ', - 'SMR', - 'SMS', - 'SMT', - 'SMV', - 'SMW', - 'SMX', - 'SMZ', - 'SNA', - 'SNB', - 'SNC', - 'SNE', - 'SNF', - 'SNJ', - 'SNN', - 'SNO', - 'SNP', - 'SNR', - 'SNS', 'SNU', - 'SNV', - 'SNW', - 'SNY', - 'SNZ', - 'SOB', - 'SOC', - 'SOD', - 'SOF', - 'SOG', - 'SOJ', - 'SOM', - 'SON', - 'SOO', - 'SOP', - 'SOQ', 'SOT', - 'SOU', - 'SOV', - 'SOW', - 'SOY', - 'SOZ', - 'SPA', - 'SPB', - 'SPC', - 'SPD', - 'SPF', - 'SPG', - 'SPI', - 'SPJ', - 'SPM', - 'SPN', - 'SPP', - 'SPR', 'SPS', - 'SPU', - 'SPW', - 'SPY', - 'SQA', - 'SQD', - 'SQG', - 'SQH', - 'SQJ', - 'SQL', - 'SQN', - 'SQO', - 'SQQ', - 'SQR', - 'SQW', 'SQX', - 'SQZ', - 'SRA', - 'SRE', - 'SRG', - 'SRH', - 'SRI', 'SRJ', 'SRN', - 'SRP', - 'SRQ', - 'SRT', - 'SRX', - 'SRY', - 'SRZ', 'SSA', - 'SSC', - 'SSE', - 'SSF', - 'SSG', - 'SSH', - 'SSI', - 'SSJ', 'SSN', - 'SSR', - 'SST', - 'SSY', - 'SSZ', - 'STA', 'STB', - 'STC', - 'STD', - 'STE', - 'STG', - 'STI', - 'STJ', 'STK', - 'STL', - 'STM', - 'STN', - 'STP', - 'STR', - 'STS', - 'STT', - 'STV', - 'STW', - 'STX', - 'STY', - 'STZ', - 'SUA', 'SUB', - 'SUF', - 'SUG', - 'SUI', - 'SUJ', - 'SUK', 'SUL', 'SUN', - 'SUP', - 'SUR', - 'SUS', 'SUU', 'SUV', 'SUX', 'SUY', 'SVA', - 'SVB', - 'SVD', - 'SVG', - 'SVH', - 'SVI', - 'SVJ', - 'SVL', - 'SVN', - 'SVO', - 'SVP', - 'SVQ', - 'SVU', - 'SVW', - 'SVX', - 'SVZ', - 'SWA', - 'SWC', - 'SWD', 'SWF', - 'SWH', - 'SWJ', 'SWO', - 'SWP', - 'SWQ', - 'SWS', - 'SWT', - 'SWU', - 'SWX', - 'SXB', - 'SXE', - 'SXF', - 'SXI', 'SXJ', - 'SXK', - 'SXL', 'SXM', - 'SXN', 'SXO', - 'SXQ', 'SXR', - 'SXV', - 'SXX', - 'SXZ', 'SYA', 'SYD', - 'SYH', - 'SYJ', 'SYM', - 'SYO', - 'SYP', - 'SYQ', - 'SYR', - 'SYS', - 'SYT', - 'SYU', - 'SYW', 'SYX', 'SYY', - 'SYZ', - 'SZA', - 'SZB', - 'SZF', - 'SZG', 'SZJ', 'SZK', - 'SZL', - 'SZR', - 'SZS', - 'SZT', - 'SZV', - 'SZW', - 'SZX', 'SZY', - 'SZZ', 'TAB', - 'TAC', - 'TAE', - 'TAF', - 'TAG', 'TAH', - 'TAI', - 'TAK', - 'TAM', - 'TAO', - 'TAP', - 'TAR', - 'TAS', - 'TAT', 'TAY', 'TAZ', 'TBB', - 'TBF', - 'TBG', - 'TBH', - 'TBI', - 'TBJ', - 'TBN', - 'TBO', - 'TBP', - 'TBR', - 'TBS', 'TBT', - 'TBU', - 'TBW', - 'TBZ', - 'TCA', - 'TCB', - 'TCC', 'TCE', - 'TCG', - 'TCH', 'TCL', - 'TCM', - 'TCN', - 'TCO', - 'TCP', - 'TCQ', - 'TCS', - 'TCX', - 'TCZ', - 'TDD', - 'TDG', 'TDJ', - 'TDL', - 'TDR', - 'TDS', - 'TDX', - 'TEA', - 'TEB', 'TEC', - 'TED', - 'TEE', - 'TEF', - 'TEI', - 'TEM', 'TEN', - 'TEQ', - 'TER', - 'TET', 'TEU', - 'TEV', - 'TEX', - 'TEZ', 'TFF', - 'TFL', - 'TFN', 'TFS', 'TGA', 'TGD', - 'TGG', - 'TGH', - 'TGI', - 'TGJ', 'TGK', - 'TGM', - 'TGN', - 'TGO', 'TGP', - 'TGQ', - 'TGR', - 'TGT', - 'TGU', - 'TGZ', 'THE', - 'THF', - 'THG', 'THL', - 'THN', - 'THO', - 'THQ', - 'THR', - 'THS', - 'THU', - 'THX', - 'THZ', - 'TIA', 'TID', - 'TIE', - 'TIF', - 'TIH', - 'TII', - 'TIJ', - 'TIK', - 'TIM', 'TIN', - 'TIP', - 'TIQ', - 'TIR', 'TIU', - 'TIV', - 'TIW', - 'TIX', 'TIY', - 'TIZ', - 'TJA', - 'TJB', - 'TJG', - 'TJH', 'TJI', - 'TJK', 'TJL', - 'TJM', - 'TJQ', - 'TJS', 'TJU', - 'TJV', - 'TKA', 'TKC', - 'TKD', - 'TKF', - 'TKG', 'TKH', - 'TKJ', - 'TKK', 'TKN', 'TKP', - 'TKQ', - 'TKS', 'TKT', - 'TKU', - 'TKV', - 'TKX', - 'TLA', - 'TLC', - 'TLD', 'TLE', - 'TLH', - 'TLI', - 'TLJ', - 'TLK', - 'TLL', - 'TLM', - 'TLN', - 'TLQ', - 'TLS', - 'TLU', - 'TLV', - 'TLX', - 'TMA', - 'TMB', - 'TMC', - 'TME', - 'TMF', - 'TMG', - 'TMH', - 'TMI', - 'TMJ', - 'TML', 'TMM', 'TMN', - 'TMO', - 'TMP', - 'TMR', - 'TMS', - 'TMT', - 'TMU', - 'TMW', - 'TMX', - 'TNA', 'TNC', - 'TND', - 'TNE', - 'TNF', - 'TNG', - 'TNH', - 'TNI', - 'TNJ', 'TNM', - 'TNN', 'TNR', - 'TNT', - 'TNW', - 'TNX', 'TOA', - 'TOB', - 'TOC', - 'TOD', 'TOE', 'TOF', - 'TOG', - 'TOH', 'TOI', - 'TOJ', - 'TOL', 'TOM', - 'TOO', 'TOP', - 'TOQ', 'TOS', - 'TOT', - 'TOU', 'TOW', - 'TOY', - 'TPA', 'TPC', - 'TPE', 'TPF', - 'TPH', - 'TPJ', - 'TPL', 'TPN', - 'TPP', - 'TPQ', - 'TPS', - 'TQD', - 'TQL', 'TQQ', - 'TQS', - 'TRA', - 'TRC', 'TRD', - 'TRE', - 'TRF', - 'TRG', - 'TRI', - 'TRK', 'TRM', - 'TRN', - 'TRO', - 'TRQ', 'TRR', - 'TRS', - 'TRU', - 'TRV', 'TRW', 'TRZ', - 'TSA', - 'TSB', 'TSE', - 'TSF', - 'TSH', - 'TSJ', - 'TSL', - 'TSM', - 'TSN', 'TSR', - 'TST', - 'TSU', - 'TSV', - 'TSX', - 'TSY', - 'TTA', - 'TTB', - 'TTC', - 'TTD', 'TTE', - 'TTG', - 'TTH', 'TTI', - 'TTJ', - 'TTL', - 'TTN', 'TTQ', - 'TTR', - 'TTT', - 'TTU', - 'TUA', 'TUB', - 'TUC', - 'TUD', - 'TUF', - 'TUG', - 'TUI', - 'TUK', - 'TUL', - 'TUM', - 'TUN', 'TUO', - 'TUP', - 'TUR', 'TUS', - 'TUU', - 'TUV', - 'TVA', - 'TVC', - 'TVF', 'TVI', - 'TVL', - 'TVU', - 'TVY', - 'TWB', - 'TWF', - 'TWT', - 'TWU', - 'TWZ', - 'TXF', - 'TXG', - 'TXK', - 'TXL', - 'TXN', - 'TYB', - 'TYF', 'TYL', 'TYM', - 'TYN', - 'TYR', - 'TYS', - 'TZL', - 'TZR', - 'TZX', - 'UAB', - 'UAH', - 'UAI', - 'UAK', - 'UAM', - 'UAP', - 'UAQ', - 'UAR', - 'UAS', 'UBA', 'UBB', - 'UBJ', - 'UBP', - 'UBT', - 'UCB', - 'UCK', - 'UCT', - 'UDD', - 'UDI', 'UDJ', - 'UDR', - 'UEL', - 'UEO', - 'UET', - 'UFA', - 'UGA', - 'UGC', - 'UGN', - 'UGO', - 'UGU', - 'UHE', - 'UIB', - 'UIH', - 'UII', - 'UIK', - 'UIN', - 'UIO', - 'UIP', - 'UJE', 'UKA', - 'UKB', - 'UKG', - 'UKI', - 'UKK', - 'UKS', - 'UKT', - 'UKX', - 'ULA', - 'ULB', - 'ULD', - 'ULG', - 'ULH', - 'ULK', - 'ULN', - 'ULO', - 'ULP', - 'ULQ', - 'ULU', - 'ULV', - 'ULY', - 'ULZ', - 'UMD', 'UME', - 'UMR', 'UMS', - 'UMU', - 'UNA', - 'UND', - 'UNG', 'UNI', - 'UNK', - 'UNN', 'UNT', - 'UOL', - 'UOS', - 'UOX', - 'UPB', - 'UPG', - 'UPL', - 'UPN', - 'UPP', - 'URA', - 'URC', - 'URD', 'URE', - 'URG', - 'URJ', - 'URO', - 'URS', - 'URT', - 'URY', - 'USA', - 'USH', - 'USI', - 'USK', - 'USM', - 'USN', - 'USQ', - 'USR', 'USS', 'UST', - 'USU', - 'UTA', - 'UTC', - 'UTH', - 'UTI', - 'UTK', - 'UTM', - 'UTN', 'UTO', - 'UTP', - 'UTS', - 'UTT', - 'UTW', - 'UUA', - 'UUD', - 'UUK', - 'UUN', - 'UUS', - 'UVA', - 'UVE', 'UVF', - 'UYL', - 'UYN', - 'UYU', - 'UZR', - 'UZU', - 'VAA', - 'VAD', - 'VAF', - 'VAG', - 'VAI', - 'VAK', 'VAL', - 'VAM', - 'VAN', 'VAO', - 'VAR', - 'VAS', - 'VAV', - 'VAW', - 'VBA', - 'VBG', - 'VBP', - 'VBS', - 'VBV', - 'VBY', - 'VCA', - 'VCD', - 'VCE', - 'VCL', - 'VCP', - 'VCR', - 'VCS', - 'VCT', - 'VCV', - 'VDA', - 'VDB', - 'VDC', - 'VDE', 'VDH', 'VDI', 'VDM', 'VDP', - 'VDR', - 'VDS', - 'VDY', - 'VDZ', 'VEE', - 'VEL', 'VER', - 'VEY', - 'VFA', 'VGA', - 'VGD', - 'VGO', - 'VGT', - 'VGZ', - 'VHC', - 'VHM', - 'VHV', - 'VHY', - 'VHZ', - 'VIC', - 'VIE', - 'VIG', - 'VII', - 'VIJ', - 'VIL', - 'VIN', - 'VIR', - 'VIS', - 'VIT', 'VIX', - 'VIY', - 'VKG', - 'VKO', - 'VKT', - 'VLC', - 'VLD', - 'VLG', 'VLI', - 'VLK', - 'VLL', - 'VLM', 'VLN', 'VLP', 'VLR', - 'VLS', - 'VLU', - 'VLV', 'VLY', - 'VME', - 'VMU', - 'VNA', 'VNC', - 'VNE', 'VNO', - 'VNS', - 'VNT', - 'VNX', - 'VNY', 'VOD', - 'VOG', 'VOH', - 'VOK', - 'VOL', - 'VOZ', - 'VPE', - 'VPN', - 'VPS', - 'VPY', - 'VPZ', - 'VQQ', - 'VQS', - 'VRA', - 'VRB', - 'VRC', - 'VRE', - 'VRK', - 'VRL', - 'VRN', - 'VRO', - 'VRU', - 'VRY', - 'VSA', - 'VSE', - 'VSG', - 'VST', - 'VTB', - 'VTE', 'VTM', - 'VTN', 'VTU', 'VTZ', - 'VUP', - 'VUS', - 'VVC', - 'VVI', - 'VVO', - 'VVZ', - 'VXC', - 'VXE', 'VXO', - 'VYI', 'VYS', 'WAA', - 'WAE', - 'WAF', - 'WAG', 'WAI', - 'WAL', 'WAM', - 'WAQ', 'WAR', - 'WAT', - 'WAW', - 'WBG', - 'WBM', - 'WBQ', - 'WBU', 'WBW', - 'WCH', 'WDH', - 'WDR', - 'WDS', 'WEF', - 'WEH', 'WEI', - 'WFI', - 'WFK', - 'WGA', - 'WGE', - 'WGN', - 'WGP', - 'WGT', - 'WHF', - 'WHK', - 'WHP', - 'WHU', - 'WIC', - 'WIE', - 'WIK', - 'WIL', 'WIN', - 'WIO', - 'WIR', - 'WJF', - 'WJR', - 'WJU', - 'WKA', 'WKB', - 'WKF', - 'WKI', 'WKJ', - 'WKK', 'WKL', 'WKR', - 'WLD', - 'WLG', - 'WLH', 'WLK', - 'WLS', 'WMA', - 'WMB', - 'WMC', 'WME', - 'WMH', - 'WMI', - 'WMN', - 'WMO', - 'WMP', 'WMR', - 'WMT', - 'WMX', - 'WNA', - 'WNN', - 'WNP', - 'WNR', - 'WNS', - 'WNZ', - 'WOE', 'WOL', 'WOS', - 'WOT', 'WPB', - 'WPC', 'WPR', - 'WPU', - 'WRB', - 'WRE', - 'WRG', - 'WRI', 'WRL', - 'WRO', 'WRT', - 'WRY', - 'WRZ', - 'WSD', 'WSN', - 'WSO', - 'WSP', - 'WSR', - 'WST', - 'WSY', - 'WSZ', - 'WTA', - 'WTB', - 'WTK', - 'WTN', - 'WTS', - 'WTZ', - 'WUA', - 'WUH', - 'WUN', 'WUS', - 'WUT', 'WUU', 'WUX', - 'WUZ', - 'WVB', - 'WVI', 'WVK', - 'WVN', - 'WWA', - 'WWD', - 'WWK', - 'WWR', 'WWY', 'WXN', - 'WYA', - 'WYE', - 'WYN', - 'WYS', - 'XAB', - 'XAP', - 'XAU', - 'XBE', - 'XBJ', - 'XCH', - 'XCR', - 'XCZ', - 'XEN', 'XFN', 'XFW', - 'XGN', - 'XGR', - 'XIC', - 'XIJ', - 'XIL', - 'XIQ', - 'XIY', - 'XJD', - 'XJM', - 'XKH', - 'XKS', - 'XLB', - 'XLS', - 'XMC', - 'XME', - 'XMH', - 'XMN', - 'XMS', - 'XMW', 'XMY', - 'XNA', - 'XNN', - 'XOG', 'XPK', - 'XPL', 'XPP', - 'XQC', - 'XQP', - 'XRH', - 'XRR', - 'XRY', - 'XSB', - 'XSC', - 'XSD', - 'XSI', - 'XSP', 'XTG', - 'XTL', - 'XTO', - 'XUZ', - 'XVS', - 'XXN', - 'XYA', 'XYE', - 'YAA', - 'YAB', 'YAC', - 'YAG', - 'YAH', - 'YAI', - 'YAK', 'YAL', - 'YAM', - 'YAO', - 'YAP', - 'YAS', - 'YAT', - 'YAX', - 'YAY', - 'YAZ', - 'YBA', - 'YBB', - 'YBC', - 'YBE', - 'YBG', - 'YBI', - 'YBK', - 'YBL', - 'YBO', 'YBP', 'YBR', - 'YBS', - 'YBT', - 'YBV', - 'YBW', - 'YBX', - 'YBY', - 'YCB', 'YCC', 'YCD', 'YCE', - 'YCG', - 'YCH', - 'YCK', - 'YCL', - 'YCM', - 'YCN', - 'YCO', - 'YCQ', - 'YCR', 'YCS', - 'YCT', - 'YCU', - 'YCW', - 'YCY', - 'YDA', - 'YDB', - 'YDF', - 'YDG', - 'YDL', - 'YDN', - 'YDO', - 'YDP', - 'YDQ', - 'YDT', - 'YEC', - 'YEG', 'YEI', - 'YEK', - 'YEL', 'YEM', - 'YEN', - 'YEO', - 'YER', 'YES', - 'YET', - 'YEU', - 'YEV', 'YEY', - 'YFA', - 'YFB', 'YFC', 'YFE', - 'YFH', - 'YFJ', - 'YFO', - 'YFR', - 'YFS', - 'YFX', - 'YGB', - 'YGG', - 'YGH', - 'YGJ', - 'YGK', - 'YGL', - 'YGM', 'YGO', - 'YGP', - 'YGQ', - 'YGR', - 'YGT', - 'YGV', - 'YGW', - 'YGX', - 'YGZ', - 'YHA', - 'YHB', - 'YHD', - 'YHE', - 'YHF', - 'YHI', - 'YHK', 'YHM', 'YHN', 'YHO', - 'YHP', - 'YHR', - 'YHT', - 'YHU', - 'YHY', - 'YHZ', - 'YIB', 'YIC', - 'YIE', 'YIF', - 'YIH', - 'YIK', 'YIN', - 'YIO', - 'YIP', - 'YIV', - 'YIW', - 'YJF', - 'YJN', - 'YJP', - 'YJT', - 'YKA', - 'YKF', - 'YKG', - 'YKH', 'YKJ', - 'YKL', 'YKM', - 'YKN', - 'YKO', - 'YKQ', - 'YKS', - 'YKU', 'YKX', - 'YKY', 'YKZ', 'YLC', - 'YLD', - 'YLE', - 'YLH', 'YLI', 'YLJ', - 'YLK', - 'YLL', - 'YLR', - 'YLT', - 'YLW', - 'YLY', - 'YMA', - 'YME', - 'YMG', - 'YMH', - 'YMJ', 'YML', - 'YMM', - 'YMN', - 'YMO', 'YMS', - 'YMT', - 'YMW', - 'YMX', - 'YNA', - 'YNB', 'YNC', - 'YND', 'YNE', - 'YNG', 'YNJ', - 'YNL', - 'YNM', - 'YNO', - 'YNP', - 'YNS', - 'YNT', - 'YNY', - 'YNZ', - 'YOA', - 'YOC', - 'YOD', - 'YOG', - 'YOH', 'YOJ', - 'YOL', - 'YOO', - 'YOP', - 'YOS', - 'YOW', 'YPA', - 'YPC', - 'YPD', - 'YPE', 'YPG', 'YPH', - 'YPJ', - 'YPL', 'YPM', - 'YPN', - 'YPO', 'YPQ', - 'YPR', - 'YPS', - 'YPW', - 'YPX', - 'YPY', - 'YQA', - 'YQB', - 'YQC', - 'YQD', - 'YQF', - 'YQG', - 'YQH', - 'YQI', - 'YQK', - 'YQL', - 'YQM', - 'YQN', 'YQQ', - 'YQR', 'YQS', - 'YQT', - 'YQU', - 'YQV', - 'YQW', - 'YQX', - 'YQY', - 'YQZ', - 'YRA', 'YRB', - 'YRF', - 'YRG', - 'YRI', - 'YRJ', - 'YRL', - 'YRM', - 'YRO', - 'YRQ', - 'YRS', - 'YRT', - 'YRV', - 'YSB', 'YSC', - 'YSD', - 'YSE', - 'YSF', - 'YSG', - 'YSH', - 'YSJ', - 'YSK', - 'YSL', - 'YSM', 'YSN', 'YSO', - 'YSP', - 'YSQ', 'YSR', - 'YST', - 'YSU', - 'YSY', - 'YTA', 'YTD', - 'YTE', - 'YTF', - 'YTH', 'YTL', - 'YTM', - 'YTQ', - 'YTR', - 'YTS', - 'YTY', - 'YTZ', - 'YUA', 'YUB', - 'YUD', - 'YUE', - 'YUL', - 'YUM', 'YUS', - 'YUT', 'YUX', 'YUY', - 'YVA', - 'YVB', - 'YVC', 'YVE', - 'YVG', 'YVM', 'YVO', 'YVP', - 'YVQ', - 'YVR', 'YVT', - 'YVV', - 'YVZ', 'YWA', - 'YWB', - 'YWG', 'YWH', - 'YWJ', 'YWK', 'YWL', - 'YWM', - 'YWP', - 'YWS', - 'YWY', 'YXC', - 'YXD', - 'YXE', - 'YXH', 'YXJ', - 'YXK', - 'YXL', - 'YXN', - 'YXP', 'YXQ', - 'YXR', 'YXS', - 'YXT', - 'YXU', - 'YXX', - 'YXY', - 'YXZ', 'YYB', - 'YYC', 'YYD', - 'YYE', - 'YYF', - 'YYG', - 'YYH', 'YYJ', 'YYL', - 'YYN', - 'YYQ', - 'YYR', - 'YYT', - 'YYU', - 'YYW', - 'YYY', 'YYZ', - 'YZD', - 'YZE', 'YZF', 'YZG', - 'YZH', 'YZP', 'YZR', - 'YZS', 'YZT', - 'YZU', - 'YZV', - 'YZW', - 'YZX', - 'YZY', - 'YZZ', - 'ZAC', - 'ZAD', - 'ZAG', 'ZAH', - 'ZAJ', 'ZAL', - 'ZAM', - 'ZAO', - 'ZAR', - 'ZAT', - 'ZAZ', - 'ZBF', - 'ZBM', - 'ZBO', - 'ZBR', - 'ZBY', - 'ZCL', - 'ZCN', - 'ZCO', 'ZEC', - 'ZEM', - 'ZER', - 'ZFA', - 'ZFD', 'ZFM', - 'ZFN', 'ZGF', 'ZGI', - 'ZGR', - 'ZGS', - 'ZGU', - 'ZHA', - 'ZHI', - 'ZHY', 'ZIA', - 'ZIC', - 'ZIG', - 'ZIH', - 'ZIN', - 'ZIS', - 'ZIX', 'ZJG', 'ZJI', - 'ZJN', - 'ZKB', - 'ZKE', - 'ZKG', 'ZKP', - 'ZLO', - 'ZLT', - 'ZMG', - 'ZMH', - 'ZMM', - 'ZMT', - 'ZNA', - 'ZND', - 'ZNE', - 'ZNF', - 'ZNZ', - 'ZOS', 'ZPB', - 'ZPC', - 'ZPH', - 'ZQL', - 'ZQN', - 'ZQW', - 'ZQZ', - 'ZRH', - 'ZRJ', 'ZSA', - 'ZSE', - 'ZSJ', - 'ZST', - 'ZSW', 'ZTA', - 'ZTB', - 'ZTH', 'ZTM', - 'ZTR', - 'ZTU', - 'ZUC', - 'ZUH', - 'ZUM', - 'ZVA', - 'ZVK', - 'ZWA', - 'ZWL', - 'ZXT', - 'ZYI', - 'ZYL', - 'ZZU', - 'ZZV', ]; From f66b25642f3d493450a4046fcb865e89ec212a72 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 30 Dec 2022 20:46:03 -0700 Subject: [PATCH 15/54] Updated airline snapshot tests --- test/__snapshots__/airline.spec.ts.snap | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/__snapshots__/airline.spec.ts.snap b/test/__snapshots__/airline.spec.ts.snap index 59a3de00916..91d5652165f 100644 --- a/test/__snapshots__/airline.spec.ts.snap +++ b/test/__snapshots__/airline.spec.ts.snap @@ -1,6 +1,6 @@ // Vitest Snapshot v1 -exports[`airline > 42 > airportCode 1`] = `"IXV"`; +exports[`airline > 42 > airportCode 1`] = `"JRB"`; exports[`airline > 42 > recordLocator > allowNumerics 1`] = `"DTY7RT"`; @@ -18,7 +18,7 @@ exports[`airline > 42 > seat > aircraftType widebody 1`] = `"23H"`; exports[`airline > 42 > seat > noArgs 1`] = `"14E"`; -exports[`airline > 1211 > airportCode 1`] = `"YBI"`; +exports[`airline > 1211 > airportCode 1`] = `"YHO"`; exports[`airline > 1211 > recordLocator > allowNumerics 1`] = `"XGWT86"`; @@ -36,7 +36,7 @@ exports[`airline > 1211 > seat > aircraftType widebody 1`] = `"56E"`; exports[`airline > 1211 > seat > noArgs 1`] = `"33C"`; -exports[`airline > 1337 > airportCode 1`] = `"FPO"`; +exports[`airline > 1337 > airportCode 1`] = `"GFN"`; exports[`airline > 1337 > recordLocator > allowNumerics 1`] = `"AK68AJ"`; From 82ed7c7bc1d5246d426d367c6e144dd8abcea762 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sat, 31 Dec 2022 14:40:45 -0700 Subject: [PATCH 16/54] Updated documentation and added aircraftType() function --- src/modules/airline/index.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index b8b9be55f37..678125ab7cd 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -39,7 +39,7 @@ export class AirlineModule { * Generates a random IATA airport code. * * @example - * faker.airline.airportCode() // 'JFK' + * faker.airline.airportCode() // 'CLT' * * @since 8.0.0 */ @@ -50,14 +50,14 @@ export class AirlineModule { } /** - * Generates a random record locator. + * 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`. * - * @see https://en.wikipedia.org/wiki/Record_locator - * * @example * faker.airline.recordLocator() // 'KIFRWE' * faker.airline.recordLocator({ allowNumerics: true }) // 'E5TYEM' @@ -113,4 +113,16 @@ export class AirlineModule { const seat = this.faker.helpers.arrayElement(allowedSeats); return `${row}${seat}`; } + + /** + * Returns a random aircraft type. + * + * @example + * faker.airline.aircraftType() // AircraftType.Narrowbody + * + * @since 8.0.0 + */ + aircraftType(): AircraftType { + return this.faker.helpers.objectValue(Aircraft); + } } From 0d833ed7ccf82163516dd9e7253b860a4adc8954 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sat, 31 Dec 2022 14:40:57 -0700 Subject: [PATCH 17/54] Added tests for aircraftType() function --- test/__snapshots__/airline.spec.ts.snap | 6 +++++ test/airline.spec.ts | 30 +++++++++++++++++++------ 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/test/__snapshots__/airline.spec.ts.snap b/test/__snapshots__/airline.spec.ts.snap index 91d5652165f..703578fba49 100644 --- a/test/__snapshots__/airline.spec.ts.snap +++ b/test/__snapshots__/airline.spec.ts.snap @@ -1,5 +1,7 @@ // Vitest Snapshot v1 +exports[`airline > 42 > aircraftType 1`] = `"regional"`; + exports[`airline > 42 > airportCode 1`] = `"JRB"`; exports[`airline > 42 > recordLocator > allowNumerics 1`] = `"DTY7RT"`; @@ -18,6 +20,8 @@ exports[`airline > 42 > seat > aircraftType widebody 1`] = `"23H"`; exports[`airline > 42 > seat > noArgs 1`] = `"14E"`; +exports[`airline > 1211 > aircraftType 1`] = `"widebody"`; + exports[`airline > 1211 > airportCode 1`] = `"YHO"`; exports[`airline > 1211 > recordLocator > allowNumerics 1`] = `"XGWT86"`; @@ -36,6 +40,8 @@ exports[`airline > 1211 > seat > aircraftType widebody 1`] = `"56E"`; exports[`airline > 1211 > seat > noArgs 1`] = `"33C"`; +exports[`airline > 1337 > aircraftType 1`] = `"narrowbody"`; + exports[`airline > 1337 > airportCode 1`] = `"GFN"`; exports[`airline > 1337 > recordLocator > allowNumerics 1`] = `"AK68AJ"`; diff --git a/test/airline.spec.ts b/test/airline.spec.ts index 7e5dbc5839c..1edc2210cb9 100644 --- a/test/airline.spec.ts +++ b/test/airline.spec.ts @@ -1,5 +1,5 @@ import { afterEach, describe, expect, it } from 'vitest'; -import { faker, Aircraft } from '../src'; +import { Aircraft, faker } from '../src'; import { seededTests } from './support/seededRuns'; const NON_SEEDED_BASED_RUN = 5; @@ -10,7 +10,7 @@ describe('airline', () => { }); seededTests(faker, 'airline', (t) => { - t.it('airportCode'); + t.itEach('airportCode', 'aircraftType'); t.describe('recordLocator', (t) => { t.it('noArgs') .it('allowNumerics', { allowNumerics: true }) @@ -45,21 +45,28 @@ describe('airline', () => { expect(recordLocator).toMatch(/^[A-HJ-KM-NP-Z]{6}$/); }); it('should allow numeric characters', () => { - const recordLocator = faker.airline.recordLocator({ allowNumerics: true }); + const recordLocator = faker.airline.recordLocator({ + allowNumerics: true, + }); expect(recordLocator).toMatch(/^[2-9A-HJ-KM-NP-Z]{6}$/); }); it('should allow visually similar characters', () => { - const recordLocator = faker.airline.recordLocator({ allowVisuallySimilarCharacters: true }); + const recordLocator = faker.airline.recordLocator({ + allowVisuallySimilarCharacters: true, + }); expect(recordLocator).toMatch(/^[A-Z]{6}$/); }); it('should allow both numeric and visually similar characters', () => { - const recordLocator = faker.airline.recordLocator({ allowNumerics: true, allowVisuallySimilarCharacters: true }); + const recordLocator = faker.airline.recordLocator({ + allowNumerics: true, + allowVisuallySimilarCharacters: true, + }); expect(recordLocator).toMatch(/^[0-9A-Z]{6}$/); }); }); describe(`seat()`, () => { - const seatRegex = /^(\d{1,2})([A-K])$/ + const seatRegex = /^(\d{1,2})([A-K])$/; it('should return a random narrowbody seat when not passing an argument', () => { const seat = faker.airline.seat(); const matchResult = seat.match(seatRegex); @@ -70,7 +77,9 @@ describe('airline', () => { expect(seatLetter).toMatch(/^[A-F]$/); }); it('should return a random narrowbody seat', () => { - const seat = faker.airline.seat({ aircraftType: Aircraft.Narrowbody }); + const seat = faker.airline.seat({ + aircraftType: Aircraft.Narrowbody, + }); const matchResult = seat.match(seatRegex); expect(matchResult).not.toBeNull(); const row = matchResult[1]; @@ -97,6 +106,13 @@ describe('airline', () => { expect(seatLetter).toMatch(/^[A-HJ-K]$/); }); }); + + describe(`aircraftType()`, () => { + it('should return a random aircraft type from the Aircraft enum', () => { + const aircraft = faker.airline.aircraftType(); + expect(Object.values(Aircraft)).toContain(aircraft); + }); + }); } }); }); From 58daf6e8919a0fc086f5d93834024a11abed7b01 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sat, 31 Dec 2022 14:41:06 -0700 Subject: [PATCH 18/54] Updated airline example --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 534fe6ba19c..409db3b1424 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ The API covers the following modules: | Module | Example | Output | | -------- | --------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| Airline | `faker.airline.recordLocator()` | KIFRWE +| Airline | `faker.airline.airportCode()` | CLT | | Animal | `faker.animal.cat()` | Norwegian Forest Cat | | Color | `faker.color.rgb()` | #cdfcdc | | Commerce | `faker.commerce.product()` | Polo t-shirt | From 9cc0a5415b8143950c76f5d73af03832fa872638 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sat, 31 Dec 2022 14:44:22 -0700 Subject: [PATCH 19/54] Cleaned up linter issues --- src/modules/airline/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 678125ab7cd..b9e22248dc2 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -31,6 +31,7 @@ export class AirlineModule { if (name === 'constructor' || typeof this[name] !== 'function') { continue; } + this[name] = this[name].bind(this); } } @@ -78,9 +79,11 @@ export class AirlineModule { if (!allowNumerics) { excludedChars.push(...numerics); } + if (!allowVisuallySimilarCharacters) { excludedChars.push(...visuallySimilarCharacters); } + return this.faker.string.alphanumeric({ length: 6, casing: 'upper', From 8efacb03c4ad0df74e26cb535dd824938c0108ec Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sun, 1 Jan 2023 01:34:40 -0700 Subject: [PATCH 20/54] Fixed JSDoc for aircraftType --- src/modules/airline/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index b9e22248dc2..b9ff139b92f 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -121,7 +121,7 @@ export class AirlineModule { * Returns a random aircraft type. * * @example - * faker.airline.aircraftType() // AircraftType.Narrowbody + * faker.airline.aircraftType() // 'narrowbody' * * @since 8.0.0 */ From 66c6362eab8a37ae30b03ec9b71b12ff673c783f Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 10:33:53 -0700 Subject: [PATCH 21/54] Updated airports to include name and IATA code --- src/locales/en/airline/airport.ts | 1123 ++++------------------------- src/modules/airline/index.ts | 23 +- 2 files changed, 141 insertions(+), 1005 deletions(-) diff --git a/src/locales/en/airline/airport.ts b/src/locales/en/airline/airport.ts index 08f76e714d2..805a4aafb8d 100644 --- a/src/locales/en/airline/airport.ts +++ b/src/locales/en/airline/airport.ts @@ -1,1002 +1,121 @@ -export default [ - 'AAK', - 'AAO', - 'AAY', - 'ABY', - 'ACD', - 'ACZ', - 'ADD', - 'ADE', - 'ADF', - 'ADJ', - 'ADM', - 'ADW', - 'AEP', - 'AFW', - 'AGC', - 'AGH', - 'AGN', - 'AGT', - 'AIA', - 'AIN', - 'AKJ', - 'AKL', - 'AKO', - 'AKP', - 'ALY', - 'AMA', - 'AMC', - 'AMI', - 'ANF', - 'ANM', - 'ANU', - 'ANV', - 'AOR', - 'APK', - 'APQ', - 'AQB', - 'AQG', - 'AQJ', - 'ARA', - 'ARI', - 'ARY', - 'ASA', - 'ASM', - 'ASO', - 'AST', - 'ASV', - 'ATB', - 'ATF', - 'ATJ', - 'AUH', - 'AUO', - 'AUQ', - 'AUW', - 'AWA', - 'AXA', - 'AXJ', - 'AXN', - 'AXP', - 'AZD', - 'BAY', - 'BBC', - 'BBJ', - 'BBL', - 'BBO', - 'BBU', - 'BDA', - 'BDD', - 'BDM', - 'BEL', - 'BEM', - 'BEN', - 'BEO', - 'BEY', - 'BFF', - 'BFH', - 'BFK', - 'BFS', - 'BFV', - 'BGI', - 'BGY', - 'BHB', - 'BHD', - 'BHE', - 'BHG', - 'BHS', - 'BHY', - 'BIO', - 'BIY', - 'BJA', - 'BJI', - 'BJL', - 'BJM', - 'BJU', - 'BJZ', - 'BKI', - 'BKZ', - 'BLB', - 'BLK', - 'BLQ', - 'BNA', - 'BNB', - 'BNI', - 'BNO', - 'BOC', - 'BOJ', - 'BOO', - 'BPH', - 'BPI', - 'BQL', - 'BRS', - 'BRV', - 'BTJ', - 'BTM', - 'BTW', - 'BTZ', - 'BUA', - 'BUJ', - 'BUO', - 'BVY', - 'BWK', - 'BXP', - 'BYI', - 'BYR', - 'BYT', - 'BZG', - 'BZK', - 'BZO', - 'BZU', - 'BZV', - 'CAB', - 'CAJ', - 'CAX', - 'CBJ', - 'CCK', - 'CCL', - 'CGI', - 'CGN', - 'CGO', - 'CGZ', - 'CHA', - 'CIU', - 'CIZ', - 'CJB', - 'CJC', - 'CJF', - 'CJN', - 'CKL', - 'CLD', - 'CLQ', - 'CLT', - 'CMJ', - 'CMN', - 'CNC', - 'CNI', - 'CNO', - 'CNQ', - 'CNR', - 'CNW', - 'CON', - 'COR', - 'CPB', - 'CQA', - 'CRA', - 'CRE', - 'CRW', - 'CSM', - 'CSO', - 'CTM', - 'CVQ', - 'CVT', - 'CWE', - 'CWT', - 'CYF', - 'CZF', - 'CZL', - 'CZX', - 'DAA', - 'DAD', - 'DAR', - 'DAU', - 'DAV', - 'DAX', - 'DCY', - 'DDG', - 'DFW', - 'DGP', - 'DGT', - 'DHI', - 'DKI', - 'DLK', - 'DMM', - 'DOM', - 'DRG', - 'DRI', - 'DRK', - 'DRS', - 'DRT', - 'DSE', - 'DUB', - 'DUE', - 'DUM', - 'DWH', - 'DXB', - 'DYS', - 'DZN', - 'EAU', - 'ECA', - 'ECG', - 'EGH', - 'EHL', - 'EIL', - 'EKB', - 'ELB', - 'ELI', - 'ELM', - 'ENK', - 'ENV', - 'EPA', - 'EQS', - 'ERI', - 'ERM', - 'ESD', - 'ESR', - 'ETH', - 'EUM', - 'EUX', - 'EVN', - 'EWK', - 'EWN', - 'EZV', - 'FAH', - 'FAN', - 'FAV', - 'FBR', - 'FCM', - 'FCO', - 'FCS', - 'FDF', - 'FEL', - 'FJR', - 'FLR', - 'FLV', - 'FLZ', - 'FMA', - 'FMN', - 'FNC', - 'FNJ', - 'FOD', - 'FRY', - 'FSM', - 'FTU', - 'FWA', - 'GAI', - 'GBB', - 'GBT', - 'GBZ', - 'GCC', - 'GCH', - 'GDQ', - 'GES', - 'GEX', - 'GFL', - 'GFN', - 'GGM', - 'GHA', - 'GHC', - 'GIL', - 'GIU', - 'GLO', - 'GLS', - 'GLU', - 'GND', - 'GOA', - 'GOP', - 'GPN', - 'GPS', - 'GRI', - 'GRJ', - 'GRK', - 'GRW', - 'GSO', - 'GSQ', - 'GTI', - 'GTR', - 'GUA', - 'GUB', - 'GUI', - 'GUW', - 'GVT', - 'GVX', - 'GWD', - 'GXH', - 'GYA', - 'GYD', - 'GYI', - 'HAM', - 'HBG', - 'HDF', - 'HDI', - 'HEH', - 'HEK', - 'HFT', - 'HHI', - 'HHQ', - 'HIB', - 'HII', - 'HIM', - 'HKY', - 'HLG', - 'HLI', - 'HLN', - 'HLP', - 'HMJ', - 'HMR', - 'HON', - 'HOS', - 'HOT', - 'HRE', - 'HSH', - 'HSK', - 'HSV', - 'HTR', - 'HTV', - 'HUT', - 'HUV', - 'HUY', - 'HYC', - 'HYV', - 'HZH', - 'IAN', - 'IAR', - 'IBZ', - 'ICC', - 'IEG', - 'IES', - 'IFH', - 'IFN', - 'IGD', - 'ILG', - 'ILZ', - 'IMT', - 'INK', - 'INN', - 'INS', - 'INT', - 'IPC', - 'IPN', - 'IQN', - 'IRG', - 'IRJ', - 'ISK', - 'ISN', - 'ISP', - 'IVR', - 'IXD', - 'IXE', - 'IXK', - 'IXM', - 'IXS', - 'IXW', - 'JAG', - 'JAV', - 'JDZ', - 'JEF', - 'JGD', - 'JHM', - 'JHQ', - 'JIQ', - 'JJM', - 'JKG', - 'JNG', - 'JNN', - 'JNX', - 'JNZ', - 'JRB', - 'JSR', - 'JST', - 'JUB', - 'JWA', - 'JYV', - 'KBS', - 'KCM', - 'KDT', - 'KEL', - 'KEM', - 'KES', - 'KGO', - 'KHI', - 'KHJ', - 'KHS', - 'KIS', - 'KIW', - 'KJH', - 'KJI', - 'KJP', - 'KKA', - 'KKH', - 'KKJ', - 'KKW', - 'KLC', - 'KLH', - 'KLN', - 'KNA', - 'KNG', - 'KNQ', - 'KOE', - 'KOQ', - 'KOT', - 'KPN', - 'KQT', - 'KRB', - 'KRL', - 'KRY', - 'KSD', - 'KSK', - 'KSN', - 'KSS', - 'KTG', - 'KTM', - 'KUM', - 'KVR', - 'KWB', - 'KWJ', - 'KWM', - 'KWN', - 'KYS', - 'KZR', - 'LAJ', - 'LAN', - 'LAU', - 'LBL', - 'LBV', - 'LBX', - 'LBZ', - 'LCJ', - 'LEC', - 'LEJ', - 'LEL', - 'LEW', - 'LFI', - 'LFQ', - 'LGA', - 'LGB', - 'LGD', - 'LGK', - 'LHV', - 'LIP', - 'LIQ', - 'LIR', - 'LIX', - 'LKV', - 'LLF', - 'LLI', - 'LMA', - 'LMM', - 'LOH', - 'LOO', - 'LOS', - 'LPC', - 'LQM', - 'LRU', - 'LRV', - 'LSC', - 'LSI', - 'LSS', - 'LTT', - 'LUQ', - 'LVO', - 'LXN', - 'LYH', - 'LYP', - 'LYU', - 'LZN', - 'LZO', - 'MAE', - 'MAF', - 'MAN', - 'MAS', - 'MAZ', - 'MBA', - 'MBG', - 'MBX', - 'MCP', - 'MCT', - 'MCV', - 'MCW', - 'MDK', - 'MDL', - 'MDZ', - 'MEH', - 'MER', - 'MFX', - 'MGB', - 'MGE', - 'MGH', - 'MGL', - 'MGY', - 'MHC', - 'MHQ', - 'MHX', - 'MIM', - 'MIV', - 'MJV', - 'MJZ', - 'MKQ', - 'MLA', - 'MLB', - 'MLE', - 'MLG', - 'MLL', - 'MME', - 'MMK', - 'MMU', - 'MNF', - 'MNJ', - 'MOG', - 'MOI', - 'MPW', - 'MQM', - 'MQN', - 'MQP', - 'MQQ', - 'MQS', - 'MRB', - 'MSA', - 'MSC', - 'MSH', - 'MSO', - 'MSS', - 'MSZ', - 'MTC', - 'MUB', - 'MUH', - 'MUN', - 'MUR', - 'MUX', - 'MVF', - 'MVR', - 'MWA', - 'MWC', - 'MXH', - 'MXV', - 'MYT', - 'MZP', - 'MZW', - 'NAK', - 'NAV', - 'NBO', - 'NCR', - 'NDD', - 'NEW', - 'NGF', - 'NGI', - 'NGZ', - 'NHD', - 'NHV', - 'NIB', - 'NJA', - 'NJK', - 'NKX', - 'NLF', - 'NOJ', - 'NOR', - 'NOS', - 'NPE', - 'NQY', - 'NTN', - 'NUX', - 'NXX', - 'NYI', - 'NYK', - 'NYU', - 'NYW', - 'OAL', - 'OBU', - 'OBY', - 'OCF', - 'OCN', - 'ODB', - 'ODO', - 'OER', - 'OGD', - 'OGS', - 'OGU', - 'OGX', - 'OJC', - 'OKA', - 'OKF', - 'OKJ', - 'OKK', - 'OKR', - 'OKU', - 'OLV', - 'OMA', - 'OMB', - 'OMD', - 'OMF', - 'OMR', - 'ONG', - 'ONO', - 'ONS', - 'OOK', - 'OPO', - 'ORD', - 'ORG', - 'ORH', - 'ORN', - 'OSC', - 'OSM', - 'OSY', - 'OTI', - 'OTK', - 'OTM', - 'OTR', - 'OUA', - 'OUH', - 'OVA', - 'OYL', - 'OZA', - 'OZZ', - 'PAP', - 'PAS', - 'PBL', - 'PBN', - 'PCB', - 'PCP', - 'PCS', - 'PDA', - 'PDK', - 'PEA', - 'PEH', - 'PEU', - 'PGA', - 'PHA', - 'PHE', - 'PLO', - 'PLV', - 'PMB', - 'PMK', - 'PMV', - 'PNB', - 'PNH', - 'PNY', - 'POG', - 'POJ', - 'POZ', - 'PPB', - 'PPL', - 'PPT', - 'PQC', - 'PQQ', - 'PRA', - 'PRB', - 'PRI', - 'PRU', - 'PRZ', - 'PSG', - 'PSH', - 'PSS', - 'PSY', - 'PTB', - 'PTM', - 'PUD', - 'PUY', - 'PXR', - 'PYH', - 'PZL', - 'QBC', - 'QLD', - 'QLS', - 'QOW', - 'QPG', - 'QRC', - 'QRO', - 'QSR', - 'RBA', - 'RBB', - 'RBK', - 'RBR', - 'RBX', - 'RCB', - 'RCY', - 'RDD', - 'RDO', - 'REC', - 'RGL', - 'RHV', - 'RIA', - 'RIB', - 'RIC', - 'RIL', - 'RIY', - 'RKT', - 'RME', - 'RMI', - 'RMS', - 'RNA', - 'RNT', - 'ROB', - 'RPB', - 'RSU', - 'RSW', - 'RTC', - 'RUS', - 'RVD', - 'RVY', - 'RYK', - 'RZS', - 'SAA', - 'SAD', - 'SAF', - 'SAN', - 'SAY', - 'SBB', - 'SBM', - 'SBP', - 'SBS', - 'SBU', - 'SBY', - 'SBZ', - 'SCF', - 'SCI', - 'SCY', - 'SDD', - 'SDN', - 'SDT', - 'SDY', - 'SEK', - 'SFF', - 'SGD', - 'SGN', - 'SHP', - 'SIF', - 'SIG', - 'SJL', - 'SJY', - 'SKA', - 'SKV', - 'SMK', - 'SNU', - 'SOT', - 'SPS', - 'SQX', - 'SRJ', - 'SRN', - 'SSA', - 'SSN', - 'STB', - 'STK', - 'SUB', - 'SUL', - 'SUN', - 'SUU', - 'SUV', - 'SUX', - 'SUY', - 'SVA', - 'SWF', - 'SWO', - 'SXJ', - 'SXM', - 'SXO', - 'SXR', - 'SYA', - 'SYD', - 'SYM', - 'SYX', - 'SYY', - 'SZJ', - 'SZK', - 'SZY', - 'TAB', - 'TAH', - 'TAY', - 'TAZ', - 'TBB', - 'TBT', - 'TCE', - 'TCL', - 'TDJ', - 'TEC', - 'TEN', - 'TEU', - 'TFF', - 'TFS', - 'TGA', - 'TGD', - 'TGK', - 'TGP', - 'THE', - 'THL', - 'TID', - 'TIN', - 'TIU', - 'TIY', - 'TJI', - 'TJL', - 'TJU', - 'TKC', - 'TKH', - 'TKN', - 'TKP', - 'TKT', - 'TLE', - 'TMM', - 'TMN', - 'TNC', - 'TNM', - 'TNR', - 'TOA', - 'TOE', - 'TOF', - 'TOI', - 'TOM', - 'TOP', - 'TOS', - 'TOW', - 'TPC', - 'TPF', - 'TPN', - 'TQQ', - 'TRD', - 'TRM', - 'TRR', - 'TRW', - 'TRZ', - 'TSE', - 'TSR', - 'TTE', - 'TTI', - 'TTQ', - 'TUB', - 'TUO', - 'TUS', - 'TVI', - 'TYL', - 'TYM', - 'UBA', - 'UBB', - 'UDJ', - 'UKA', - 'UME', - 'UMS', - 'UNI', - 'UNT', - 'URE', - 'USS', - 'UST', - 'UTO', - 'UVF', - 'VAL', - 'VAO', - 'VDH', - 'VDI', - 'VDM', - 'VDP', - 'VEE', - 'VER', - 'VGA', - 'VIX', - 'VLI', - 'VLN', - 'VLP', - 'VLR', - 'VLY', - 'VNC', - 'VNO', - 'VOD', - 'VOH', - 'VTM', - 'VTU', - 'VTZ', - 'VXO', - 'VYS', - 'WAA', - 'WAI', - 'WAM', - 'WAR', - 'WBW', - 'WDH', - 'WEF', - 'WEI', - 'WIN', - 'WKB', - 'WKJ', - 'WKL', - 'WKR', - 'WLK', - 'WMA', - 'WME', - 'WMR', - 'WOL', - 'WOS', - 'WPB', - 'WPR', - 'WRL', - 'WRT', - 'WSN', - 'WUS', - 'WUU', - 'WUX', - 'WVK', - 'WWY', - 'WXN', - 'XFN', - 'XFW', - 'XMY', - 'XPK', - 'XPP', - 'XTG', - 'XYE', - 'YAC', - 'YAL', - 'YBP', - 'YBR', - 'YCC', - 'YCD', - 'YCE', - 'YCS', - 'YEI', - 'YEM', - 'YES', - 'YEY', - 'YFC', - 'YFE', - 'YGO', - 'YHM', - 'YHN', - 'YHO', - 'YIC', - 'YIF', - 'YIN', - 'YKJ', - 'YKM', - 'YKX', - 'YKZ', - 'YLC', - 'YLI', - 'YLJ', - 'YML', - 'YMS', - 'YNC', - 'YNE', - 'YNJ', - 'YOJ', - 'YPA', - 'YPG', - 'YPH', - 'YPM', - 'YPQ', - 'YQQ', - 'YQS', - 'YRB', - 'YSC', - 'YSN', - 'YSO', - 'YSR', - 'YTD', - 'YTL', - 'YUB', - 'YUS', - 'YUX', - 'YUY', - 'YVE', - 'YVM', - 'YVO', - 'YVP', - 'YVT', - 'YWA', - 'YWH', - 'YWK', - 'YWL', - 'YXC', - 'YXJ', - 'YXQ', - 'YXS', - 'YYB', - 'YYD', - 'YYJ', - 'YYL', - 'YYZ', - 'YZF', - 'YZG', - 'YZP', - 'YZR', - 'YZT', - 'ZAH', - 'ZAL', - 'ZEC', - 'ZFM', - 'ZGF', - 'ZGI', - 'ZIA', - 'ZJG', - 'ZJI', - 'ZKP', - 'ZPB', - 'ZSA', - 'ZTA', - 'ZTM', -]; +// Generated from data at https://raw.githubusercontent.com/jpatokal/openflights/master/data/airports.dat +export default Object.freeze([ + { name: 'Auckland International Airport', iataCode: 'AKL' }, + { name: 'Amsterdam Airport Schiphol', iataCode: 'AMS' }, + { name: 'Stockholm-Arlanda Airport"', iataCode: 'ARN' }, + { name: 'Eleftherios Venizelos International Airport', iataCode: 'ATH' }, + { name: 'Hartsfield Jackson Atlanta International Airport', iataCode: 'ATL' }, + { name: 'Antalya International Airport', iataCode: 'AYT' }, + { name: 'Barcelona International Airport', iataCode: 'BCN' }, + { name: 'Suvarnabhumi Airport', iataCode: 'BKK' }, + { name: 'Brisbane International Airport","Brisbane', iataCode: 'BNE' }, + { name: 'El Dorado International Airport', iataCode: 'BOG' }, + { name: 'Chhatrapati Shivaji International Airport', iataCode: 'BOM' }, + { + name: 'General Edward Lawrence Logan International Airport', + iataCode: 'BOS', + }, + { name: 'Brussels Airport', iataCode: 'BRU' }, + { + name: 'Presidente Juscelino Kubistschek International Airport', + iataCode: 'BSB', + }, + { + name: 'Baltimore/Washington International Thurgood Marshall Airport', + iataCode: 'BWI', + }, + { name: 'Guangzhou Baiyun International Airport', iataCode: 'CAN' }, + { name: 'Charles de Gaulle International Airport', iataCode: 'CDG' }, + { name: 'Congonhas Airport', iataCode: 'CGH' }, + { name: 'Soekarno-Hatta International Airport', iataCode: 'CGK' }, + { name: 'Jeju International Airport', iataCode: 'CJU' }, + { name: 'Charlotte Douglas International Airport', iataCode: 'CLT' }, + { name: 'Copenhagen Kastrup Airport', iataCode: 'CPH' }, + { name: 'New Chitose Airport', iataCode: 'CTS' }, + { name: 'Chengdu Shuangliu International Airport', iataCode: 'CTU' }, + { name: 'Ronald Reagan Washington National Airport', iataCode: 'DCA' }, + { name: 'Indira Gandhi International Airport', iataCode: 'DEL' }, + { name: 'Denver International Airport', iataCode: 'DEN' }, + { name: 'Dallas Fort Worth International Airport', iataCode: 'DFW' }, + { name: 'Domodedovo International Airport', iataCode: 'DME' }, + { name: 'Hamad International Airport', iataCode: 'DOH' }, + { name: 'Detroit Metropolitan Wayne County Airport', iataCode: 'DTW' }, + { name: 'Dublin Airport', iataCode: 'DUB' }, + { name: 'Düsseldorf Airport', iataCode: 'DUS' }, + { name: 'Dubai International Airport', iataCode: 'DXB' }, + { name: 'Newark Liberty International Airport', iataCode: 'EWR' }, + { name: 'Leonardo da Vinci–Fiumicino Airport', iataCode: 'FCO' }, + { name: 'Fort Lauderdale Hollywood International Airport', iataCode: 'FLL' }, + { name: 'Frankfurt am Main Airport', iataCode: 'FRA' }, + { name: 'Fukuoka Airport', iataCode: 'FUK' }, + { name: 'Rio Galeão – Tom Jobim International Airport', iataCode: 'GIG' }, + { name: 'Gimpo International Airport', iataCode: 'GMP' }, + { + name: 'Guarulhos - Governador André Franco Montoro International Airport', + iataCode: 'GRU', + }, + { name: 'Helsinki Vantaa Airport', iataCode: 'HEL' }, + { name: 'Hangzhou Xiaoshan International Airport', iataCode: 'HGH' }, + { name: 'Hong Kong International Airport', iataCode: 'HKG' }, + { name: 'Tokyo Haneda International Airport', iataCode: 'HND' }, + { name: 'Washington Dulles International Airport', iataCode: 'IAD' }, + { name: 'George Bush Intercontinental Houston Airport', iataCode: 'IAH' }, + { name: 'Incheon International Airport', iataCode: 'ICN' }, + { name: 'Istanbul Airport', iataCode: 'IST' }, + { name: 'King Abdulaziz International Airport', iataCode: 'JED' }, + { name: 'John F Kennedy International Airport', iataCode: 'JFK' }, + { name: 'OR Tambo International Airport', iataCode: 'JNB' }, + { name: 'Kunming Changshui International Airport', iataCode: 'KMG' }, + { name: 'Kuala Lumpur International Airport', iataCode: 'KUL' }, + { name: 'McCarran International Airport', iataCode: 'LAS' }, + { name: 'Los Angeles International Airport', iataCode: 'LAX' }, + { name: 'La Guardia Airport', iataCode: 'LGA' }, + { name: 'London Gatwick Airport', iataCode: 'LGW' }, + { name: 'London Heathrow Airport', iataCode: 'LHR' }, + { + name: 'Humberto Delgado Airport (Lisbon Portela Airport)', + iataCode: 'LIS', + }, + { name: 'Adolfo Suárez Madrid–Barajas Airport', iataCode: 'MAD' }, + { name: 'Manchester Airport', iataCode: 'MAN' }, + { name: 'Orlando International Airport', iataCode: 'MCO' }, + { name: 'Chicago Midway International Airport', iataCode: 'MDW' }, + { name: 'Melbourne International Airport', iataCode: 'MEL' }, + { name: 'Licenciado Benito Juarez International Airport', iataCode: 'MEX' }, + { name: 'Miami International Airport', iataCode: 'MIA' }, + { name: 'Ninoy Aquino International Airport', iataCode: 'MNL' }, + { + name: 'Minneapolis-St Paul International/Wold-Chamberlain Airport', + iataCode: 'MSP', + }, + { name: 'Munich Airport', iataCode: 'MUC' }, + { name: 'Malpensa International Airport', iataCode: 'MXP' }, + { name: 'Narita International Airport', iataCode: 'NRT' }, + { name: "Chicago O'Hare International Airport", iataCode: 'ORD' }, + { name: 'Paris-Orly Airport', iataCode: 'ORY' }, + { name: 'Oslo Lufthavn', iataCode: 'OSL' }, + { name: 'Beijing Capital International Airport', iataCode: 'PEK' }, + { name: 'Philadelphia International Airport', iataCode: 'PHL' }, + { name: 'Phoenix Sky Harbor International Airport', iataCode: 'PHX' }, + { name: 'Palma De Mallorca Airport', iataCode: 'PMI' }, + { name: 'Shanghai Pudong International Airport', iataCode: 'PVG' }, + { name: 'King Khaled International Airport', iataCode: 'RUH' }, + { name: 'San Diego International Airport', iataCode: 'SAN' }, + { name: 'Seattle Tacoma International Airport', iataCode: 'SEA' }, + { name: 'San Francisco International Airport', iataCode: 'SFO' }, + { name: 'Shanghai Hongqiao International Airport', iataCode: 'SHA' }, + { name: 'Singapore Changi Airport', iataCode: 'SIN' }, + { name: 'Salt Lake City International Airport', iataCode: 'SLC' }, + { name: 'London Stansted Airport', iataCode: 'STN' }, + { name: 'Sheremetyevo International Airport', iataCode: 'SVO' }, + { name: 'Sydney Kingsford Smith International Airport', iataCode: 'SYD' }, + { name: "Shenzhen Bao'an International Airport", iataCode: 'SZX' }, + { name: 'Tampa International Airport', iataCode: 'TPA' }, + { name: 'Taiwan Taoyuan International Airport', iataCode: 'TPE' }, + { name: 'Berlin-Tegel Airport', iataCode: 'TXL' }, + { name: 'Vienna International Airport', iataCode: 'VIE' }, + { name: 'Xiamen Gaoqi International Airport', iataCode: 'XMN' }, + { name: 'Vancouver International Airport', iataCode: 'YVR' }, + { name: 'Lester B. Pearson International Airport', iataCode: 'YYZ' }, + { name: 'Zürich Airport', iataCode: 'ZRH' }, +]); diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index b9ff139b92f..ff168efc790 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -1,3 +1,9 @@ +/** + * 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 { @@ -8,6 +14,17 @@ export enum Aircraft { export type AircraftType = `${Aircraft}`; +export interface Airport { + /** + * The name of the airport (e.g. `'Dallas Fort Worth International Airport'`). + */ + name: string; + /** + * The IATA code of the airport (e.g. `'DFW'`). + */ + iataCode: string; +} + const numerics = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; const visuallySimilarCharacters = ['0', 'O', '1', 'I', 'L']; const aircraftTypeMaxRows = { @@ -37,14 +54,14 @@ export class AirlineModule { } /** - * Generates a random IATA airport code. + * Generates a random airport. * * @example - * faker.airline.airportCode() // 'CLT' + * faker.airline.airport() // { name: 'Dallas Fort Worth International Airport', iataCode: 'DFW' } * * @since 8.0.0 */ - airportCode(): string { + airport(): Airport { return this.faker.helpers.arrayElement( this.faker.definitions.airline.airport ); From aa438f66e6f648e03ccb738d46cfd39867576b53 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 10:37:44 -0700 Subject: [PATCH 22/54] Added airline definition file and function --- src/locales/en/airline/airlines.ts | 102 +++++++++++++++++++++++++++++ src/locales/en/airline/index.ts | 2 + src/modules/airline/index.ts | 24 +++++++ 3 files changed, 128 insertions(+) create mode 100644 src/locales/en/airline/airlines.ts diff --git a/src/locales/en/airline/airlines.ts b/src/locales/en/airline/airlines.ts new file mode 100644 index 00000000000..a6a56044cdb --- /dev/null +++ b/src/locales/en/airline/airlines.ts @@ -0,0 +1,102 @@ +// Top 100 airlines in 2019 according to https://www.flightglobal.com/download?ac=73318 +export default Object.freeze([ + { name: 'Aegean Airlines', iataCode: 'A3' }, + { name: 'Aeroflot', iataCode: 'SU' }, + { name: 'Aerolineas Argentinas', iataCode: 'AR' }, + { name: 'Aeromexico', iataCode: 'AM' }, + { name: 'Air Arabia', iataCode: 'G9' }, + { name: 'Air Canada', iataCode: 'AC' }, + { name: 'Air China', iataCode: 'CA' }, + { name: 'Air Europa', iataCode: 'UX' }, + { name: 'Air France', iataCode: 'AF' }, + { name: 'Air India', iataCode: 'AI' }, + { name: 'Air New Zealand', iataCode: 'NZ' }, + { name: 'Air Transat', iataCode: 'TS' }, + { name: 'AirAsia X', iataCode: 'D7' }, + { name: 'AirAsia', iataCode: 'AK' }, + { name: 'Alaska Air', 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', iataCode: 'AD' }, + { name: 'Azur Air', iataCode: 'ZF' }, + { name: 'Beijing Capital Airlines', iataCode: 'JD' }, + { 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: 'EasyJet', iataCode: 'U2' }, + { 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: 'Finnair', iataCode: 'AY' }, + { name: 'Flydubai', iataCode: 'FZ' }, + { name: 'Frontier Airlines', iataCode: 'F9' }, + { name: 'Garuda Indonesia', iataCode: 'GA' }, + { name: 'Go First', iataCode: 'G8' }, + { name: 'Gol', 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: 'Juneyao Airlines', iataCode: 'HO' }, + { name: 'Korean Air', iataCode: 'KE' }, + { name: 'LATAM Airlines', iataCode: 'LA' }, + { name: 'Lion Air', iataCode: 'JT' }, + { name: 'LOT Polish Airlines', iataCode: 'LO' }, + { name: 'Lufthansa', iataCode: 'LH' }, + { 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', 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: 'Saudia', iataCode: 'SV' }, + { name: 'Shandong Airlines', iataCode: 'SC' }, + { name: 'Sichuan Airlines', iataCode: '3U' }, + { name: 'Singapore Airlines', iataCode: 'SQ' }, + { name: 'SkyWest Airlines', iataCode: 'OO' }, + { 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: '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: '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: 'Volaris', iataCode: 'Y4' }, + { name: 'WestJet', iataCode: 'WS' }, + { name: 'Wizz Air', iataCode: 'W6' }, +]); diff --git a/src/locales/en/airline/index.ts b/src/locales/en/airline/index.ts index a248eafa314..000797e8b73 100644 --- a/src/locales/en/airline/index.ts +++ b/src/locales/en/airline/index.ts @@ -3,9 +3,11 @@ * Run 'pnpm run generate:locales' to update. */ import type { AirlineDefinitions } from '../../..'; +import airlines from './airlines'; import airport from './airport'; const airline: AirlineDefinitions = { + airlines, airport, }; diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index ff168efc790..d8c7a04fe32 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -14,6 +14,16 @@ export enum Aircraft { export type AircraftType = `${Aircraft}`; +export interface Airline { + /** + * The name of the airline (e.g. `'American Airlines'`). + */ + name: string; + /** + * The 2 character IATA code of the airline (e.g. `'AA'`). + */ + iataCode: string; +} export interface Airport { /** * The name of the airport (e.g. `'Dallas Fort Worth International Airport'`). @@ -67,6 +77,20 @@ export class AirlineModule { ); } + /** + * Generates a random airline. + * + * @example + * fake.airline.airline() // { name: 'American Airlines', iataCode: 'AA' } + * + * @since 8.0.0 + */ + airline(): Airline { + return this.faker.helpers.arrayElement( + this.faker.definitions.airline.airlines + ); + } + /** * 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, From 0551076bde35bb1f9410cc51da26a4fcba8597eb Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 10:38:41 -0700 Subject: [PATCH 23/54] Added airplane definition file and function --- src/locales/en/airline/airplane.ts | 939 +++++++++++++++++++++++++++++ src/locales/en/airline/index.ts | 2 + src/modules/airline/index.ts | 26 + 3 files changed, 967 insertions(+) create mode 100644 src/locales/en/airline/airplane.ts diff --git a/src/locales/en/airline/airplane.ts b/src/locales/en/airline/airplane.ts new file mode 100644 index 00000000000..d7ffaa9126e --- /dev/null +++ b/src/locales/en/airline/airplane.ts @@ -0,0 +1,939 @@ +// Generated from data at https://raw.githubusercontent.com/jpatokal/openflights/master/data/planes.dat +export default Object.freeze([ + { + name: 'Aerospatiale (Nord) 262', + iataCode: 'ND2', + }, + { + name: 'Aerospatiale (Sud Aviation) Se.210 Caravelle', + iataCode: 'CRV', + }, + { + name: 'Aerospatiale SN.601 Corvette', + iataCode: 'NDC', + }, + { + name: 'Aerospatiale/Alenia ATR 42-300', + iataCode: 'AT4', + }, + { + name: 'Aerospatiale/Alenia ATR 42-500', + iataCode: 'AT5', + }, + { + name: 'Aerospatiale/Alenia ATR 42-600', + iataCode: 'ATR', + }, + { + name: 'Aerospatiale/Alenia ATR 72', + iataCode: 'AT7', + }, + { + name: 'Airbus A300', + iataCode: 'AB3', + }, + { + name: 'Airbus A300-600', + iataCode: 'AB6', + }, + { + name: 'Airbus A300-600ST Super Transporter / Beluga', + iataCode: 'ABB', + }, + { + name: 'Airbus A310', + iataCode: '310', + }, + { + name: 'Airbus A318', + iataCode: '318', + }, + { + name: 'Airbus A319', + iataCode: '319', + }, + { + name: 'Airbus A319neo', + iataCode: '31N', + }, + { + name: 'Airbus A320', + iataCode: '320', + }, + { + name: 'Airbus A320neo', + iataCode: '32N', + }, + { + name: 'Airbus A321', + iataCode: '321', + }, + { + name: 'Airbus A321neo', + iataCode: '32Q', + }, + { + name: 'Airbus A330', + iataCode: '330', + }, + { + name: 'Airbus A330-200', + iataCode: '332', + }, + { + name: 'Airbus A330-300', + iataCode: '333', + }, + { + name: 'Airbus A330-800neo', + iataCode: '338', + }, + { + name: 'Airbus A330-900neo', + iataCode: '339', + }, + { + name: 'Airbus A340', + iataCode: '340', + }, + { + name: 'Airbus A340-200', + iataCode: '342', + }, + { + name: 'Airbus A340-300', + iataCode: '343', + }, + { + name: 'Airbus A340-500', + iataCode: '345', + }, + { + name: 'Airbus A340-600', + iataCode: '346', + }, + { + name: 'Airbus A350', + iataCode: '350', + }, + { + name: 'Airbus A350-1000', + iataCode: '351', + }, + { + name: 'Airbus A350-900', + iataCode: '359', + }, + { + name: 'Airbus A380', + iataCode: '380', + }, + { + name: 'Airbus A380-800', + iataCode: '388', + }, + { + name: 'Antonov AN-12', + iataCode: 'ANF', + }, + { + name: 'Antonov AN-124 Ruslan', + iataCode: 'A4F', + }, + { + name: 'Antonov AN-140', + iataCode: 'A40', + }, + { + name: 'Antonov AN-24', + iataCode: 'AN4', + }, + { + name: 'Antonov AN-26', + iataCode: 'A26', + }, + { + name: 'Antonov AN-28', + iataCode: 'A28', + }, + { + name: 'Antonov AN-30', + iataCode: 'A30', + }, + { + name: 'Antonov AN-32', + iataCode: 'A32', + }, + { + name: 'Antonov AN-72', + iataCode: 'AN7', + }, + { + name: 'Antonov An-148', + iataCode: 'A81', + }, + { + name: 'Antonov An-158', + iataCode: 'A58', + }, + { + name: 'Antonov An-225 Mriya', + iataCode: 'A25', + }, + { + name: 'Avro RJ100', + iataCode: 'AR1', + }, + { + name: 'Avro RJ70', + iataCode: 'AR7', + }, + { + name: 'Avro RJ85', + iataCode: 'AR8', + }, + { + name: 'BAe 146', + iataCode: '146', + }, + { + name: 'BAe 146-100', + iataCode: '141', + }, + { + name: 'BAe 146-200', + iataCode: '142', + }, + { + name: 'BAe 146-300', + iataCode: '143', + }, + { + name: 'Beechcraft 1900', + iataCode: 'BEH', + }, + { + name: 'Bell 212', + iataCode: 'BH2', + }, + { + name: 'Boeing 707', + iataCode: '703', + }, + { + name: 'Boeing 717', + iataCode: '717', + }, + { + name: 'Boeing 720B', + iataCode: 'B72', + }, + { + name: 'Boeing 727', + iataCode: '727', + }, + { + name: 'Boeing 727-100', + iataCode: '721', + }, + { + name: 'Boeing 727-200', + iataCode: '722', + }, + { + name: 'Boeing 737', + iataCode: '737', + }, + { + name: 'Boeing 737 MAX 10', + iataCode: '7MJ', + }, + { + name: 'Boeing 737 MAX 7', + iataCode: '7M7', + }, + { + name: 'Boeing 737 MAX 8', + iataCode: '7M8', + }, + { + name: 'Boeing 737 MAX 9', + iataCode: '7M9', + }, + { + name: 'Boeing 737-200', + iataCode: '732', + }, + { + name: 'Boeing 737-300', + iataCode: '733', + }, + { + name: 'Boeing 737-400', + iataCode: '734', + }, + { + name: 'Boeing 737-500', + iataCode: '735', + }, + { + name: 'Boeing 737-600', + iataCode: '736', + }, + { + name: 'Boeing 737-700', + iataCode: '73G', + }, + { + name: 'Boeing 737-800', + iataCode: '738', + }, + { + name: 'Boeing 737-900', + iataCode: '739', + }, + { + name: 'Boeing 747', + iataCode: '747', + }, + { + name: 'Boeing 747 LCF Dreamlifter', + iataCode: '74B', + }, + { + name: 'Boeing 747-100', + iataCode: '741', + }, + { + name: 'Boeing 747-200', + iataCode: '742', + }, + { + name: 'Boeing 747-300', + iataCode: '743', + }, + { + name: 'Boeing 747-400', + iataCode: '744', + }, + { + name: 'Boeing 747-400D', + iataCode: '74J', + }, + { + name: 'Boeing 747-8', + iataCode: '748', + }, + { + name: 'Boeing 747SP', + iataCode: '74L', + }, + { + name: 'Boeing 747SR', + iataCode: '74R', + }, + { + name: 'Boeing 757', + iataCode: '757', + }, + { + name: 'Boeing 757-200', + iataCode: '752', + }, + { + name: 'Boeing 757-300', + iataCode: '753', + }, + { + name: 'Boeing 767', + iataCode: '767', + }, + { + name: 'Boeing 767-200', + iataCode: '762', + }, + { + name: 'Boeing 767-300', + iataCode: '763', + }, + { + name: 'Boeing 767-400', + iataCode: '764', + }, + { + name: 'Boeing 777', + iataCode: '777', + }, + { + name: 'Boeing 777-200', + iataCode: '772', + }, + { + name: 'Boeing 777-200LR', + iataCode: '77L', + }, + { + name: 'Boeing 777-300', + iataCode: '773', + }, + { + name: 'Boeing 777-300ER', + iataCode: '77W', + }, + { + name: 'Boeing 777-8', + iataCode: '778', + }, + { + name: 'Boeing 777-9', + iataCode: '779', + }, + { + name: 'Boeing 787', + iataCode: '787', + }, + { + name: 'Boeing 787-10', + iataCode: '78J', + }, + { + name: 'Boeing 787-8', + iataCode: '788', + }, + { + name: 'Boeing 787-9', + iataCode: '789', + }, + { + name: 'Bombardier CS100', + iataCode: 'CS1', + }, + { + name: 'Bombardier CS300', + iataCode: 'CS3', + }, + { + name: 'Bombardier Global Express', + iataCode: 'CCX', + }, + { + name: 'British Aerospace (BAC) One Eleven', + iataCode: 'B11', + }, + { + name: 'British Aerospace 125 series / Hawker/Raytheon 700/800/800XP/850/900', + iataCode: 'H25', + }, + { + name: 'British Aerospace 125-1000 series / Hawker/Raytheon 1000', + iataCode: 'H25', + }, + { + name: 'British Aerospace ATP', + iataCode: 'ATP', + }, + { + name: 'British Aerospace Jetstream 31', + iataCode: 'J31', + }, + { + name: 'British Aerospace Jetstream 32', + iataCode: 'J32', + }, + { + name: 'British Aerospace Jetstream 41', + iataCode: 'J41', + }, + { + name: 'Canadair CL-44', + iataCode: 'CL4', + }, + { + name: 'Canadair Challenger', + iataCode: 'CCJ', + }, + { + name: 'Canadair Regional Jet 100', + iataCode: 'CR1', + }, + { + name: 'Canadair Regional Jet 1000', + iataCode: 'CRK', + }, + { + name: 'Canadair Regional Jet 200', + iataCode: 'CR2', + }, + { + name: 'Canadair Regional Jet 700', + iataCode: 'CR7', + }, + { + name: 'Canadair Regional Jet 900', + iataCode: 'CR9', + }, + { + name: 'Cessna 172', + iataCode: 'CN1', + }, + { + name: 'Cessna 182 Skylane', + iataCode: 'CN1', + }, + { + name: 'Cessna 208 Caravan', + iataCode: 'CN1', + }, + { + name: 'Cessna 210 Centurion', + iataCode: 'CN1', + }, + { + name: 'Cessna Citation CJ3', + iataCode: 'CNJ', + }, + { + name: 'Cessna Citation CJ4', + iataCode: 'CNJ', + }, + { + name: 'Cessna Citation Excel', + iataCode: 'CNJ', + }, + { + name: 'Cessna Citation I', + iataCode: 'CNJ', + }, + { + name: 'Cessna Citation II', + iataCode: 'CNJ', + }, + { + name: 'Cessna Citation Mustang', + iataCode: 'CNJ', + }, + { + name: 'Cessna Citation Sovereign', + iataCode: 'CNJ', + }, + { + name: 'Cessna Citation X', + iataCode: 'CNJ', + }, + { + name: 'Concorde', + iataCode: 'SSC', + }, + { + name: 'Dassault Falcon 2000', + iataCode: 'D20', + }, + { + name: 'Dassault Falcon 50', + iataCode: 'DF3', + }, + { + name: 'Dassault Falcon 7X', + iataCode: 'DF7', + }, + { + name: 'Dassault Falcon 900', + iataCode: 'DF9', + }, + { + name: 'De Havilland Canada DHC-2 Beaver', + iataCode: 'DHP', + }, + { + name: 'De Havilland Canada DHC-2 Turbo-Beaver', + iataCode: 'DHR', + }, + { + name: 'De Havilland Canada DHC-3 Otter', + iataCode: 'DHL', + }, + { + name: 'De Havilland Canada DHC-4 Caribou', + iataCode: 'DHC', + }, + { + name: 'De Havilland Canada DHC-6 Twin Otter', + iataCode: 'DHT', + }, + { + name: 'De Havilland Canada DHC-7 Dash 7', + iataCode: 'DH7', + }, + { + name: 'De Havilland Canada DHC-8-100 Dash 8 / 8Q', + iataCode: 'DH1', + }, + { + name: 'De Havilland Canada DHC-8-200 Dash 8 / 8Q', + iataCode: 'DH2', + }, + { + name: 'De Havilland Canada DHC-8-300 Dash 8', + iataCode: 'DH3', + }, + { + name: 'De Havilland Canada DHC-8-400 Dash 8Q', + iataCode: 'DH4', + }, + { + name: 'De Havilland DH.104 Dove', + iataCode: 'DHD', + }, + { + name: 'De Havilland DH.114 Heron', + iataCode: 'DHH', + }, + { + name: 'Douglas DC-10', + iataCode: 'D10', + }, + { + name: 'Douglas DC-3', + iataCode: 'D3F', + }, + { + name: 'Douglas DC-6', + iataCode: 'D6F', + }, + { + name: 'Douglas DC-8-50', + iataCode: 'D8T', + }, + { + name: 'Douglas DC-8-62', + iataCode: 'D8L', + }, + { + name: 'Douglas DC-8-72', + iataCode: 'D8Q', + }, + { + name: 'Douglas DC-9-10', + iataCode: 'D91', + }, + { + name: 'Douglas DC-9-20', + iataCode: 'D92', + }, + { + name: 'Douglas DC-9-30', + iataCode: 'D93', + }, + { + name: 'Douglas DC-9-40', + iataCode: 'D94', + }, + { + name: 'Douglas DC-9-50', + iataCode: 'D95', + }, + { + name: 'Embraer 170', + iataCode: 'E70', + }, + { + name: 'Embraer 175', + iataCode: 'E75', + }, + { + name: 'Embraer 175 (long wing)', + iataCode: 'E7W', + }, + { + name: 'Embraer 175 (short wing)', + iataCode: 'E7W', + }, + { + name: 'Embraer 190', + iataCode: 'E90', + }, + { + name: 'Embraer 195', + iataCode: 'E95', + }, + { + name: 'Embraer E190-E2', + iataCode: '290', + }, + { + name: 'Embraer E195-E2', + iataCode: '295', + }, + { + name: 'Embraer EMB 110 Bandeirante', + iataCode: 'EMB', + }, + { + name: 'Embraer EMB 120 Brasilia', + iataCode: 'EM2', + }, + { + name: 'Embraer Legacy 600', + iataCode: 'ER3', + }, + { + name: 'Embraer Phenom 100', + iataCode: 'EP1', + }, + { + name: 'Embraer Phenom 300', + iataCode: 'EP3', + }, + { + name: 'Embraer RJ135', + iataCode: 'ER3', + }, + { + name: 'Embraer RJ140', + iataCode: 'ERD', + }, + { + name: 'Embraer RJ145', + iataCode: 'ER4', + }, + { + name: 'Fairchild Dornier 328JET', + iataCode: 'FRJ', + }, + { + name: 'Fairchild Dornier Do.228', + iataCode: 'D28', + }, + { + name: 'Fairchild Dornier Do.328', + iataCode: 'D38', + }, + { + name: 'Fokker 100', + iataCode: '100', + }, + { + name: 'Fokker 50', + iataCode: 'F50', + }, + { + name: 'Fokker 70', + iataCode: 'F70', + }, + { + name: 'Fokker F27 Friendship', + iataCode: 'F27', + }, + { + name: 'Fokker F28 Fellowship', + iataCode: 'F21', + }, + { + name: 'Gulfstream Aerospace G-159 Gulfstream I', + iataCode: 'GRS', + }, + { + name: 'Gulfstream G280', + iataCode: 'GR3', + }, + { + name: 'Gulfstream G650', + iataCode: 'GJ6', + }, + { + name: 'Gulfstream IV', + iataCode: 'GJ4', + }, + { + name: 'Gulfstream V', + iataCode: 'GJ5', + }, + { + name: 'Gulfstream/Rockwell (Aero) Commander', + iataCode: 'ACP', + }, + { + name: 'Gulfstream/Rockwell (Aero) Turbo Commander', + iataCode: 'ACT', + }, + { + name: 'Harbin Yunshuji Y12', + iataCode: 'YN2', + }, + { + name: 'Hawker Siddeley HS 748', + iataCode: 'HS7', + }, + { + name: 'Ilyushin IL114', + iataCode: 'I14', + }, + { + name: 'Ilyushin IL18', + iataCode: 'IL8', + }, + { + name: 'Ilyushin IL62', + iataCode: 'IL6', + }, + { + name: 'Ilyushin IL76', + iataCode: 'IL7', + }, + { + name: 'Ilyushin IL86', + iataCode: 'ILW', + }, + { + name: 'Ilyushin IL96', + iataCode: 'I93', + }, + { + name: 'Learjet 35', + iataCode: 'LRJ', + }, + { + name: 'Learjet 60', + iataCode: 'LRJ', + }, + { + name: 'Lockheed L-1011 Tristar', + iataCode: 'L10', + }, + { + name: 'Lockheed L-1049 Super Constellation', + iataCode: 'L49', + }, + { + name: 'Lockheed L-182 / 282 / 382 (L-100) Hercules', + iataCode: 'LOH', + }, + { + name: 'Lockheed L-188 Electra', + iataCode: 'LOE', + }, + { + name: 'McDonnell Douglas MD-11', + iataCode: 'M11', + }, + { + name: 'McDonnell Douglas MD-81', + iataCode: 'M81', + }, + { + name: 'McDonnell Douglas MD-82', + iataCode: 'M82', + }, + { + name: 'McDonnell Douglas MD-83', + iataCode: 'M83', + }, + { + name: 'McDonnell Douglas MD-87', + iataCode: 'M87', + }, + { + name: 'McDonnell Douglas MD-88', + iataCode: 'M88', + }, + { + name: 'McDonnell Douglas MD-90', + iataCode: 'M90', + }, + { + name: 'NAMC YS-11', + iataCode: 'YS1', + }, + { + name: 'Partenavia P.68', + iataCode: 'PN6', + }, + { + name: 'Pilatus Britten-Norman BN-2A Mk III Trislander', + iataCode: 'BNT', + }, + { + name: 'Pilatus Britten-Norman BN-2A/B Islander', + iataCode: 'BNI', + }, + { + name: 'Pilatus PC-12', + iataCode: 'PL2', + }, + { + name: 'Pilatus PC-6 Turbo Porter', + iataCode: 'PL6', + }, + { + name: 'Piper PA-31 Navajo', + iataCode: 'PA2', + }, + { + name: 'Piper PA-46', + iataCode: 'PAG', + }, + { + name: 'Saab 2000', + iataCode: 'S20', + }, + { + name: 'Saab SF340A/B', + iataCode: 'SF3', + }, + { + name: 'Shorts SC-5 Belfast', + iataCode: 'SHB', + }, + { + name: 'Shorts SC-7 Skyvan', + iataCode: 'SHS', + }, + { + name: 'Shorts SD.330', + iataCode: 'SH3', + }, + { + name: 'Shorts SD.360', + iataCode: 'SH6', + }, + { + name: 'Sikorsky S-58T', + iataCode: 'S58', + }, + { + name: 'Sikorsky S-61', + iataCode: 'S61', + }, + { + name: 'Sikorsky S-76', + iataCode: 'S76', + }, + { + name: 'Sikorsky S-92', + iataCode: 'S92', + }, + { + name: 'Sukhoi Superjet 100-95', + iataCode: 'SU9', + }, + { + name: 'Tupolev Tu-134', + iataCode: 'TU3', + }, + { + name: 'Tupolev Tu-154', + iataCode: 'TU5', + }, + { + name: 'Tupolev Tu-204', + iataCode: 'T20', + }, + { + name: 'Yakovlev Yak-40', + iataCode: 'YK4', + }, + { + name: 'Yakovlev Yak-42', + iataCode: 'YK2', + }, +]); diff --git a/src/locales/en/airline/index.ts b/src/locales/en/airline/index.ts index 000797e8b73..b51d1773b99 100644 --- a/src/locales/en/airline/index.ts +++ b/src/locales/en/airline/index.ts @@ -4,10 +4,12 @@ */ import type { AirlineDefinitions } from '../../..'; import airlines from './airlines'; +import airplane from './airplane'; import airport from './airport'; const airline: AirlineDefinitions = { airlines, + airplane, airport, }; diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index d8c7a04fe32..9eef3d95603 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -24,6 +24,18 @@ export interface Airline { */ iataCode: string; } + +export interface Airplane { + /** + * The name of the airplane (e.g. `'Airbus A321'`). + */ + name: string; + /** + * The IATA code of the airplane (e.g. `'321'`). + */ + iataCode: string; +} + export interface Airport { /** * The name of the airport (e.g. `'Dallas Fort Worth International Airport'`). @@ -91,6 +103,20 @@ export class AirlineModule { ); } + /** + * Generates a random airplane. + * + * @example + * fake.airline.airplane() // { name: 'Airbus A321', iataCode: '321' } + * + * @since 8.0.0 + */ + airplane(): Airplane { + return this.faker.helpers.arrayElement( + this.faker.definitions.airline.airplanes + ); + } + /** * 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, From 6a0e0dc99cbbba1da1920a57f787473963c48f3d Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 10:39:11 -0700 Subject: [PATCH 24/54] Updated type definition to match new data --- src/definitions/airline.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/definitions/airline.ts b/src/definitions/airline.ts index de4b188afbf..5f35e707cf5 100644 --- a/src/definitions/airline.ts +++ b/src/definitions/airline.ts @@ -1,8 +1,19 @@ +import type { Airline, Airplane, Airport } from '../modules/airline'; import type { LocaleEntry } from './definitions'; export type AirlineDefinitions = LocaleEntry<{ /** - * IATA three-letter airport codes. + * Some airline information */ - airport: string[]; + airline: readonly Airline[]; + + /** + * Some airplane information + */ + airplane: readonly Airplane[]; + + /** + * Some airport information + */ + airport: readonly Airport[]; }>; From 376455a997d638acb47e9743376d6200695addc6 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 10:39:30 -0700 Subject: [PATCH 25/54] Added flightNumber function --- src/modules/airline/index.ts | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 9eef3d95603..f5f9fab8d76 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -195,4 +195,37 @@ export class AirlineModule { 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). + * + * @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({ length: 3 }) // '425' + * faker.airline.flightNumber({ length: { min: 2, max: 3 } }) // '84' + * faker.airline.flightNumber({ addLeadingZeros: true }) // '0249' + * faker.airline.flightNumber({ length: 4, addLeadingZeros: true }) // '0042' + * + * @since 8.0.0 + */ + flightNumber( + options: { + length?: number | { min: number; max: number }; + addLeadingZeros?: boolean; + } = {} + ): string { + const { length = { min: 1, max: 4 } } = options; + const { addLeadingZeros = false } = options; + const flightNumber = this.faker.string.numeric({ + length, + allowLeadingZeros: false, + }); + return addLeadingZeros ? flightNumber.padStart(4, '0') : flightNumber; + } } From 7703cc5d147411b2ac6d7d7b6d77d286e4287290 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 14:28:06 -0700 Subject: [PATCH 26/54] Fix for airplane definition name --- src/modules/airline/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index f5f9fab8d76..14180aefbad 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -113,7 +113,7 @@ export class AirlineModule { */ airplane(): Airplane { return this.faker.helpers.arrayElement( - this.faker.definitions.airline.airplanes + this.faker.definitions.airline.airplane ); } From 2b8d61346d2c9a7a13e6eb4e80b12118d88e6d1f Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 14:28:51 -0700 Subject: [PATCH 27/54] Updated tests to include airplane and airline --- test/__snapshots__/airline.spec.ts.snap | 99 ++++++++++++++++++++++++- test/airline.spec.ts | 65 +++++++++++++++- 2 files changed, 157 insertions(+), 7 deletions(-) diff --git a/test/__snapshots__/airline.spec.ts.snap b/test/__snapshots__/airline.spec.ts.snap index 703578fba49..6eb37031de6 100644 --- a/test/__snapshots__/airline.spec.ts.snap +++ b/test/__snapshots__/airline.spec.ts.snap @@ -2,7 +2,38 @@ exports[`airline > 42 > aircraftType 1`] = `"regional"`; -exports[`airline > 42 > airportCode 1`] = `"JRB"`; +exports[`airline > 42 > airline 1`] = ` +{ + "iataCode": "ET", + "name": "Ethiopian Airlines", +} +`; + +exports[`airline > 42 > airplane 1`] = ` +{ + "iataCode": "762", + "name": "Boeing 767-200", +} +`; + +exports[`airline > 42 > airport 1`] = ` +{ + "iataCode": "FRA", + "name": "Frankfurt am Main Airport", +} +`; + +exports[`airline > 42 > flightNumber > flightNumber addLeadingZeros 1`] = `"0089"`; + +exports[`airline > 42 > flightNumber > flightNumber length 2 to 4 1`] = `"891"`; + +exports[`airline > 42 > flightNumber > flightNumber length 2 to 4 and addLeadingZeros 1`] = `"0891"`; + +exports[`airline > 42 > flightNumber > flightNumber length 3 1`] = `"479"`; + +exports[`airline > 42 > flightNumber > flightNumber length 3 and addLeadingZeros 1`] = `"0479"`; + +exports[`airline > 42 > flightNumber > noArgs 1`] = `"89"`; exports[`airline > 42 > recordLocator > allowNumerics 1`] = `"DTY7RT"`; @@ -22,7 +53,38 @@ exports[`airline > 42 > seat > noArgs 1`] = `"14E"`; exports[`airline > 1211 > aircraftType 1`] = `"widebody"`; -exports[`airline > 1211 > airportCode 1`] = `"YHO"`; +exports[`airline > 1211 > airline 1`] = ` +{ + "iataCode": "U6", + "name": "Ural Airlines", +} +`; + +exports[`airline > 1211 > airplane 1`] = ` +{ + "iataCode": "PAG", + "name": "Piper PA-46", +} +`; + +exports[`airline > 1211 > airport 1`] = ` +{ + "iataCode": "TPA", + "name": "Tampa International Airport", +} +`; + +exports[`airline > 1211 > flightNumber > flightNumber addLeadingZeros 1`] = `"5872"`; + +exports[`airline > 1211 > flightNumber > flightNumber length 2 to 4 1`] = `"5872"`; + +exports[`airline > 1211 > flightNumber > flightNumber length 2 to 4 and addLeadingZeros 1`] = `"5872"`; + +exports[`airline > 1211 > flightNumber > flightNumber length 3 1`] = `"948"`; + +exports[`airline > 1211 > flightNumber > flightNumber length 3 and addLeadingZeros 1`] = `"0948"`; + +exports[`airline > 1211 > flightNumber > noArgs 1`] = `"5872"`; exports[`airline > 1211 > recordLocator > allowNumerics 1`] = `"XGWT86"`; @@ -42,7 +104,38 @@ exports[`airline > 1211 > seat > noArgs 1`] = `"33C"`; exports[`airline > 1337 > aircraftType 1`] = `"narrowbody"`; -exports[`airline > 1337 > airportCode 1`] = `"GFN"`; +exports[`airline > 1337 > airline 1`] = ` +{ + "iataCode": "CX", + "name": "Cathay Pacific", +} +`; + +exports[`airline > 1337 > airplane 1`] = ` +{ + "iataCode": "7MJ", + "name": "Boeing 737 MAX 10", +} +`; + +exports[`airline > 1337 > airport 1`] = ` +{ + "iataCode": "DEN", + "name": "Denver International Airport", +} +`; + +exports[`airline > 1337 > flightNumber > flightNumber addLeadingZeros 1`] = `"0061"`; + +exports[`airline > 1337 > flightNumber > flightNumber length 2 to 4 1`] = `"61"`; + +exports[`airline > 1337 > flightNumber > flightNumber length 2 to 4 and addLeadingZeros 1`] = `"0061"`; + +exports[`airline > 1337 > flightNumber > flightNumber length 3 1`] = `"351"`; + +exports[`airline > 1337 > flightNumber > flightNumber length 3 and addLeadingZeros 1`] = `"0351"`; + +exports[`airline > 1337 > flightNumber > noArgs 1`] = `"61"`; exports[`airline > 1337 > recordLocator > allowNumerics 1`] = `"AK68AJ"`; diff --git a/test/airline.spec.ts b/test/airline.spec.ts index 1edc2210cb9..e4eaa170c56 100644 --- a/test/airline.spec.ts +++ b/test/airline.spec.ts @@ -10,7 +10,7 @@ describe('airline', () => { }); seededTests(faker, 'airline', (t) => { - t.itEach('airportCode', 'aircraftType'); + t.itEach('airport', 'airline', 'airplane', 'aircraftType'); t.describe('recordLocator', (t) => { t.it('noArgs') .it('allowNumerics', { allowNumerics: true }) @@ -28,14 +28,42 @@ describe('airline', () => { .it('aircraftType regional', { aircraftType: 'regional' }) .it('aircraftType widebody', { aircraftType: 'widebody' }); }); + t.describe('flightNumber', (t) => { + t.it('noArgs') + .it('flightNumber length 3', { length: 3 }) + .it('flightNumber length 2 to 4', { length: { min: 2, max: 4 } }) + .it('flightNumber addLeadingZeros', { addLeadingZeros: true }) + .it('flightNumber length 3 and addLeadingZeros', { + length: 3, + addLeadingZeros: true, + }) + .it('flightNumber length 2 to 4 and addLeadingZeros', { + length: { min: 2, max: 4 }, + addLeadingZeros: true, + }); + }); }); describe(`random seeded tests for seed ${faker.seed()}`, () => { for (let i = 1; i <= NON_SEEDED_BASED_RUN; i++) { - describe(`airportCode()`, () => { + describe(`airport()`, () => { it('should return a random value from airport array', () => { - const airport = faker.airline.airportCode(); - expect(faker.definitions.airline.airport).toContain(airport); + const airport = faker.airline.airport(); + expect(faker.definitions.airline.airport).toContainEqual(airport); + }); + }); + + describe(`airline()`, () => { + it('should return a random value from airline array', () => { + const airline = faker.airline.airline(); + expect(faker.definitions.airline.airlines).toContainEqual(airline); + }); + }); + + describe(`airplane()`, () => { + it('should return a random value from airplane array', () => { + const airplane = faker.airline.airplane(); + expect(faker.definitions.airline.airplane).toContainEqual(airplane); }); }); @@ -113,6 +141,35 @@ describe('airline', () => { expect(Object.values(Aircraft)).toContain(aircraft); }); }); + + describe(`flightNumber()`, () => { + it('should return a random flight number', () => { + const flightNumber = faker.airline.flightNumber(); + expect(flightNumber).toMatch(/^[1-9][0-9]{0,3}$/); + }); + it('should return a random flight number with 3 digits', () => { + const flightNumber = faker.airline.flightNumber({ length: 3 }); + expect(flightNumber).toMatch(/^[1-9][0-9]{2}$/); + }); + it('should return a random flight number with 2 to 4 digits', () => { + const flightNumber = faker.airline.flightNumber({ + length: { min: 2, max: 4 }, + }); + expect(flightNumber).toMatch(/^[1-9][0-9]{1,3}$/); + }); + it('should return a random flight number with leading zeros', () => { + const flightNumber = faker.airline.flightNumber({ addLeadingZeros: true }); + expect(flightNumber).toMatch(/^[0-9]{4}$/); + }); + it('should return a random flight number with 3 digits and leading zeros', () => { + const flightNumber = faker.airline.flightNumber({ length: 3, addLeadingZeros: true }); + expect(flightNumber).toMatch(/^[0-9][1-9][0-9]{2}$/); + }); + it('should return a random flight number with 2 to 4 digits and leading zeros', () => { + const flightNumber = faker.airline.flightNumber({ length: 3, addLeadingZeros: true }); + expect(flightNumber).toMatch(/^[0-9]{1,4}$/); + }); + }); } }); }); From 25bf9a20797dfd7551755c3b8972c72991815dd2 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 14:31:57 -0700 Subject: [PATCH 28/54] Fixed JSDocs --- src/modules/airline/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 14180aefbad..a0d711e5339 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -93,7 +93,7 @@ export class AirlineModule { * Generates a random airline. * * @example - * fake.airline.airline() // { name: 'American Airlines', iataCode: 'AA' } + * faker.airline.airline() // { name: 'American Airlines', iataCode: 'AA' } * * @since 8.0.0 */ @@ -107,7 +107,7 @@ export class AirlineModule { * Generates a random airplane. * * @example - * fake.airline.airplane() // { name: 'Airbus A321', iataCode: '321' } + * faker.airline.airplane() // { name: 'Airbus A321', iataCode: '321' } * * @since 8.0.0 */ From 495ef5e25bbea1eaf8fead4171a3f298582a9e99 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 14:35:55 -0700 Subject: [PATCH 29/54] More JSDoc updates --- src/modules/airline/index.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index a0d711e5339..a93f8e7573c 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -207,10 +207,11 @@ export class AirlineModule { * * @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' - * faker.airline.flightNumber({ addLeadingZeros: true }) // '0249' - * faker.airline.flightNumber({ length: 4, addLeadingZeros: true }) // '0042' * * @since 8.0.0 */ From 1c5120caceac4c1c2e59e546029a66e4091e2ada Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 14:40:19 -0700 Subject: [PATCH 30/54] Updated airline example in the readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 409db3b1424..ee27d465f71 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ The API covers the following modules: | Module | Example | Output | | -------- | --------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| Airline | `faker.airline.airportCode()` | CLT | +| Airline | `faker.airline.airport()` | `{ name: 'Dallas Fort Worth International Airport', iataCode: 'DFW' }` | | Animal | `faker.animal.cat()` | Norwegian Forest Cat | | Color | `faker.color.rgb()` | #cdfcdc | | Commerce | `faker.commerce.product()` | Polo t-shirt | From 81f9d18b29b37a14e84bb8f38294cf0dab082c6b Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 14:48:54 -0700 Subject: [PATCH 31/54] Order airports by name to match other definitions --- src/locales/en/airline/airport.ts | 134 ++++++++++++------------ test/__snapshots__/airline.spec.ts.snap | 12 +-- 2 files changed, 73 insertions(+), 73 deletions(-) diff --git a/src/locales/en/airline/airport.ts b/src/locales/en/airline/airport.ts index 805a4aafb8d..b252f24df66 100644 --- a/src/locales/en/airline/airport.ts +++ b/src/locales/en/airline/airport.ts @@ -1,121 +1,121 @@ // Generated from data at https://raw.githubusercontent.com/jpatokal/openflights/master/data/airports.dat export default Object.freeze([ - { name: 'Auckland International Airport', iataCode: 'AKL' }, + { name: 'Adolfo Suárez Madrid–Barajas Airport', iataCode: 'MAD' }, { name: 'Amsterdam Airport Schiphol', iataCode: 'AMS' }, - { name: 'Stockholm-Arlanda Airport"', iataCode: 'ARN' }, - { name: 'Eleftherios Venizelos International Airport', iataCode: 'ATH' }, - { name: 'Hartsfield Jackson Atlanta International Airport', iataCode: 'ATL' }, { name: 'Antalya International Airport', iataCode: 'AYT' }, - { name: 'Barcelona International Airport', iataCode: 'BCN' }, - { name: 'Suvarnabhumi Airport', iataCode: 'BKK' }, - { name: 'Brisbane International Airport","Brisbane', iataCode: 'BNE' }, - { name: 'El Dorado International Airport', iataCode: 'BOG' }, - { name: 'Chhatrapati Shivaji International Airport', iataCode: 'BOM' }, - { - name: 'General Edward Lawrence Logan International Airport', - iataCode: 'BOS', - }, - { name: 'Brussels Airport', iataCode: 'BRU' }, - { - name: 'Presidente Juscelino Kubistschek International Airport', - iataCode: 'BSB', - }, + { name: 'Auckland International Airport', iataCode: 'AKL' }, { name: 'Baltimore/Washington International Thurgood Marshall Airport', iataCode: 'BWI', }, - { name: 'Guangzhou Baiyun International Airport', iataCode: 'CAN' }, + { name: 'Barcelona International Airport', iataCode: 'BCN' }, + { name: 'Beijing Capital International Airport', iataCode: 'PEK' }, + { name: 'Berlin-Tegel Airport', iataCode: 'TXL' }, + { name: 'Brisbane International Airport","Brisbane', iataCode: 'BNE' }, + { name: 'Brussels Airport', iataCode: 'BRU' }, { name: 'Charles de Gaulle International Airport', iataCode: 'CDG' }, - { name: 'Congonhas Airport', iataCode: 'CGH' }, - { name: 'Soekarno-Hatta International Airport', iataCode: 'CGK' }, - { name: 'Jeju International Airport', iataCode: 'CJU' }, { name: 'Charlotte Douglas International Airport', iataCode: 'CLT' }, - { name: 'Copenhagen Kastrup Airport', iataCode: 'CPH' }, - { name: 'New Chitose Airport', iataCode: 'CTS' }, { name: 'Chengdu Shuangliu International Airport', iataCode: 'CTU' }, - { name: 'Ronald Reagan Washington National Airport', iataCode: 'DCA' }, - { name: 'Indira Gandhi International Airport', iataCode: 'DEL' }, - { name: 'Denver International Airport', iataCode: 'DEN' }, + { name: 'Chhatrapati Shivaji International Airport', iataCode: 'BOM' }, + { name: 'Chicago Midway International Airport', iataCode: 'MDW' }, + { name: "Chicago O'Hare International Airport", iataCode: 'ORD' }, + { name: 'Congonhas Airport', iataCode: 'CGH' }, + { name: 'Copenhagen Kastrup Airport', iataCode: 'CPH' }, { name: 'Dallas Fort Worth International Airport', iataCode: 'DFW' }, - { name: 'Domodedovo International Airport', iataCode: 'DME' }, - { name: 'Hamad International Airport', iataCode: 'DOH' }, + { name: 'Denver International Airport', iataCode: 'DEN' }, { name: 'Detroit Metropolitan Wayne County Airport', iataCode: 'DTW' }, + { name: 'Domodedovo International Airport', iataCode: 'DME' }, + { name: 'Dubai International Airport', iataCode: 'DXB' }, { name: 'Dublin Airport', iataCode: 'DUB' }, { name: 'Düsseldorf Airport', iataCode: 'DUS' }, - { name: 'Dubai International Airport', iataCode: 'DXB' }, - { name: 'Newark Liberty International Airport', iataCode: 'EWR' }, - { name: 'Leonardo da Vinci–Fiumicino Airport', iataCode: 'FCO' }, + { name: 'El Dorado International Airport', iataCode: 'BOG' }, + { name: 'Eleftherios Venizelos International Airport', iataCode: 'ATH' }, { name: 'Fort Lauderdale Hollywood International Airport', iataCode: 'FLL' }, { name: 'Frankfurt am Main Airport', iataCode: 'FRA' }, { name: 'Fukuoka Airport', iataCode: 'FUK' }, - { name: 'Rio Galeão – Tom Jobim International Airport', iataCode: 'GIG' }, + { + name: 'General Edward Lawrence Logan International Airport', + iataCode: 'BOS', + }, + { name: 'George Bush Intercontinental Houston Airport', iataCode: 'IAH' }, { name: 'Gimpo International Airport', iataCode: 'GMP' }, + { name: 'Guangzhou Baiyun International Airport', iataCode: 'CAN' }, { name: 'Guarulhos - Governador André Franco Montoro International Airport', iataCode: 'GRU', }, - { name: 'Helsinki Vantaa Airport', iataCode: 'HEL' }, + { name: 'Hamad International Airport', iataCode: 'DOH' }, { name: 'Hangzhou Xiaoshan International Airport', iataCode: 'HGH' }, + { name: 'Hartsfield Jackson Atlanta International Airport', iataCode: 'ATL' }, + { name: 'Helsinki Vantaa Airport', iataCode: 'HEL' }, { name: 'Hong Kong International Airport', iataCode: 'HKG' }, - { name: 'Tokyo Haneda International Airport', iataCode: 'HND' }, - { name: 'Washington Dulles International Airport', iataCode: 'IAD' }, - { name: 'George Bush Intercontinental Houston Airport', iataCode: 'IAH' }, + { + name: 'Humberto Delgado Airport (Lisbon Portela Airport)', + iataCode: 'LIS', + }, { name: 'Incheon International Airport', iataCode: 'ICN' }, + { name: 'Indira Gandhi International Airport', iataCode: 'DEL' }, { name: 'Istanbul Airport', iataCode: 'IST' }, - { name: 'King Abdulaziz International Airport', iataCode: 'JED' }, + { name: 'Jeju International Airport', iataCode: 'CJU' }, { name: 'John F Kennedy International Airport', iataCode: 'JFK' }, - { name: 'OR Tambo International Airport', iataCode: 'JNB' }, - { name: 'Kunming Changshui International Airport', iataCode: 'KMG' }, + { name: 'King Abdulaziz International Airport', iataCode: 'JED' }, + { name: 'King Khaled International Airport', iataCode: 'RUH' }, { name: 'Kuala Lumpur International Airport', iataCode: 'KUL' }, - { name: 'McCarran International Airport', iataCode: 'LAS' }, - { name: 'Los Angeles International Airport', iataCode: 'LAX' }, + { name: 'Kunming Changshui International Airport', iataCode: 'KMG' }, { name: 'La Guardia Airport', iataCode: 'LGA' }, + { name: 'Leonardo da Vinci–Fiumicino Airport', iataCode: 'FCO' }, + { name: 'Lester B. Pearson International Airport', iataCode: 'YYZ' }, + { name: 'Licenciado Benito Juarez International Airport', iataCode: 'MEX' }, { name: 'London Gatwick Airport', iataCode: 'LGW' }, { name: 'London Heathrow Airport', iataCode: 'LHR' }, - { - name: 'Humberto Delgado Airport (Lisbon Portela Airport)', - iataCode: 'LIS', - }, - { name: 'Adolfo Suárez Madrid–Barajas Airport', iataCode: 'MAD' }, + { name: 'London Stansted Airport', iataCode: 'STN' }, + { name: 'Los Angeles International Airport', iataCode: 'LAX' }, + { name: 'Malpensa International Airport', iataCode: 'MXP' }, { name: 'Manchester Airport', iataCode: 'MAN' }, - { name: 'Orlando International Airport', iataCode: 'MCO' }, - { name: 'Chicago Midway International Airport', iataCode: 'MDW' }, + { name: 'McCarran International Airport', iataCode: 'LAS' }, { name: 'Melbourne International Airport', iataCode: 'MEL' }, - { name: 'Licenciado Benito Juarez International Airport', iataCode: 'MEX' }, { name: 'Miami International Airport', iataCode: 'MIA' }, - { name: 'Ninoy Aquino International Airport', iataCode: 'MNL' }, { name: 'Minneapolis-St Paul International/Wold-Chamberlain Airport', iataCode: 'MSP', }, { name: 'Munich Airport', iataCode: 'MUC' }, - { name: 'Malpensa International Airport', iataCode: 'MXP' }, { name: 'Narita International Airport', iataCode: 'NRT' }, - { name: "Chicago O'Hare International Airport", iataCode: 'ORD' }, - { name: 'Paris-Orly Airport', iataCode: 'ORY' }, + { name: 'New Chitose Airport', iataCode: 'CTS' }, + { name: 'Newark Liberty International Airport', iataCode: 'EWR' }, + { name: 'Ninoy Aquino International Airport', iataCode: 'MNL' }, + { name: 'OR Tambo International Airport', iataCode: 'JNB' }, + { name: 'Orlando International Airport', iataCode: 'MCO' }, { name: 'Oslo Lufthavn', iataCode: 'OSL' }, - { name: 'Beijing Capital International Airport', iataCode: 'PEK' }, + { name: 'Palma De Mallorca Airport', iataCode: 'PMI' }, + { name: 'Paris-Orly Airport', iataCode: 'ORY' }, { name: 'Philadelphia International Airport', iataCode: 'PHL' }, { name: 'Phoenix Sky Harbor International Airport', iataCode: 'PHX' }, - { name: 'Palma De Mallorca Airport', iataCode: 'PMI' }, - { name: 'Shanghai Pudong International Airport', iataCode: 'PVG' }, - { name: 'King Khaled International Airport', iataCode: 'RUH' }, + { + name: 'Presidente Juscelino Kubistschek International Airport', + iataCode: 'BSB', + }, + { name: 'Rio Galeão - Tom Jobim International Airport', iataCode: 'GIG' }, + { name: 'Ronald Reagan Washington National Airport', iataCode: 'DCA' }, + { name: 'Salt Lake City International Airport', iataCode: 'SLC' }, { name: 'San Diego International Airport', iataCode: 'SAN' }, - { name: 'Seattle Tacoma International Airport', iataCode: 'SEA' }, { name: 'San Francisco International Airport', iataCode: 'SFO' }, + { name: 'Seattle Tacoma International Airport', iataCode: 'SEA' }, { name: 'Shanghai Hongqiao International Airport', iataCode: 'SHA' }, - { name: 'Singapore Changi Airport', iataCode: 'SIN' }, - { name: 'Salt Lake City International Airport', iataCode: 'SLC' }, - { name: 'London Stansted Airport', iataCode: 'STN' }, + { 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: "Shenzhen Bao'an International Airport", iataCode: 'SZX' }, - { name: 'Tampa International Airport', iataCode: 'TPA' }, { name: 'Taiwan Taoyuan International Airport', iataCode: 'TPE' }, - { name: 'Berlin-Tegel Airport', iataCode: 'TXL' }, + { name: 'Tampa International Airport', iataCode: 'TPA' }, + { name: 'Tokyo Haneda International Airport', iataCode: 'HND' }, + { name: 'Vancouver International Airport', iataCode: 'YVR' }, { name: 'Vienna International Airport', iataCode: 'VIE' }, + { name: 'Washington Dulles International Airport', iataCode: 'IAD' }, { name: 'Xiamen Gaoqi International Airport', iataCode: 'XMN' }, - { name: 'Vancouver International Airport', iataCode: 'YVR' }, - { name: 'Lester B. Pearson International Airport', iataCode: 'YYZ' }, { name: 'Zürich Airport', iataCode: 'ZRH' }, ]); diff --git a/test/__snapshots__/airline.spec.ts.snap b/test/__snapshots__/airline.spec.ts.snap index 6eb37031de6..3724821a9c1 100644 --- a/test/__snapshots__/airline.spec.ts.snap +++ b/test/__snapshots__/airline.spec.ts.snap @@ -18,8 +18,8 @@ exports[`airline > 42 > airplane 1`] = ` exports[`airline > 42 > airport 1`] = ` { - "iataCode": "FRA", - "name": "Frankfurt am Main Airport", + "iataCode": "ATL", + "name": "Hartsfield Jackson Atlanta International Airport", } `; @@ -69,8 +69,8 @@ exports[`airline > 1211 > airplane 1`] = ` exports[`airline > 1211 > airport 1`] = ` { - "iataCode": "TPA", - "name": "Tampa International Airport", + "iataCode": "TPE", + "name": "Taiwan Taoyuan International Airport", } `; @@ -120,8 +120,8 @@ exports[`airline > 1337 > airplane 1`] = ` exports[`airline > 1337 > airport 1`] = ` { - "iataCode": "DEN", - "name": "Denver International Airport", + "iataCode": "ATH", + "name": "Eleftherios Venizelos International Airport", } `; From dd9d578720b9e9710ebecb3f69fe364eb1a4dec5 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 3 Jan 2023 14:51:40 -0700 Subject: [PATCH 32/54] Correctly formatted airplane defintion file --- src/locales/en/airline/airplane.ts | 1160 ++++++---------------------- 1 file changed, 232 insertions(+), 928 deletions(-) diff --git a/src/locales/en/airline/airplane.ts b/src/locales/en/airline/airplane.ts index d7ffaa9126e..4fa7d6e463f 100644 --- a/src/locales/en/airline/airplane.ts +++ b/src/locales/en/airline/airplane.ts @@ -1,425 +1,110 @@ // Generated from data at https://raw.githubusercontent.com/jpatokal/openflights/master/data/planes.dat export default Object.freeze([ - { - name: 'Aerospatiale (Nord) 262', - iataCode: 'ND2', - }, - { - name: 'Aerospatiale (Sud Aviation) Se.210 Caravelle', - iataCode: 'CRV', - }, - { - name: 'Aerospatiale SN.601 Corvette', - iataCode: 'NDC', - }, - { - name: 'Aerospatiale/Alenia ATR 42-300', - iataCode: 'AT4', - }, - { - name: 'Aerospatiale/Alenia ATR 42-500', - iataCode: 'AT5', - }, - { - name: 'Aerospatiale/Alenia ATR 42-600', - iataCode: 'ATR', - }, - { - name: 'Aerospatiale/Alenia ATR 72', - iataCode: 'AT7', - }, - { - name: 'Airbus A300', - iataCode: 'AB3', - }, - { - name: 'Airbus A300-600', - iataCode: 'AB6', - }, - { - name: 'Airbus A300-600ST Super Transporter / Beluga', - iataCode: 'ABB', - }, - { - name: 'Airbus A310', - iataCode: '310', - }, - { - name: 'Airbus A318', - iataCode: '318', - }, - { - name: 'Airbus A319', - iataCode: '319', - }, - { - name: 'Airbus A319neo', - iataCode: '31N', - }, - { - name: 'Airbus A320', - iataCode: '320', - }, - { - name: 'Airbus A320neo', - iataCode: '32N', - }, - { - name: 'Airbus A321', - iataCode: '321', - }, - { - name: 'Airbus A321neo', - iataCode: '32Q', - }, - { - name: 'Airbus A330', - iataCode: '330', - }, - { - name: 'Airbus A330-200', - iataCode: '332', - }, - { - name: 'Airbus A330-300', - iataCode: '333', - }, - { - name: 'Airbus A330-800neo', - iataCode: '338', - }, - { - name: 'Airbus A330-900neo', - iataCode: '339', - }, - { - name: 'Airbus A340', - iataCode: '340', - }, - { - name: 'Airbus A340-200', - iataCode: '342', - }, - { - name: 'Airbus A340-300', - iataCode: '343', - }, - { - name: 'Airbus A340-500', - iataCode: '345', - }, - { - name: 'Airbus A340-600', - iataCode: '346', - }, - { - name: 'Airbus A350', - iataCode: '350', - }, - { - name: 'Airbus A350-1000', - iataCode: '351', - }, - { - name: 'Airbus A350-900', - iataCode: '359', - }, - { - name: 'Airbus A380', - iataCode: '380', - }, - { - name: 'Airbus A380-800', - iataCode: '388', - }, - { - name: 'Antonov AN-12', - iataCode: 'ANF', - }, - { - name: 'Antonov AN-124 Ruslan', - iataCode: 'A4F', - }, - { - name: 'Antonov AN-140', - iataCode: 'A40', - }, - { - name: 'Antonov AN-24', - iataCode: 'AN4', - }, - { - name: 'Antonov AN-26', - iataCode: 'A26', - }, - { - name: 'Antonov AN-28', - iataCode: 'A28', - }, - { - name: 'Antonov AN-30', - iataCode: 'A30', - }, - { - name: 'Antonov AN-32', - iataCode: 'A32', - }, - { - name: 'Antonov AN-72', - iataCode: 'AN7', - }, - { - name: 'Antonov An-148', - iataCode: 'A81', - }, - { - name: 'Antonov An-158', - iataCode: 'A58', - }, - { - name: 'Antonov An-225 Mriya', - iataCode: 'A25', - }, - { - name: 'Avro RJ100', - iataCode: 'AR1', - }, - { - name: 'Avro RJ70', - iataCode: 'AR7', - }, - { - name: 'Avro RJ85', - iataCode: 'AR8', - }, - { - name: 'BAe 146', - iataCode: '146', - }, - { - name: 'BAe 146-100', - iataCode: '141', - }, - { - name: 'BAe 146-200', - iataCode: '142', - }, - { - name: 'BAe 146-300', - iataCode: '143', - }, - { - name: 'Beechcraft 1900', - iataCode: 'BEH', - }, - { - name: 'Bell 212', - iataCode: 'BH2', - }, - { - name: 'Boeing 707', - iataCode: '703', - }, - { - name: 'Boeing 717', - iataCode: '717', - }, - { - name: 'Boeing 720B', - iataCode: 'B72', - }, - { - name: 'Boeing 727', - iataCode: '727', - }, - { - name: 'Boeing 727-100', - iataCode: '721', - }, - { - name: 'Boeing 727-200', - iataCode: '722', - }, - { - name: 'Boeing 737', - iataCode: '737', - }, - { - name: 'Boeing 737 MAX 10', - iataCode: '7MJ', - }, - { - name: 'Boeing 737 MAX 7', - iataCode: '7M7', - }, - { - name: 'Boeing 737 MAX 8', - iataCode: '7M8', - }, - { - name: 'Boeing 737 MAX 9', - iataCode: '7M9', - }, - { - name: 'Boeing 737-200', - iataCode: '732', - }, - { - name: 'Boeing 737-300', - iataCode: '733', - }, - { - name: 'Boeing 737-400', - iataCode: '734', - }, - { - name: 'Boeing 737-500', - iataCode: '735', - }, - { - name: 'Boeing 737-600', - iataCode: '736', - }, - { - name: 'Boeing 737-700', - iataCode: '73G', - }, - { - name: 'Boeing 737-800', - iataCode: '738', - }, - { - name: 'Boeing 737-900', - iataCode: '739', - }, - { - name: 'Boeing 747', - iataCode: '747', - }, - { - name: 'Boeing 747 LCF Dreamlifter', - iataCode: '74B', - }, - { - name: 'Boeing 747-100', - iataCode: '741', - }, - { - name: 'Boeing 747-200', - iataCode: '742', - }, - { - name: 'Boeing 747-300', - iataCode: '743', - }, - { - name: 'Boeing 747-400', - iataCode: '744', - }, - { - name: 'Boeing 747-400D', - iataCode: '74J', - }, - { - name: 'Boeing 747-8', - iataCode: '748', - }, - { - name: 'Boeing 747SP', - iataCode: '74L', - }, - { - name: 'Boeing 747SR', - iataCode: '74R', - }, - { - name: 'Boeing 757', - iataCode: '757', - }, - { - name: 'Boeing 757-200', - iataCode: '752', - }, - { - name: 'Boeing 757-300', - iataCode: '753', - }, - { - name: 'Boeing 767', - iataCode: '767', - }, - { - name: 'Boeing 767-200', - iataCode: '762', - }, - { - name: 'Boeing 767-300', - iataCode: '763', - }, - { - name: 'Boeing 767-400', - iataCode: '764', - }, - { - name: 'Boeing 777', - iataCode: '777', - }, - { - name: 'Boeing 777-200', - iataCode: '772', - }, - { - name: 'Boeing 777-200LR', - iataCode: '77L', - }, - { - name: 'Boeing 777-300', - iataCode: '773', - }, - { - name: 'Boeing 777-300ER', - iataCode: '77W', - }, - { - name: 'Boeing 777-8', - iataCode: '778', - }, - { - name: 'Boeing 777-9', - iataCode: '779', - }, - { - name: 'Boeing 787', - iataCode: '787', - }, - { - name: 'Boeing 787-10', - iataCode: '78J', - }, - { - name: 'Boeing 787-8', - iataCode: '788', - }, - { - name: 'Boeing 787-9', - iataCode: '789', - }, - { - name: 'Bombardier CS100', - iataCode: 'CS1', - }, - { - name: 'Bombardier CS300', - iataCode: 'CS3', - }, - { - name: 'Bombardier Global Express', - iataCode: 'CCX', - }, - { - name: 'British Aerospace (BAC) One Eleven', - iataCode: 'B11', - }, + { name: 'Aerospatiale (Nord) 262', iataCode: 'ND2' }, + { name: 'Aerospatiale (Sud Aviation) Se.210 Caravelle', iataCode: 'CRV' }, + { name: 'Aerospatiale SN.601 Corvette', iataCode: 'NDC' }, + { name: 'Aerospatiale/Alenia ATR 42-300', iataCode: 'AT4' }, + { name: 'Aerospatiale/Alenia ATR 42-500', iataCode: 'AT5' }, + { name: 'Aerospatiale/Alenia ATR 42-600', iataCode: 'ATR' }, + { name: 'Aerospatiale/Alenia ATR 72', iataCode: 'AT7' }, + { name: 'Airbus A300', iataCode: 'AB3' }, + { name: 'Airbus A300-600', iataCode: 'AB6' }, + { name: 'Airbus A300-600ST Super Transporter / Beluga', iataCode: 'ABB' }, + { name: 'Airbus A310', iataCode: '310' }, + { name: 'Airbus A318', iataCode: '318' }, + { name: 'Airbus A319', iataCode: '319' }, + { name: 'Airbus A319neo', iataCode: '31N' }, + { name: 'Airbus A320', iataCode: '320' }, + { name: 'Airbus A320neo', iataCode: '32N' }, + { name: 'Airbus A321', iataCode: '321' }, + { name: 'Airbus A321neo', iataCode: '32Q' }, + { name: 'Airbus A330', iataCode: '330' }, + { name: 'Airbus A330-200', iataCode: '332' }, + { name: 'Airbus A330-300', iataCode: '333' }, + { name: 'Airbus A330-800neo', iataCode: '338' }, + { name: 'Airbus A330-900neo', iataCode: '339' }, + { name: 'Airbus A340', iataCode: '340' }, + { name: 'Airbus A340-200', iataCode: '342' }, + { name: 'Airbus A340-300', iataCode: '343' }, + { name: 'Airbus A340-500', iataCode: '345' }, + { name: 'Airbus A340-600', iataCode: '346' }, + { name: 'Airbus A350', iataCode: '350' }, + { name: 'Airbus A350-1000', iataCode: '351' }, + { name: 'Airbus A350-900', iataCode: '359' }, + { name: 'Airbus A380', iataCode: '380' }, + { name: 'Airbus A380-800', iataCode: '388' }, + { name: 'Antonov AN-12', iataCode: 'ANF' }, + { name: 'Antonov AN-124 Ruslan', iataCode: 'A4F' }, + { name: 'Antonov AN-140', iataCode: 'A40' }, + { name: 'Antonov AN-24', iataCode: 'AN4' }, + { name: 'Antonov AN-26', iataCode: 'A26' }, + { name: 'Antonov AN-28', iataCode: 'A28' }, + { name: 'Antonov AN-30', iataCode: 'A30' }, + { name: 'Antonov AN-32', iataCode: 'A32' }, + { name: 'Antonov AN-72', iataCode: 'AN7' }, + { name: 'Antonov An-148', iataCode: 'A81' }, + { name: 'Antonov An-158', iataCode: 'A58' }, + { name: 'Antonov An-225 Mriya', iataCode: 'A25' }, + { name: 'Avro RJ100', iataCode: 'AR1' }, + { name: 'Avro RJ70', iataCode: 'AR7' }, + { name: 'Avro RJ85', iataCode: 'AR8' }, + { name: 'BAe 146', iataCode: '146' }, + { name: 'BAe 146-100', iataCode: '141' }, + { name: 'BAe 146-200', iataCode: '142' }, + { name: 'BAe 146-300', iataCode: '143' }, + { name: 'Beechcraft 1900', iataCode: 'BEH' }, + { name: 'Bell 212', iataCode: 'BH2' }, + { name: 'Boeing 707', iataCode: '703' }, + { name: 'Boeing 717', iataCode: '717' }, + { name: 'Boeing 720B', iataCode: 'B72' }, + { name: 'Boeing 727', iataCode: '727' }, + { name: 'Boeing 727-100', iataCode: '721' }, + { name: 'Boeing 727-200', iataCode: '722' }, + { name: 'Boeing 737', iataCode: '737' }, + { name: 'Boeing 737 MAX 10', iataCode: '7MJ' }, + { name: 'Boeing 737 MAX 7', iataCode: '7M7' }, + { name: 'Boeing 737 MAX 8', iataCode: '7M8' }, + { name: 'Boeing 737 MAX 9', iataCode: '7M9' }, + { name: 'Boeing 737-200', iataCode: '732' }, + { name: 'Boeing 737-300', iataCode: '733' }, + { name: 'Boeing 737-400', iataCode: '734' }, + { name: 'Boeing 737-500', iataCode: '735' }, + { name: 'Boeing 737-600', iataCode: '736' }, + { name: 'Boeing 737-700', iataCode: '73G' }, + { name: 'Boeing 737-800', iataCode: '738' }, + { name: 'Boeing 737-900', iataCode: '739' }, + { name: 'Boeing 747', iataCode: '747' }, + { name: 'Boeing 747 LCF Dreamlifter', iataCode: '74B' }, + { name: 'Boeing 747-100', iataCode: '741' }, + { name: 'Boeing 747-200', iataCode: '742' }, + { name: 'Boeing 747-300', iataCode: '743' }, + { name: 'Boeing 747-400', iataCode: '744' }, + { name: 'Boeing 747-400D', iataCode: '74J' }, + { name: 'Boeing 747-8', iataCode: '748' }, + { name: 'Boeing 747SP', iataCode: '74L' }, + { name: 'Boeing 747SR', iataCode: '74R' }, + { name: 'Boeing 757', iataCode: '757' }, + { name: 'Boeing 757-200', iataCode: '752' }, + { name: 'Boeing 757-300', iataCode: '753' }, + { name: 'Boeing 767', iataCode: '767' }, + { name: 'Boeing 767-200', iataCode: '762' }, + { name: 'Boeing 767-300', iataCode: '763' }, + { name: 'Boeing 767-400', iataCode: '764' }, + { name: 'Boeing 777', iataCode: '777' }, + { name: 'Boeing 777-200', iataCode: '772' }, + { name: 'Boeing 777-200LR', iataCode: '77L' }, + { name: 'Boeing 777-300', iataCode: '773' }, + { name: 'Boeing 777-300ER', iataCode: '77W' }, + { name: 'Boeing 777-8', iataCode: '778' }, + { name: 'Boeing 777-9', iataCode: '779' }, + { name: 'Boeing 787', iataCode: '787' }, + { name: 'Boeing 787-10', iataCode: '78J' }, + { name: 'Boeing 787-8', iataCode: '788' }, + { name: 'Boeing 787-9', iataCode: '789' }, + { name: 'Bombardier CS100', iataCode: 'CS1' }, + { name: 'Bombardier CS300', iataCode: 'CS3' }, + { name: 'Bombardier Global Express', iataCode: 'CCX' }, + { name: 'British Aerospace (BAC) One Eleven', iataCode: 'B11' }, { name: 'British Aerospace 125 series / Hawker/Raytheon 700/800/800XP/850/900', iataCode: 'H25', @@ -428,512 +113,131 @@ export default Object.freeze([ name: 'British Aerospace 125-1000 series / Hawker/Raytheon 1000', iataCode: 'H25', }, - { - name: 'British Aerospace ATP', - iataCode: 'ATP', - }, - { - name: 'British Aerospace Jetstream 31', - iataCode: 'J31', - }, - { - name: 'British Aerospace Jetstream 32', - iataCode: 'J32', - }, - { - name: 'British Aerospace Jetstream 41', - iataCode: 'J41', - }, - { - name: 'Canadair CL-44', - iataCode: 'CL4', - }, - { - name: 'Canadair Challenger', - iataCode: 'CCJ', - }, - { - name: 'Canadair Regional Jet 100', - iataCode: 'CR1', - }, - { - name: 'Canadair Regional Jet 1000', - iataCode: 'CRK', - }, - { - name: 'Canadair Regional Jet 200', - iataCode: 'CR2', - }, - { - name: 'Canadair Regional Jet 700', - iataCode: 'CR7', - }, - { - name: 'Canadair Regional Jet 900', - iataCode: 'CR9', - }, - { - name: 'Cessna 172', - iataCode: 'CN1', - }, - { - name: 'Cessna 182 Skylane', - iataCode: 'CN1', - }, - { - name: 'Cessna 208 Caravan', - iataCode: 'CN1', - }, - { - name: 'Cessna 210 Centurion', - iataCode: 'CN1', - }, - { - name: 'Cessna Citation CJ3', - iataCode: 'CNJ', - }, - { - name: 'Cessna Citation CJ4', - iataCode: 'CNJ', - }, - { - name: 'Cessna Citation Excel', - iataCode: 'CNJ', - }, - { - name: 'Cessna Citation I', - iataCode: 'CNJ', - }, - { - name: 'Cessna Citation II', - iataCode: 'CNJ', - }, - { - name: 'Cessna Citation Mustang', - iataCode: 'CNJ', - }, - { - name: 'Cessna Citation Sovereign', - iataCode: 'CNJ', - }, - { - name: 'Cessna Citation X', - iataCode: 'CNJ', - }, - { - name: 'Concorde', - iataCode: 'SSC', - }, - { - name: 'Dassault Falcon 2000', - iataCode: 'D20', - }, - { - name: 'Dassault Falcon 50', - iataCode: 'DF3', - }, - { - name: 'Dassault Falcon 7X', - iataCode: 'DF7', - }, - { - name: 'Dassault Falcon 900', - iataCode: 'DF9', - }, - { - name: 'De Havilland Canada DHC-2 Beaver', - iataCode: 'DHP', - }, - { - name: 'De Havilland Canada DHC-2 Turbo-Beaver', - iataCode: 'DHR', - }, - { - name: 'De Havilland Canada DHC-3 Otter', - iataCode: 'DHL', - }, - { - name: 'De Havilland Canada DHC-4 Caribou', - iataCode: 'DHC', - }, - { - name: 'De Havilland Canada DHC-6 Twin Otter', - iataCode: 'DHT', - }, - { - name: 'De Havilland Canada DHC-7 Dash 7', - iataCode: 'DH7', - }, - { - name: 'De Havilland Canada DHC-8-100 Dash 8 / 8Q', - iataCode: 'DH1', - }, - { - name: 'De Havilland Canada DHC-8-200 Dash 8 / 8Q', - iataCode: 'DH2', - }, - { - name: 'De Havilland Canada DHC-8-300 Dash 8', - iataCode: 'DH3', - }, - { - name: 'De Havilland Canada DHC-8-400 Dash 8Q', - iataCode: 'DH4', - }, - { - name: 'De Havilland DH.104 Dove', - iataCode: 'DHD', - }, - { - name: 'De Havilland DH.114 Heron', - iataCode: 'DHH', - }, - { - name: 'Douglas DC-10', - iataCode: 'D10', - }, - { - name: 'Douglas DC-3', - iataCode: 'D3F', - }, - { - name: 'Douglas DC-6', - iataCode: 'D6F', - }, - { - name: 'Douglas DC-8-50', - iataCode: 'D8T', - }, - { - name: 'Douglas DC-8-62', - iataCode: 'D8L', - }, - { - name: 'Douglas DC-8-72', - iataCode: 'D8Q', - }, - { - name: 'Douglas DC-9-10', - iataCode: 'D91', - }, - { - name: 'Douglas DC-9-20', - iataCode: 'D92', - }, - { - name: 'Douglas DC-9-30', - iataCode: 'D93', - }, - { - name: 'Douglas DC-9-40', - iataCode: 'D94', - }, - { - name: 'Douglas DC-9-50', - iataCode: 'D95', - }, - { - name: 'Embraer 170', - iataCode: 'E70', - }, - { - name: 'Embraer 175', - iataCode: 'E75', - }, - { - name: 'Embraer 175 (long wing)', - iataCode: 'E7W', - }, - { - name: 'Embraer 175 (short wing)', - iataCode: 'E7W', - }, - { - name: 'Embraer 190', - iataCode: 'E90', - }, - { - name: 'Embraer 195', - iataCode: 'E95', - }, - { - name: 'Embraer E190-E2', - iataCode: '290', - }, - { - name: 'Embraer E195-E2', - iataCode: '295', - }, - { - name: 'Embraer EMB 110 Bandeirante', - iataCode: 'EMB', - }, - { - name: 'Embraer EMB 120 Brasilia', - iataCode: 'EM2', - }, - { - name: 'Embraer Legacy 600', - iataCode: 'ER3', - }, - { - name: 'Embraer Phenom 100', - iataCode: 'EP1', - }, - { - name: 'Embraer Phenom 300', - iataCode: 'EP3', - }, - { - name: 'Embraer RJ135', - iataCode: 'ER3', - }, - { - name: 'Embraer RJ140', - iataCode: 'ERD', - }, - { - name: 'Embraer RJ145', - iataCode: 'ER4', - }, - { - name: 'Fairchild Dornier 328JET', - iataCode: 'FRJ', - }, - { - name: 'Fairchild Dornier Do.228', - iataCode: 'D28', - }, - { - name: 'Fairchild Dornier Do.328', - iataCode: 'D38', - }, - { - name: 'Fokker 100', - iataCode: '100', - }, - { - name: 'Fokker 50', - iataCode: 'F50', - }, - { - name: 'Fokker 70', - iataCode: 'F70', - }, - { - name: 'Fokker F27 Friendship', - iataCode: 'F27', - }, - { - name: 'Fokker F28 Fellowship', - iataCode: 'F21', - }, - { - name: 'Gulfstream Aerospace G-159 Gulfstream I', - iataCode: 'GRS', - }, - { - name: 'Gulfstream G280', - iataCode: 'GR3', - }, - { - name: 'Gulfstream G650', - iataCode: 'GJ6', - }, - { - name: 'Gulfstream IV', - iataCode: 'GJ4', - }, - { - name: 'Gulfstream V', - iataCode: 'GJ5', - }, - { - name: 'Gulfstream/Rockwell (Aero) Commander', - iataCode: 'ACP', - }, - { - name: 'Gulfstream/Rockwell (Aero) Turbo Commander', - iataCode: 'ACT', - }, - { - name: 'Harbin Yunshuji Y12', - iataCode: 'YN2', - }, - { - name: 'Hawker Siddeley HS 748', - iataCode: 'HS7', - }, - { - name: 'Ilyushin IL114', - iataCode: 'I14', - }, - { - name: 'Ilyushin IL18', - iataCode: 'IL8', - }, - { - name: 'Ilyushin IL62', - iataCode: 'IL6', - }, - { - name: 'Ilyushin IL76', - iataCode: 'IL7', - }, - { - name: 'Ilyushin IL86', - iataCode: 'ILW', - }, - { - name: 'Ilyushin IL96', - iataCode: 'I93', - }, - { - name: 'Learjet 35', - iataCode: 'LRJ', - }, - { - name: 'Learjet 60', - iataCode: 'LRJ', - }, - { - name: 'Lockheed L-1011 Tristar', - iataCode: 'L10', - }, - { - name: 'Lockheed L-1049 Super Constellation', - iataCode: 'L49', - }, - { - name: 'Lockheed L-182 / 282 / 382 (L-100) Hercules', - iataCode: 'LOH', - }, - { - name: 'Lockheed L-188 Electra', - iataCode: 'LOE', - }, - { - name: 'McDonnell Douglas MD-11', - iataCode: 'M11', - }, - { - name: 'McDonnell Douglas MD-81', - iataCode: 'M81', - }, - { - name: 'McDonnell Douglas MD-82', - iataCode: 'M82', - }, - { - name: 'McDonnell Douglas MD-83', - iataCode: 'M83', - }, - { - name: 'McDonnell Douglas MD-87', - iataCode: 'M87', - }, - { - name: 'McDonnell Douglas MD-88', - iataCode: 'M88', - }, - { - name: 'McDonnell Douglas MD-90', - iataCode: 'M90', - }, - { - name: 'NAMC YS-11', - iataCode: 'YS1', - }, - { - name: 'Partenavia P.68', - iataCode: 'PN6', - }, - { - name: 'Pilatus Britten-Norman BN-2A Mk III Trislander', - iataCode: 'BNT', - }, - { - name: 'Pilatus Britten-Norman BN-2A/B Islander', - iataCode: 'BNI', - }, - { - name: 'Pilatus PC-12', - iataCode: 'PL2', - }, - { - name: 'Pilatus PC-6 Turbo Porter', - iataCode: 'PL6', - }, - { - name: 'Piper PA-31 Navajo', - iataCode: 'PA2', - }, - { - name: 'Piper PA-46', - iataCode: 'PAG', - }, - { - name: 'Saab 2000', - iataCode: 'S20', - }, - { - name: 'Saab SF340A/B', - iataCode: 'SF3', - }, - { - name: 'Shorts SC-5 Belfast', - iataCode: 'SHB', - }, - { - name: 'Shorts SC-7 Skyvan', - iataCode: 'SHS', - }, - { - name: 'Shorts SD.330', - iataCode: 'SH3', - }, - { - name: 'Shorts SD.360', - iataCode: 'SH6', - }, - { - name: 'Sikorsky S-58T', - iataCode: 'S58', - }, - { - name: 'Sikorsky S-61', - iataCode: 'S61', - }, - { - name: 'Sikorsky S-76', - iataCode: 'S76', - }, - { - name: 'Sikorsky S-92', - iataCode: 'S92', - }, - { - name: 'Sukhoi Superjet 100-95', - iataCode: 'SU9', - }, - { - name: 'Tupolev Tu-134', - iataCode: 'TU3', - }, - { - name: 'Tupolev Tu-154', - iataCode: 'TU5', - }, - { - name: 'Tupolev Tu-204', - iataCode: 'T20', - }, - { - name: 'Yakovlev Yak-40', - iataCode: 'YK4', - }, - { - name: 'Yakovlev Yak-42', - iataCode: 'YK2', - }, + { name: 'British Aerospace ATP', iataCode: 'ATP' }, + { name: 'British Aerospace Jetstream 31', iataCode: 'J31' }, + { name: 'British Aerospace Jetstream 32', iataCode: 'J32' }, + { name: 'British Aerospace Jetstream 41', iataCode: 'J41' }, + { name: 'Canadair CL-44', iataCode: 'CL4' }, + { name: 'Canadair Challenger', iataCode: 'CCJ' }, + { name: 'Canadair Regional Jet 100', iataCode: 'CR1' }, + { name: 'Canadair Regional Jet 1000', iataCode: 'CRK' }, + { name: 'Canadair Regional Jet 200', iataCode: 'CR2' }, + { name: 'Canadair Regional Jet 700', iataCode: 'CR7' }, + { name: 'Canadair Regional Jet 900', iataCode: 'CR9' }, + { name: 'Cessna 172', iataCode: 'CN1' }, + { name: 'Cessna 182 Skylane', iataCode: 'CN1' }, + { name: 'Cessna 208 Caravan', iataCode: 'CN1' }, + { name: 'Cessna 210 Centurion', iataCode: 'CN1' }, + { name: 'Cessna Citation CJ3', iataCode: 'CNJ' }, + { name: 'Cessna Citation CJ4', iataCode: 'CNJ' }, + { name: 'Cessna Citation Excel', iataCode: 'CNJ' }, + { name: 'Cessna Citation I', iataCode: 'CNJ' }, + { name: 'Cessna Citation II', iataCode: 'CNJ' }, + { name: 'Cessna Citation Mustang', iataCode: 'CNJ' }, + { name: 'Cessna Citation Sovereign', iataCode: 'CNJ' }, + { name: 'Cessna Citation X', iataCode: 'CNJ' }, + { name: 'Concorde', iataCode: 'SSC' }, + { name: 'Dassault Falcon 2000', iataCode: 'D20' }, + { name: 'Dassault Falcon 50', iataCode: 'DF3' }, + { name: 'Dassault Falcon 7X', iataCode: 'DF7' }, + { name: 'Dassault Falcon 900', iataCode: 'DF9' }, + { name: 'De Havilland Canada DHC-2 Beaver', iataCode: 'DHP' }, + { name: 'De Havilland Canada DHC-2 Turbo-Beaver', iataCode: 'DHR' }, + { name: 'De Havilland Canada DHC-3 Otter', iataCode: 'DHL' }, + { name: 'De Havilland Canada DHC-4 Caribou', iataCode: 'DHC' }, + { name: 'De Havilland Canada DHC-6 Twin Otter', iataCode: 'DHT' }, + { name: 'De Havilland Canada DHC-7 Dash 7', iataCode: 'DH7' }, + { name: 'De Havilland Canada DHC-8-100 Dash 8 / 8Q', iataCode: 'DH1' }, + { name: 'De Havilland Canada DHC-8-200 Dash 8 / 8Q', iataCode: 'DH2' }, + { name: 'De Havilland Canada DHC-8-300 Dash 8', iataCode: 'DH3' }, + { name: 'De Havilland Canada DHC-8-400 Dash 8Q', iataCode: 'DH4' }, + { name: 'De Havilland DH.104 Dove', iataCode: 'DHD' }, + { name: 'De Havilland DH.114 Heron', iataCode: 'DHH' }, + { name: 'Douglas DC-10', iataCode: 'D10' }, + { name: 'Douglas DC-3', iataCode: 'D3F' }, + { name: 'Douglas DC-6', iataCode: 'D6F' }, + { name: 'Douglas DC-8-50', iataCode: 'D8T' }, + { name: 'Douglas DC-8-62', iataCode: 'D8L' }, + { name: 'Douglas DC-8-72', iataCode: 'D8Q' }, + { name: 'Douglas DC-9-10', iataCode: 'D91' }, + { name: 'Douglas DC-9-20', iataCode: 'D92' }, + { name: 'Douglas DC-9-30', iataCode: 'D93' }, + { name: 'Douglas DC-9-40', iataCode: 'D94' }, + { name: 'Douglas DC-9-50', iataCode: 'D95' }, + { name: 'Embraer 170', iataCode: 'E70' }, + { name: 'Embraer 175', iataCode: 'E75' }, + { name: 'Embraer 175 (long wing)', iataCode: 'E7W' }, + { name: 'Embraer 175 (short wing)', iataCode: 'E7W' }, + { name: 'Embraer 190', iataCode: 'E90' }, + { name: 'Embraer 195', iataCode: 'E95' }, + { name: 'Embraer E190-E2', iataCode: '290' }, + { name: 'Embraer E195-E2', iataCode: '295' }, + { name: 'Embraer EMB 110 Bandeirante', iataCode: 'EMB' }, + { name: 'Embraer EMB 120 Brasilia', iataCode: 'EM2' }, + { name: 'Embraer Legacy 600', iataCode: 'ER3' }, + { name: 'Embraer Phenom 100', iataCode: 'EP1' }, + { name: 'Embraer Phenom 300', iataCode: 'EP3' }, + { name: 'Embraer RJ135', iataCode: 'ER3' }, + { name: 'Embraer RJ140', iataCode: 'ERD' }, + { name: 'Embraer RJ145', iataCode: 'ER4' }, + { name: 'Fairchild Dornier 328JET', iataCode: 'FRJ' }, + { name: 'Fairchild Dornier Do.228', iataCode: 'D28' }, + { name: 'Fairchild Dornier Do.328', iataCode: 'D38' }, + { name: 'Fokker 100', iataCode: '100' }, + { name: 'Fokker 50', iataCode: 'F50' }, + { name: 'Fokker 70', iataCode: 'F70' }, + { name: 'Fokker F27 Friendship', iataCode: 'F27' }, + { name: 'Fokker F28 Fellowship', iataCode: 'F21' }, + { name: 'Gulfstream Aerospace G-159 Gulfstream I', iataCode: 'GRS' }, + { name: 'Gulfstream G280', iataCode: 'GR3' }, + { name: 'Gulfstream G650', iataCode: 'GJ6' }, + { name: 'Gulfstream IV', iataCode: 'GJ4' }, + { name: 'Gulfstream V', iataCode: 'GJ5' }, + { name: 'Gulfstream/Rockwell (Aero) Commander', iataCode: 'ACP' }, + { name: 'Gulfstream/Rockwell (Aero) Turbo Commander', iataCode: 'ACT' }, + { name: 'Harbin Yunshuji Y12', iataCode: 'YN2' }, + { name: 'Hawker Siddeley HS 748', iataCode: 'HS7' }, + { name: 'Ilyushin IL114', iataCode: 'I14' }, + { name: 'Ilyushin IL18', iataCode: 'IL8' }, + { name: 'Ilyushin IL62', iataCode: 'IL6' }, + { name: 'Ilyushin IL76', iataCode: 'IL7' }, + { name: 'Ilyushin IL86', iataCode: 'ILW' }, + { name: 'Ilyushin IL96', iataCode: 'I93' }, + { name: 'Learjet 35', iataCode: 'LRJ' }, + { name: 'Learjet 60', iataCode: 'LRJ' }, + { name: 'Lockheed L-1011 Tristar', iataCode: 'L10' }, + { name: 'Lockheed L-1049 Super Constellation', iataCode: 'L49' }, + { name: 'Lockheed L-182 / 282 / 382 (L-100) Hercules', iataCode: 'LOH' }, + { name: 'Lockheed L-188 Electra', iataCode: 'LOE' }, + { name: 'McDonnell Douglas MD-11', iataCode: 'M11' }, + { name: 'McDonnell Douglas MD-81', iataCode: 'M81' }, + { name: 'McDonnell Douglas MD-82', iataCode: 'M82' }, + { name: 'McDonnell Douglas MD-83', iataCode: 'M83' }, + { name: 'McDonnell Douglas MD-87', iataCode: 'M87' }, + { name: 'McDonnell Douglas MD-88', iataCode: 'M88' }, + { name: 'McDonnell Douglas MD-90', iataCode: 'M90' }, + { name: 'NAMC YS-11', iataCode: 'YS1' }, + { name: 'Partenavia P.68', iataCode: 'PN6' }, + { name: 'Pilatus Britten-Norman BN-2A Mk III Trislander', iataCode: 'BNT' }, + { name: 'Pilatus Britten-Norman BN-2A/B Islander', iataCode: 'BNI' }, + { name: 'Pilatus PC-12', iataCode: 'PL2' }, + { name: 'Pilatus PC-6 Turbo Porter', iataCode: 'PL6' }, + { name: 'Piper PA-31 Navajo', iataCode: 'PA2' }, + { name: 'Piper PA-46', iataCode: 'PAG' }, + { name: 'Saab 2000', iataCode: 'S20' }, + { name: 'Saab SF340A/B', iataCode: 'SF3' }, + { name: 'Shorts SC-5 Belfast', iataCode: 'SHB' }, + { name: 'Shorts SC-7 Skyvan', iataCode: 'SHS' }, + { name: 'Shorts SD.330', iataCode: 'SH3' }, + { name: 'Shorts SD.360', iataCode: 'SH6' }, + { name: 'Sikorsky S-58T', iataCode: 'S58' }, + { name: 'Sikorsky S-61', iataCode: 'S61' }, + { name: 'Sikorsky S-76', iataCode: 'S76' }, + { name: 'Sikorsky S-92', iataCode: 'S92' }, + { name: 'Sukhoi Superjet 100-95', iataCode: 'SU9' }, + { name: 'Tupolev Tu-134', iataCode: 'TU3' }, + { name: 'Tupolev Tu-154', iataCode: 'TU5' }, + { name: 'Tupolev Tu-204', iataCode: 'T20' }, + { name: 'Yakovlev Yak-40', iataCode: 'YK4' }, + { name: 'Yakovlev Yak-42', iataCode: 'YK2' }, ]); From bf66c27806916881f474a113e76ad0f7ee797bdd Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Wed, 4 Jan 2023 22:18:51 -0700 Subject: [PATCH 33/54] Updated airplane definition file --- src/locales/en/airline/airplane.ts | 396 +++++++++++------------------ src/modules/airline/index.ts | 2 +- 2 files changed, 156 insertions(+), 242 deletions(-) diff --git a/src/locales/en/airline/airplane.ts b/src/locales/en/airline/airplane.ts index 4fa7d6e463f..8056ea813df 100644 --- a/src/locales/en/airline/airplane.ts +++ b/src/locales/en/airline/airplane.ts @@ -1,243 +1,157 @@ -// Generated from data at https://raw.githubusercontent.com/jpatokal/openflights/master/data/planes.dat export default Object.freeze([ - { name: 'Aerospatiale (Nord) 262', iataCode: 'ND2' }, - { name: 'Aerospatiale (Sud Aviation) Se.210 Caravelle', iataCode: 'CRV' }, - { name: 'Aerospatiale SN.601 Corvette', iataCode: 'NDC' }, - { name: 'Aerospatiale/Alenia ATR 42-300', iataCode: 'AT4' }, - { name: 'Aerospatiale/Alenia ATR 42-500', iataCode: 'AT5' }, - { name: 'Aerospatiale/Alenia ATR 42-600', iataCode: 'ATR' }, - { name: 'Aerospatiale/Alenia ATR 72', iataCode: 'AT7' }, - { name: 'Airbus A300', iataCode: 'AB3' }, - { name: 'Airbus A300-600', iataCode: 'AB6' }, - { name: 'Airbus A300-600ST Super Transporter / Beluga', iataCode: 'ABB' }, - { name: 'Airbus A310', iataCode: '310' }, - { name: 'Airbus A318', iataCode: '318' }, - { name: 'Airbus A319', iataCode: '319' }, - { name: 'Airbus A319neo', iataCode: '31N' }, - { name: 'Airbus A320', iataCode: '320' }, - { name: 'Airbus A320neo', iataCode: '32N' }, - { name: 'Airbus A321', iataCode: '321' }, - { name: 'Airbus A321neo', iataCode: '32Q' }, - { name: 'Airbus A330', iataCode: '330' }, - { name: 'Airbus A330-200', iataCode: '332' }, - { name: 'Airbus A330-300', iataCode: '333' }, - { name: 'Airbus A330-800neo', iataCode: '338' }, - { name: 'Airbus A330-900neo', iataCode: '339' }, - { name: 'Airbus A340', iataCode: '340' }, - { name: 'Airbus A340-200', iataCode: '342' }, - { name: 'Airbus A340-300', iataCode: '343' }, - { name: 'Airbus A340-500', iataCode: '345' }, - { name: 'Airbus A340-600', iataCode: '346' }, - { name: 'Airbus A350', iataCode: '350' }, - { name: 'Airbus A350-1000', iataCode: '351' }, - { name: 'Airbus A350-900', iataCode: '359' }, - { name: 'Airbus A380', iataCode: '380' }, - { name: 'Airbus A380-800', iataCode: '388' }, - { name: 'Antonov AN-12', iataCode: 'ANF' }, - { name: 'Antonov AN-124 Ruslan', iataCode: 'A4F' }, - { name: 'Antonov AN-140', iataCode: 'A40' }, - { name: 'Antonov AN-24', iataCode: 'AN4' }, - { name: 'Antonov AN-26', iataCode: 'A26' }, - { name: 'Antonov AN-28', iataCode: 'A28' }, - { name: 'Antonov AN-30', iataCode: 'A30' }, - { name: 'Antonov AN-32', iataCode: 'A32' }, - { name: 'Antonov AN-72', iataCode: 'AN7' }, - { name: 'Antonov An-148', iataCode: 'A81' }, - { name: 'Antonov An-158', iataCode: 'A58' }, - { name: 'Antonov An-225 Mriya', iataCode: 'A25' }, - { name: 'Avro RJ100', iataCode: 'AR1' }, - { name: 'Avro RJ70', iataCode: 'AR7' }, - { name: 'Avro RJ85', iataCode: 'AR8' }, - { name: 'BAe 146', iataCode: '146' }, - { name: 'BAe 146-100', iataCode: '141' }, - { name: 'BAe 146-200', iataCode: '142' }, - { name: 'BAe 146-300', iataCode: '143' }, - { name: 'Beechcraft 1900', iataCode: 'BEH' }, - { name: 'Bell 212', iataCode: 'BH2' }, - { name: 'Boeing 707', iataCode: '703' }, - { name: 'Boeing 717', iataCode: '717' }, - { name: 'Boeing 720B', iataCode: 'B72' }, - { name: 'Boeing 727', iataCode: '727' }, - { name: 'Boeing 727-100', iataCode: '721' }, - { name: 'Boeing 727-200', iataCode: '722' }, - { name: 'Boeing 737', iataCode: '737' }, - { name: 'Boeing 737 MAX 10', iataCode: '7MJ' }, - { name: 'Boeing 737 MAX 7', iataCode: '7M7' }, - { name: 'Boeing 737 MAX 8', iataCode: '7M8' }, - { name: 'Boeing 737 MAX 9', iataCode: '7M9' }, - { name: 'Boeing 737-200', iataCode: '732' }, - { name: 'Boeing 737-300', iataCode: '733' }, - { name: 'Boeing 737-400', iataCode: '734' }, - { name: 'Boeing 737-500', iataCode: '735' }, - { name: 'Boeing 737-600', iataCode: '736' }, - { name: 'Boeing 737-700', iataCode: '73G' }, - { name: 'Boeing 737-800', iataCode: '738' }, - { name: 'Boeing 737-900', iataCode: '739' }, - { name: 'Boeing 747', iataCode: '747' }, - { name: 'Boeing 747 LCF Dreamlifter', iataCode: '74B' }, - { name: 'Boeing 747-100', iataCode: '741' }, - { name: 'Boeing 747-200', iataCode: '742' }, - { name: 'Boeing 747-300', iataCode: '743' }, - { name: 'Boeing 747-400', iataCode: '744' }, - { name: 'Boeing 747-400D', iataCode: '74J' }, - { name: 'Boeing 747-8', iataCode: '748' }, - { name: 'Boeing 747SP', iataCode: '74L' }, - { name: 'Boeing 747SR', iataCode: '74R' }, - { name: 'Boeing 757', iataCode: '757' }, - { name: 'Boeing 757-200', iataCode: '752' }, - { name: 'Boeing 757-300', iataCode: '753' }, - { name: 'Boeing 767', iataCode: '767' }, - { name: 'Boeing 767-200', iataCode: '762' }, - { name: 'Boeing 767-300', iataCode: '763' }, - { name: 'Boeing 767-400', iataCode: '764' }, - { name: 'Boeing 777', iataCode: '777' }, - { name: 'Boeing 777-200', iataCode: '772' }, - { name: 'Boeing 777-200LR', iataCode: '77L' }, - { name: 'Boeing 777-300', iataCode: '773' }, - { name: 'Boeing 777-300ER', iataCode: '77W' }, - { name: 'Boeing 777-8', iataCode: '778' }, - { name: 'Boeing 777-9', iataCode: '779' }, - { name: 'Boeing 787', iataCode: '787' }, - { name: 'Boeing 787-10', iataCode: '78J' }, - { name: 'Boeing 787-8', iataCode: '788' }, - { name: 'Boeing 787-9', iataCode: '789' }, - { name: 'Bombardier CS100', iataCode: 'CS1' }, - { name: 'Bombardier CS300', iataCode: 'CS3' }, - { name: 'Bombardier Global Express', iataCode: 'CCX' }, - { name: 'British Aerospace (BAC) One Eleven', iataCode: 'B11' }, - { - name: 'British Aerospace 125 series / Hawker/Raytheon 700/800/800XP/850/900', - iataCode: 'H25', - }, - { - name: 'British Aerospace 125-1000 series / Hawker/Raytheon 1000', - iataCode: 'H25', - }, - { name: 'British Aerospace ATP', iataCode: 'ATP' }, - { name: 'British Aerospace Jetstream 31', iataCode: 'J31' }, - { name: 'British Aerospace Jetstream 32', iataCode: 'J32' }, - { name: 'British Aerospace Jetstream 41', iataCode: 'J41' }, - { name: 'Canadair CL-44', iataCode: 'CL4' }, - { name: 'Canadair Challenger', iataCode: 'CCJ' }, - { name: 'Canadair Regional Jet 100', iataCode: 'CR1' }, - { name: 'Canadair Regional Jet 1000', iataCode: 'CRK' }, - { name: 'Canadair Regional Jet 200', iataCode: 'CR2' }, - { name: 'Canadair Regional Jet 700', iataCode: 'CR7' }, - { name: 'Canadair Regional Jet 900', iataCode: 'CR9' }, - { name: 'Cessna 172', iataCode: 'CN1' }, - { name: 'Cessna 182 Skylane', iataCode: 'CN1' }, - { name: 'Cessna 208 Caravan', iataCode: 'CN1' }, - { name: 'Cessna 210 Centurion', iataCode: 'CN1' }, - { name: 'Cessna Citation CJ3', iataCode: 'CNJ' }, - { name: 'Cessna Citation CJ4', iataCode: 'CNJ' }, - { name: 'Cessna Citation Excel', iataCode: 'CNJ' }, - { name: 'Cessna Citation I', iataCode: 'CNJ' }, - { name: 'Cessna Citation II', iataCode: 'CNJ' }, - { name: 'Cessna Citation Mustang', iataCode: 'CNJ' }, - { name: 'Cessna Citation Sovereign', iataCode: 'CNJ' }, - { name: 'Cessna Citation X', iataCode: 'CNJ' }, - { name: 'Concorde', iataCode: 'SSC' }, - { name: 'Dassault Falcon 2000', iataCode: 'D20' }, - { name: 'Dassault Falcon 50', iataCode: 'DF3' }, - { name: 'Dassault Falcon 7X', iataCode: 'DF7' }, - { name: 'Dassault Falcon 900', iataCode: 'DF9' }, - { name: 'De Havilland Canada DHC-2 Beaver', iataCode: 'DHP' }, - { name: 'De Havilland Canada DHC-2 Turbo-Beaver', iataCode: 'DHR' }, - { name: 'De Havilland Canada DHC-3 Otter', iataCode: 'DHL' }, - { name: 'De Havilland Canada DHC-4 Caribou', iataCode: 'DHC' }, - { name: 'De Havilland Canada DHC-6 Twin Otter', iataCode: 'DHT' }, - { name: 'De Havilland Canada DHC-7 Dash 7', iataCode: 'DH7' }, - { name: 'De Havilland Canada DHC-8-100 Dash 8 / 8Q', iataCode: 'DH1' }, - { name: 'De Havilland Canada DHC-8-200 Dash 8 / 8Q', iataCode: 'DH2' }, - { name: 'De Havilland Canada DHC-8-300 Dash 8', iataCode: 'DH3' }, - { name: 'De Havilland Canada DHC-8-400 Dash 8Q', iataCode: 'DH4' }, - { name: 'De Havilland DH.104 Dove', iataCode: 'DHD' }, - { name: 'De Havilland DH.114 Heron', iataCode: 'DHH' }, - { name: 'Douglas DC-10', iataCode: 'D10' }, - { name: 'Douglas DC-3', iataCode: 'D3F' }, - { name: 'Douglas DC-6', iataCode: 'D6F' }, - { name: 'Douglas DC-8-50', iataCode: 'D8T' }, - { name: 'Douglas DC-8-62', iataCode: 'D8L' }, - { name: 'Douglas DC-8-72', iataCode: 'D8Q' }, - { name: 'Douglas DC-9-10', iataCode: 'D91' }, - { name: 'Douglas DC-9-20', iataCode: 'D92' }, - { name: 'Douglas DC-9-30', iataCode: 'D93' }, - { name: 'Douglas DC-9-40', iataCode: 'D94' }, - { name: 'Douglas DC-9-50', iataCode: 'D95' }, - { name: 'Embraer 170', iataCode: 'E70' }, - { name: 'Embraer 175', iataCode: 'E75' }, - { name: 'Embraer 175 (long wing)', iataCode: 'E7W' }, - { name: 'Embraer 175 (short wing)', iataCode: 'E7W' }, - { name: 'Embraer 190', iataCode: 'E90' }, - { name: 'Embraer 195', iataCode: 'E95' }, - { name: 'Embraer E190-E2', iataCode: '290' }, - { name: 'Embraer E195-E2', iataCode: '295' }, - { name: 'Embraer EMB 110 Bandeirante', iataCode: 'EMB' }, - { name: 'Embraer EMB 120 Brasilia', iataCode: 'EM2' }, - { name: 'Embraer Legacy 600', iataCode: 'ER3' }, - { name: 'Embraer Phenom 100', iataCode: 'EP1' }, - { name: 'Embraer Phenom 300', iataCode: 'EP3' }, - { name: 'Embraer RJ135', iataCode: 'ER3' }, - { name: 'Embraer RJ140', iataCode: 'ERD' }, - { name: 'Embraer RJ145', iataCode: 'ER4' }, - { name: 'Fairchild Dornier 328JET', iataCode: 'FRJ' }, - { name: 'Fairchild Dornier Do.228', iataCode: 'D28' }, - { name: 'Fairchild Dornier Do.328', iataCode: 'D38' }, - { name: 'Fokker 100', iataCode: '100' }, - { name: 'Fokker 50', iataCode: 'F50' }, - { name: 'Fokker 70', iataCode: 'F70' }, - { name: 'Fokker F27 Friendship', iataCode: 'F27' }, - { name: 'Fokker F28 Fellowship', iataCode: 'F21' }, - { name: 'Gulfstream Aerospace G-159 Gulfstream I', iataCode: 'GRS' }, - { name: 'Gulfstream G280', iataCode: 'GR3' }, - { name: 'Gulfstream G650', iataCode: 'GJ6' }, - { name: 'Gulfstream IV', iataCode: 'GJ4' }, - { name: 'Gulfstream V', iataCode: 'GJ5' }, - { name: 'Gulfstream/Rockwell (Aero) Commander', iataCode: 'ACP' }, - { name: 'Gulfstream/Rockwell (Aero) Turbo Commander', iataCode: 'ACT' }, - { name: 'Harbin Yunshuji Y12', iataCode: 'YN2' }, - { name: 'Hawker Siddeley HS 748', iataCode: 'HS7' }, - { name: 'Ilyushin IL114', iataCode: 'I14' }, - { name: 'Ilyushin IL18', iataCode: 'IL8' }, - { name: 'Ilyushin IL62', iataCode: 'IL6' }, - { name: 'Ilyushin IL76', iataCode: 'IL7' }, - { name: 'Ilyushin IL86', iataCode: 'ILW' }, - { name: 'Ilyushin IL96', iataCode: 'I93' }, - { name: 'Learjet 35', iataCode: 'LRJ' }, - { name: 'Learjet 60', iataCode: 'LRJ' }, - { name: 'Lockheed L-1011 Tristar', iataCode: 'L10' }, - { name: 'Lockheed L-1049 Super Constellation', iataCode: 'L49' }, - { name: 'Lockheed L-182 / 282 / 382 (L-100) Hercules', iataCode: 'LOH' }, - { name: 'Lockheed L-188 Electra', iataCode: 'LOE' }, - { name: 'McDonnell Douglas MD-11', iataCode: 'M11' }, - { name: 'McDonnell Douglas MD-81', iataCode: 'M81' }, - { name: 'McDonnell Douglas MD-82', iataCode: 'M82' }, - { name: 'McDonnell Douglas MD-83', iataCode: 'M83' }, - { name: 'McDonnell Douglas MD-87', iataCode: 'M87' }, - { name: 'McDonnell Douglas MD-88', iataCode: 'M88' }, - { name: 'McDonnell Douglas MD-90', iataCode: 'M90' }, - { name: 'NAMC YS-11', iataCode: 'YS1' }, - { name: 'Partenavia P.68', iataCode: 'PN6' }, - { name: 'Pilatus Britten-Norman BN-2A Mk III Trislander', iataCode: 'BNT' }, - { name: 'Pilatus Britten-Norman BN-2A/B Islander', iataCode: 'BNI' }, - { name: 'Pilatus PC-12', iataCode: 'PL2' }, - { name: 'Pilatus PC-6 Turbo Porter', iataCode: 'PL6' }, - { name: 'Piper PA-31 Navajo', iataCode: 'PA2' }, - { name: 'Piper PA-46', iataCode: 'PAG' }, - { name: 'Saab 2000', iataCode: 'S20' }, - { name: 'Saab SF340A/B', iataCode: 'SF3' }, - { name: 'Shorts SC-5 Belfast', iataCode: 'SHB' }, - { name: 'Shorts SC-7 Skyvan', iataCode: 'SHS' }, - { name: 'Shorts SD.330', iataCode: 'SH3' }, - { name: 'Shorts SD.360', iataCode: 'SH6' }, - { name: 'Sikorsky S-58T', iataCode: 'S58' }, - { name: 'Sikorsky S-61', iataCode: 'S61' }, - { name: 'Sikorsky S-76', iataCode: 'S76' }, - { name: 'Sikorsky S-92', iataCode: 'S92' }, - { name: 'Sukhoi Superjet 100-95', iataCode: 'SU9' }, - { name: 'Tupolev Tu-134', iataCode: 'TU3' }, - { name: 'Tupolev Tu-154', iataCode: 'TU5' }, - { name: 'Tupolev Tu-204', iataCode: 'T20' }, - { name: 'Yakovlev Yak-40', iataCode: 'YK4' }, - { name: 'Yakovlev Yak-42', iataCode: 'YK2' }, + { 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/modules/airline/index.ts b/src/modules/airline/index.ts index a93f8e7573c..a3c4622c46d 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -33,7 +33,7 @@ export interface Airplane { /** * The IATA code of the airplane (e.g. `'321'`). */ - iataCode: string; + iataTypeCode: string; } export interface Airport { From 72b8e2fc9d45b3a6b1aca8e05e0b245e77fd0440 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Wed, 4 Jan 2023 22:19:02 -0700 Subject: [PATCH 34/54] Updated airport definition file --- src/locales/en/airline/airport.ts | 106 +++++++++++++++--------------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/src/locales/en/airline/airport.ts b/src/locales/en/airline/airport.ts index b252f24df66..c8c39c6abe7 100644 --- a/src/locales/en/airline/airport.ts +++ b/src/locales/en/airline/airport.ts @@ -1,105 +1,103 @@ -// Generated from data at https://raw.githubusercontent.com/jpatokal/openflights/master/data/airports.dat export default Object.freeze([ - { name: 'Adolfo Suárez Madrid–Barajas Airport', iataCode: 'MAD' }, + { 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: 'Antalya International Airport', iataCode: 'AYT' }, + { 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: 'Baltimore/Washington International Thurgood Marshall Airport', - iataCode: 'BWI', + name: 'Belo Horizonte Tancredo Neves International Airport', + iataCode: 'CNF', }, - { name: 'Barcelona International Airport', iataCode: 'BCN' }, - { name: 'Beijing Capital International Airport', iataCode: 'PEK' }, { name: 'Berlin-Tegel Airport', iataCode: 'TXL' }, - { name: 'Brisbane International Airport","Brisbane', iataCode: 'BNE' }, + { 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: 'Cairo International Airport', iataCode: 'CAI' }, + { 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 Midway International Airport', iataCode: 'MDW' }, { name: "Chicago O'Hare International Airport", iataCode: 'ORD' }, - { name: 'Congonhas Airport', iataCode: 'CGH' }, + { name: 'Chongqing Jiangbei International Airport', iataCode: 'CKG' }, { name: 'Copenhagen Kastrup Airport', iataCode: 'CPH' }, { name: 'Dallas Fort Worth International Airport', iataCode: 'DFW' }, { name: 'Denver International Airport', iataCode: 'DEN' }, - { name: 'Detroit Metropolitan Wayne County Airport', iataCode: 'DTW' }, - { name: 'Domodedovo International Airport', iataCode: 'DME' }, + { name: 'Don Mueang International Airport', iataCode: 'DMK' }, { name: 'Dubai International Airport', iataCode: 'DXB' }, { name: 'Dublin Airport', iataCode: 'DUB' }, - { name: 'Düsseldorf Airport', iataCode: 'DUS' }, + { name: 'Dusseldorf Airport', iataCode: 'DUS' }, { name: 'El Dorado International Airport', iataCode: 'BOG' }, { name: 'Eleftherios Venizelos International Airport', iataCode: 'ATH' }, { name: 'Fort Lauderdale Hollywood International Airport', iataCode: 'FLL' }, + { name: 'Fortaleza Pinto Martins International Airport', iataCode: 'FOR' }, { name: 'Frankfurt am Main Airport', iataCode: 'FRA' }, - { name: 'Fukuoka Airport', iataCode: 'FUK' }, - { - name: 'General Edward Lawrence Logan International Airport', - iataCode: 'BOS', - }, { name: 'George Bush Intercontinental Houston Airport', iataCode: 'IAH' }, - { name: 'Gimpo International Airport', iataCode: 'GMP' }, - { name: 'Guangzhou Baiyun International Airport', iataCode: 'CAN' }, { - name: 'Guarulhos - Governador André Franco Montoro International Airport', + name: 'Guarulhos - Governador Andre Franco Montoro International Airport', iataCode: 'GRU', }, - { name: 'Hamad International Airport', iataCode: 'DOH' }, - { name: 'Hangzhou Xiaoshan International Airport', iataCode: 'HGH' }, - { name: 'Hartsfield Jackson Atlanta International Airport', iataCode: 'ATL' }, + { name: 'Hartsfield-Jackson Atlanta International Airport', iataCode: 'ATL' }, { name: 'Helsinki Vantaa Airport', iataCode: 'HEL' }, { name: 'Hong Kong International Airport', iataCode: 'HKG' }, - { - name: 'Humberto Delgado Airport (Lisbon Portela Airport)', - iataCode: 'LIS', - }, + { 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: '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: 'King Abdulaziz International Airport', iataCode: 'JED' }, - { name: 'King Khaled International Airport', iataCode: 'RUH' }, { name: 'Kuala Lumpur International Airport', iataCode: 'KUL' }, { name: 'Kunming Changshui International Airport', iataCode: 'KMG' }, - { name: 'La Guardia Airport', iataCode: 'LGA' }, - { name: 'Leonardo da Vinci–Fiumicino Airport', iataCode: 'FCO' }, - { name: 'Lester B. Pearson International Airport', iataCode: 'YYZ' }, - { name: 'Licenciado Benito Juarez International Airport', iataCode: 'MEX' }, - { name: 'London Gatwick Airport', iataCode: 'LGW' }, + { name: 'Leonardo da Vinci-Fiumicino Airport', iataCode: 'FCO' }, { name: 'London Heathrow Airport', iataCode: 'LHR' }, - { name: 'London Stansted Airport', iataCode: 'STN' }, { name: 'Los Angeles International Airport', iataCode: 'LAX' }, - { name: 'Malpensa International Airport', iataCode: 'MXP' }, - { name: 'Manchester Airport', iataCode: 'MAN' }, { 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: 'Nairobi Jomo Kenyatta International Airport', iataCode: 'NBO' }, { name: 'Narita International Airport', iataCode: 'NRT' }, - { name: 'New Chitose Airport', iataCode: 'CTS' }, { name: 'Newark Liberty International Airport', iataCode: 'EWR' }, { name: 'Ninoy Aquino International Airport', iataCode: 'MNL' }, - { name: 'OR Tambo International Airport', iataCode: 'JNB' }, + { name: 'O. R. Tambo International Airport', iataCode: 'JNB' }, { name: 'Orlando International Airport', iataCode: 'MCO' }, { name: 'Oslo Lufthavn', iataCode: 'OSL' }, - { name: 'Palma De Mallorca Airport', iataCode: 'PMI' }, - { name: 'Paris-Orly Airport', iataCode: 'ORY' }, - { name: 'Philadelphia International Airport', iataCode: 'PHL' }, { name: 'Phoenix Sky Harbor International Airport', iataCode: 'PHX' }, { - name: 'Presidente Juscelino Kubistschek International Airport', - iataCode: 'BSB', + 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: 'Rio Galeão - Tom Jobim International Airport', iataCode: 'GIG' }, - { name: 'Ronald Reagan Washington National Airport', iataCode: 'DCA' }, - { name: 'Salt Lake City International Airport', iataCode: 'SLC' }, - { name: 'San Diego International Airport', iataCode: 'SAN' }, { 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' }, @@ -111,11 +109,15 @@ export default Object.freeze([ { name: 'Suvarnabhumi Airport', iataCode: 'BKK' }, { name: 'Sydney Kingsford Smith International Airport', iataCode: 'SYD' }, { name: 'Taiwan Taoyuan International Airport', iataCode: 'TPE' }, - { name: 'Tampa International Airport', iataCode: 'TPA' }, + { 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: 'Washington Dulles International Airport', iataCode: 'IAD' }, - { name: 'Xiamen Gaoqi International Airport', iataCode: 'XMN' }, - { name: 'Zürich Airport', iataCode: 'ZRH' }, + { name: 'Viracopos International Airport', iataCode: 'VCP' }, + { name: 'Vnukovo International Airport', iataCode: 'VKO' }, + { name: "Xi'an Xianyang International Airport", iataCode: 'XIY' }, + { name: 'Zhukovsky International Airport', iataCode: 'ZIA' }, + { name: 'Zurich Airport', iataCode: 'ZRH' }, ]); From 8e2d2558b6f88ee9c9b77819166b4aa35bfee3e1 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Wed, 4 Jan 2023 22:50:50 -0700 Subject: [PATCH 35/54] Added some airports in Oceania --- src/locales/en/airline/airport.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/locales/en/airline/airport.ts b/src/locales/en/airline/airport.ts index c8c39c6abe7..7d122eafb83 100644 --- a/src/locales/en/airline/airport.ts +++ b/src/locales/en/airline/airport.ts @@ -1,4 +1,5 @@ export default Object.freeze([ + { 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' }, @@ -20,7 +21,9 @@ export default Object.freeze([ }, { 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' }, @@ -28,8 +31,10 @@ export default Object.freeze([ { 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' }, @@ -37,30 +42,36 @@ export default Object.freeze([ { 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' }, @@ -77,13 +88,16 @@ export default Object.freeze([ { 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', @@ -117,6 +131,7 @@ export default Object.freeze([ { 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' }, From 8633d5bd4f91bbe3362c16eda7f5e7905af288ac Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Wed, 4 Jan 2023 23:28:24 -0700 Subject: [PATCH 36/54] Updated airline defintion file --- src/locales/en/airline/airlines.ts | 37 +++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/locales/en/airline/airlines.ts b/src/locales/en/airline/airlines.ts index a6a56044cdb..5e864e020bc 100644 --- a/src/locales/en/airline/airlines.ts +++ b/src/locales/en/airline/airlines.ts @@ -1,29 +1,35 @@ -// Top 100 airlines in 2019 according to https://www.flightglobal.com/download?ac=73318 export default Object.freeze([ { 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', iataCode: 'AF' }, + { 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: 'Alaska Air', iataCode: 'AS' }, + { 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', iataCode: 'AD' }, + { 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' }, @@ -33,19 +39,24 @@ export default Object.freeze([ { 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', iataCode: 'G3' }, + { name: 'Gol Linhas Aereas Inteligentes', iataCode: 'G3' }, { name: 'Hainan Airlines', iataCode: 'HU' }, { name: 'Hawaiian Airlines', iataCode: 'HA' }, { name: 'IndiGo Airlines', iataCode: '6E' }, @@ -53,18 +64,23 @@ export default Object.freeze([ { 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', iataCode: 'PC' }, + { name: 'Pegasus Airlines', iataCode: 'PC' }, { name: 'Philippine Airlines', iataCode: 'PR' }, { name: 'Qantas Group', iataCode: 'QF' }, { name: 'Qatar Airways', iataCode: 'QR' }, @@ -73,21 +89,27 @@ export default Object.freeze([ { 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' }, @@ -96,7 +118,10 @@ export default Object.freeze([ { 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' }, ]); From a70c48c2d98a28b4fa1e182169642236db9925cc Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Wed, 4 Jan 2023 23:40:42 -0700 Subject: [PATCH 37/54] Updated airline module test snapshot --- test/__snapshots__/airline.spec.ts.snap | 26 ++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/test/__snapshots__/airline.spec.ts.snap b/test/__snapshots__/airline.spec.ts.snap index 3724821a9c1..ad5eb625072 100644 --- a/test/__snapshots__/airline.spec.ts.snap +++ b/test/__snapshots__/airline.spec.ts.snap @@ -11,15 +11,15 @@ exports[`airline > 42 > airline 1`] = ` exports[`airline > 42 > airplane 1`] = ` { - "iataCode": "762", - "name": "Boeing 767-200", + "iataTypeCode": "739", + "name": "Boeing 737-900", } `; exports[`airline > 42 > airport 1`] = ` { "iataCode": "ATL", - "name": "Hartsfield Jackson Atlanta International Airport", + "name": "Hartsfield-Jackson Atlanta International Airport", } `; @@ -55,22 +55,22 @@ exports[`airline > 1211 > aircraftType 1`] = `"widebody"`; exports[`airline > 1211 > airline 1`] = ` { - "iataCode": "U6", - "name": "Ural Airlines", + "iataCode": "VN", + "name": "Vietnam Airlines", } `; exports[`airline > 1211 > airplane 1`] = ` { - "iataCode": "PAG", - "name": "Piper PA-46", + "iataTypeCode": "M81", + "name": "McDonnell Douglas MD81", } `; exports[`airline > 1211 > airport 1`] = ` { - "iataCode": "TPE", - "name": "Taiwan Taoyuan International Airport", + "iataCode": "TUN", + "name": "Tunis Carthage International Airport", } `; @@ -113,15 +113,15 @@ exports[`airline > 1337 > airline 1`] = ` exports[`airline > 1337 > airplane 1`] = ` { - "iataCode": "7MJ", - "name": "Boeing 737 MAX 10", + "iataTypeCode": "717", + "name": "Boeing 717", } `; exports[`airline > 1337 > airport 1`] = ` { - "iataCode": "ATH", - "name": "Eleftherios Venizelos International Airport", + "iataCode": "DEN", + "name": "Denver International Airport", } `; From bbc14fa61fa3a9be6c75a0a833d16fd80bb83cbb Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Thu, 5 Jan 2023 14:57:57 -0700 Subject: [PATCH 38/54] Couple fixes based on PR review comments --- src/modules/airline/index.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index a3c4622c46d..97d0f855142 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -197,9 +197,9 @@ export class AirlineModule { } /** - * 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). + * 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`). * * @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 }`. @@ -221,8 +221,7 @@ export class AirlineModule { addLeadingZeros?: boolean; } = {} ): string { - const { length = { min: 1, max: 4 } } = options; - const { addLeadingZeros = false } = options; + const { length = { min: 1, max: 4 }, addLeadingZeros = false } = options; const flightNumber = this.faker.string.numeric({ length, allowLeadingZeros: false, From 4608ea18a5916c2a2fe5a479e2b4ee7d7cfcd3e5 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Thu, 5 Jan 2023 21:12:39 -0700 Subject: [PATCH 39/54] Made properties of interfaces readonly --- src/modules/airline/index.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 97d0f855142..31416948ca4 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -18,33 +18,33 @@ export interface Airline { /** * The name of the airline (e.g. `'American Airlines'`). */ - name: string; + readonly name: string; /** * The 2 character IATA code of the airline (e.g. `'AA'`). */ - iataCode: string; + readonly iataCode: string; } export interface Airplane { /** * The name of the airplane (e.g. `'Airbus A321'`). */ - name: string; + readonly name: string; /** * The IATA code of the airplane (e.g. `'321'`). */ - iataTypeCode: string; + readonly iataTypeCode: string; } export interface Airport { /** * The name of the airport (e.g. `'Dallas Fort Worth International Airport'`). */ - name: string; + readonly name: string; /** * The IATA code of the airport (e.g. `'DFW'`). */ - iataCode: string; + readonly iataCode: string; } const numerics = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; From 28745eddb52a89a26a50915fd51168cd80b55c86 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Thu, 5 Jan 2023 21:12:51 -0700 Subject: [PATCH 40/54] Don't freeze the arrays --- src/locales/en/airline/airlines.ts | 4 ++-- src/locales/en/airline/airplane.ts | 4 ++-- src/locales/en/airline/airport.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/locales/en/airline/airlines.ts b/src/locales/en/airline/airlines.ts index 5e864e020bc..a2be4548f40 100644 --- a/src/locales/en/airline/airlines.ts +++ b/src/locales/en/airline/airlines.ts @@ -1,4 +1,4 @@ -export default Object.freeze([ +export default [ { name: 'Aegean Airlines', iataCode: 'A3' }, { name: 'Aeroflot', iataCode: 'SU' }, { name: 'Aerolineas Argentinas', iataCode: 'AR' }, @@ -124,4 +124,4 @@ export default Object.freeze([ { 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 index 8056ea813df..27bb77e4f97 100644 --- a/src/locales/en/airline/airplane.ts +++ b/src/locales/en/airline/airplane.ts @@ -1,4 +1,4 @@ -export default Object.freeze([ +export default [ { name: 'Aerospatiale/BAC Concorde', iataTypeCode: 'SSC' }, { name: 'Airbus A300', iataTypeCode: 'AB3' }, { name: 'Airbus A310', iataTypeCode: '310' }, @@ -154,4 +154,4 @@ export default Object.freeze([ { 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 index 7d122eafb83..67889475770 100644 --- a/src/locales/en/airline/airport.ts +++ b/src/locales/en/airline/airport.ts @@ -1,4 +1,4 @@ -export default Object.freeze([ +export default [ { name: 'Adelaide International Airport', iataCode: 'ADL' }, { name: 'Adolfo Suarez Madrid-Barajas Airport', iataCode: 'MAD' }, { name: 'Aeroparque Jorge Newbery Airport', iataCode: 'AEP' }, @@ -135,4 +135,4 @@ export default Object.freeze([ { name: "Xi'an Xianyang International Airport", iataCode: 'XIY' }, { name: 'Zhukovsky International Airport', iataCode: 'ZIA' }, { name: 'Zurich Airport', iataCode: 'ZRH' }, -]); +]; From 9400aa49de568ffb6e12aa99ff2a54dda64c84c3 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 6 Jan 2023 06:28:38 -0700 Subject: [PATCH 41/54] Removed readonly from locale array definitions --- src/definitions/airline.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/definitions/airline.ts b/src/definitions/airline.ts index 5f35e707cf5..50ee79cee0a 100644 --- a/src/definitions/airline.ts +++ b/src/definitions/airline.ts @@ -5,15 +5,15 @@ export type AirlineDefinitions = LocaleEntry<{ /** * Some airline information */ - airline: readonly Airline[]; + airline: Airline[]; /** * Some airplane information */ - airplane: readonly Airplane[]; + airplane: Airplane[]; /** * Some airport information */ - airport: readonly Airport[]; + airport: Airport[]; }>; From e38027d703f1601f87f80b946f7b671f43dc3a63 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 6 Jan 2023 08:03:29 -0700 Subject: [PATCH 42/54] Fixed formatting and linter issues --- src/definitions/airline.ts | 2 +- test/airline.spec.ts | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/definitions/airline.ts b/src/definitions/airline.ts index 50ee79cee0a..78bb3be0eec 100644 --- a/src/definitions/airline.ts +++ b/src/definitions/airline.ts @@ -5,7 +5,7 @@ export type AirlineDefinitions = LocaleEntry<{ /** * Some airline information */ - airline: Airline[]; + airlines: Airline[]; /** * Some airplane information diff --git a/test/airline.spec.ts b/test/airline.spec.ts index e4eaa170c56..76aa4e55a40 100644 --- a/test/airline.spec.ts +++ b/test/airline.spec.ts @@ -158,15 +158,23 @@ describe('airline', () => { expect(flightNumber).toMatch(/^[1-9][0-9]{1,3}$/); }); it('should return a random flight number with leading zeros', () => { - const flightNumber = faker.airline.flightNumber({ addLeadingZeros: true }); + const flightNumber = faker.airline.flightNumber({ + addLeadingZeros: true, + }); expect(flightNumber).toMatch(/^[0-9]{4}$/); }); it('should return a random flight number with 3 digits and leading zeros', () => { - const flightNumber = faker.airline.flightNumber({ length: 3, addLeadingZeros: true }); + const flightNumber = faker.airline.flightNumber({ + length: 3, + addLeadingZeros: true, + }); expect(flightNumber).toMatch(/^[0-9][1-9][0-9]{2}$/); }); it('should return a random flight number with 2 to 4 digits and leading zeros', () => { - const flightNumber = faker.airline.flightNumber({ length: 3, addLeadingZeros: true }); + const flightNumber = faker.airline.flightNumber({ + length: 3, + addLeadingZeros: true, + }); expect(flightNumber).toMatch(/^[0-9]{1,4}$/); }); }); From 9c6776399ab153c45482d25b34984366c602790b Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 10 Jan 2023 07:02:46 -0700 Subject: [PATCH 43/54] Added example on flightNumber function --- src/modules/airline/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 31416948ca4..34a22e613f1 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -212,6 +212,7 @@ export class AirlineModule { * 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' + * `${faker.airline.airline().iataCode}${faker.airline.flightNumber({ addLeadingZeros: true })}` // 'AA0798' * * @since 8.0.0 */ From e51384ddffe369848de8d3647c13976018f8b53e Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 10 Jan 2023 18:34:17 -0700 Subject: [PATCH 44/54] Fixed docs for flightNumber function --- src/modules/airline/index.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 34a22e613f1..777eb7d5081 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -197,10 +197,16 @@ export class AirlineModule { } /** - * Returns a random flight number. Flight numbers are always `1` to `4` digits long. Sometimes they are + * 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`. @@ -209,10 +215,9 @@ export class AirlineModule { * 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({ addLeadingZeros: true, length: { min: 2, max: 3 } }) // '0624' * faker.airline.flightNumber({ length: 3 }) // '425' * faker.airline.flightNumber({ length: { min: 2, max: 3 } }) // '84' - * `${faker.airline.airline().iataCode}${faker.airline.flightNumber({ addLeadingZeros: true })}` // 'AA0798' * * @since 8.0.0 */ From bc7850b379e537c7dd538ba1968d5ee09dd90fdd Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Fri, 13 Jan 2023 15:04:37 -0700 Subject: [PATCH 45/54] Updated JSDocs for airplane() function --- src/modules/airline/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 777eb7d5081..5f4ece66bf3 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -107,7 +107,7 @@ export class AirlineModule { * Generates a random airplane. * * @example - * faker.airline.airplane() // { name: 'Airbus A321', iataCode: '321' } + * faker.airline.airplane() // { name: 'Airbus A321neo', iataTypeCode: '32Q' } * * @since 8.0.0 */ From b58ab6bf756c6b7788db6b2aed28c62629876e18 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 17 Jan 2023 06:38:40 -0700 Subject: [PATCH 46/54] Renamed airline locale defintion file --- src/locales/en/airline/{airlines.ts => airline.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/locales/en/airline/{airlines.ts => airline.ts} (100%) diff --git a/src/locales/en/airline/airlines.ts b/src/locales/en/airline/airline.ts similarity index 100% rename from src/locales/en/airline/airlines.ts rename to src/locales/en/airline/airline.ts From 0090dcc62f1876e3034770af551b944cfbbf4b2c Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 17 Jan 2023 06:39:02 -0700 Subject: [PATCH 47/54] Regenerated airline locale index file --- src/locales/en/airline/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/locales/en/airline/index.ts b/src/locales/en/airline/index.ts index b51d1773b99..ec1d2d89e93 100644 --- a/src/locales/en/airline/index.ts +++ b/src/locales/en/airline/index.ts @@ -3,12 +3,12 @@ * Run 'pnpm run generate:locales' to update. */ import type { AirlineDefinitions } from '../../..'; -import airlines from './airlines'; +import airline_ from './airline'; import airplane from './airplane'; import airport from './airport'; const airline: AirlineDefinitions = { - airlines, + airline: airline_, airplane, airport, }; From 032dbb151040a247f502d452b5aacaf0e32102d1 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 17 Jan 2023 06:40:14 -0700 Subject: [PATCH 48/54] Updated to new name for airline definition --- src/modules/airline/index.ts | 2 +- test/airline.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 5f4ece66bf3..aaed6555350 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -99,7 +99,7 @@ export class AirlineModule { */ airline(): Airline { return this.faker.helpers.arrayElement( - this.faker.definitions.airline.airlines + this.faker.definitions.airline.airline ); } diff --git a/test/airline.spec.ts b/test/airline.spec.ts index 76aa4e55a40..ff1abf8d852 100644 --- a/test/airline.spec.ts +++ b/test/airline.spec.ts @@ -56,7 +56,7 @@ describe('airline', () => { describe(`airline()`, () => { it('should return a random value from airline array', () => { const airline = faker.airline.airline(); - expect(faker.definitions.airline.airlines).toContainEqual(airline); + expect(faker.definitions.airline.airline).toContainEqual(airline); }); }); From 023cd5149fa7eac24729fcd641b1cbd273a39263 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Tue, 17 Jan 2023 17:08:07 -0700 Subject: [PATCH 49/54] Updated field name in LocaleEntry type --- src/definitions/airline.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/definitions/airline.ts b/src/definitions/airline.ts index 78bb3be0eec..50ee79cee0a 100644 --- a/src/definitions/airline.ts +++ b/src/definitions/airline.ts @@ -5,7 +5,7 @@ export type AirlineDefinitions = LocaleEntry<{ /** * Some airline information */ - airlines: Airline[]; + airline: Airline[]; /** * Some airplane information From 8d5a2f94fcb3eef49f4150581e9607115c9599ab Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Wed, 18 Jan 2023 11:56:55 -0700 Subject: [PATCH 50/54] Fixed flight number test --- test/airline.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/airline.spec.ts b/test/airline.spec.ts index ff1abf8d852..e8f996e1ded 100644 --- a/test/airline.spec.ts +++ b/test/airline.spec.ts @@ -172,7 +172,7 @@ describe('airline', () => { }); it('should return a random flight number with 2 to 4 digits and leading zeros', () => { const flightNumber = faker.airline.flightNumber({ - length: 3, + length: { min: 2, max: 4 }, addLeadingZeros: true, }); expect(flightNumber).toMatch(/^[0-9]{1,4}$/); From fad2a248e591e31d83fdfc3d8dbd33395ed12cfe Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sat, 21 Jan 2023 16:58:40 -0700 Subject: [PATCH 51/54] Updated JSDocs for option params --- src/modules/airline/index.ts | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index aaed6555350..d8ff3d3eaab 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -136,7 +136,17 @@ export class AirlineModule { */ 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 { @@ -173,6 +183,11 @@ export class AirlineModule { */ seat( options: { + /** + * The aircraft type. Can be one of `narrowbody`, `regional`, `widebody`. + * + * @default 'narrowbody' + */ aircraftType?: AircraftType; } = {} ): string { @@ -223,7 +238,23 @@ export class AirlineModule { */ flightNumber( options: { - length?: number | { min: number; max: number }; + 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 { From 0e20de6782575c08f22574f6cf32735e05affbb5 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sun, 22 Jan 2023 10:50:18 -0700 Subject: [PATCH 52/54] Added param doc for flightNumber length --- src/modules/airline/index.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index d8ff3d3eaab..4f605791e43 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -238,6 +238,11 @@ export class AirlineModule { */ flightNumber( options: { + /** + * The number or range of digits to generate. + * + * @default { min: 1, max: 4 } + */ length?: | number | { From 6d5089f7e64a2bcd52a71d747ba6376aa4000f68 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sat, 28 Jan 2023 13:24:03 -0700 Subject: [PATCH 53/54] Specify types for lookup objects --- src/modules/airline/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/airline/index.ts b/src/modules/airline/index.ts index 4f605791e43..3a5a400c524 100644 --- a/src/modules/airline/index.ts +++ b/src/modules/airline/index.ts @@ -49,12 +49,12 @@ export interface Airport { const numerics = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; const visuallySimilarCharacters = ['0', 'O', '1', 'I', 'L']; -const aircraftTypeMaxRows = { +const aircraftTypeMaxRows: Record = { regional: 20, narrowbody: 35, widebody: 60, }; -const aircraftTypeSeats = { +const aircraftTypeSeats: Record = { regional: ['A', 'B', 'C', 'D'], narrowbody: ['A', 'B', 'C', 'D', 'E', 'F'], widebody: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K'], From 6e50b543f30140447a6e26dc28f7f2e383e10ca0 Mon Sep 17 00:00:00 2001 From: Matthew Petro Date: Sun, 29 Jan 2023 21:28:29 -0700 Subject: [PATCH 54/54] Fixed en locale index file --- src/locales/en/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/locales/en/index.ts b/src/locales/en/index.ts index b258a2d0da1..2ac4c15d470 100644 --- a/src/locales/en/index.ts +++ b/src/locales/en/index.ts @@ -29,7 +29,6 @@ import word from './word'; const en: LocaleDefinition = { title: 'English', - separator: ' & ', airline, animal, app,