@notadd/graphql
Version:
notadd core none dependence
95 lines (88 loc) • 2.68 kB
text/typescript
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)