File: /var/www/ai-notam/docs/mel-types.ts
export type SoftEqualString = string; // тип для свободных строк, когда мы не требуем точного совпадение строки
export type CoordinateValue = `^[0-9]*(\.?)[0-9]*(S|N|W|E)$`
export type CustomCoordinate = `^(ARP|THLD)([0-9]{0,2})(R|L|V)?$`
export type IcaoCode = `^[A-Z]{4}$`
export type LettersAndNumbers = `^[0-9A-Za-z\/]*$`
export type ID = `^[0-9A-Z\-]*$`
export type NumberRange = `^[0-9]*-[0-9]*$`
export type NumberType = `^[0-9\.]*$`
export type IntegerType = `^[0-9]*$`
export type WeekDayName = `(MON|TUE|WED|THU|FRI|SAT|SUN)`
export type DaysRange = `[0-9]{1,2}-?([0-9]{1,2})?`
export type MonthName = `^(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)$`
export type DateType = `^[0-9]{4}-[0-9]{2}-[0-9]{2}`
export type Time = `^[0-2][0-9]:[0-5][0-9](\ *[(][+]1[)])?$`
export type SunTime = `^(SS|SR)(\ *[-+]\ *([0-9]{2}))?$`
export type AcftTypes = `^(A124|A140|A148|A158|A19N|A20N|A21N|A21NX|A21NY|A210|A225|A306|A30B|A310|A310|A318|A318|A319|A319|A320|A320|A20F|A321|A321|A21F|A332|A333|A332|A333|A337|A338|A339|A342|A343|A345|A346|A359|A35K|A388|A3ST|A400|A5|A748|AC68|AC90|AJ27|AN12|AN2|AN24|AN26|AN28|AN30|AN32|AN72|AP22|AS32|AS50|AT43|AT45|AT46|AT72|AT73|AT75|AT76|ATL|ATP|B06|B06T|B105|B190|B212|B37M|B38M|B39M|B3XM|B412|B429|B461|B462|B463|B703|B712|B720|B721|B722|B732|B733|B734|B735|B736|B738|B739|B73C|B73E|B73F|B737|B73H|B73J|B73K|B73P|B73U|B73W|B73Y|B741|B741|B742|B742|B742|B743|B743|B744|B744|B744|B748|B748|B74D|B74R|B74R|B74S|B752|B752|B753|B762|B763|B764|B76W|B76X|B76Y|B772|B773|B778|B779|B77L|B77L|B77W|B788|B789|B78X|BA11|BCS1|BCS3|BE40|BE55|BE58|BE99|BELF|BER2|BL8|BLCF|BN2P|C130|C140|C152|C162|C172|C177|C182|C82R|C206|C208|C210|T210|C212|C25A|C25B|C25C|C30J|C310|C46|C500|C510|C525|C550|C560|C56X|C650|C680|C72R|C750|C77R|C919|CH7A|CH7B|CL2T|CL30|CL60|CN35|CONC|CONI|CRJ1|CRJ2|CRJ7|CRJ9|CRJX|CVLP|CVLT|D228|D328|DA40|DA42|DA62|DC10|DC10|DC10|DC10|DC10|DC3|DC6|DC85|DC86|DC87|DC91|DC92|DC93|DC94|DC95|DH2T|DH62|DH64|DH8A|DH8B|DH8C|DH8D|DHC2|DHC3|DHC4|DHC5|DHC6|DHC7|DOVE|E110|E120|E135|E135|E145|E170|E190|E195|E290|E295|E35L|E50P|E545|E550|E55P|E75L|E75S|EA30|EA31|EA32|EA33|EA34|EA50|EC20|EC25|EC30|EC35|EC45|EC55|EC75|ECHO|EV97|EVSS|EXPL|F100|F27|F28|F2TH|F406|F50|F70|F900|FA24|FA50|FA7X|G159|G21|G280|G73T|GA8|GL5T|GLEX|GLF4|GLF5|GLF6|GOLF|H25B|H25C|HDJT|HERN|I114|IL18|IL62|IL76|IL86|IL96|J328|JS31|JS32|JS41|JU52|K35R|L101|L188|L410|LJ35|LJ60|MD11|MD11|MD11|MD81|MD82|MD83|MD87|MD88|MD90|MI24|MI8|MU2|N262|NOMA|P06T|P8|P180|P208|P212|P28A|P28B|P68|PA31|PA44|PA46|PC12|PC6T|PC24|PIPA|PISI|PITA|PIVI|R200|RJ1H|RJ70|RJ85|RV4|S210|S58T|S601|S61|S65C|S76|S92|SB20|SC7|SF34|SF50|SH33|SH36|SIRA|SPIT|SR22|SU95|SW4|T134|T144|T154|T204|TB20|TL20|TRF1|TRIS|TWEN|V22|WW24|Y12|YK40|YK42|YS11|HEL)$`
export type ValuePlusUnits = (number | string)[]
export type MelItems = {
header_1: Header1,
cdl_items?: CldContainer
}
export type CldContainer = {
number?: SoftEqualString,
name?: SoftEqualString,
items?: CldItem[]
}
export type CldItem = {
installed?: number
may_be_missing?: number,
cdl_number_may_not_be_missing?: SoftEqualString,
cdl_enroute_climb_pnlty?: ValuePlusUnits,
cdl_to_pnlty?: ValuePlusUnits,
cdl_approach_pnlty?: ValuePlusUnits,
cdl_land_pnlty?: ValuePlusUnits
}
export type Header1 = {
number: ID,
title: SoftEqualString,
header_2: Header2
}
export type Header2 = {
number: ID,
title: SoftEqualString,
header_3?: MelItem | Header3
}
export type Header3 = {
number: ID,
title: SoftEqualString,
header_4?: MelItem | Header4
}
export type Header4 = {
number: ID,
title: SoftEqualString,
header_5: MelItem | Header6
}
export type Header6 = {
number: ID,
title: SoftEqualString,
header_6: MelItem | Header7
}
export type Header7 = {
number: ID,
title: SoftEqualString,
header_7: MelItem | Header8
}
export type Header8 = {
number: ID,
title: SoftEqualString,
header_8: MelItem | Header9
}
export type Header9 = {
number: ID,
title: SoftEqualString,
header_9: MelItem
}
export type MelItem = {
number: ID,
title: SoftEqualString,
ac_model?: AcftTypes[],
aircraft_reg_number?: SoftEqualString[],
aircraft_reg_exc?: SoftEqualString[],
item_status?: SoftEqualString,
interval?: SoftEqualString,
installed: number,
required: number,
remarks?: SoftEqualString,
operations?: SoftEqualString,
maintenance?: SoftEqualString,
fuel_flow?: ValuePlusUnits,
fuel_hour_flow?: ValuePlusUnits,
max_to_weight?: ValuePlusUnits,
max_land_weight?: ValuePlusUnits,
max_opr_altitude?: ValuePlusUnits,
extra_fuel?: ValuePlusUnits,
edto_avlb?: Boolean,
edto_mdt?: ValuePlusUnits,
edto_fuel_flow?: NumberType,
ballast_fuel?: ValuePlusUnits,
min_oat_ad?: ValuePlusUnits,
max_oat_ad?: ValuePlusUnits,
disable_equip_10a?: Boolean,
disable_transponder?: Boolean,
disable_equip_ADS_10b?: Boolean,
associated?: AssociatedMel[],
to_field_weight_corr?: ValuePlusUnits,
to_weight_limit?: ValuePlusUnits,
to_brake_energy_weight_corr?: ValuePlusUnits,
to_assumed_temp_usage?: Boolean,
to_weight_corr?: ValuePlusUnits,
ld_field_weight_asb_corr?: ValuePlusUnits,
ld_weight_limit?: ValuePlusUnits,
ld_weight_corr?: ValuePlusUnits,
to_weight_limit_flaps?: WeightLimitFlaps[],
ld_weight_limit_flaps?: WeightLimitFlaps[],
airspeed_limit?: ValuePlusUnits,
flaps_limit?: ValuePlusUnits,
operation_icing_cond?: Boolean,
reference_1?: SoftEqualString,
reference_2?: SoftEqualString,
reference_3?: SoftEqualString
}
export type WeightLimitFlaps = {
flaps?: ValuePlusUnits | NumberType[],
weight_limit?: ValuePlusUnits,
}
export type AssociatedMel = {
number: ID,
fuel_flow?: SoftEqualString[],
max_to_weight?: SoftEqualString[],
max_ld_weight?: SoftEqualString[],
max_opr_altitude?: SoftEqualString,
extra_fuel?: SoftEqualString,
edto_available?: Boolean,
edto_fuel_flow?: SoftEqualString[],
ballast_fuel?: SoftEqualString[],
min_oat_aerodrome?: SoftEqualString[],
max_oat_aerodrome?: SoftEqualString[],
disable_equip_10a?: SoftEqualString,
disable_transponder?: SoftEqualString,
disable_equip_ads_10b?: SoftEqualString
}
export interface MelObject {
airline_id?: SoftEqualString,
aircraft_types?: AcftTypes[],
mel_revision?: SoftEqualString,
mel_date?: SoftEqualString,
mmel_revision?: SoftEqualString,
mmel_date?: SoftEqualString,
revision: SoftEqualString,
MEL_chapter: MelItems
CheckNeeded?: boolean
}