public override void OnTypeRegistered(ITypeDiscoveryContext discoveryContext)
 {
     foreach (ITypeRegistryInterceptor interceptor in _registryInterceptors)
     {
         interceptor.OnTypeRegistered(discoveryContext);
     }
 }
Ejemplo n.º 2
0
        public override void OnBeforeRegisterDependencies(
            ITypeDiscoveryContext discoveryContext,
            DefinitionBase?definition,
            IDictionary <string, object?> contextData)
        {
            if (definition is FilterInputTypeDefinition def)
            {
                IFilterConvention convention = GetConvention(
                    discoveryContext.DescriptorContext,
                    def.Scope);

                SchemaTypeReference typeReference = TypeReference.Create(
                    discoveryContext.Type,
                    def.Scope);

                var descriptor = FilterInputTypeDescriptor.New(
                    discoveryContext.DescriptorContext,
                    def.EntityType,
                    def.Scope);

                convention.ApplyConfigurations(typeReference, descriptor);

                FilterInputTypeDefinition extensionDefinition = descriptor.CreateDefinition();

                discoveryContext.RegisterDependencies(extensionDefinition);
            }
        }
Ejemplo n.º 3
0
    protected override ObjectTypeDefinition CreateDefinition(ITypeDiscoveryContext context)
    {
        SyntaxTypeReference stringType         = Create(ScalarNames.String);
        SyntaxTypeReference nonNullStringType  = Parse($"{ScalarNames.String}!");
        SyntaxTypeReference nonNullBooleanType = Parse($"{ScalarNames.Boolean}!");
        SyntaxTypeReference argumentListType   = Parse($"[{nameof(__InputValue)}!]!");
        SyntaxTypeReference locationListType   = Parse($"[{nameof(__DirectiveLocation)}!]!");

        return(new ObjectTypeDefinition(
                   Names.__Directive,
                   TypeResources.Directive_Description,
                   typeof(DirectiveType))
        {
            Fields =
            {
                new(Names.Name,                            type: nonNullStringType, pureResolver: Resolvers.Name),
                new(Names.Description,                     type: stringType,        pureResolver: Resolvers.Description),
                new(Names.Locations,                       type: locationListType,  pureResolver: Resolvers.Locations),
                new(Names.Args,                            type: argumentListType,  pureResolver: Resolvers.Arguments),
                new(Names.IsRepeatable,
                    type: nonNullBooleanType,
                    pureResolver: Resolvers.IsRepeatable),
                new(Names.OnOperation,
                    type: nonNullBooleanType,
                    pureResolver: Resolvers.OnOperation)
                {
                    DeprecationReason = TypeResources.Directive_UseLocation
                },
Ejemplo n.º 4
0
 public void OnAfterInitialize(ITypeDiscoveryContext discoveryContext, DefinitionBase?definition, IDictionary <string, object?> contextData)
 {
     if (definition is T casted)
     {
         _onAfterInitialize?.Invoke(discoveryContext, casted, contextData);
     }
 }
Ejemplo n.º 5
0
 public bool CanHandle(
     ITypeDiscoveryContext context,
     IFilterInputTypeDefinition typeDefinition,
     IFilterFieldDefinition fieldDefinition)
 {
     throw new NotImplementedException();
 }
 public override bool CanHandle(
     ITypeDiscoveryContext context,
     EnumTypeDefinition typeDefinition,
     SortEnumValueDefinition valueDefinition)
 {
     return(valueDefinition.Operation == _operation);
 }
Ejemplo n.º 7
0
 public override void OnTypeRegistered(ITypeDiscoveryContext discoveryContext)
 {
     if (ReferenceEquals(_watch, discoveryContext.Type))
     {
         Count++;
     }
 }
Ejemplo n.º 8
0
    public override void OnBeforeRegisterDependencies(
        ITypeDiscoveryContext discoveryContext,
        DefinitionBase?definition,
        IDictionary <string, object?> contextData)
    {
        switch (definition)
        {
        case ObjectTypeDefinition od:
            ValidateObjectType(discoveryContext, od);
            return;

        case InputObjectTypeDefinition ind:
            ValidateInputObjectType(discoveryContext, ind);
            return;

        case InterfaceTypeDefinition id:
            ValidateInterfaceType(discoveryContext, id);
            return;

        case UnionTypeDefinition ud:
            ValidateUnionType(discoveryContext, ud);
            return;

        case DirectiveTypeDefinition ud:
            ValidateDirectiveType(discoveryContext, ud);
            return;
        }
    }
 public TypeInfo(
     ITypeDiscoveryContext context,
     IComplexOutputTypeDefinition definition)
 {
     Context    = context;
     Definition = definition;
 }
Ejemplo n.º 10
0
        public static void RegisterDependencies(
            this ITypeDiscoveryContext context,
            InputObjectTypeDefinition definition)
        {
            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (definition is null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            RegisterAdditionalDependencies(context, definition);
            RegisterDirectiveDependencies(context, definition);

            foreach (InputFieldDefinition field in definition.Fields)
            {
                RegisterAdditionalDependencies(context, field);

                if (field.Type is not null)
                {
                    context.RegisterDependency(field.Type,
                                               TypeDependencyKind.Default);
                }

                context.RegisterDependencyRange(
                    field.GetDirectives().Select(t => t.TypeReference),
                    TypeDependencyKind.Completed);
            }
        }
 public virtual bool TryCreateScope(
     ITypeDiscoveryContext discoveryContext,
     [NotNullWhen(true)] out IReadOnlyList <TypeDependency>?typeDependencies)
 {
     typeDependencies = null;
     return(false);
 }
Ejemplo n.º 12
0
    public override void OnBeforeRegisterDependencies(
        ITypeDiscoveryContext discoveryContext,
        DefinitionBase?definition,
        IDictionary <string, object?> contextData)
    {
        EnsurePagingSettingsAreLoaded(discoveryContext.DescriptorContext);
        EnsureCostSettingsAreLoaded(discoveryContext.DescriptorContext);

        if (!_costSettings.Enable)
        {
            return;
        }

        // if the cost settings are set to apply default cost we need to ensure that
        // object types that we apply defaults to have type dependencies to the
        // cost directive.
        if (_costSettings.ApplyDefaults &&
            !discoveryContext.IsIntrospectionType &&
            definition is ObjectTypeDefinition objectDef &&
            objectDef.Fields.Any(CanApplyDefaultCost))
        {
            IExtendedType directive =
                discoveryContext.TypeInspector.GetType(typeof(CostDirectiveType));

            discoveryContext.Dependencies.Add(new(
                                                  TypeReference.Create(directive),
                                                  TypeDependencyKind.Completed));
        }
    }
Ejemplo n.º 13
0
 private static void RegisterAdditionalDependencies(
     this ITypeDiscoveryContext context,
     DefinitionBase definition)
 {
     context.RegisterDependencyRange(
         definition.Dependencies);
 }
Ejemplo n.º 14
0
    internal sealed override void Initialize(ITypeDiscoveryContext context)
    {
        AssertUninitialized();

        OnBeforeInitialize(context);

        Scope       = context.Scope;
        _definition = CreateDefinition(context);

        if (_definition is null)
        {
            throw new InvalidOperationException(
                      TypeResources.TypeSystemObjectBase_DefinitionIsNull);
        }

        // if we at this point already know the name we will just commit it.
        if (_definition.Name.HasValue)
        {
            Name = _definition.Name;
        }

        RegisterConfigurationDependencies(context, _definition);

        OnAfterInitialize(context, _definition, _definition.ContextData);

        MarkInitialized();
    }
Ejemplo n.º 15
0
 protected override void OnRegisterDependencies(
     ITypeDiscoveryContext context,
     InputObjectTypeDefinition definition)
 {
     base.OnRegisterDependencies(context, definition);
     SetTypeIdentity(typeof(FilterInputType <>));
 }
Ejemplo n.º 16
0
 public override bool CanHandle(
     ITypeDiscoveryContext context,
     FilterInputTypeDefinition typeDefinition,
     FilterFieldDefinition fieldDefinition)
 {
     return(true);
 }
Ejemplo n.º 17
0
 protected override void OnRegisterDependencies(
     ITypeDiscoveryContext context,
     ObjectTypeDefinition definition)
 {
     base.OnRegisterDependencies(context, definition);
     context.Dependencies.Add(new(context.TypeInspector.GetTypeRef(typeof(T))));
 }
Ejemplo n.º 18
0
 protected override void OnRegisterDependencies(
     ITypeDiscoveryContext context,
     EnumTypeDefinition definition)
 {
     base.OnRegisterDependencies(context, definition);
     context.RegisterDependencies(definition);
 }
Ejemplo n.º 19
0
    protected override ObjectTypeDefinition CreateDefinition(ITypeDiscoveryContext context)
    {
        SyntaxTypeReference stringType           = Create(ScalarNames.String);
        SyntaxTypeReference nonNullStringType    = Parse($"{ScalarNames.String}!");
        SyntaxTypeReference nonNullTypeType      = Parse($"{nameof(__Type)}!");
        SyntaxTypeReference appDirectiveListType = Parse($"[{nameof(__AppliedDirective)}!]!");

        var def = new ObjectTypeDefinition(
            Names.__InputValue,
            InputValue_Description,
            typeof(IInputField))
        {
            Fields =
            {
                new(Names.Name,                            type: nonNullStringType, pureResolver: Resolvers.Name),
                new(Names.Description,                     type: stringType,        pureResolver: Resolvers.Description),
                new(Names.Type,                            type: nonNullTypeType,   pureResolver: Resolvers.Type),
                new(Names.DefaultValue,
                    InputValue_DefaultValue,
                    stringType,
                    pureResolver: Resolvers.DefaultValue),
            }
        };

        if (context.DescriptorContext.Options.EnableDirectiveIntrospection)
        {
            def.Fields.Add(new(
                               Names.AppliedDirectives,
                               type: appDirectiveListType,
                               pureResolver: Resolvers.AppliedDirectives));
        }

        return(def);
    }
Ejemplo n.º 20
0
        public static void RegisterDependencies(
            this ITypeDiscoveryContext context,
            ObjectTypeDefinition definition)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            context.RegisterDependencyRange(
                definition.Interfaces,
                TypeDependencyKind.Default);

            RegisterAdditionalDependencies(context, definition);
            RegisterDirectiveDependencies(context, definition);
            RegisterFieldDependencies(context, definition.Fields);

            foreach (ObjectFieldDefinition field in definition.Fields)
            {
                if (field.Resolver is null)
                {
                    if (field.ResolverMember is { })
Ejemplo n.º 21
0
 public override bool CanHandle(
     ITypeDiscoveryContext context,
     FilterInputTypeDefinition typeDefinition,
     FilterFieldDefinition fieldDefinition)
 {
     return(fieldDefinition is FilterOperationFieldDefinition def &&
            def.Id == DefaultOperations.Data);
 }
Ejemplo n.º 22
0
 protected override void OnRegisterDependencies(
     ITypeDiscoveryContext context,
     InterfaceTypeDefinition definition)
 {
     base.OnRegisterDependencies(context, definition);
     context.RegisterDependencies(definition);
     SetTypeIdentity(typeof(InterfaceType <>));
 }
Ejemplo n.º 23
0
 public override bool CanHandle(
     ITypeDiscoveryContext context,
     FilterInputTypeDefinition typeDefinition,
     FilterFieldDefinition fieldDefinition)
 {
     return(fieldDefinition is FilterOperationFieldDefinition {
         Id : 155
     });
Ejemplo n.º 24
0
 private void RegisterDependencies(
     ITypeDiscoveryContext context,
     DirectiveTypeDefinition definition)
 {
     context.RegisterDependencyRange(
         definition.Arguments.Select(t => t.Type),
         TypeDependencyKind.Completed);
 }
Ejemplo n.º 25
0
 protected virtual void OnAfterRegisterDependencies(
     ITypeDiscoveryContext context,
     DefinitionBase definition,
     IDictionary <string, object?> contextData)
 {
     context.TypeInterceptor.OnAfterRegisterDependencies(
         context, definition, contextData);
 }
Ejemplo n.º 26
0
 protected virtual void OnAfterInitialize(
     ITypeDiscoveryContext context,
     DefinitionBase definition,
     IDictionary <string, object?> contextData)
 {
     context.TypeInterceptor.OnAfterInitialize(
         context, definition, contextData);
 }
 public override bool CanHandle(
     ITypeDiscoveryContext context,
     IFilterInputTypeDefinition typeDefinition,
     IFilterFieldDefinition fieldDefinition)
 {
     return(context.Type is IListFilterInput &&
            fieldDefinition is FilterOperationFieldDefinition operationField &&
            operationField.Id == DefaultOperations.Any);
 }
Ejemplo n.º 28
0
 private static void RegisterDirectiveDependencies <T>(
     this ITypeDiscoveryContext context,
     TypeDefinitionBase <T> definition)
     where T : class, ISyntaxNode
 {
     context.RegisterDependencyRange(
         definition.GetDirectives().Select(t => t.TypeReference),
         TypeDependencyKind.Completed);
 }
Ejemplo n.º 29
0
        protected override EnumTypeDefinition CreateDefinition(
            ITypeDiscoveryContext context)
        {
            var descriptor = EnumTypeDescriptor.New(
                context.DescriptorContext);

            _configure(descriptor);
            return(descriptor.CreateDefinition());
        }
Ejemplo n.º 30
0
 public override bool CanHandle(
     ITypeDiscoveryContext context,
     FilterInputTypeDefinition typeDefinition,
     FilterFieldDefinition fieldDefinition)
 {
     return(context.Type is IEnumOperationInput &&
            fieldDefinition is FilterOperationFieldDefinition operationField &&
            operationField.Id == Operation);
 }