diff --git a/src/HotChocolate/Fusion-vnext/src/Fusion.Composition/Options/SourceSchemaPreprocessorOptions.cs b/src/HotChocolate/Fusion-vnext/src/Fusion.Composition/Options/SourceSchemaPreprocessorOptions.cs index 7fc73b66d5a..161dae4800f 100644 --- a/src/HotChocolate/Fusion-vnext/src/Fusion.Composition/Options/SourceSchemaPreprocessorOptions.cs +++ b/src/HotChocolate/Fusion-vnext/src/Fusion.Composition/Options/SourceSchemaPreprocessorOptions.cs @@ -5,6 +5,11 @@ namespace HotChocolate.Fusion.Options; /// public sealed class SourceSchemaPreprocessorOptions { + /// + /// Enables schema validation when preprocessing source schemas. + /// + public bool EnableSchemaValidation { get; set; } = true; + /// /// A list of tags used to exclude type system members from composition. /// Any members annotated with these tags will be excluded. diff --git a/src/HotChocolate/Fusion-vnext/src/Fusion.Composition/SourceSchemaPreprocessor.cs b/src/HotChocolate/Fusion-vnext/src/Fusion.Composition/SourceSchemaPreprocessor.cs index c2e13b331b8..fe835c9622b 100644 --- a/src/HotChocolate/Fusion-vnext/src/Fusion.Composition/SourceSchemaPreprocessor.cs +++ b/src/HotChocolate/Fusion-vnext/src/Fusion.Composition/SourceSchemaPreprocessor.cs @@ -59,10 +59,13 @@ public CompositionResult Preprocess() } // Additional schema validation will catch issues introduced during preprocessing. - var validationLog = new ValidationLog(); - if (!new SchemaValidator().Validate(schema, validationLog) && validationLog.HasErrors) + if (_options.EnableSchemaValidation) { - log.WriteValidationLog(validationLog, schema); + var validationLog = new ValidationLog(); + if (!new SchemaValidator().Validate(schema, validationLog) && validationLog.HasErrors) + { + log.WriteValidationLog(validationLog, schema); + } } return log.HasErrors diff --git a/src/Nitro/CommandLine/src/CommandLine/Extensions/SettingsExtensions.cs b/src/Nitro/CommandLine/src/CommandLine/Extensions/SettingsExtensions.cs index 779314d162f..d2ed97cc7e9 100644 --- a/src/Nitro/CommandLine/src/CommandLine/Extensions/SettingsExtensions.cs +++ b/src/Nitro/CommandLine/src/CommandLine/Extensions/SettingsExtensions.cs @@ -125,6 +125,11 @@ private SourceSchemaPreprocessorOptions ToOptions() { var preprocessorOptions = new SourceSchemaPreprocessorOptions(); + if (preprocessorSettings.EnableSchemaValidation is { } enableSchemaValidation) + { + preprocessorOptions.EnableSchemaValidation = enableSchemaValidation; + } + if (preprocessorSettings.InferKeysFromLookups is { } inferKeys) { preprocessorOptions.InferKeysFromLookups = inferKeys; diff --git a/src/Nitro/CommandLine/src/CommandLine/Settings/SourceSchemaSettings.cs b/src/Nitro/CommandLine/src/CommandLine/Settings/SourceSchemaSettings.cs index f1cf4ad7229..49c1b2b34eb 100644 --- a/src/Nitro/CommandLine/src/CommandLine/Settings/SourceSchemaSettings.cs +++ b/src/Nitro/CommandLine/src/CommandLine/Settings/SourceSchemaSettings.cs @@ -19,6 +19,8 @@ internal sealed record ParserSettings internal sealed record PreprocessorSettings { + public bool? EnableSchemaValidation { get; init; } + public bool? InferKeysFromLookups { get; init; } public bool? InheritInterfaceKeys { get; init; }