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,