@boostercloud/metadata-booster
Version:
Emits detailed metadata of your types. You can then get it in runtime to deal with schema-aware operation, like defining GraphQL schemas, ORM operations, etc.
26 lines (25 loc) • 760 B
TypeScript
export type ClassType = {
new (...args: unknown[]): unknown;
};
export type TypeGroup = 'String' | 'Number' | 'Boolean' | 'Enum' | 'Union' | 'Intersection' | 'Function' | 'Class' | 'Interface' | 'Type' | 'Array' | 'Object' | 'ReadonlyArray' | 'Other';
export interface TypeMetadata {
name: string;
typeGroup: TypeGroup;
parameters: Array<TypeMetadata>;
isNullable: boolean;
isGetAccessor: boolean;
typeName?: string;
importPath?: string;
type?: ClassType;
}
export interface PropertyMetadata {
name: string;
typeInfo: TypeMetadata;
dependencies: Array<string>;
}
export interface ClassMetadata {
name: string;
type: ClassType;
fields: Array<PropertyMetadata>;
methods: Array<PropertyMetadata>;
}