UNPKG

@notadd/graphql

Version:

notadd core none dependence

95 lines (88 loc) 2.68 kB
import { createDecorator, IClassDecorator, IMethodDecorator } from '@notadd/core' export interface QueryOptions { path: string; } export const QueryMetadataKey = `@notadd/graphql QueryMetadataKey` export const Query = createDecorator(QueryMetadataKey, (it: any) => { let options = it.options as QueryOptions; if (typeof options === 'string') { options = { path: options } } if (it instanceof IClassDecorator) { if (!options) { options = { path: it.type.name as string } } } else if (it instanceof IMethodDecorator) { if (!options) { options = { path: it.property as string } } } it.options = options; }) export interface MutationOptions { path: string; } export const MutationMetadataKey = `@notadd/graphql MutationMetadataKey` export const Mutation = createDecorator<MutationOptions | string>(MutationMetadataKey, (it: any) => { let options = it.options as MutationOptions; if (typeof options === 'string') { options = { path: options } } if (it instanceof IClassDecorator) { if (!options) { options = { path: it.type.name as string } } } else if (it instanceof IMethodDecorator) { if (!options) { options = { path: it.property as string } } } it.options = options; }) export interface SubscriptionOptions { path: string; } export const SubscriptionMetadataKey = `@notadd/graphql SubscriptionMetadataKey` export const Subscription = createDecorator<SubscriptionOptions | string>(SubscriptionMetadataKey, (it: any) => { let options = it.options as SubscriptionOptions; if (typeof options === 'string') { options = { path: options } } if (it instanceof IClassDecorator) { if (!options) { options = { path: it.type.name as string } } } else if (it instanceof IMethodDecorator) { if (!options) { options = { path: it.property as string } } } it.options = options; }) export interface ScalarOptions { name: string, description: string } export const ScalarMetadataKey = `@notadd/graphql ScalarMetadataKey` export const Scalar = createDecorator<ScalarOptions>(ScalarMetadataKey) export interface DirectiveOptions { } export const DirectiveMetadataKey = `@notadd/graphql DirectiveMetadataKey` export const Directive = createDecorator(DirectiveMetadataKey)