From 240162be4bd9fcf0c5c292b5fe0e7dde66c9a7f4 Mon Sep 17 00:00:00 2001 From: Michael Hayes Date: Sun, 7 Feb 2021 11:44:28 -0800 Subject: [PATCH] breaking: you can no-longer define args on 'exposed' fields --- packages/core/src/fieldUtils/builder.ts | 2 +- packages/plugin-scope-auth/src/types.ts | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/core/src/fieldUtils/builder.ts b/packages/core/src/fieldUtils/builder.ts index fa73e23b6..fdc405cd0 100644 --- a/packages/core/src/fieldUtils/builder.ts +++ b/packages/core/src/fieldUtils/builder.ts @@ -100,7 +100,7 @@ export default class FieldBuilder< ParentShape, ResolveReturnShape >, - 'resolve' | 'type' + 'resolve' | 'type' | 'args' >, ) { return this.exposeField<'Int', Nullable, Name>(name, { ...options, type: 'Int' }); diff --git a/packages/plugin-scope-auth/src/types.ts b/packages/plugin-scope-auth/src/types.ts index fb5f6214d..b9374db5a 100644 --- a/packages/plugin-scope-auth/src/types.ts +++ b/packages/plugin-scope-auth/src/types.ts @@ -1,18 +1,18 @@ -import { MaybePromise, SchemaTypes } from '@giraphql/core'; +import { MaybePromise, Merge, SchemaTypes } from '@giraphql/core'; import { GraphQLResolveInfo } from 'graphql'; // eslint-disable-next-line @typescript-eslint/no-empty-interface export interface ScopeAuthPluginOptions {} export interface BuiltInScopes { - $all: AuthScopeMap; - $any: AuthScopeMap; - $granted: string[]; + $all?: true extends true ? AuthScopeMap : never; + $any?: true extends true ? AuthScopeMap : never; + $granted?: string[]; } -export type AuthScopeMap = { - [K in keyof (Types['AuthScopes'] | BuiltInScopes)]?: Types['AuthScopes'][K]; -}; +export type AuthScopeMap = Merge< + Partial & BuiltInScopes +>; export type ScopeAuthInitializer = ( context: Types['Context'], @@ -35,7 +35,7 @@ export type FieldAuthScopes args: Args, context: Types['Context'], info: GraphQLResolveInfo, - ) => MaybePromise>); + ) => MaybePromise | boolean>); export type TypeGrantScopes = ( parent: Parent,