@nestjs/graphql
Version:
Nest - modern, fast, powerful node.js web framework (@graphql)
37 lines (36 loc) • 1.38 kB
JavaScript
import { SetMetadata } from '@nestjs/common';
import { isFunction, isString } from '@nestjs/common/utils/shared.utils.js';
import { RESOLVER_NAME_METADATA, RESOLVER_TYPE_METADATA, } from '../graphql.constants.js';
import { UndefinedResolverTypeError } from '../schema-builder/errors/undefined-resolver-type.error.js';
export function addResolverMetadata(resolver, name, target, key, descriptor) {
SetMetadata(RESOLVER_TYPE_METADATA, resolver || name)(target, key, descriptor);
SetMetadata(RESOLVER_NAME_METADATA, name)(target, key, descriptor);
}
export function getClassName(nameOrType) {
if (isString(nameOrType)) {
return nameOrType;
}
const classOrUndefined = getClassOrUndefined(nameOrType);
return classOrUndefined && classOrUndefined.name;
}
export function getResolverTypeFn(nameOrType, target) {
return nameOrType
? nameOrType.prototype
? () => nameOrType
: nameOrType
: () => {
throw new UndefinedResolverTypeError(target.name);
};
}
export function getClassOrUndefined(typeOrFunc) {
return isConstructor(typeOrFunc)
? typeOrFunc
: isFunction(typeOrFunc)
? typeOrFunc()
: undefined;
}
function isConstructor(obj) {
return (!!obj.prototype &&
!!obj.prototype.constructor &&
!!obj.prototype.constructor.name);
}