export type Type = NamedType | ImportedType | AliasedType | EnumType | EnumArrayType ; export type MappableType = string | Type ; export interface NamedType { name : string ; definition ? : string ; enumValues ? : string [ ] ; } export interface ImportedType extends NamedType { from : string ; } export interface AliasedType extends NamedType { definition : string ; } export interface EnumType extends NamedType { enumValues : string [ ] ; } export interface EnumArrayType extends NamedType { name : string ; elementType : EnumType ; } export function isImport ( typ ) { return 'from' in typ ; } export function isAlias ( typ ) { return 'definition' in typ ; } export function isEnum ( typ ) { return typeof typ !== 'string' && 'enumValues' in typ ; } export function isEnumArray ( typ ) { return typeof typ !== 'string' && 'elementType' in typ ; } export const enum DatabaseTypeKind { Base = 'b' , Composite = 'c' , Domain = 'd' , Enum = 'e' , Pseudo = 'p' , Range = 'r' }