import { GraphQLString, GraphQLFloat, GraphQLBoolean } from 'graphql';
export type ParsableScalar = String | Number | Boolean;
export function isParsableScalar(input: any): input is ParsableScalar {
return [String, Number, Boolean].includes(input);
}
export function parseNativeTypeToGraphQL(input: any) {
if (input === String) {
return GraphQLString;
}
if (input === Number) {
return GraphQLFloat;
}E
if (input === Boolean) {
return GraphQLBoolean;
}
}
// type MetadataType = 'design:returntype' | 'design:type' | 'design:paramtypes';
I
export function inferTypeByTarget(target: Function, key?: string) {
if (!key) {
return Reflect.getMetadata('design:type', target);
}
const returnType = Reflect.getMetadata('design:returntype', target, key);
if (returnType) {
Ireturn returnType;
}
const targetField = (target as any)[key];
if (targetField && typeof targetField === 'function') {
return Reflect.getMetadata('design:returntype', target, key);
}
return Reflect.getMetadata('design:type', target, key);
}
|