import {TypeEnum} from "../types/TypeEnum"; import {getBaseType} from "./helper/common/getBaseType"; import {getTypeToCompare} from "./helper/common/getTypeToCompare"; export const orOperationMatrix = { [TypeEnum.STRING]: { [TypeEnum.STRING] : getBaseType, [TypeEnum.STRING_LITERAL_TYPE ] : getBaseType, [TypeEnum.NUMBER] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER_LITERAL_TYPE] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN_LITERAL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.STRING_LITERAL_TYPE]: { [TypeEnum.STRING] : getTypeToCompare, [TypeEnum.STRING_LITERAL_TYPE ] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER_LITERAL_TYPE] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN_LITERAL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.NUMBER]: { [TypeEnum.STRING] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.STRING_LITERAL_TYPE ] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER] : getBaseType, [TypeEnum.NUMBER_LITERAL_TYPE] : getBaseType, [TypeEnum.BOOLEAN]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN_LITERAL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.NUMBER_LITERAL_TYPE]: { [TypeEnum.STRING] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.STRING_LITERAL_TYPE ] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER] : getTypeToCompare, [TypeEnum.NUMBER_LITERAL_TYPE] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN_LITERAL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.BOOLEAN]: { [TypeEnum.STRING] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.STRING_LITERAL_TYPE ] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER_LITERAL_TYPE] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN]: getBaseType, [TypeEnum.BOOLEAN_LITERAL]: getBaseType, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.BOOLEAN_LITERAL]: { [TypeEnum.STRING] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.STRING_LITERAL_TYPE ] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER_LITERAL_TYPE] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN]: getTypeToCompare, [TypeEnum.BOOLEAN_LITERAL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.OBJECT_TYPE]: { [TypeEnum.STRING] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.STRING_LITERAL_TYPE ] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER_LITERAL_TYPE] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN_LITERAL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.ARRAY_TYPE]: { [TypeEnum.STRING] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.STRING_LITERAL_TYPE ] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER_LITERAL_TYPE] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN_LITERAL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.TUPLE_TYPE]: { [TypeEnum.STRING] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.STRING_LITERAL_TYPE ] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER_LITERAL_TYPE] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN_LITERAL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.NULL]: { [TypeEnum.STRING] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.STRING_LITERAL_TYPE ] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.NUMBER_LITERAL_TYPE] : TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.BOOLEAN_LITERAL]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.OBJECT_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.ARRAY_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.TUPLE_TYPE]: TypeEnum.TYPE_EXPRESSION, [TypeEnum.NULL]: getBaseType, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.ANY]: { [TypeEnum.STRING] : getBaseType, [TypeEnum.STRING_LITERAL_TYPE ] : getBaseType, [TypeEnum.NUMBER] : getBaseType, [TypeEnum.NUMBER_LITERAL_TYPE] : getBaseType, [TypeEnum.BOOLEAN]: getBaseType, [TypeEnum.BOOLEAN_LITERAL]: getBaseType, [TypeEnum.OBJECT_TYPE]: getBaseType, [TypeEnum.ARRAY_TYPE]: getBaseType, [TypeEnum.TUPLE_TYPE]: getBaseType, [TypeEnum.NULL]: getBaseType, [TypeEnum.ANY]: getBaseType, [TypeEnum.NEVER]: getBaseType }, [TypeEnum.NEVER]: { [TypeEnum.STRING] : getTypeToCompare, [TypeEnum.STRING_LITERAL_TYPE ] : getTypeToCompare, [TypeEnum.NUMBER] : getTypeToCompare, [TypeEnum.NUMBER_LITERAL_TYPE] : getTypeToCompare, [TypeEnum.BOOLEAN]: getTypeToCompare, [TypeEnum.BOOLEAN_LITERAL]: getTypeToCompare, [TypeEnum.OBJECT_TYPE]: getTypeToCompare, [TypeEnum.ARRAY_TYPE]: getTypeToCompare, [TypeEnum.TUPLE_TYPE]: getTypeToCompare, [TypeEnum.NULL]: getTypeToCompare, [TypeEnum.ANY]: getTypeToCompare, [TypeEnum.NEVER]: getTypeToCompare } }