use crate::rule::shape::{one_to_one, part_of};
use seesaw_tgg::rules::format::RuleFile;
const CATALOGUE_NAME: &str = "typescript";
#[must_use]
pub fn catalogue() -> RuleFile {
RuleFile {
format: 3,
name: CATALOGUE_NAME.to_string(),
rules: vec![
one_to_one(
"struct-to-interface",
"Structure",
"TsStruct",
"TsStructCorr",
),
one_to_one(
"struct-to-class",
"Structure",
"TsStructClass",
"TsStructClassCorr",
),
part_of(
"member-to-property",
("Member", "Structure", "TsStructCorr"),
("TsProperty", "TsStruct", "TsPropertyCorr"),
),
one_to_one(
"enum-to-const-object",
"Enumeration",
"TsEnum",
"TsEnumCorr",
),
part_of(
"enumerator-to-entry",
("Enumerator", "Enumeration", "TsEnumCorr"),
("TsEnumerator", "TsEnum", "TsEnumeratorCorr"),
),
one_to_one("alias-to-type-alias", "Alias", "TsAlias", "TsAliasCorr"),
one_to_one(
"union-to-discriminated-union",
"Union",
"TsUnion",
"TsUnionCorr",
),
part_of(
"case-to-variant",
("Case", "Union", "TsUnionCorr"),
("TsCase", "TsUnion", "TsCaseCorr"),
),
one_to_one(
"bitmask-to-const-object",
"Bitmask",
"TsBitmask",
"TsBitmaskCorr",
),
part_of(
"bit-to-entry",
("BitValue", "Bitmask", "TsBitmaskCorr"),
("TsBitConst", "TsBitmask", "TsBitCorr"),
),
one_to_one("bitset-to-interface", "Bitset", "TsBitset", "TsBitsetCorr"),
one_to_one(
"valuetype-to-interface",
"Valuetype",
"TsValue",
"TsValueCorr",
),
one_to_one("module-to-namespace", "Module", "TsModule", "TsModuleCorr"),
one_to_one("const-to-const", "Const", "TsConst", "TsConstCorr"),
one_to_one(
"exception-to-interface",
"Exception",
"TsError",
"TsErrorCorr",
),
one_to_one(
"interface-to-interface",
"Interface",
"TsInterface",
"TsInterfaceCorr",
),
one_to_one("native-to-type-alias", "Native", "TsNative", "TsNativeCorr"),
],
}
}