From 8c9b1b94efe813a13a0a6064b7d638781b540d95 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 7 Jul 2025 17:32:29 -0400 Subject: [PATCH 01/20] Add Corvus.Json.CodeGeneration.OpenApi31 --- ...orvus.Json.CodeGeneration.OpenApi31.csproj | 47 ++++++ .../OpenApi31/SchemaVocabulary.cs | 87 ++++++++++ .../OpenApi31/VocabularyAnalyser.cs | 57 +++++++ .../SchemaReferenceNormalization.cs | 2 +- .../JsonSchemaTypeBuilder.cs | 37 +++-- .../PropertyProvider/PropertyDeclaration.cs | 2 +- .../TypeDeclarations/TypeDeclaration.cs | 2 +- .../TypeDeclarationExtensions.cs | 73 ++++---- .../GenerateCommand.cs | 1 - .../GenerationDriver.cs | 55 +++--- .../ValidateDocumentCommand.cs | 2 +- .../Corvus.Json/JsonReference.cs | 33 ++-- ...ertiesEntity.PropertyNamesEntity.String.cs | 2 +- .../Draft201909/Core.IdEntity.String.cs | 2 +- ...ertiesEntity.PropertyNamesEntity.String.cs | 2 +- .../Draft202012/Core.IdEntity.String.cs | 2 +- ...ertiesEntity.PropertyNamesEntity.String.cs | 2 +- ...ertiesEntity.PropertyNamesEntity.String.cs | 2 +- .../Corvus.Json.SourceGenerator.csproj | 5 +- .../IncrementalSourceGenerator.cs | 17 +- .../IndexRange/Index.cs | 157 ------------------ .../IndexRange/Range.cs | 100 ----------- Solutions/Corvus.Json.Validator/JsonSchema.cs | 12 +- Solutions/Corvus.Json.Validator/Metaschema.cs | 2 +- Solutions/Corvus.JsonSchema.sln | 7 + 25 files changed, 312 insertions(+), 398 deletions(-) create mode 100644 Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj create mode 100644 Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/SchemaVocabulary.cs create mode 100644 Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/VocabularyAnalyser.cs delete mode 100644 Solutions/Corvus.Json.SourceGenerator/IndexRange/Index.cs delete mode 100644 Solutions/Corvus.Json.SourceGenerator/IndexRange/Range.cs diff --git a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj new file mode 100644 index 00000000000..06f95d9c226 --- /dev/null +++ b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj @@ -0,0 +1,47 @@ + + + + + netstandard2.0;net8.0 + enable + enable + + + + CS1591 + + + + $(NoWarn);nullable + + + + Apache-2.0 + Defines the vocabulary for the OpenAPI 3.0 dialect. + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + + + + diff --git a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/SchemaVocabulary.cs b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/SchemaVocabulary.cs new file mode 100644 index 00000000000..daa72aba8f5 --- /dev/null +++ b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/SchemaVocabulary.cs @@ -0,0 +1,87 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +using System.Text.Json; +using Corvus.Json.CodeGeneration.Keywords; + +namespace Corvus.Json.CodeGeneration.OpenApi31; + +/// +/// The openApi31 schema vocabulary. +/// +internal sealed class SchemaVocabulary : IVocabulary +{ + private static readonly IKeyword[] KeywordsBacking = + [ + TitleKeyword.Instance, + DefinitionsKeyword.Instance, + MultipleOfKeyword.Instance, + DollarRefHidesSiblingsKeyword.Instance, + MaximumKeyword.Instance, + ExclusiveMinimumBooleanKeyword.Instance, + MinimumKeyword.Instance, + ExclusiveMaximumBooleanKeyword.Instance, + MaxLengthKeyword.Instance, + MinLengthKeyword.Instance, + PatternKeyword.Instance, + MaxItemsKeyword.Instance, + MinItemsKeyword.Instance, + UniqueItemsKeyword.Instance, + MaxPropertiesKeyword.Instance, + MinPropertiesKeyword.Instance, + RequiredKeyword.Instance, + EnumKeyword.Instance, + TypeKeyword.Instance, + NotKeyword.Instance, + AllOfKeyword.Instance, + OneOfKeyword.Instance, + AnyOfKeyword.Instance, + ItemsWithSchemaKeyword.Instance, + PropertiesKeyword.Instance, + AdditionalPropertiesKeyword.Instance, + DescriptionKeyword.Instance, + FormatWithAssertionKeyword.Instance, + DefaultKeyword.Instance, + NullableKeyword.Instance, + DiscriminatorKeyword.Instance, + ReadOnlyKeyword.Instance, + WriteOnlyKeyword.Instance, + ExampleKeyword.Instance, + ExternalDocsKeyword.Instance, + DeprecatedKeyword.Instance, + XmlKeyword.Instance, + ]; + + /// + /// Gets the singleton instance of the OpenApi31 default vocabulary. + /// + public static SchemaVocabulary DefaultInstance { get; } = new SchemaVocabulary(); + + /// + public string Uri => "https://json-schema.org/draft/2020-12/schema"; + + /// + public ReadOnlySpan UriUtf8 => "https://json-schema.org/draft/2020-12/schema"u8; + + /// + public IEnumerable Keywords => KeywordsBacking; + + /// + public JsonDocument? BuildReferenceSchemaInstance(JsonReference jsonSchemaPath) + { + return JsonDocument.Parse( + $$""" + { + "$ref": "{{jsonSchemaPath}}" + } + """); + } + + /// + public bool ValidateSchemaInstance(JsonElement schemaInstance) + { + // TODO: Validate using the generate types + return true; + } +} \ No newline at end of file diff --git a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/VocabularyAnalyser.cs b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/VocabularyAnalyser.cs new file mode 100644 index 00000000000..26e7fc40a29 --- /dev/null +++ b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/VocabularyAnalyser.cs @@ -0,0 +1,57 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +using System.Text.Json; +using Corvus.Json.CodeGeneration.Keywords; + +namespace Corvus.Json.CodeGeneration.OpenApi31; + +/// +/// A vocabulary analyser for OpenApi31. +/// +public sealed class VocabularyAnalyser : IVocabularyAnalyser +{ + /// + /// Initializes a new instance of the class. + /// + private VocabularyAnalyser() + { + } + + /// + /// Gets the default vocabulary for the analyser. + /// + public static IVocabulary DefaultVocabulary => SchemaVocabulary.DefaultInstance; + + /// + /// Register the vocabulary analyser. + /// + /// The vocabulary registry for which this is an analyser. + public static void RegisterAnalyser(VocabularyRegistry vocabularyRegistry) + { + VocabularyAnalyser analyser = new(); + vocabularyRegistry.RegisterAnalyser(analyser); + } + + /// + public ValueTask TryGetVocabulary(JsonElement schemaInstance) + { + if (schemaInstance.ValueKind != JsonValueKind.Object || !schemaInstance.TryGetProperty(DollarSchemaKeyword.Instance.KeywordUtf8, out JsonElement dollarSchema)) + { + return new ValueTask(default(IVocabulary?)); + } + + if (dollarSchema.ValueKind != JsonValueKind.String) + { + return new ValueTask(default(IVocabulary?)); + } + + if (dollarSchema.ValueEquals(SchemaVocabulary.DefaultInstance.UriUtf8)) + { + return new ValueTask(SchemaVocabulary.DefaultInstance); + } + + return new ValueTask(default(IVocabulary?)); + } +} \ No newline at end of file diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/SchemaReferenceNormalization.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/SchemaReferenceNormalization.cs index eb6be9c5b04..4b8a36df100 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/SchemaReferenceNormalization.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/SchemaReferenceNormalization.cs @@ -29,7 +29,7 @@ public static bool TryNormalizeSchemaReference(string schemaFile, [NotNullWhen(t /// The current base path, for relative references. /// The resulting reference URI. /// if the reference was successfully normalized. - public static bool TryNormalizeSchemaReference(string schemaFile, string basePath, [NotNullWhen(true)] out string? result) + public static bool TryNormalizeSchemaReference(string schemaFile, string? basePath, [NotNullWhen(true)] out string? result) { if (!IsValid(schemaFile, out Uri? uri) || uri.IsFile) { diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs index 613575c9952..d7c0a165daa 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs @@ -2,7 +2,6 @@ // Copyright (c) Endjin Limited. All rights reserved. // -using System.Collections.Immutable; using System.Diagnostics.CodeAnalysis; using System.Text.Json; @@ -29,12 +28,19 @@ public class JsonSchemaTypeBuilder( /// /// The path to the root of the json-schema document. /// The default vocabulary to use if one cannot be analysed. - /// Whether to rebase the as a root document. This should only be done for a JSON schema island in a larger non-schema document. - /// If , then references in this document should be taken as if the fragment was the root of a document. This will effectively generate a custom $id for the root scope. + /// + /// Whether to rebase the as a root document. + /// This should only be done for a JSON schema island in a larger non-schema document. + /// If , then references in this document should be taken as if the fragment was the root of a document. + /// This will effectively generate a custom $id for the root scope. + /// /// A cancellation token to abandon generation. /// A which, when complete, provides the requested type declaration. /// - /// This method may be called multiple times to build up a set of related types, perhaps from multiple fragments of a single document, or a family of related documents. + /// + /// This method may be called multiple times to build up a set of related types, + /// perhaps from multiple fragments of a single document, or a family of related documents. + /// /// Any re-used schema will (if possible) be reduced to the same type, to build a single coherent type system. /// Once you have finished adding types, call to generate the code for each language you need to support. /// Note: this requires the to be pre-configured with all the files required by the type build. @@ -47,8 +53,7 @@ public TypeDeclaration AddTypeDeclarations( bool rebaseAsRoot = false, CancellationToken? cancellationToken = null) { - ValueTask task = - this.AddTypeDeclarationsAsync(documentPath, fallbackVocabulary, rebaseAsRoot); + ValueTask task = this.AddTypeDeclarationsAsync(documentPath, fallbackVocabulary, rebaseAsRoot, cancellationToken); if (!task.IsCompleted) { @@ -72,12 +77,16 @@ public TypeDeclaration AddTypeDeclarations( /// Any re-used schema will (if possible) be reduced to the same type, to build a single coherent type system. /// Once you have finished adding types, call to generate the code for each language you need to support. /// - public async ValueTask AddTypeDeclarationsAsync(JsonReference documentPath, IVocabulary fallbackVocabulary, bool rebaseAsRoot = false, CancellationToken? cancellationToken = null) + public async ValueTask AddTypeDeclarationsAsync( + JsonReference documentPath, + IVocabulary fallbackVocabulary, + bool rebaseAsRoot = false, + CancellationToken? cancellationToken = null) { CancellationToken ct = cancellationToken ?? CancellationToken.None; // First we do a document "load" - this enables us to build the map of the schema, anchors etc. - (JsonReference schemaLocation, JsonReference baseLocation) = await this.schemaRegistry.RegisterBaseSchema(documentPath, fallbackVocabulary, rebaseAsRoot, ct); + var (schemaLocation, baseLocation) = await this.schemaRegistry.RegisterBaseSchema(documentPath, fallbackVocabulary, rebaseAsRoot, ct); if (ct.IsCancellationRequested) { @@ -246,13 +255,12 @@ private static void MarkNonGeneratedTypes(ILanguageProvider languageProvider, Ty void IdentifyNonGeneratedTypes(TypeDeclaration typeDeclaration, HashSet visitedTypeDeclarations, CancellationToken cancellationToken) { // Quit early if we are already visiting the type declaration. - if (visitedTypeDeclarations.Contains(typeDeclaration)) + if (!visitedTypeDeclarations.Add(typeDeclaration)) { return; } // Tell ourselves early that we have visited this type declaration already. - visitedTypeDeclarations.Add(typeDeclaration); // We only set a name for ourselves if we cannot be reduced. if (!typeDeclaration.CanReduce()) @@ -293,13 +301,12 @@ private static void SetNames(ILanguageProvider languageProvider, TypeDeclaration void SetNamesBeforeSubschema(TypeDeclaration typeDeclaration, HashSet visitedTypeDeclarations, CancellationToken cancellationToken) { // Quit early if we are already visiting the type declaration. - if (visitedTypeDeclarations.Contains(typeDeclaration)) + if (!visitedTypeDeclarations.Add(typeDeclaration)) { return; } // Tell ourselves early that we have visited this type declaration already. - visitedTypeDeclarations.Add(typeDeclaration); // We only set a name for ourselves if we cannot be reduced. if (typeDeclaration.CanReduce()) @@ -333,7 +340,7 @@ void SetNamesBeforeSubschema(TypeDeclaration typeDeclaration, HashSet visitedTypeDeclarations, CancellationToken cancellationToken) { // Quit early if we are already visiting the type declaration. - if (visitedTypeDeclarations.Contains(typeDeclaration)) + if (!visitedTypeDeclarations.Add(typeDeclaration)) { return; } @@ -411,13 +418,11 @@ private void SetParents(IHierarchicalLanguageProvider languageProvider, TypeDecl void SetParentsCore(TypeDeclaration type, HashSet visitedTypes, CancellationToken cancellationToken) { - if (visitedTypes.Contains(type)) + if (!visitedTypes.Add(type)) { return; } - visitedTypes.Add(type); - SetParent(type); foreach (TypeDeclaration child in type.SubschemaTypeDeclarations.Values) { diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/PropertyProvider/PropertyDeclaration.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/PropertyProvider/PropertyDeclaration.cs index 7a9666fbcd1..6a9572a12fb 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/PropertyProvider/PropertyDeclaration.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/PropertyProvider/PropertyDeclaration.cs @@ -99,7 +99,7 @@ public bool TryGetMetadata(string key, [MaybeNullWhen(false)] out T? value) if (result) { value = (T?)candidate; - return true; + return value != null; } value = default; diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclaration.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclaration.cs index 03b234404c3..66c886fd240 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclaration.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclaration.cs @@ -123,7 +123,7 @@ public bool TryGetMetadata(string key, [MaybeNullWhen(false)] out T? value) if (result) { value = (T?)candidate; - return true; + return value != null; } value = default; diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclarationExtensions.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclarationExtensions.cs index 0007036cd0d..5dc71a3fa99 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclarationExtensions.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclarationExtensions.cs @@ -772,7 +772,7 @@ public static bool IsFixedSizeArray(this TypeDeclaration that) // recursive references) that.SetMetadata(nameof(IsFixedSizeArray), isFixedSizeArray); - if ((isFixedSizeArray ?? false) && + if (isFixedSizeArray.Value && that.ArrayItemsType() is ArrayItemsTypeDeclaration childItemsType && (childItemsType.ReducedType.ImpliedCoreTypes() & CoreTypes.Array) != 0) { @@ -784,8 +784,7 @@ public static bool IsFixedSizeArray(this TypeDeclaration that) return isFixedSizeArray ?? false; - static bool GetIsFixedSizeArray( - TypeDeclaration typeDeclaration) + static bool GetIsFixedSizeArray(TypeDeclaration typeDeclaration) { return typeDeclaration.ArrayDimension() is not null; } @@ -894,8 +893,7 @@ static bool GetIsNumericArray( return arrayDimension; - static int? GetArrayDimension( - TypeDeclaration typeDeclaration) + static int? GetArrayDimension(TypeDeclaration typeDeclaration) { if (typeDeclaration.HasSiblingHidingKeyword()) { @@ -929,8 +927,6 @@ static bool GetIsNumericArray( case Operator.LessThan: maximumValue = Math.Max(value - 1, maximumValue); break; - default: - break; } } } @@ -1193,19 +1189,19 @@ public static bool IsInDefinitionsContainer(this TypeDeclaration that) { if (!that.TryGetMetadata(nameof(IsInDefinitionsContainer), out bool isInDefinitionsContainer)) { - isInDefinitionsContainer = IsInDefinitionsContainer(that); + isInDefinitionsContainer = GetIsInDefinitionsContainer(that); that.SetMetadata(nameof(IsInDefinitionsContainer), isInDefinitionsContainer); } return isInDefinitionsContainer; - static bool IsInDefinitionsContainer(TypeDeclaration typeDeclaration) + static bool GetIsInDefinitionsContainer(TypeDeclaration typeDeclaration) { JsonReference reference = typeDeclaration.LocatedSchema.Location; - foreach (IKeyword keyword in typeDeclaration.LocatedSchema.Vocabulary.Keywords.OfType()) + foreach (IDefinitionsKeyword keyword in typeDeclaration.LocatedSchema.Vocabulary.Keywords.OfType()) { - if (reference.HasFragment && reference.Fragment.Length > 1 && reference.Fragment.LastIndexOf('/') == keyword.Keyword.Length + 2 && reference.Fragment[2..].StartsWith(keyword.Keyword.AsSpan())) + if (reference is { HasFragment: true, Fragment.Length: > 1 } && reference.Fragment.LastIndexOf('/') == keyword.Keyword.Length + 2 && reference.Fragment[2..].StartsWith(keyword.Keyword.AsSpan())) { return true; } @@ -1229,24 +1225,23 @@ public static bool RequiresItemsEvaluationTracking(this TypeDeclaration that) if (!that.TryGetMetadata(nameof(RequiresItemsEvaluationTracking), out bool requiresTracking)) { - requiresTracking = RequiresItemsEvaluationTracking(that); + requiresTracking = GetRequiresItemsEvaluationTracking(that); that.SetMetadata(nameof(RequiresItemsEvaluationTracking), requiresTracking); } return requiresTracking; - static bool RequiresItemsEvaluationTracking( - TypeDeclaration typeDeclaration) + static bool GetRequiresItemsEvaluationTracking(TypeDeclaration typeDeclaration) { if (typeDeclaration.HasSiblingHidingKeyword()) { return false; } - return - typeDeclaration.Keywords() - .OfType() - .Any(k => k.RequiresItemsEvaluationTracking(typeDeclaration)); + return typeDeclaration + .Keywords() + .OfType() + .Any(k => k.RequiresItemsEvaluationTracking(typeDeclaration)); } } @@ -1264,24 +1259,22 @@ public static bool RequiresArrayLength(this TypeDeclaration that) if (!that.TryGetMetadata(nameof(RequiresArrayLength), out bool requiresTracking)) { - requiresTracking = RequiresArrayLength(that); + requiresTracking = GetRequiresArrayLength(that); that.SetMetadata(nameof(RequiresArrayLength), requiresTracking); } return requiresTracking; - static bool RequiresArrayLength( - TypeDeclaration typeDeclaration) + static bool GetRequiresArrayLength(TypeDeclaration typeDeclaration) { if (typeDeclaration.HasSiblingHidingKeyword()) { return false; } - return - typeDeclaration.Keywords() - .OfType() - .Any(k => k.RequiresArrayLength(typeDeclaration)); + return typeDeclaration.Keywords() + .OfType() + .Any(k => k.RequiresArrayLength(typeDeclaration)); } } @@ -1299,14 +1292,13 @@ public static bool RequiresArrayEnumeration(this TypeDeclaration that) if (!that.TryGetMetadata(nameof(RequiresArrayEnumeration), out bool requiresEnumeration)) { - requiresEnumeration = RequiresArrayEnumeration(that); + requiresEnumeration = GetRequiresArrayEnumeration(that); that.SetMetadata(nameof(RequiresArrayEnumeration), requiresEnumeration); } return requiresEnumeration; - static bool RequiresArrayEnumeration( - TypeDeclaration typeDeclaration) + static bool GetRequiresArrayEnumeration(TypeDeclaration typeDeclaration) { if (typeDeclaration.HasSiblingHidingKeyword()) { @@ -1334,13 +1326,13 @@ public static bool RequiresObjectEnumeration(this TypeDeclaration that) if (!that.TryGetMetadata(nameof(RequiresObjectEnumeration), out bool requiresEnumeration)) { - requiresEnumeration = RequiresObjectEnumeration(that); + requiresEnumeration = GetRequiresObjectEnumeration(that); that.SetMetadata(nameof(RequiresObjectEnumeration), requiresEnumeration); } return requiresEnumeration; - static bool RequiresObjectEnumeration( + static bool GetRequiresObjectEnumeration( TypeDeclaration typeDeclaration) { if (typeDeclaration.HasSiblingHidingKeyword()) @@ -1369,13 +1361,13 @@ public static bool RequiresPropertyEvaluationTracking(this TypeDeclaration that) if (!that.TryGetMetadata(nameof(RequiresPropertyEvaluationTracking), out bool requiresTracking)) { - requiresTracking = RequiresPropertyEvaluationTracking(that); + requiresTracking = GetRequiresPropertyEvaluationTracking(that); that.SetMetadata(nameof(RequiresPropertyEvaluationTracking), requiresTracking); } return requiresTracking; - static bool RequiresPropertyEvaluationTracking( + static bool GetRequiresPropertyEvaluationTracking( TypeDeclaration typeDeclaration) { if (typeDeclaration.HasSiblingHidingKeyword()) @@ -1404,14 +1396,13 @@ public static bool RequiresJsonValueKind(this TypeDeclaration that) if (!that.TryGetMetadata(nameof(RequiresJsonValueKind), out bool requiresJsonValueKind)) { - requiresJsonValueKind = RequiresJsonValueKind(that); + requiresJsonValueKind = GetRequiresJsonValueKind(that); that.SetMetadata(nameof(RequiresJsonValueKind), requiresJsonValueKind); } return requiresJsonValueKind; - static bool RequiresJsonValueKind( - TypeDeclaration typeDeclaration) + static bool GetRequiresJsonValueKind(TypeDeclaration typeDeclaration) { if (typeDeclaration.HasSiblingHidingKeyword()) { @@ -1464,9 +1455,7 @@ static JsonElement GetDefaultValue( return default; } - foreach ( - IDefaultValueProviderKeyword keyword in - typeDeclaration.Keywords().OfType()) + foreach (IDefaultValueProviderKeyword keyword in typeDeclaration.Keywords().OfType()) { if (keyword.TryGetDefaultValue(typeDeclaration, out JsonElement defaultValue)) { @@ -1519,7 +1508,7 @@ public static IReadOnlyCollection Keywords(this TypeDeclaration that) { if (!that.TryGetMetadata(nameof(Keywords), out IReadOnlyCollection? keywords)) { - if (!TryGetKeywords(that, out keywords)) + if (!InternalTryGetKeywords(that, out keywords)) { keywords = []; } @@ -1529,13 +1518,11 @@ public static IReadOnlyCollection Keywords(this TypeDeclaration that) return keywords ?? []; - static bool TryGetKeywords( + static bool InternalTryGetKeywords( TypeDeclaration typeDeclaration, [NotNullWhen(true)] out IReadOnlyCollection? keywords) { - var allKeywords = - typeDeclaration.LocatedSchema.Vocabulary.Keywords - .Where(k => typeDeclaration.HasKeyword(k)).ToList(); + var allKeywords = typeDeclaration.LocatedSchema.Vocabulary.Keywords.Where(typeDeclaration.HasKeyword).ToList(); if (allKeywords.Count > 0) { diff --git a/Solutions/Corvus.Json.CodeGenerator/GenerateCommand.cs b/Solutions/Corvus.Json.CodeGenerator/GenerateCommand.cs index e785e92ad2d..560ba7cc26c 100644 --- a/Solutions/Corvus.Json.CodeGenerator/GenerateCommand.cs +++ b/Solutions/Corvus.Json.CodeGenerator/GenerateCommand.cs @@ -55,7 +55,6 @@ public sealed class Settings : CommandSettings [NotNull] // <> => NotNull public string? SchemaFile { get; init; } - [CommandOption("--disableOptionalNamingHeuristics")] [Description("Disables all optional naming heuristics.")] [DefaultValue(false)] diff --git a/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs b/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs index 83717d35f96..9b98ac0b8dd 100644 --- a/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs +++ b/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs @@ -1,10 +1,8 @@ -using System.Security.AccessControl; -using System.Text.Json; +using System.Text.Json; using Corvus.Json.CodeGeneration; using Corvus.Json.CodeGeneration.CSharp; using Corvus.Json.CodeGeneration.DocumentResolvers; using Corvus.Json.Internal; -using Microsoft.CodeAnalysis; using Spectre.Console; namespace Corvus.Json.CodeGenerator; @@ -24,6 +22,7 @@ internal static async Task GenerateTypes(GeneratorConfig generatorConfig) } CompoundDocumentResolver documentResolver; + if (generatorConfig.SupportYaml ?? false) { var preProcessor = new YamlPreProcessor(); @@ -34,23 +33,18 @@ internal static async Task GenerateTypes(GeneratorConfig generatorConfig) documentResolver = new CompoundDocumentResolver(new FileSystemDocumentResolver(), new HttpClientDocumentResolver(new HttpClient())); } - Metaschema.AddMetaschema(documentResolver); + documentResolver.AddMetaschema(); await RegisterAdditionalFiles(generatorConfig, documentResolver); - VocabularyRegistry vocabularyRegistry = ReigsterVocabularies(documentResolver); + VocabularyRegistry vocabularyRegistry = RegisterVocabularies(documentResolver); // This will be our fallback vocabulary IVocabulary defaultVocabulary = GetFallbackVocabulary(generatorConfig.UseSchemaValue ?? GeneratorConfig.UseSchema.DefaultInstance); JsonSchemaTypeBuilder typeBuilder = new(documentResolver, vocabularyRegistry); - Progress progress = - AnsiConsole.Progress() - .Columns( - [ - new TaskDescriptionColumn { Alignment = Justify.Left }, // Task description - ]); + Progress progress = AnsiConsole.Progress().Columns(new TaskDescriptionColumn { Alignment = Justify.Left }); await progress.StartAsync(async context => { @@ -69,23 +63,16 @@ await progress.StartAsync(async context => private static async Task RegisterAdditionalFiles(GeneratorConfig generatorConfig, CompoundDocumentResolver documentResolver) { - if (generatorConfig.AdditionalFiles is GeneratorConfig.FileList f) + if (generatorConfig.AdditionalFiles is GeneratorConfig.FileList fileList) { YamlPreProcessor? yamlPreProcessor = generatorConfig.SupportYaml ?? false ? new YamlPreProcessor() : null; - foreach (GeneratorConfig.FileSpecification fileSpec in f.EnumerateArray()) + foreach (GeneratorConfig.FileSpecification fileSpec in fileList.EnumerateArray()) { - using FileStream inputStream = File.OpenRead((string)fileSpec.ContentPath); - Stream processedStream; - - if (yamlPreProcessor is YamlPreProcessor processor) - { - processedStream = processor.Process(inputStream); - } - else - { - processedStream = inputStream; - } + await using FileStream inputStream = File.OpenRead((string)fileSpec.ContentPath); + Stream processedStream = yamlPreProcessor is null + ? inputStream + : yamlPreProcessor.Process(inputStream); try { @@ -95,14 +82,14 @@ private static async Task RegisterAdditionalFiles(GeneratorConfig generatorConfi { if (inputStream != processedStream) { - processedStream.Dispose(); + await processedStream.DisposeAsync(); } } } } } - private static VocabularyRegistry ReigsterVocabularies(IDocumentResolver documentResolver) + private static VocabularyRegistry RegisterVocabularies(IDocumentResolver documentResolver) { VocabularyRegistry vocabularyRegistry = new(); @@ -115,8 +102,7 @@ private static VocabularyRegistry ReigsterVocabularies(IDocumentResolver documen CodeGeneration.OpenApi30.VocabularyAnalyser.RegisterAnalyser(vocabularyRegistry); // And register the custom vocabulary for Corvus extensions. - vocabularyRegistry.RegisterVocabularies( - CodeGeneration.CorvusVocabulary.SchemaVocabulary.DefaultInstance); + vocabularyRegistry.RegisterVocabularies(CodeGeneration.CorvusVocabulary.SchemaVocabulary.DefaultInstance); return vocabularyRegistry; } @@ -134,7 +120,7 @@ private static int WriteValidationErrors(GeneratorConfig generatorConfig) private static async Task ExecuteTask(GeneratorConfig generatorConfig, ProgressContext context, IVocabulary defaultVocabulary, JsonSchemaTypeBuilder typeBuilder) { - ProgressTask outerTask = context.AddTask($"Generating JSON types", maxValue: generatorConfig.TypesToGenerate.GetArrayLength()); + ProgressTask outerTask = context.AddTask("Generating JSON types", maxValue: generatorConfig.TypesToGenerate.GetArrayLength()); List typesToGenerate = []; @@ -168,7 +154,7 @@ private static async Task ExecuteTask(GeneratorConfig generatorConfig, ProgressC CSharpLanguageProvider.Options options = MapGeneratorConfigToOptions(generatorConfig, namedTypes); - ProgressTask currentTask = context.AddTask($"Generating code for schema."); + ProgressTask currentTask = context.AddTask("Generating code for schema."); var languageProvider = CSharpLanguageProvider.DefaultWithOptions(options); IReadOnlyCollection generatedCode = typeBuilder.GenerateCodeUsing( @@ -178,14 +164,14 @@ private static async Task ExecuteTask(GeneratorConfig generatorConfig, ProgressC currentTask.Increment(100); currentTask.StopTask(); - string? outputPath = generatorConfig.OutputPath?.GetString() ?? fallbackOutputPath ?? Environment.CurrentDirectory; + string outputPath = generatorConfig.OutputPath?.GetString() ?? fallbackOutputPath ?? Environment.CurrentDirectory; if (!string.IsNullOrEmpty(outputPath)) { Directory.CreateDirectory(outputPath); } - currentTask = await WriteFiles(generatorConfig, context, currentTask, generatedCode, outputPath); + currentTask = await WriteFiles(generatorConfig, context, generatedCode, outputPath); currentTask.StopTask(); outerTask.Increment(100); @@ -228,10 +214,9 @@ private static async Task EndMapFile(string? mapFile) } } - - private static async Task WriteFiles(GeneratorConfig generatorConfig, ProgressContext context, ProgressTask currentTask, IReadOnlyCollection generatedCode, string outputPath) + private static async Task WriteFiles(GeneratorConfig generatorConfig, ProgressContext context, IReadOnlyCollection generatedCode, string outputPath) { - currentTask = context.AddTask("Writing files", true, generatedCode.Count); + ProgressTask currentTask = context.AddTask("Writing files", true, generatedCode.Count); HashSet writtenFiles = new(StringComparer.OrdinalIgnoreCase); diff --git a/Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs b/Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs index 124ffd86f8b..aec0a86c9e0 100644 --- a/Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs +++ b/Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs @@ -56,7 +56,7 @@ public override int Execute(CommandContext context, Settings settings) { foreach (ValidationResult error in result.Results) { - if (error.Location is (JsonReference validationLocation, JsonReference SchemaLocation, JsonReference DocumentLocation) location && + if (error.Location is (var validationLocation, var schemaLocation, var documentLocation) location && JsonPointerUtilities.TryGetLineAndOffsetForPointer(bytes, location.DocumentLocation.Fragment, out int line, out int chars, out long lineOffset)) { AnsiConsole.Markup($"[yellow]{error.Message}[/] ({location.ValidationLocation}, {location.SchemaLocation}, {location.DocumentLocation}"); diff --git a/Solutions/Corvus.Json.JsonReference/Corvus.Json/JsonReference.cs b/Solutions/Corvus.Json.JsonReference/Corvus.Json/JsonReference.cs index cc084775ed7..2bc2a6c2cbd 100644 --- a/Solutions/Corvus.Json.JsonReference/Corvus.Json/JsonReference.cs +++ b/Solutions/Corvus.Json.JsonReference/Corvus.Json/JsonReference.cs @@ -5,7 +5,6 @@ using System.Buffers; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; -using System.Text; using Corvus.HighPerformance; namespace Corvus.Json; @@ -105,7 +104,7 @@ public JsonReference(ReadOnlyMemory reference) public bool HasFragment => FindHash(this.reference.Span) >= 0; /// - /// Gets a value indicating whether the ref has a uri. + /// Gets a value indicating whether the ref has an uri. /// public bool HasUri => this.FindUri().Length > 0; @@ -269,7 +268,7 @@ public JsonReference AppendFragment(JsonReference other) otherFragment = otherFragment[1..]; int? h1 = FindHash(this.reference.Span); - bool hasHash = h1 is int; + bool hasHash = h1.HasValue; int requiredLength = this.reference.Length + otherFragment.Length; @@ -459,14 +458,14 @@ public JsonReference MoveToParentFragment() /// The combined reference. public JsonReference Apply(JsonReference other, bool strict = true) { - JsonReferenceBuilder baseReference = this.AsBuilder(); - JsonReferenceBuilder reference = other.AsBuilder(); + JsonReferenceBuilder thisReference = this.AsBuilder(); + JsonReferenceBuilder otherReference = other.AsBuilder(); - ReadOnlySpan scheme = reference.Scheme; - ReadOnlySpan authority = reference.Authority; - ReadOnlySpan path = reference.Path; - ReadOnlySpan query = reference.Query; - ReadOnlySpan fragment = reference.Fragment; + ReadOnlySpan scheme = otherReference.Scheme; + ReadOnlySpan authority = otherReference.Authority; + ReadOnlySpan path = otherReference.Path; + ReadOnlySpan query = otherReference.Query; + ReadOnlySpan fragment = otherReference.Fragment; ReadOnlySpan resultScheme; ReadOnlySpan resultAuthority; @@ -474,12 +473,12 @@ public JsonReference Apply(JsonReference other, bool strict = true) ReadOnlySpan resultQuery; ReadOnlySpan resultFragment; - char[] pathBuffer = ArrayPool.Shared.Rent(baseReference.Path.Length + reference.Path.Length + 1); + char[] pathBuffer = ArrayPool.Shared.Rent(thisReference.Path.Length + otherReference.Path.Length + 1); Memory pathMemory = pathBuffer.AsMemory(); try { - if (!strict && scheme.Equals(baseReference.Scheme, StringComparison.Ordinal)) + if (!strict && scheme.Equals(thisReference.Scheme, StringComparison.Ordinal)) { scheme = ReadOnlySpan.Empty; } @@ -503,14 +502,14 @@ public JsonReference Apply(JsonReference other, bool strict = true) { if (path.Length == 0) { - resultPath = baseReference.Path; + resultPath = thisReference.Path; if (query.Length > 0) { resultQuery = query; } else { - resultQuery = baseReference.Query; + resultQuery = thisReference.Query; } } else @@ -521,7 +520,7 @@ public JsonReference Apply(JsonReference other, bool strict = true) } else { - int mergedLength = Merge(baseReference.Path, path, baseReference.Authority.Length > 0, in pathMemory); + int mergedLength = Merge(thisReference.Path, path, thisReference.Authority.Length > 0, in pathMemory); ReadOnlySpan mergedPaths = pathMemory[..mergedLength].Span; resultPath = pathMemory.Span[..RemoveDotSegments(mergedPaths, in pathMemory)]; } @@ -529,10 +528,10 @@ public JsonReference Apply(JsonReference other, bool strict = true) resultQuery = query; } - resultAuthority = baseReference.Authority; + resultAuthority = thisReference.Authority; } - resultScheme = baseReference.Scheme; + resultScheme = thisReference.Scheme; } resultFragment = fragment; diff --git a/Solutions/Corvus.Json.JsonSchema.Draft201909/Draft201909/Applicator.PatternPropertiesEntity.PropertyNamesEntity.String.cs b/Solutions/Corvus.Json.JsonSchema.Draft201909/Draft201909/Applicator.PatternPropertiesEntity.PropertyNamesEntity.String.cs index a6cce247de4..8f7fd5bf592 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft201909/Draft201909/Applicator.PatternPropertiesEntity.PropertyNamesEntity.String.cs +++ b/Solutions/Corvus.Json.JsonSchema.Draft201909/Draft201909/Applicator.PatternPropertiesEntity.PropertyNamesEntity.String.cs @@ -102,7 +102,7 @@ public PropertyNamesEntity(System.Text.RegularExpressions.Regex value) public static implicit operator System.Text.RegularExpressions.Regex(PropertyNamesEntity value) { return - value.GetRegex();; + value.GetRegex(); } /// diff --git a/Solutions/Corvus.Json.JsonSchema.Draft201909/Draft201909/Core.IdEntity.String.cs b/Solutions/Corvus.Json.JsonSchema.Draft201909/Draft201909/Core.IdEntity.String.cs index c7c12189657..91b85a8dcc5 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft201909/Draft201909/Core.IdEntity.String.cs +++ b/Solutions/Corvus.Json.JsonSchema.Draft201909/Draft201909/Core.IdEntity.String.cs @@ -87,7 +87,7 @@ public IdEntity(Uri value) public static implicit operator Uri(IdEntity value) { return - value.GetUri();; + value.GetUri(); } /// diff --git a/Solutions/Corvus.Json.JsonSchema.Draft202012/Draft202012/Applicator.PatternPropertiesEntity.PropertyNamesEntity.String.cs b/Solutions/Corvus.Json.JsonSchema.Draft202012/Draft202012/Applicator.PatternPropertiesEntity.PropertyNamesEntity.String.cs index 1e7341957bc..ed38727a696 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft202012/Draft202012/Applicator.PatternPropertiesEntity.PropertyNamesEntity.String.cs +++ b/Solutions/Corvus.Json.JsonSchema.Draft202012/Draft202012/Applicator.PatternPropertiesEntity.PropertyNamesEntity.String.cs @@ -102,7 +102,7 @@ public PropertyNamesEntity(System.Text.RegularExpressions.Regex value) public static implicit operator System.Text.RegularExpressions.Regex(PropertyNamesEntity value) { return - value.GetRegex();; + value.GetRegex(); } /// diff --git a/Solutions/Corvus.Json.JsonSchema.Draft202012/Draft202012/Core.IdEntity.String.cs b/Solutions/Corvus.Json.JsonSchema.Draft202012/Draft202012/Core.IdEntity.String.cs index fe8087f0fc9..2577ed76eb8 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft202012/Draft202012/Core.IdEntity.String.cs +++ b/Solutions/Corvus.Json.JsonSchema.Draft202012/Draft202012/Core.IdEntity.String.cs @@ -87,7 +87,7 @@ public IdEntity(Uri value) public static implicit operator Uri(IdEntity value) { return - value.GetUri();; + value.GetUri(); } /// diff --git a/Solutions/Corvus.Json.JsonSchema.Draft6/Draft6/Schema.PatternPropertiesEntity.PropertyNamesEntity.String.cs b/Solutions/Corvus.Json.JsonSchema.Draft6/Draft6/Schema.PatternPropertiesEntity.PropertyNamesEntity.String.cs index bfbdbeb0d6f..82d44dde9d6 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft6/Draft6/Schema.PatternPropertiesEntity.PropertyNamesEntity.String.cs +++ b/Solutions/Corvus.Json.JsonSchema.Draft6/Draft6/Schema.PatternPropertiesEntity.PropertyNamesEntity.String.cs @@ -112,7 +112,7 @@ public PropertyNamesEntity(System.Text.RegularExpressions.Regex value) public static implicit operator System.Text.RegularExpressions.Regex(PropertyNamesEntity value) { return - value.GetRegex();; + value.GetRegex(); } /// diff --git a/Solutions/Corvus.Json.JsonSchema.Draft7/Draft7/Schema.PatternPropertiesEntity.PropertyNamesEntity.String.cs b/Solutions/Corvus.Json.JsonSchema.Draft7/Draft7/Schema.PatternPropertiesEntity.PropertyNamesEntity.String.cs index 937dced1b09..2d27a649d69 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft7/Draft7/Schema.PatternPropertiesEntity.PropertyNamesEntity.String.cs +++ b/Solutions/Corvus.Json.JsonSchema.Draft7/Draft7/Schema.PatternPropertiesEntity.PropertyNamesEntity.String.cs @@ -112,7 +112,7 @@ public PropertyNamesEntity(System.Text.RegularExpressions.Regex value) public static implicit operator System.Text.RegularExpressions.Regex(PropertyNamesEntity value) { return - value.GetRegex();; + value.GetRegex(); } /// diff --git a/Solutions/Corvus.Json.SourceGenerator/Corvus.Json.SourceGenerator.csproj b/Solutions/Corvus.Json.SourceGenerator/Corvus.Json.SourceGenerator.csproj index 35ef56150a8..7f679ecf8a4 100644 --- a/Solutions/Corvus.Json.SourceGenerator/Corvus.Json.SourceGenerator.csproj +++ b/Solutions/Corvus.Json.SourceGenerator/Corvus.Json.SourceGenerator.csproj @@ -28,7 +28,7 @@ - + Corvus.Json.JsonReference\%(RecursiveDir)\%(Filename)%(Extension) @@ -75,6 +75,7 @@ + @@ -95,6 +96,7 @@ + @@ -144,6 +146,7 @@ + diff --git a/Solutions/Corvus.Json.SourceGenerator/IncrementalSourceGenerator.cs b/Solutions/Corvus.Json.SourceGenerator/IncrementalSourceGenerator.cs index 2c04de311a6..b3defcaa6ee 100644 --- a/Solutions/Corvus.Json.SourceGenerator/IncrementalSourceGenerator.cs +++ b/Solutions/Corvus.Json.SourceGenerator/IncrementalSourceGenerator.cs @@ -28,7 +28,7 @@ public class IncrementalSourceGenerator : IIncrementalGenerator new( id: "CRV1001", title: "JSON Schema Type Generator Error", - messageFormat: $"Error generating C# code: {{0}}", + messageFormat: "Error generating C# code: {{0}}", category: "JsonSchemaCodeGenerator", DiagnosticSeverity.Error, isEnabledByDefault: true); @@ -37,7 +37,7 @@ public class IncrementalSourceGenerator : IIncrementalGenerator new( id: "CRV1000", title: "JSON Schema Type Generator Error", - messageFormat: $"Error adding type declarations for path '{{0}}': {{1}}", + messageFormat: "Error adding type declarations for path '{{0}}': {{1}}", category: "JsonSchemaCodeGenerator", DiagnosticSeverity.Error, isEnabledByDefault: true); @@ -102,7 +102,6 @@ private static void GenerateCode(SourceProductionContext context, TypesToGenerat Location.None, reference, ex.Message)); - return; } @@ -318,9 +317,7 @@ private static VocabularyRegistry RegisterVocabularies(IDocumentResolver documen CodeGeneration.OpenApi30.VocabularyAnalyser.RegisterAnalyser(vocabularyRegistry); // And register the custom vocabulary for Corvus extensions. - vocabularyRegistry.RegisterVocabularies( - CodeGeneration.CorvusVocabulary.SchemaVocabulary.DefaultInstance); - + vocabularyRegistry.RegisterVocabularies(CodeGeneration.CorvusVocabulary.SchemaVocabulary.DefaultInstance); return vocabularyRegistry; } @@ -364,10 +361,10 @@ private static bool IsValidAttributeTarget(SyntaxNode node, CancellationToken to { return node is StructDeclarationSyntax structDeclarationSyntax && - structDeclarationSyntax - .Modifiers - .Any(m => m.IsKind(SyntaxKind.PartialKeyword)) && - structDeclarationSyntax.Parent is (FileScopedNamespaceDeclarationSyntax or NamespaceDeclarationSyntax); + structDeclarationSyntax + .Modifiers + .Any(m => m.IsKind(SyntaxKind.PartialKeyword)) && + structDeclarationSyntax.Parent is (FileScopedNamespaceDeclarationSyntax or NamespaceDeclarationSyntax); } private readonly struct GenerationSpecification(string typeName, string ns, string location, bool rebaseToRootPath, Accessibility accessibility) diff --git a/Solutions/Corvus.Json.SourceGenerator/IndexRange/Index.cs b/Solutions/Corvus.Json.SourceGenerator/IndexRange/Index.cs deleted file mode 100644 index 27660bd61ca..00000000000 --- a/Solutions/Corvus.Json.SourceGenerator/IndexRange/Index.cs +++ /dev/null @@ -1,157 +0,0 @@ -// -// Copyright (c) Endjin Limited. All rights reserved. -// - -#pragma warning disable - -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#if NETSTANDARD2_1 -[assembly: TypeForwardedTo(typeof(System.Index))] -#else -using System.Runtime.CompilerServices; - -namespace System; - -/// Represent a type can be used to index a collection either from the start or the end. -/// -/// Index is used by the C# compiler to support the new index syntax -/// -/// int[] someArray = new int[5] { 1, 2, 3, 4, 5 } ; -/// int lastElement = someArray[^1]; // lastElement = 5 -/// -/// -public readonly struct Index : IEquatable -{ - private readonly int _value; - - /// Construct an Index using a value and indicating if the index is from the start or from the end. - /// The index value. it has to be zero or positive number. - /// Indicating if the index is from the start or from the end. - /// - /// If the Index constructed from the end, index value 1 means pointing at the last element and index value 0 means pointing at beyond last element. - /// -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - public Index(int value, bool fromEnd = false) - { - if (value < 0) - { - throw new ArgumentOutOfRangeException(nameof(value), "value must be non-negative"); - } - - if (fromEnd) - _value = ~value; - else - _value = value; - } - - // The following private constructors mainly created for perf reason to avoid the checks - private Index(int value) - { - _value = value; - } - - /// Create an Index pointing at first element. - public static Index Start => new Index(0); - - /// Create an Index pointing at beyond last element. - public static Index End => new Index(~0); - - /// Create an Index from the start at the position indicated by the value. - /// The index value from the start. -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - public static Index FromStart(int value) - { - if (value < 0) - { - throw new ArgumentOutOfRangeException(nameof(value), "value must be non-negative"); - } - - return new Index(value); - } - - /// Create an Index from the end at the position indicated by the value. - /// The index value from the end. -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - public static Index FromEnd(int value) - { - if (value < 0) - { - throw new ArgumentOutOfRangeException(nameof(value), "value must be non-negative"); - } - - return new Index(~value); - } - - /// Returns the index value. - public int Value - { - get - { - if (_value < 0) - return ~_value; - else - return _value; - } - } - - /// Indicates whether the index is from the start or the end. - public bool IsFromEnd => _value < 0; - - /// Calculate the offset from the start using the giving collection length. - /// The length of the collection that the Index will be used with. length has to be a positive value - /// - /// For performance reason, we don't validate the input length parameter and the returned offset value against negative values. - /// we don't validate either the returned offset is greater than the input length. - /// It is expected Index will be used with collections which always have non negative length/count. If the returned offset is negative and - /// then used to index a collection will get out of range exception which will be same affect as the validation. - /// -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - public int GetOffset(int length) - { - int offset = _value; - if (IsFromEnd) - { - // offset = length - (~value) - // offset = length + (~(~value) + 1) - // offset = length + value + 1 - - offset += length + 1; - } - return offset; - } - - /// Indicates whether the current Index object is equal to another object of the same type. - /// An object to compare with this object - public override bool Equals(object? value) => value is Index && _value == ((Index)value)._value; - - /// Indicates whether the current Index object is equal to another Index object. - /// An object to compare with this object - public bool Equals(Index other) => _value == other._value; - - /// Returns the hash code for this instance. - public override int GetHashCode() => _value; - - /// Converts integer number to an Index. - public static implicit operator Index(int value) => FromStart(value); - - /// Converts the value of the current Index object to its equivalent string representation. - public override string ToString() - { - if (IsFromEnd) - return "^" + ((uint)Value).ToString(); - - return ((uint)Value).ToString(); - } -} -#endif \ No newline at end of file diff --git a/Solutions/Corvus.Json.SourceGenerator/IndexRange/Range.cs b/Solutions/Corvus.Json.SourceGenerator/IndexRange/Range.cs deleted file mode 100644 index 3f9638ea21b..00000000000 --- a/Solutions/Corvus.Json.SourceGenerator/IndexRange/Range.cs +++ /dev/null @@ -1,100 +0,0 @@ -// -// Copyright (c) Endjin Limited. All rights reserved. -// - -#pragma warning disable - -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#if NETSTANDARD2_1 -[assembly: TypeForwardedTo(typeof(System.Range))] -#else -using System.Runtime.CompilerServices; - -namespace System; - -/// Represent a range has start and end indexes. -/// -/// Range is used by the C# compiler to support the range syntax. -/// -/// int[] someArray = new int[5] { 1, 2, 3, 4, 5 }; -/// int[] subArray1 = someArray[0..2]; // { 1, 2 } -/// int[] subArray2 = someArray[1..^0]; // { 2, 3, 4, 5 } -/// -/// -public readonly struct Range : IEquatable -{ - /// Represent the inclusive start index of the Range. - public Index Start { get; } - - /// Represent the exclusive end index of the Range. - public Index End { get; } - - /// Construct a Range object using the start and end indexes. - /// Represent the inclusive start index of the range. - /// Represent the exclusive end index of the range. - public Range(Index start, Index end) - { - Start = start; - End = end; - } - - /// Indicates whether the current Range object is equal to another object of the same type. - /// An object to compare with this object - public override bool Equals(object? value) => - value is Range r && - r.Start.Equals(Start) && - r.End.Equals(End); - - /// Indicates whether the current Range object is equal to another Range object. - /// An object to compare with this object - public bool Equals(Range other) => other.Start.Equals(Start) && other.End.Equals(End); - - /// Returns the hash code for this instance. - public override int GetHashCode() - { - return Start.GetHashCode() * 31 + End.GetHashCode(); - } - - /// Converts the value of the current Range object to its equivalent string representation. - public override string ToString() - { - return Start + ".." + End; - } - - /// Create a Range object starting from start index to the end of the collection. - public static Range StartAt(Index start) => new Range(start, Index.End); - - /// Create a Range object starting from first element in the collection to the end Index. - public static Range EndAt(Index end) => new Range(Index.Start, end); - - /// Create a Range object starting from first element to the end. - public static Range All => new Range(Index.Start, Index.End); - - /// Calculate the start offset and length of range object using a collection length. - /// The length of the collection that the range will be used with. length has to be a positive value. - /// - /// For performance reason, we don't validate the input length parameter against negative values. - /// It is expected Range will be used with collections which always have non negative length/count. - /// We validate the range is inside the length scope though. - /// -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - [CLSCompliant(false)] - public (int Offset, int Length) GetOffsetAndLength(int length) - { - int start = Start.GetOffset(length); - int end = End.GetOffset(length); - - if ((uint)end > (uint)length || (uint)start > (uint)end) - { - throw new ArgumentOutOfRangeException(nameof(length)); - } - - return (start, end - start); - } -} -#endif \ No newline at end of file diff --git a/Solutions/Corvus.Json.Validator/JsonSchema.cs b/Solutions/Corvus.Json.Validator/JsonSchema.cs index c35c1b2597c..27c1776e994 100644 --- a/Solutions/Corvus.Json.Validator/JsonSchema.cs +++ b/Solutions/Corvus.Json.Validator/JsonSchema.cs @@ -71,7 +71,7 @@ public static JsonSchema FromText(string text, string? canonicalUri = null, Opti return new(value); } - options = options ?? Options.Default; + options ??= Options.Default; var document = JsonDocument.Parse(text); @@ -93,7 +93,7 @@ public static JsonSchema FromText(string text, string? canonicalUri = null, Opti /// The JSON schema instance. public static JsonSchema FromFile(string fileName, Options? options = null) { - options = options ?? Options.Default; + options ??= Options.Default; if (SchemaReferenceNormalization.TryNormalizeSchemaReference(fileName, out string? result)) { @@ -121,7 +121,7 @@ public static JsonSchema FromFile(string fileName, Options? options = null) /// The JSON schema instance. public static JsonSchema FromUri(string jsonSchemaUri, BaseUriResolver? baseUriResolver = null, Options? options = null) { - options = options ?? Options.Default; + options ??= Options.Default; if (CachedSchema.TryGetValue($"{jsonSchemaUri}__{options.AlwaysAssertFormat}", out ValidateCallback? value)) { @@ -146,7 +146,7 @@ baseUriResolver is not null /// The JSON schema instance. public static JsonSchema From(string jsonSchemaUri, Options? options = null) { - options = options ?? Options.Default; + options ??= Options.Default; if (CachedSchema.TryGetValue($"{jsonSchemaUri}__{options.AlwaysAssertFormat}", out ValidateCallback? value)) { @@ -229,9 +229,7 @@ private static VocabularyRegistry RegisterVocabularies(IDocumentResolver documen CodeGeneration.OpenApi30.VocabularyAnalyser.RegisterAnalyser(vocabularyRegistry); // And register the custom vocabulary for Corvus extensions. - vocabularyRegistry.RegisterVocabularies( - CodeGeneration.CorvusVocabulary.SchemaVocabulary.DefaultInstance); - + vocabularyRegistry.RegisterVocabularies(CodeGeneration.CorvusVocabulary.SchemaVocabulary.DefaultInstance); return vocabularyRegistry; } diff --git a/Solutions/Corvus.Json.Validator/Metaschema.cs b/Solutions/Corvus.Json.Validator/Metaschema.cs index e3cec69f720..f76c60f93f5 100644 --- a/Solutions/Corvus.Json.Validator/Metaschema.cs +++ b/Solutions/Corvus.Json.Validator/Metaschema.cs @@ -16,7 +16,7 @@ internal static class Metaschema /// /// Add the standard metaschema to the document resolver. /// - /// The document resovler to which to apply the metaschema. + /// The document resolver to which to apply the metaschema. /// A reference to the after the operation has completed. internal static IDocumentResolver AddMetaschema(this IDocumentResolver documentResolver) { diff --git a/Solutions/Corvus.JsonSchema.sln b/Solutions/Corvus.JsonSchema.sln index 547344a5fae..b3671a5bb43 100644 --- a/Solutions/Corvus.JsonSchema.sln +++ b/Solutions/Corvus.JsonSchema.sln @@ -93,6 +93,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Benchmarks", ".Benchmarks" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Sandboxes", ".Sandboxes", "{4AEFC523-70EA-4ACC-A424-F8FF8D4F285A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Corvus.Json.CodeGeneration.OpenApi31", "Corvus.Json.CodeGeneration.OpenApi31\Corvus.Json.CodeGeneration.OpenApi31.csproj", "{589ED819-DE6C-ABF5-07DC-FCF11D666FCF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -235,6 +237,10 @@ Global {6D9F3F39-45E2-4B3A-821D-1073064812A9}.Debug|Any CPU.Build.0 = Debug|Any CPU {6D9F3F39-45E2-4B3A-821D-1073064812A9}.Release|Any CPU.ActiveCfg = Release|Any CPU {6D9F3F39-45E2-4B3A-821D-1073064812A9}.Release|Any CPU.Build.0 = Release|Any CPU + {589ED819-DE6C-ABF5-07DC-FCF11D666FCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {589ED819-DE6C-ABF5-07DC-FCF11D666FCF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {589ED819-DE6C-ABF5-07DC-FCF11D666FCF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {589ED819-DE6C-ABF5-07DC-FCF11D666FCF}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -275,6 +281,7 @@ Global {30D98060-7807-46E1-BC51-A0712820DF66} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {F6E781FA-DAEF-4E55-B7AA-C6B650B61680} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {907DC949-3413-4A70-AC7F-D7307DF1440A} = {D2E9E1BB-9ADE-4A9F-945E-5DCAEA860E80} + {589ED819-DE6C-ABF5-07DC-FCF11D666FCF} = {30D98060-7807-46E1-BC51-A0712820DF66} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {A9FB3137-5BE5-44D0-86AC-4BC1DA4BA066} From db4c7b3e16792c2425c938c25516b344fe088a5c Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 7 Jul 2025 17:38:57 -0400 Subject: [PATCH 02/20] cleanup --- .../Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs index d7c0a165daa..2d5018a3654 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs @@ -260,8 +260,6 @@ void IdentifyNonGeneratedTypes(TypeDeclaration typeDeclaration, HashSet Date: Mon, 7 Jul 2025 17:49:41 -0400 Subject: [PATCH 03/20] docs --- .../CSharp/TypeDeclarationExtensions.cs | 15 ++++++--------- .../TypeDeclarationExtensions.cs | 16 ++++++++-------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/Solutions/Corvus.Json.CodeGeneration.CSharp/Corvus.Json.CodeGeneration/CSharp/TypeDeclarationExtensions.cs b/Solutions/Corvus.Json.CodeGeneration.CSharp/Corvus.Json.CodeGeneration/CSharp/TypeDeclarationExtensions.cs index 727cf86efed..d83d1d2f92d 100644 --- a/Solutions/Corvus.Json.CodeGeneration.CSharp/Corvus.Json.CodeGeneration/CSharp/TypeDeclarationExtensions.cs +++ b/Solutions/Corvus.Json.CodeGeneration.CSharp/Corvus.Json.CodeGeneration/CSharp/TypeDeclarationExtensions.cs @@ -76,7 +76,7 @@ public static bool TryGetCorvusJsonExtendedTypeName(this TypeDeclaration typeDec /// Gets a value indicating whether this type prefers 128bit integers. /// /// The type declaration to test. - /// if the type prefers 128 bit integers. + /// if the type prefers 128-bit integers. public static string PreferredBinaryJsonNumberKind(this TypeDeclaration typeDeclaration) { if (!typeDeclaration.TryGetMetadata(PreferredBinaryJsonNumberKindKey, out string? numericType)) @@ -243,8 +243,7 @@ public static bool MatchesExistingTypeInParent(this TypeDeclaration typeDeclarat } /// - /// Gets a value which determines if this type is the built-in JsonAny type - /// type. + /// Gets a value which determines if this type is the built-in JsonAny type. /// /// The type declaration to test. /// if the type declaration is the type. @@ -256,8 +255,7 @@ public static bool IsBuiltInJsonAnyType(this TypeDeclaration typeDeclaration) } /// - /// Gets a value which determines if this type is the built-in JsonAny type - /// type. + /// Gets a value which determines if this type is the built-in JsonAny type. /// /// The type declaration to test. /// if the type declaration is the type. @@ -272,8 +270,7 @@ public static bool IsCorvusJsonExtendedJsonAny(this TypeDeclaration typeDeclarat } /// - /// Gets a value which determines if this type is the built-in JsonAny type - /// type. + /// Gets a value which determines if this type is the built-in JsonAny type. /// /// The type declaration to test. /// if the type declaration is the type. @@ -573,7 +570,7 @@ public static string DotnetTypeName(this TypeDeclaration typeDeclaration) } /// - /// Gets a value indicating whether the .NET type name has been set for the type declaration.. + /// Gets a value indicating whether the .NET type name has been set for the type declaration. /// /// The type declaration. /// if the type name has been set. @@ -583,7 +580,7 @@ public static bool HasDotnetTypeName(this TypeDeclaration typeDeclaration) } /// - /// Tries to gets the .NET type name for the type declaration.. + /// Tries to get the .NET type name for the type declaration. /// /// The type declaration. /// The .NET type name. diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclarationExtensions.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclarationExtensions.cs index 5dc71a3fa99..5f25428aa8d 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclarationExtensions.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclarationExtensions.cs @@ -141,7 +141,7 @@ public static bool IsDeprecated(this TypeDeclaration that, [MaybeNullWhen(false) /// Gets a value indicating whether the type has an exclusive maximum modifier. /// /// The type declaration to test. - /// if the type declaration has an exclusve maximum modifier. + /// if the type declaration has an exclusive maximum modifier. public static bool HasExclusiveMaximumModifier(this TypeDeclaration that) { if (!that.TryGetMetadata(nameof(HasExclusiveMaximumModifier), out bool? result)) @@ -157,7 +157,7 @@ public static bool HasExclusiveMaximumModifier(this TypeDeclaration that) /// Gets a value indicating whether the type has an exclusive minimum modifier. /// /// The type declaration to test. - /// if the type declaration has an exclusve minimum modifier. + /// if the type declaration has an exclusive minimum modifier. public static bool HasExclusiveMinimumModifier(this TypeDeclaration that) { if (!that.TryGetMetadata(nameof(HasExclusiveMinimumModifier), out bool? result)) @@ -218,9 +218,9 @@ public static bool RequiresPropertyCount(this TypeDeclaration that) } /// - /// Gets the pattern property delcarations for the type declaration. + /// Gets the pattern property declarations for the type declaration. /// - /// The type declaration for which to get the pattern properties.. + /// The type declaration for which to get the pattern properties. /// The collection of , by keyword or /// if no pattern properties were defined. public static IReadOnlyDictionary>? PatternProperties(this TypeDeclaration that) @@ -302,7 +302,7 @@ static ReducedTypeDeclaration ReduceType( } /// - /// Gets the if subschema type, if available. + /// Gets the 'if' subschema type, if available. /// /// The type declaration for which to get the subschema type. /// The , or if no type was available. @@ -329,7 +329,7 @@ static ReducedTypeDeclaration ReduceType( } /// - /// Gets then subschema type, if available. + /// Gets the 'then' subschema type, if available. /// /// The type declaration for which to get the subschema type. /// The , or if no type was available. @@ -356,7 +356,7 @@ static ReducedTypeDeclaration ReduceType( } /// - /// Gets the property names subschema type, if available. + /// Gets the 'property names' subschema type, if available. /// /// The type declaration for which to get the subschema type. /// The , or if no type was available. @@ -383,7 +383,7 @@ static ReducedTypeDeclaration ReduceType( } /// - /// Gets the else subschema type, if available. + /// Gets the 'else' subschema type, if available. /// /// The type declaration for which to get the subschema type. /// The , or if no type was available. From 1cb97a4ee78675cb4a4d969f5a3188fbf7629222 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 7 Jul 2025 22:25:37 -0400 Subject: [PATCH 04/20] more cleanup --- .../Corvus.Json/GeneratedCoreTypes/JsonIpV4.String.cs | 2 +- .../Corvus.Json/GeneratedCoreTypes/JsonIpV6.String.cs | 2 +- .../Corvus.Json/GeneratedCoreTypes/JsonIri.String.cs | 2 +- .../Corvus.Json/GeneratedCoreTypes/JsonIriReference.String.cs | 2 +- .../Corvus.Json/GeneratedCoreTypes/JsonRegex.String.cs | 2 +- .../Corvus.Json/GeneratedCoreTypes/JsonUri.String.cs | 2 +- .../Corvus.Json/GeneratedCoreTypes/JsonUriReference.String.cs | 2 +- .../Corvus.Json/GeneratedCoreTypes/JsonUuid.String.cs | 2 +- .../OpenApi31/OpenApiDocument.JsonSchemaDialectEntity.String.cs | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIpV4.String.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIpV4.String.cs index 94ef38577b1..cc78ce9b740 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIpV4.String.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIpV4.String.cs @@ -80,7 +80,7 @@ public JsonIpV4(System.Net.IPAddress value) public static implicit operator System.Net.IPAddress(JsonIpV4 value) { return - value.GetIPAddress();; + value.GetIPAddress(); } /// diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIpV6.String.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIpV6.String.cs index d95c37d0962..7079ec69fdc 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIpV6.String.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIpV6.String.cs @@ -80,7 +80,7 @@ public JsonIpV6(System.Net.IPAddress value) public static implicit operator System.Net.IPAddress(JsonIpV6 value) { return - value.GetIPAddress();; + value.GetIPAddress(); } /// diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIri.String.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIri.String.cs index d5c49823fb7..4560ee0ec6b 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIri.String.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIri.String.cs @@ -80,7 +80,7 @@ public JsonIri(Uri value) public static implicit operator Uri(JsonIri value) { return - value.GetUri();; + value.GetUri(); } /// diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIriReference.String.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIriReference.String.cs index 08a0aaa2df9..8158624d104 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIriReference.String.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonIriReference.String.cs @@ -80,7 +80,7 @@ public JsonIriReference(Uri value) public static implicit operator Uri(JsonIriReference value) { return - value.GetUri();; + value.GetUri(); } /// diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonRegex.String.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonRegex.String.cs index 0d74948d35c..35bc05ae470 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonRegex.String.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonRegex.String.cs @@ -80,7 +80,7 @@ public JsonRegex(System.Text.RegularExpressions.Regex value) public static implicit operator System.Text.RegularExpressions.Regex(JsonRegex value) { return - value.GetRegex();; + value.GetRegex(); } /// diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUri.String.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUri.String.cs index cdbaa82c7ba..296901c59a2 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUri.String.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUri.String.cs @@ -80,7 +80,7 @@ public JsonUri(Uri value) public static implicit operator Uri(JsonUri value) { return - value.GetUri();; + value.GetUri(); } /// diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUriReference.String.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUriReference.String.cs index 5b4e22b3211..887ff3f4189 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUriReference.String.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUriReference.String.cs @@ -80,7 +80,7 @@ public JsonUriReference(Uri value) public static implicit operator Uri(JsonUriReference value) { return - value.GetUri();; + value.GetUri(); } /// diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUuid.String.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUuid.String.cs index 059676f32b0..674998aa546 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUuid.String.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/GeneratedCoreTypes/JsonUuid.String.cs @@ -80,7 +80,7 @@ public JsonUuid(Guid value) public static implicit operator Guid(JsonUuid value) { return - value.GetGuid();; + value.GetGuid(); } /// diff --git a/Solutions/Corvus.Json.JsonSchema.OpenApi31/OpenApi31/OpenApiDocument.JsonSchemaDialectEntity.String.cs b/Solutions/Corvus.Json.JsonSchema.OpenApi31/OpenApi31/OpenApiDocument.JsonSchemaDialectEntity.String.cs index 2852ea2e9f3..eaeaa4d99fc 100644 --- a/Solutions/Corvus.Json.JsonSchema.OpenApi31/OpenApi31/OpenApiDocument.JsonSchemaDialectEntity.String.cs +++ b/Solutions/Corvus.Json.JsonSchema.OpenApi31/OpenApi31/OpenApiDocument.JsonSchemaDialectEntity.String.cs @@ -102,7 +102,7 @@ public JsonSchemaDialectEntity(Uri value) public static implicit operator Uri(JsonSchemaDialectEntity value) { return - value.GetUri();; + value.GetUri(); } /// From 1b7010508f0db970d0d775b76aad96b16541c622 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Mon, 7 Jul 2025 22:41:34 -0400 Subject: [PATCH 05/20] remove duplicate BinaryJsonNumber implicit equality declarations --- .../BinaryJsonNumber.NetStandard.cs | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.NetStandard.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.NetStandard.cs index ca300028ec6..93b59228c01 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.NetStandard.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.NetStandard.cs @@ -683,28 +683,6 @@ public enum Kind }; } - /// - /// The equality operator. - /// - /// The lhs. - /// The rhs. - /// if the values are equal. - public static bool operator ==(BinaryJsonNumber left, BinaryJsonNumber right) - { - return left.Equals(right); - } - - /// - /// The inequality operator. - /// - /// The lhs. - /// The rhs. - /// if the values are not equal. - public static bool operator !=(BinaryJsonNumber left, BinaryJsonNumber right) - { - return !left.Equals(right); - } - /// /// Increment operator. /// From 97e42bf4b9ecf5cc95d38c75659d7c2cc1b5ca77 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 8 Jul 2025 00:31:30 -0400 Subject: [PATCH 06/20] updated package dependencies - removed duplicated embedded metaschema over multiple projects - added IMetaSchema.cs to Corvus.Json.JsonReference - added Draft4.MetaSchema.cs - Added overload to Corvus.Json.CodeGeneration.DocumentResolvers.IDocumentResolver.AddDocument(IMetaSchema) --- .../packages.lock.json | 140 +++++++++++- .../Corvus.Json.CodeGeneration.201909.csproj | 1 + .../Corvus.Json.CodeGeneration.202012.csproj | 1 + .../Corvus.Json.CodeGeneration.4.csproj | 1 + .../Corvus.Json.CodeGeneration.6.csproj | 1 + .../Corvus.Json.CodeGeneration.7.csproj | 1 + ...on.CodeGeneration.CSharp.QuickStart.csproj | 3 - .../CSharpGenerator.cs | 14 +- .../Metaschema.cs | 6 +- .../HttpClientDocumentResolver.cs | 4 + ...orvus.Json.CodeGeneration.OpenApi30.csproj | 1 + ...orvus.Json.CodeGeneration.OpenApi31.csproj | 1 + .../CallbackDocumentResolver.cs | 5 + .../CompoundDocumentResolver.cs | 5 + .../FileSystemDocumentResolver.cs | 4 + .../DocumentResolvers/IDocumentResolver.cs | 7 + .../PrepopulatedDocumentResolver.cs | 5 + .../Corvus.Json.CodeGenerator.csproj | 3 - .../GenerationDriver.cs | 1 + .../Corvus.Json.CodeGenerator/Metaschema.cs | 4 - .../metaschema/draft4/schema.json | 149 ------------- .../Corvus.Json/IMetaSchema.cs | 23 ++ .../Corvus.Json.JsonSchema.Draft4.csproj | 2 +- .../Draft4/MetaSchema.cs | 33 +++ .../metaschema/draft4/schema.json | 0 .../Corvus.Json.JsonSchema.OpenApi30.csproj | 1 + .../Corvus.Json.JsonSchema.OpenApi31.csproj | 1 + .../Fakes/FakeWebDocumentResolver.cs | 4 + .../Corvus.Json.Specs/packages.lock.json | 201 ++++++++++++++++++ .../Corvus.Json.Validator.csproj | 1 - Solutions/Corvus.Json.Validator/JsonSchema.cs | 1 + Solutions/Corvus.Json.Validator/Metaschema.cs | 4 - .../metaschema/draft4/schema.json | 149 ------------- 33 files changed, 448 insertions(+), 329 deletions(-) delete mode 100644 Solutions/Corvus.Json.CodeGenerator/metaschema/draft4/schema.json create mode 100644 Solutions/Corvus.Json.JsonReference/Corvus.Json/IMetaSchema.cs create mode 100644 Solutions/Corvus.Json.JsonSchema.Draft4/Draft4/MetaSchema.cs rename Solutions/{Corvus.Json.CodeGeneration.CSharp.QuickStart => Corvus.Json.JsonSchema.Draft4}/metaschema/draft4/schema.json (100%) delete mode 100644 Solutions/Corvus.Json.Validator/metaschema/draft4/schema.json diff --git a/Solutions/Corvus.Json.Benchmarking/packages.lock.json b/Solutions/Corvus.Json.Benchmarking/packages.lock.json index 2ff06eae1c8..cd61b4b5988 100644 --- a/Solutions/Corvus.Json.Benchmarking/packages.lock.json +++ b/Solutions/Corvus.Json.Benchmarking/packages.lock.json @@ -396,8 +396,8 @@ }, "Microsoft.Extensions.ObjectPool": { "type": "Transitive", - "resolved": "8.0.8", - "contentHash": "wnjTFjEvvSbOs3iMfl6CeJcUgPHZMYUB9uAQbGQGxGwVRl4GydNpMSkVntTzoi7AqQeYumU9yDSNeVbpq+ebow==" + "resolved": "9.0.0", + "contentHash": "UbsU/gYe4nv1DeqMXIVzDfNNek7Sk2kKuAOXL/Y+sLcAR0HwFUqzg1EPiU88jeHNe0g81aPvvHbvHarQr3r9IA==" }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -537,6 +537,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft201909": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -544,6 +545,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft202012": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -551,6 +553,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft4": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -558,6 +561,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft6": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -565,6 +569,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft7": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -595,6 +600,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.OpenApi30": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -615,6 +621,66 @@ "System.Text.Json": "[9.0.0, )" } }, + "corvus.json.jsonschema.draft201909": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft202012": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )" + } + }, + "corvus.json.jsonschema.draft4": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft6": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft7": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.openapi30": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration.4": "[1.0.0, )", + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, "corvus.json.validator": { "type": "Project", "dependencies": { @@ -1018,8 +1084,8 @@ }, "Microsoft.Extensions.ObjectPool": { "type": "Transitive", - "resolved": "8.0.8", - "contentHash": "wnjTFjEvvSbOs3iMfl6CeJcUgPHZMYUB9uAQbGQGxGwVRl4GydNpMSkVntTzoi7AqQeYumU9yDSNeVbpq+ebow==" + "resolved": "9.0.0", + "contentHash": "UbsU/gYe4nv1DeqMXIVzDfNNek7Sk2kKuAOXL/Y+sLcAR0HwFUqzg1EPiU88jeHNe0g81aPvvHbvHarQr3r9IA==" }, "Microsoft.Extensions.Options": { "type": "Transitive", @@ -1144,6 +1210,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft201909": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -1151,6 +1218,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft202012": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -1158,6 +1226,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft4": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -1165,6 +1234,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft6": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -1172,6 +1242,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft7": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -1202,6 +1273,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.OpenApi30": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -1222,6 +1294,66 @@ "System.Text.Json": "[9.0.0, )" } }, + "corvus.json.jsonschema.draft201909": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft202012": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )" + } + }, + "corvus.json.jsonschema.draft4": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft6": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft7": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.openapi30": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration.4": "[1.0.0, )", + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, "corvus.json.validator": { "type": "Project", "dependencies": { diff --git a/Solutions/Corvus.Json.CodeGeneration.201909/Corvus.Json.CodeGeneration.201909.csproj b/Solutions/Corvus.Json.CodeGeneration.201909/Corvus.Json.CodeGeneration.201909.csproj index b381923deaa..a64da790b6f 100644 --- a/Solutions/Corvus.Json.CodeGeneration.201909/Corvus.Json.CodeGeneration.201909.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.201909/Corvus.Json.CodeGeneration.201909.csproj @@ -34,6 +34,7 @@ + diff --git a/Solutions/Corvus.Json.CodeGeneration.202012/Corvus.Json.CodeGeneration.202012.csproj b/Solutions/Corvus.Json.CodeGeneration.202012/Corvus.Json.CodeGeneration.202012.csproj index 3864f5f2473..bc742f39ac8 100644 --- a/Solutions/Corvus.Json.CodeGeneration.202012/Corvus.Json.CodeGeneration.202012.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.202012/Corvus.Json.CodeGeneration.202012.csproj @@ -34,6 +34,7 @@ + diff --git a/Solutions/Corvus.Json.CodeGeneration.4/Corvus.Json.CodeGeneration.4.csproj b/Solutions/Corvus.Json.CodeGeneration.4/Corvus.Json.CodeGeneration.4.csproj index 147a919505c..03e8550c46a 100644 --- a/Solutions/Corvus.Json.CodeGeneration.4/Corvus.Json.CodeGeneration.4.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.4/Corvus.Json.CodeGeneration.4.csproj @@ -34,6 +34,7 @@ + diff --git a/Solutions/Corvus.Json.CodeGeneration.6/Corvus.Json.CodeGeneration.6.csproj b/Solutions/Corvus.Json.CodeGeneration.6/Corvus.Json.CodeGeneration.6.csproj index 44cc96ab2d6..e2440db40d4 100644 --- a/Solutions/Corvus.Json.CodeGeneration.6/Corvus.Json.CodeGeneration.6.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.6/Corvus.Json.CodeGeneration.6.csproj @@ -34,6 +34,7 @@ + diff --git a/Solutions/Corvus.Json.CodeGeneration.7/Corvus.Json.CodeGeneration.7.csproj b/Solutions/Corvus.Json.CodeGeneration.7/Corvus.Json.CodeGeneration.7.csproj index 82752d36e6b..b8ff165be52 100644 --- a/Solutions/Corvus.Json.CodeGeneration.7/Corvus.Json.CodeGeneration.7.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.7/Corvus.Json.CodeGeneration.7.csproj @@ -34,6 +34,7 @@ + diff --git a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart.csproj b/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart.csproj index f89f787aa78..5384e6d7542 100644 --- a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart.csproj @@ -44,8 +44,6 @@ - - @@ -77,7 +75,6 @@ - diff --git a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart/CSharpGenerator.cs b/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart/CSharpGenerator.cs index b05649fc7c0..b0d7955bcba 100644 --- a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart/CSharpGenerator.cs +++ b/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart/CSharpGenerator.cs @@ -110,9 +110,13 @@ public async ValueTask> GenerateFilesAsyn private static PrepopulatedDocumentResolver CreateMetaschemaDocumentResolver() { - var result = new PrepopulatedDocumentResolver(); - result.AddMetaschema(); - return result; + PrepopulatedDocumentResolver documentResolver = new(); + + // Add support for the meta schemas we are interested in. + documentResolver.AddDocument(JsonSchema.Draft4.MetaSchema.Instance); + documentResolver.AddMetaschema(); + + return documentResolver; } private static VocabularyRegistry RegisterVocabularies(IDocumentResolver documentResolver) @@ -136,8 +140,6 @@ private static VocabularyRegistry RegisterVocabularies(IDocumentResolver documen private static CompoundDocumentResolver CompoundWithMetaschemaResolver(IDocumentResolver metaschemaDocumentResolver, IDocumentResolver additionalResolver) { - return new( - additionalResolver, - metaschemaDocumentResolver); + return new(additionalResolver, metaschemaDocumentResolver); } } \ No newline at end of file diff --git a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart/Metaschema.cs b/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart/Metaschema.cs index fab314846a4..5b8deeb406c 100644 --- a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart/Metaschema.cs +++ b/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart/Metaschema.cs @@ -16,7 +16,7 @@ internal static class Metaschema /// /// Add the standard metaschema to the document resolver. /// - /// The document resovler to which to apply the metaschema. + /// The document resolver to which to apply the metaschema. /// A reference to the after the operation has completed. internal static IDocumentResolver AddMetaschema(this IDocumentResolver documentResolver) { @@ -24,10 +24,6 @@ internal static IDocumentResolver AddMetaschema(this IDocumentResolver documentR Debug.Assert(assembly is not null, "The assembly containing this type must exist"); - documentResolver.AddDocument( - "http://json-schema.org/draft-04/schema", - JsonDocument.Parse(ReadResource(assembly, "metaschema.draft4.schema.json"))); - documentResolver.AddDocument( "http://json-schema.org/draft-06/schema", JsonDocument.Parse(ReadResource(assembly, "metaschema.draft6.schema.json"))); diff --git a/Solutions/Corvus.Json.CodeGeneration.HttpClientDocumentResolver/Corvus.Json.CodeGeneration.DocumentResolvers/HttpClientDocumentResolver.cs b/Solutions/Corvus.Json.CodeGeneration.HttpClientDocumentResolver/Corvus.Json.CodeGeneration.DocumentResolvers/HttpClientDocumentResolver.cs index e275ec1e4ad..3a46538b7ec 100644 --- a/Solutions/Corvus.Json.CodeGeneration.HttpClientDocumentResolver/Corvus.Json.CodeGeneration.DocumentResolvers/HttpClientDocumentResolver.cs +++ b/Solutions/Corvus.Json.CodeGeneration.HttpClientDocumentResolver/Corvus.Json.CodeGeneration.DocumentResolvers/HttpClientDocumentResolver.cs @@ -72,6 +72,10 @@ public bool AddDocument(string uri, JsonDocument document) return this.documents.TryAdd(uri, document); } + /// + public bool AddDocument(IMetaSchema metaSchema) + => this.AddDocument(metaSchema.Uri, metaSchema.Document); + /// public async ValueTask TryResolve(JsonReference reference) { diff --git a/Solutions/Corvus.Json.CodeGeneration.OpenApi30/Corvus.Json.CodeGeneration.OpenApi30.csproj b/Solutions/Corvus.Json.CodeGeneration.OpenApi30/Corvus.Json.CodeGeneration.OpenApi30.csproj index 06f95d9c226..aeff6ea9769 100644 --- a/Solutions/Corvus.Json.CodeGeneration.OpenApi30/Corvus.Json.CodeGeneration.OpenApi30.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.OpenApi30/Corvus.Json.CodeGeneration.OpenApi30.csproj @@ -34,6 +34,7 @@ + diff --git a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj index 06f95d9c226..19af492229a 100644 --- a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj @@ -34,6 +34,7 @@ + diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/CallbackDocumentResolver.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/CallbackDocumentResolver.cs index 53879fc372f..b5d8fedf4ff 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/CallbackDocumentResolver.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/CallbackDocumentResolver.cs @@ -2,6 +2,7 @@ // Copyright (c) Endjin Limited. All rights reserved. // +using System; using System.Text.Json; namespace Corvus.Json.CodeGeneration.DocumentResolvers; @@ -29,6 +30,10 @@ public bool AddDocument(string uri, JsonDocument document) return this.resolver.AddDocument(uri, document); } + /// + public bool AddDocument(IMetaSchema metaSchema) + => this.AddDocument(metaSchema.Uri, metaSchema.Document); + /// public void Dispose() { diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/CompoundDocumentResolver.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/CompoundDocumentResolver.cs index 1e5fab67ec1..0ee6229bb90 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/CompoundDocumentResolver.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/CompoundDocumentResolver.cs @@ -2,6 +2,7 @@ // Copyright (c) Endjin Limited. All rights reserved. // +using System; using System.Text.Json; namespace Corvus.Json.CodeGeneration; @@ -32,6 +33,10 @@ public bool AddDocument(string uri, JsonDocument document) return this.documents.TryAdd(uri, document); } + /// + public bool AddDocument(IMetaSchema metaSchema) + => this.AddDocument(metaSchema.Uri, metaSchema.Document); + /// public async ValueTask TryResolve(JsonReference reference) { diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/FileSystemDocumentResolver.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/FileSystemDocumentResolver.cs index faf526c8ecf..c9e9994e75e 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/FileSystemDocumentResolver.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/FileSystemDocumentResolver.cs @@ -74,6 +74,10 @@ public bool AddDocument(string uri, JsonDocument document) return this.documents.TryAdd(uri, document); } + /// + public bool AddDocument(IMetaSchema metaSchema) + => this.AddDocument(metaSchema.Uri, metaSchema.Document); + /// public async ValueTask TryResolve(JsonReference reference) { diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/IDocumentResolver.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/IDocumentResolver.cs index 7b17852ffbd..8ba39263225 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/IDocumentResolver.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/IDocumentResolver.cs @@ -28,6 +28,13 @@ public interface IDocumentResolver : IDisposable /// True if the document was added, otherwise false. bool AddDocument(string uri, JsonDocument document); + /// + /// Adds an existing document to the cache. + /// + /// The document to add. + /// True if the document was added, otherwise false. + bool AddDocument(IMetaSchema metaSchema); + /// /// Reset the document resolver. /// diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/PrepopulatedDocumentResolver.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/PrepopulatedDocumentResolver.cs index de62f4b7bd7..3a79014a3d5 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/PrepopulatedDocumentResolver.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/DocumentResolvers/PrepopulatedDocumentResolver.cs @@ -2,6 +2,7 @@ // Copyright (c) Endjin Limited. All rights reserved. // +using System; using System.Text.Json; namespace Corvus.Json; @@ -31,6 +32,10 @@ public bool AddDocument(string uri, JsonDocument document) #endif } + /// + public bool AddDocument(IMetaSchema metaSchema) + => this.AddDocument(metaSchema.Uri, metaSchema.Document); + /// public ValueTask TryResolve(JsonReference reference) { diff --git a/Solutions/Corvus.Json.CodeGenerator/Corvus.Json.CodeGenerator.csproj b/Solutions/Corvus.Json.CodeGenerator/Corvus.Json.CodeGenerator.csproj index 1801519fb12..7c060a30c35 100644 --- a/Solutions/Corvus.Json.CodeGenerator/Corvus.Json.CodeGenerator.csproj +++ b/Solutions/Corvus.Json.CodeGenerator/Corvus.Json.CodeGenerator.csproj @@ -98,9 +98,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest diff --git a/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs b/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs index 9b98ac0b8dd..7b470b2f822 100644 --- a/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs +++ b/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs @@ -33,6 +33,7 @@ internal static async Task GenerateTypes(GeneratorConfig generatorConfig) documentResolver = new CompoundDocumentResolver(new FileSystemDocumentResolver(), new HttpClientDocumentResolver(new HttpClient())); } + documentResolver.AddDocument(JsonSchema.Draft4.MetaSchema.Instance); documentResolver.AddMetaschema(); await RegisterAdditionalFiles(generatorConfig, documentResolver); diff --git a/Solutions/Corvus.Json.CodeGenerator/Metaschema.cs b/Solutions/Corvus.Json.CodeGenerator/Metaschema.cs index 1c73ff9aff6..42d6693aa22 100644 --- a/Solutions/Corvus.Json.CodeGenerator/Metaschema.cs +++ b/Solutions/Corvus.Json.CodeGenerator/Metaschema.cs @@ -16,10 +16,6 @@ internal static IDocumentResolver AddMetaschema(this IDocumentResolver documentR { string assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? throw new InvalidOperationException("Cannot find the executing assembly path."); - documentResolver.AddDocument( - "http://json-schema.org/draft-04/schema", - JsonDocument.Parse(File.ReadAllText(Path.Combine(assemblyPath, "./metaschema/draft4/schema.json")))); - documentResolver.AddDocument( "http://json-schema.org/draft-06/schema", JsonDocument.Parse(File.ReadAllText(Path.Combine(assemblyPath, "./metaschema/draft6/schema.json")))); diff --git a/Solutions/Corvus.Json.CodeGenerator/metaschema/draft4/schema.json b/Solutions/Corvus.Json.CodeGenerator/metaschema/draft4/schema.json deleted file mode 100644 index bcbb84743e3..00000000000 --- a/Solutions/Corvus.Json.CodeGenerator/metaschema/draft4/schema.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "id": "http://json-schema.org/draft-04/schema#", - "$schema": "http://json-schema.org/draft-04/schema#", - "description": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "positiveInteger": { - "type": "integer", - "minimum": 0 - }, - "positiveIntegerDefault0": { - "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ] - }, - "simpleTypes": { - "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "minItems": 1, - "uniqueItems": true - } - }, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "$schema": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": {}, - "multipleOf": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "boolean", - "default": false - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "boolean", - "default": false - }, - "maxLength": { "$ref": "#/definitions/positiveInteger" }, - "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { - "anyOf": [ - { "type": "boolean" }, - { "$ref": "#" } - ], - "default": {} - }, - "items": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/schemaArray" } - ], - "default": {} - }, - "maxItems": { "$ref": "#/definitions/positiveInteger" }, - "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "maxProperties": { "$ref": "#/definitions/positiveInteger" }, - "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { - "anyOf": [ - { "type": "boolean" }, - { "$ref": "#" } - ], - "default": {} - }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/stringArray" } - ] - } - }, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "dependencies": { - "exclusiveMaximum": [ "maximum" ], - "exclusiveMinimum": [ "minimum" ] - }, - "default": {} -} diff --git a/Solutions/Corvus.Json.JsonReference/Corvus.Json/IMetaSchema.cs b/Solutions/Corvus.Json.JsonReference/Corvus.Json/IMetaSchema.cs new file mode 100644 index 00000000000..be55bd045fc --- /dev/null +++ b/Solutions/Corvus.Json.JsonReference/Corvus.Json/IMetaSchema.cs @@ -0,0 +1,23 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +using System.Text.Json; + +namespace Corvus.Json; + +/// +/// Interface for a metaschema that can be resolved to a . +/// +public interface IMetaSchema +{ + /// + /// Gets the URI of the metaschema. + /// + string Uri { get; } + + /// + /// Gets the for the metaschema. + /// + JsonDocument Document { get; } +} \ No newline at end of file diff --git a/Solutions/Corvus.Json.JsonSchema.Draft4/Corvus.Json.JsonSchema.Draft4.csproj b/Solutions/Corvus.Json.JsonSchema.Draft4/Corvus.Json.JsonSchema.Draft4.csproj index 564e4040bbb..f3f0f3cf55e 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft4/Corvus.Json.JsonSchema.Draft4.csproj +++ b/Solutions/Corvus.Json.JsonSchema.Draft4/Corvus.Json.JsonSchema.Draft4.csproj @@ -37,7 +37,7 @@ + - diff --git a/Solutions/Corvus.Json.JsonSchema.Draft4/Draft4/MetaSchema.cs b/Solutions/Corvus.Json.JsonSchema.Draft4/Draft4/MetaSchema.cs new file mode 100644 index 00000000000..9fe53708bca --- /dev/null +++ b/Solutions/Corvus.Json.JsonSchema.Draft4/Draft4/MetaSchema.cs @@ -0,0 +1,33 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +using System.Diagnostics; +using System.Text.Json; + +namespace Corvus.Json.JsonSchema.Draft4; + +/// +/// MetaSchema for JsonSchema Draft 4. +/// +public sealed class MetaSchema : IMetaSchema +{ + /// + /// Gets the default instance of the Draft 4 . + /// + public static MetaSchema Instance { get; } = new(); + + /// + public string Uri => "https://json-schema.org/draft-04/schema"; + + /// + public JsonDocument Document => JsonDocument.Parse(ReadResource("./metaschema/draft4/schema.json")); + + private static string ReadResource(string name) + { + using Stream? resourceStream = typeof(MetaSchema).Assembly.GetManifestResourceStream(name); + Debug.Assert(resourceStream is not null, $"The manifest resource stream {name} does not exist."); + using var reader = new StreamReader(resourceStream); + return reader.ReadToEnd(); + } +} \ No newline at end of file diff --git a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/metaschema/draft4/schema.json b/Solutions/Corvus.Json.JsonSchema.Draft4/metaschema/draft4/schema.json similarity index 100% rename from Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/metaschema/draft4/schema.json rename to Solutions/Corvus.Json.JsonSchema.Draft4/metaschema/draft4/schema.json diff --git a/Solutions/Corvus.Json.JsonSchema.OpenApi30/Corvus.Json.JsonSchema.OpenApi30.csproj b/Solutions/Corvus.Json.JsonSchema.OpenApi30/Corvus.Json.JsonSchema.OpenApi30.csproj index 4f8bdd7e0ff..b1016161642 100644 --- a/Solutions/Corvus.Json.JsonSchema.OpenApi30/Corvus.Json.JsonSchema.OpenApi30.csproj +++ b/Solutions/Corvus.Json.JsonSchema.OpenApi30/Corvus.Json.JsonSchema.OpenApi30.csproj @@ -24,6 +24,7 @@ + diff --git a/Solutions/Corvus.Json.JsonSchema.OpenApi31/Corvus.Json.JsonSchema.OpenApi31.csproj b/Solutions/Corvus.Json.JsonSchema.OpenApi31/Corvus.Json.JsonSchema.OpenApi31.csproj index 7ab0264dc27..a8a66e86e48 100644 --- a/Solutions/Corvus.Json.JsonSchema.OpenApi31/Corvus.Json.JsonSchema.OpenApi31.csproj +++ b/Solutions/Corvus.Json.JsonSchema.OpenApi31/Corvus.Json.JsonSchema.OpenApi31.csproj @@ -24,6 +24,7 @@ + diff --git a/Solutions/Corvus.Json.Specs/Fakes/FakeWebDocumentResolver.cs b/Solutions/Corvus.Json.Specs/Fakes/FakeWebDocumentResolver.cs index e67c2ad99c3..429f4e022c0 100644 --- a/Solutions/Corvus.Json.Specs/Fakes/FakeWebDocumentResolver.cs +++ b/Solutions/Corvus.Json.Specs/Fakes/FakeWebDocumentResolver.cs @@ -57,6 +57,10 @@ public bool AddDocument(string uri, JsonDocument document) #endif } + /// + public bool AddDocument(IMetaSchema metaSchema) + => this.AddDocument(metaSchema.Uri, metaSchema.Document); + /// public void Reset() { diff --git a/Solutions/Corvus.Json.Specs/packages.lock.json b/Solutions/Corvus.Json.Specs/packages.lock.json index 81a10e83ffd..d44bb778ce9 100644 --- a/Solutions/Corvus.Json.Specs/packages.lock.json +++ b/Solutions/Corvus.Json.Specs/packages.lock.json @@ -607,6 +607,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft201909": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )", "System.Text.Json": "[9.0.0, )" } @@ -615,6 +616,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft202012": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )", "System.Text.Json": "[9.0.0, )" } @@ -623,6 +625,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft4": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )", "System.Text.Json": "[9.0.0, )" } @@ -631,6 +634,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft6": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )", "System.Text.Json": "[9.0.0, )" } @@ -639,6 +643,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft7": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )", "System.Text.Json": "[9.0.0, )" } @@ -657,6 +662,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.OpenApi30": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )", "System.Text.Json": "[9.0.0, )" } @@ -680,6 +686,69 @@ "System.Text.Json": "[9.0.0, )" } }, + "corvus.json.jsonschema.draft201909": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft202012": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "IndexRange": "[1.0.3, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )", + "System.Text.Json": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft4": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft6": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft7": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.openapi30": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration.4": "[1.0.0, )", + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, "corvus.json.patch": { "type": "Project", "dependencies": { @@ -2033,6 +2102,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft201909": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -2040,6 +2110,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft202012": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -2047,6 +2118,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft4": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -2054,6 +2126,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft6": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -2061,6 +2134,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft7": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -2076,6 +2150,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.OpenApi30": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -2096,6 +2171,66 @@ "System.Text.Json": "[9.0.0, )" } }, + "corvus.json.jsonschema.draft201909": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft202012": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )" + } + }, + "corvus.json.jsonschema.draft4": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft6": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft7": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.openapi30": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration.4": "[1.0.0, )", + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, "corvus.json.patch": { "type": "Project", "dependencies": { @@ -3436,6 +3571,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft201909": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -3443,6 +3579,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft202012": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -3450,6 +3587,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft4": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -3457,6 +3595,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft6": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -3464,6 +3603,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft7": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -3479,6 +3619,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.OpenApi30": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -3499,6 +3640,66 @@ "System.Text.Json": "[9.0.0, )" } }, + "corvus.json.jsonschema.draft201909": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft202012": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )" + } + }, + "corvus.json.jsonschema.draft4": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft6": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft7": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.openapi30": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration.4": "[1.0.0, )", + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, "corvus.json.patch": { "type": "Project", "dependencies": { diff --git a/Solutions/Corvus.Json.Validator/Corvus.Json.Validator.csproj b/Solutions/Corvus.Json.Validator/Corvus.Json.Validator.csproj index 2d13a91b481..e3cffce8dbc 100644 --- a/Solutions/Corvus.Json.Validator/Corvus.Json.Validator.csproj +++ b/Solutions/Corvus.Json.Validator/Corvus.Json.Validator.csproj @@ -80,7 +80,6 @@ - diff --git a/Solutions/Corvus.Json.Validator/JsonSchema.cs b/Solutions/Corvus.Json.Validator/JsonSchema.cs index 27c1776e994..d20f7f44eb5 100644 --- a/Solutions/Corvus.Json.Validator/JsonSchema.cs +++ b/Solutions/Corvus.Json.Validator/JsonSchema.cs @@ -212,6 +212,7 @@ private static bool TryGetCanonicalUri(JsonDocument document, [NotNullWhen(true) private static PrepopulatedDocumentResolver CreateMetaschemaDocumentResolver() { var result = new PrepopulatedDocumentResolver(); + result.AddDocument(Corvus.Json.JsonSchema.Draft4.MetaSchema.Instance); result.AddMetaschema(); return result; } diff --git a/Solutions/Corvus.Json.Validator/Metaschema.cs b/Solutions/Corvus.Json.Validator/Metaschema.cs index f76c60f93f5..70e8ac6b4ad 100644 --- a/Solutions/Corvus.Json.Validator/Metaschema.cs +++ b/Solutions/Corvus.Json.Validator/Metaschema.cs @@ -24,10 +24,6 @@ internal static IDocumentResolver AddMetaschema(this IDocumentResolver documentR Debug.Assert(assembly is not null, "The assembly containing this type must exist"); - documentResolver.AddDocument( - "http://json-schema.org/draft-04/schema", - JsonDocument.Parse(ReadResource(assembly, "metaschema.draft4.schema.json"))); - documentResolver.AddDocument( "http://json-schema.org/draft-06/schema", JsonDocument.Parse(ReadResource(assembly, "metaschema.draft6.schema.json"))); diff --git a/Solutions/Corvus.Json.Validator/metaschema/draft4/schema.json b/Solutions/Corvus.Json.Validator/metaschema/draft4/schema.json deleted file mode 100644 index bcbb84743e3..00000000000 --- a/Solutions/Corvus.Json.Validator/metaschema/draft4/schema.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "id": "http://json-schema.org/draft-04/schema#", - "$schema": "http://json-schema.org/draft-04/schema#", - "description": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "positiveInteger": { - "type": "integer", - "minimum": 0 - }, - "positiveIntegerDefault0": { - "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ] - }, - "simpleTypes": { - "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "minItems": 1, - "uniqueItems": true - } - }, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "$schema": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": {}, - "multipleOf": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "boolean", - "default": false - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "boolean", - "default": false - }, - "maxLength": { "$ref": "#/definitions/positiveInteger" }, - "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { - "anyOf": [ - { "type": "boolean" }, - { "$ref": "#" } - ], - "default": {} - }, - "items": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/schemaArray" } - ], - "default": {} - }, - "maxItems": { "$ref": "#/definitions/positiveInteger" }, - "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "maxProperties": { "$ref": "#/definitions/positiveInteger" }, - "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { - "anyOf": [ - { "type": "boolean" }, - { "$ref": "#" } - ], - "default": {} - }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/stringArray" } - ] - } - }, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "dependencies": { - "exclusiveMaximum": [ "maximum" ], - "exclusiveMinimum": [ "minimum" ] - }, - "default": {} -} From ff7b839469967086fd036e7dd70a5d4aa1f07a4d Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 8 Jul 2025 13:52:07 -0400 Subject: [PATCH 07/20] Update Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs --- .../Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs index 2d5018a3654..680aa2ffd60 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/JsonSchemaTypeBuilder.cs @@ -86,7 +86,7 @@ public async ValueTask AddTypeDeclarationsAsync( CancellationToken ct = cancellationToken ?? CancellationToken.None; // First we do a document "load" - this enables us to build the map of the schema, anchors etc. - var (schemaLocation, baseLocation) = await this.schemaRegistry.RegisterBaseSchema(documentPath, fallbackVocabulary, rebaseAsRoot, ct); + (JsonReference schemaLocation, JsonReference baseLocation) = await this.schemaRegistry.RegisterBaseSchema(documentPath, fallbackVocabulary, rebaseAsRoot, ct); if (ct.IsCancellationRequested) { From abf8dbd90a9b4df693dca16fa007ae06522fc441 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 8 Jul 2025 14:05:12 -0400 Subject: [PATCH 08/20] Update Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs --- Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs b/Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs index aec0a86c9e0..124ffd86f8b 100644 --- a/Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs +++ b/Solutions/Corvus.Json.CodeGenerator/ValidateDocumentCommand.cs @@ -56,7 +56,7 @@ public override int Execute(CommandContext context, Settings settings) { foreach (ValidationResult error in result.Results) { - if (error.Location is (var validationLocation, var schemaLocation, var documentLocation) location && + if (error.Location is (JsonReference validationLocation, JsonReference SchemaLocation, JsonReference DocumentLocation) location && JsonPointerUtilities.TryGetLineAndOffsetForPointer(bytes, location.DocumentLocation.Fragment, out int line, out int chars, out long lineOffset)) { AnsiConsole.Markup($"[yellow]{error.Message}[/] ({location.ValidationLocation}, {location.SchemaLocation}, {location.DocumentLocation}"); From 513798d4a24e46b9a3eba386666e1821bc84277d Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 8 Jul 2025 14:05:44 -0400 Subject: [PATCH 09/20] use Draft202012 vocabulary --- ...orvus.Json.CodeGeneration.OpenApi31.csproj | 1 + .../OpenApi31/SchemaVocabulary.cs | 87 ------------------- .../OpenApi31/VocabularyAnalyser.cs | 6 +- 3 files changed, 4 insertions(+), 90 deletions(-) delete mode 100644 Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/SchemaVocabulary.cs diff --git a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj index 06f95d9c226..52c8bcc0352 100644 --- a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration.OpenApi31.csproj @@ -33,6 +33,7 @@ + diff --git a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/SchemaVocabulary.cs b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/SchemaVocabulary.cs deleted file mode 100644 index daa72aba8f5..00000000000 --- a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/SchemaVocabulary.cs +++ /dev/null @@ -1,87 +0,0 @@ -// -// Copyright (c) Endjin Limited. All rights reserved. -// - -using System.Text.Json; -using Corvus.Json.CodeGeneration.Keywords; - -namespace Corvus.Json.CodeGeneration.OpenApi31; - -/// -/// The openApi31 schema vocabulary. -/// -internal sealed class SchemaVocabulary : IVocabulary -{ - private static readonly IKeyword[] KeywordsBacking = - [ - TitleKeyword.Instance, - DefinitionsKeyword.Instance, - MultipleOfKeyword.Instance, - DollarRefHidesSiblingsKeyword.Instance, - MaximumKeyword.Instance, - ExclusiveMinimumBooleanKeyword.Instance, - MinimumKeyword.Instance, - ExclusiveMaximumBooleanKeyword.Instance, - MaxLengthKeyword.Instance, - MinLengthKeyword.Instance, - PatternKeyword.Instance, - MaxItemsKeyword.Instance, - MinItemsKeyword.Instance, - UniqueItemsKeyword.Instance, - MaxPropertiesKeyword.Instance, - MinPropertiesKeyword.Instance, - RequiredKeyword.Instance, - EnumKeyword.Instance, - TypeKeyword.Instance, - NotKeyword.Instance, - AllOfKeyword.Instance, - OneOfKeyword.Instance, - AnyOfKeyword.Instance, - ItemsWithSchemaKeyword.Instance, - PropertiesKeyword.Instance, - AdditionalPropertiesKeyword.Instance, - DescriptionKeyword.Instance, - FormatWithAssertionKeyword.Instance, - DefaultKeyword.Instance, - NullableKeyword.Instance, - DiscriminatorKeyword.Instance, - ReadOnlyKeyword.Instance, - WriteOnlyKeyword.Instance, - ExampleKeyword.Instance, - ExternalDocsKeyword.Instance, - DeprecatedKeyword.Instance, - XmlKeyword.Instance, - ]; - - /// - /// Gets the singleton instance of the OpenApi31 default vocabulary. - /// - public static SchemaVocabulary DefaultInstance { get; } = new SchemaVocabulary(); - - /// - public string Uri => "https://json-schema.org/draft/2020-12/schema"; - - /// - public ReadOnlySpan UriUtf8 => "https://json-schema.org/draft/2020-12/schema"u8; - - /// - public IEnumerable Keywords => KeywordsBacking; - - /// - public JsonDocument? BuildReferenceSchemaInstance(JsonReference jsonSchemaPath) - { - return JsonDocument.Parse( - $$""" - { - "$ref": "{{jsonSchemaPath}}" - } - """); - } - - /// - public bool ValidateSchemaInstance(JsonElement schemaInstance) - { - // TODO: Validate using the generate types - return true; - } -} \ No newline at end of file diff --git a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/VocabularyAnalyser.cs b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/VocabularyAnalyser.cs index 26e7fc40a29..80f07f4a8f6 100644 --- a/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/VocabularyAnalyser.cs +++ b/Solutions/Corvus.Json.CodeGeneration.OpenApi31/Corvus.Json.CodeGeneration/OpenApi31/VocabularyAnalyser.cs @@ -22,7 +22,7 @@ private VocabularyAnalyser() /// /// Gets the default vocabulary for the analyser. /// - public static IVocabulary DefaultVocabulary => SchemaVocabulary.DefaultInstance; + public static IVocabulary DefaultVocabulary => Draft202012.VocabularyAnalyser.DefaultVocabulary; /// /// Register the vocabulary analyser. @@ -47,9 +47,9 @@ public static void RegisterAnalyser(VocabularyRegistry vocabularyRegistry) return new ValueTask(default(IVocabulary?)); } - if (dollarSchema.ValueEquals(SchemaVocabulary.DefaultInstance.UriUtf8)) + if (dollarSchema.ValueEquals(DefaultVocabulary.UriUtf8)) { - return new ValueTask(SchemaVocabulary.DefaultInstance); + return new ValueTask(DefaultVocabulary); } return new ValueTask(default(IVocabulary?)); From f0b8c41fce4514e678f248ba439793996ecd48b4 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 8 Jul 2025 20:57:43 -0400 Subject: [PATCH 10/20] fix ambiguous equality checks fix nullability error --- .../Corvus.Json/BinaryJsonNumber.Net8.cs | 45 ++++++++----------- .../Steps/JsonSchemaSteps.cs | 2 +- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs index 44d1c07a2c4..98c70545590 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs @@ -299,6 +299,24 @@ public enum Kind /// public bool HasValue => this.numericKind != Kind.None; + /// + /// The equality operator. + /// + /// The lhs. + /// The rhs. + /// if the values are equal. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator ==(BinaryJsonNumber left, BinaryJsonNumber right) => left.Equals(right); + + /// + /// The inequality operator. + /// + /// The lhs. + /// The rhs. + /// if the values are not equal. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator !=(BinaryJsonNumber left, BinaryJsonNumber right) => !left.Equals(right); + /// /// Equality operator. /// @@ -333,10 +351,7 @@ public enum Kind /// The right hand side of the comparison. /// if the values are not equal. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator !=(in BinaryJsonNumber left, in BinaryJsonNumber right) - { - return !(left == right); - } + public static bool operator !=(in BinaryJsonNumber left, in BinaryJsonNumber right) => !Equals(left, right); /// /// Inequality operator. @@ -738,28 +753,6 @@ public enum Kind }; } - /// - /// The equality operator. - /// - /// The lhs. - /// The rhs. - /// if the values are equal. - public static bool operator ==(BinaryJsonNumber left, BinaryJsonNumber right) - { - return left.Equals(right); - } - - /// - /// The inequality operator. - /// - /// The lhs. - /// The rhs. - /// if the values are not equal. - public static bool operator !=(BinaryJsonNumber left, BinaryJsonNumber right) - { - return !left.Equals(right); - } - /// /// Increment operator. /// diff --git a/Solutions/Corvus.Json.Specs/Steps/JsonSchemaSteps.cs b/Solutions/Corvus.Json.Specs/Steps/JsonSchemaSteps.cs index 72c95cb189b..7190a2abada 100644 --- a/Solutions/Corvus.Json.Specs/Steps/JsonSchemaSteps.cs +++ b/Solutions/Corvus.Json.Specs/Steps/JsonSchemaSteps.cs @@ -120,7 +120,7 @@ public async Task GivenTheInputDataAt(string referenceFragment) element, $"Failed to load input data at {this.scenarioContext.Get(InputJsonFileName)}, ref {referenceFragment}, jsonSchemaBuilder201909DriverSettings:testBaseDirectory: '{this.configuration["jsonSchemaBuilder201909DriverSettings:testBaseDirectory"]}', jsonSchemaBuilder202012DriverSettings: '{this.configuration["jsonSchemaBuilder202012DriverSettings:testBaseDirectory"]}' CWD: '{Environment.CurrentDirectory}'"); this.scenarioContext.Set(referenceFragment, InputDataPath); - this.scenarioContext.Set(element.Value, InputData); + this.scenarioContext.Set(element!.Value, InputData); } [Given("a schema file")] From dcba0b499b332f73af73784f70de3bf0b1f19cee Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Tue, 8 Jul 2025 21:14:32 -0400 Subject: [PATCH 11/20] remove more ambiguous equality checks --- .../Corvus.Json/BinaryJsonNumber.Net8.cs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs index 98c70545590..bfb757eb1db 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs @@ -317,15 +317,6 @@ public enum Kind [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator !=(BinaryJsonNumber left, BinaryJsonNumber right) => !left.Equals(right); - /// - /// Equality operator. - /// - /// The left hand side of the comparison. - /// The right hand side of the comparison. - /// if the values are equal. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator ==(in BinaryJsonNumber left, in BinaryJsonNumber right) => Equals(left, right); - /// /// Equality operator. /// @@ -344,15 +335,6 @@ public enum Kind [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator ==(in JsonElement left, in BinaryJsonNumber right) => Equals(left, right); - /// - /// Inequality operator. - /// - /// The left hand side of the comparison. - /// The right hand side of the comparison. - /// if the values are not equal. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator !=(in BinaryJsonNumber left, in BinaryJsonNumber right) => !Equals(left, right); - /// /// Inequality operator. /// From d979c7bb9e4c7757f166c9d5f4b3753289608b97 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 9 Jul 2025 10:13:39 -0400 Subject: [PATCH 12/20] fix ambiguous equality operators (again?) --- .../Corvus.Json/BinaryJsonNumber.Net8.cs | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs index 98c70545590..bfb757eb1db 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs @@ -317,15 +317,6 @@ public enum Kind [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator !=(BinaryJsonNumber left, BinaryJsonNumber right) => !left.Equals(right); - /// - /// Equality operator. - /// - /// The left hand side of the comparison. - /// The right hand side of the comparison. - /// if the values are equal. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator ==(in BinaryJsonNumber left, in BinaryJsonNumber right) => Equals(left, right); - /// /// Equality operator. /// @@ -344,15 +335,6 @@ public enum Kind [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator ==(in JsonElement left, in BinaryJsonNumber right) => Equals(left, right); - /// - /// Inequality operator. - /// - /// The left hand side of the comparison. - /// The right hand side of the comparison. - /// if the values are not equal. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator !=(in BinaryJsonNumber left, in BinaryJsonNumber right) => !Equals(left, right); - /// /// Inequality operator. /// From 5d772e409f50feafed51bccee1b221dc86810177 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 9 Jul 2025 10:18:12 -0400 Subject: [PATCH 13/20] sort operators --- .../Corvus.Json/BinaryJsonNumber.Net8.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs index bfb757eb1db..f948044808e 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs @@ -308,15 +308,6 @@ public enum Kind [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator ==(BinaryJsonNumber left, BinaryJsonNumber right) => left.Equals(right); - /// - /// The inequality operator. - /// - /// The lhs. - /// The rhs. - /// if the values are not equal. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator !=(BinaryJsonNumber left, BinaryJsonNumber right) => !left.Equals(right); - /// /// Equality operator. /// @@ -335,6 +326,15 @@ public enum Kind [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator ==(in JsonElement left, in BinaryJsonNumber right) => Equals(left, right); + /// + /// The inequality operator. + /// + /// The lhs. + /// The rhs. + /// if the values are not equal. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator !=(BinaryJsonNumber left, BinaryJsonNumber right) => !left.Equals(right); + /// /// Inequality operator. /// From f137c42c84628df52754a0ed0251c28c2d91a325 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 9 Jul 2025 10:23:08 -0400 Subject: [PATCH 14/20] revert changes --- .../Corvus.Json/BinaryJsonNumber.Net8.cs | 51 ++++++++++++++----- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs index bfb757eb1db..44d1c07a2c4 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs @@ -300,22 +300,13 @@ public enum Kind public bool HasValue => this.numericKind != Kind.None; /// - /// The equality operator. + /// Equality operator. /// - /// The lhs. - /// The rhs. + /// The left hand side of the comparison. + /// The right hand side of the comparison. /// if the values are equal. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator ==(BinaryJsonNumber left, BinaryJsonNumber right) => left.Equals(right); - - /// - /// The inequality operator. - /// - /// The lhs. - /// The rhs. - /// if the values are not equal. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator !=(BinaryJsonNumber left, BinaryJsonNumber right) => !left.Equals(right); + public static bool operator ==(in BinaryJsonNumber left, in BinaryJsonNumber right) => Equals(left, right); /// /// Equality operator. @@ -335,6 +326,18 @@ public enum Kind [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator ==(in JsonElement left, in BinaryJsonNumber right) => Equals(left, right); + /// + /// Inequality operator. + /// + /// The left hand side of the comparison. + /// The right hand side of the comparison. + /// if the values are not equal. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool operator !=(in BinaryJsonNumber left, in BinaryJsonNumber right) + { + return !(left == right); + } + /// /// Inequality operator. /// @@ -735,6 +738,28 @@ public enum Kind }; } + /// + /// The equality operator. + /// + /// The lhs. + /// The rhs. + /// if the values are equal. + public static bool operator ==(BinaryJsonNumber left, BinaryJsonNumber right) + { + return left.Equals(right); + } + + /// + /// The inequality operator. + /// + /// The lhs. + /// The rhs. + /// if the values are not equal. + public static bool operator !=(BinaryJsonNumber left, BinaryJsonNumber right) + { + return !left.Equals(right); + } + /// /// Increment operator. /// From 9bb14793ed35bc3eca752b660fb2dc526095d767 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Wed, 9 Jul 2025 10:25:58 -0400 Subject: [PATCH 15/20] remove ambiguous equality operators --- .../Corvus.Json/BinaryJsonNumber.Net8.cs | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs index 44d1c07a2c4..c88a33777ac 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs @@ -299,15 +299,6 @@ public enum Kind /// public bool HasValue => this.numericKind != Kind.None; - /// - /// Equality operator. - /// - /// The left hand side of the comparison. - /// The right hand side of the comparison. - /// if the values are equal. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator ==(in BinaryJsonNumber left, in BinaryJsonNumber right) => Equals(left, right); - /// /// Equality operator. /// @@ -326,17 +317,6 @@ public enum Kind [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator ==(in JsonElement left, in BinaryJsonNumber right) => Equals(left, right); - /// - /// Inequality operator. - /// - /// The left hand side of the comparison. - /// The right hand side of the comparison. - /// if the values are not equal. - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static bool operator !=(in BinaryJsonNumber left, in BinaryJsonNumber right) - { - return !(left == right); - } /// /// Inequality operator. From 211ebbe4256e79fdbd15ff5d1084c8a371e4a1bd Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Thu, 10 Jul 2025 11:22:53 -0400 Subject: [PATCH 16/20] revert TryGetMetadata return value --- .../PropertyProvider/PropertyDeclaration.cs | 4 ++-- .../TypeDeclarations/TypeDeclaration.cs | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/PropertyProvider/PropertyDeclaration.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/PropertyProvider/PropertyDeclaration.cs index 6a9572a12fb..9ab865f4216 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/PropertyProvider/PropertyDeclaration.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/PropertyProvider/PropertyDeclaration.cs @@ -93,13 +93,13 @@ public void SetMetadata(string key, T value) /// The key for the metadata value. /// The metadata value, if found. /// if the metadata value was found. - public bool TryGetMetadata(string key, [MaybeNullWhen(false)] out T? value) + public bool TryGetMetadata(string key, out T? value) { bool result = this.metadata.TryGetValue(key, out object? candidate); if (result) { value = (T?)candidate; - return value != null; + return true; } value = default; diff --git a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclaration.cs b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclaration.cs index 66c886fd240..6be97213433 100644 --- a/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclaration.cs +++ b/Solutions/Corvus.Json.CodeGeneration/Corvus.Json.CodeGeneration/TypeDeclarations/TypeDeclaration.cs @@ -4,7 +4,6 @@ using System.Collections.Concurrent; using System.Diagnostics; -using System.Diagnostics.CodeAnalysis; using System.Text.Json; using Corvus.Json.CodeGeneration.Keywords; @@ -117,13 +116,13 @@ public void RemoveMetadata(string key) /// The key for the metadata value. /// The metadata value, if found. /// if the metadata value was found. - public bool TryGetMetadata(string key, [MaybeNullWhen(false)] out T? value) + public bool TryGetMetadata(string key, out T? value) { bool result = this.metadata.TryGetValue(key, out object? candidate); if (result) { value = (T?)candidate; - return value != null; + return true; } value = default; From 90a5808156552ebec10eb2383202ebfb4a3724a9 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Thu, 10 Jul 2025 12:52:21 -0400 Subject: [PATCH 17/20] remove whitespace line --- .../Corvus.Json/BinaryJsonNumber.Net8.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs index c88a33777ac..4fe798bbe7d 100644 --- a/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs +++ b/Solutions/Corvus.Json.ExtendedTypes/Corvus.Json/BinaryJsonNumber.Net8.cs @@ -317,7 +317,6 @@ public enum Kind [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool operator ==(in JsonElement left, in BinaryJsonNumber right) => Equals(left, right); - /// /// Inequality operator. /// From f3307d3e3ad5757dc8f5679da43ddaa8b212c646 Mon Sep 17 00:00:00 2001 From: Stephen Hodgson Date: Thu, 10 Jul 2025 23:04:45 -0400 Subject: [PATCH 18/20] integrate drafts 6, 7 --- .../packages.lock.json | 2 + ...on.CodeGeneration.CSharp.QuickStart.csproj | 2 - ...son.CodeGeneration.CorvusVocabulary.csproj | 1 + .../Corvus.Json.CodeGenerator.csproj | 166 ++++++++--------- .../GenerationDriver.cs | 2 + .../Corvus.Json.CodeGenerator/Metaschema.cs | 8 - .../metaschema/draft7/schema.json | 172 ------------------ .../Corvus.Json.JsonSchema.Draft4.csproj | 1 - .../Corvus.Json.JsonSchema.Draft6.csproj | 5 +- .../Draft6/MetaSchema.cs | 33 ++++ .../metaschema/draft6/schema.json | 0 .../Corvus.Json.JsonSchema.Draft7.csproj | 5 +- .../Draft7/MetaSchema.cs | 33 ++++ .../metaschema/draft7/schema.json | 0 .../Corvus.Json.SourceGeneratorTools.csproj | 1 + .../IndexRange/Index.cs | 157 ---------------- .../IndexRange/Range.cs | 100 ---------- .../Corvus.Json.Validator.csproj | 2 - Solutions/Corvus.Json.Validator/JsonSchema.cs | 2 + Solutions/Corvus.Json.Validator/Metaschema.cs | 8 - .../metaschema/draft6/schema.json | 155 ---------------- .../metaschema/draft7/schema.json | 172 ------------------ 22 files changed, 162 insertions(+), 865 deletions(-) delete mode 100644 Solutions/Corvus.Json.CodeGenerator/metaschema/draft7/schema.json create mode 100644 Solutions/Corvus.Json.JsonSchema.Draft6/Draft6/MetaSchema.cs rename Solutions/{Corvus.Json.SourceGeneratorTools => Corvus.Json.JsonSchema.Draft6}/metaschema/draft6/schema.json (100%) create mode 100644 Solutions/Corvus.Json.JsonSchema.Draft7/Draft7/MetaSchema.cs rename Solutions/{Corvus.Json.CodeGeneration.CSharp.QuickStart => Corvus.Json.JsonSchema.Draft7}/metaschema/draft7/schema.json (100%) delete mode 100644 Solutions/Corvus.Json.SourceGeneratorTools/IndexRange/Index.cs delete mode 100644 Solutions/Corvus.Json.SourceGeneratorTools/IndexRange/Range.cs delete mode 100644 Solutions/Corvus.Json.Validator/metaschema/draft6/schema.json delete mode 100644 Solutions/Corvus.Json.Validator/metaschema/draft7/schema.json diff --git a/Solutions/Corvus.Json.Benchmarking/packages.lock.json b/Solutions/Corvus.Json.Benchmarking/packages.lock.json index cd61b4b5988..a63c5a4f0b3 100644 --- a/Solutions/Corvus.Json.Benchmarking/packages.lock.json +++ b/Solutions/Corvus.Json.Benchmarking/packages.lock.json @@ -577,6 +577,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.CodeGeneration.202012": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, @@ -1250,6 +1251,7 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.CodeGeneration.202012": "[1.0.0, )", "System.Collections.Immutable": "[9.0.0, )" } }, diff --git a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart.csproj b/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart.csproj index 5384e6d7542..02477fcdea7 100644 --- a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/Corvus.Json.CodeGeneration.CSharp.QuickStart.csproj @@ -75,8 +75,6 @@ - - diff --git a/Solutions/Corvus.Json.CodeGeneration.CorvusVocabulary/Corvus.Json.CodeGeneration.CorvusVocabulary.csproj b/Solutions/Corvus.Json.CodeGeneration.CorvusVocabulary/Corvus.Json.CodeGeneration.CorvusVocabulary.csproj index 786bb0edb79..c10c33622dc 100644 --- a/Solutions/Corvus.Json.CodeGeneration.CorvusVocabulary/Corvus.Json.CodeGeneration.CorvusVocabulary.csproj +++ b/Solutions/Corvus.Json.CodeGeneration.CorvusVocabulary/Corvus.Json.CodeGeneration.CorvusVocabulary.csproj @@ -33,6 +33,7 @@ + diff --git a/Solutions/Corvus.Json.CodeGenerator/Corvus.Json.CodeGenerator.csproj b/Solutions/Corvus.Json.CodeGenerator/Corvus.Json.CodeGenerator.csproj index 7c060a30c35..f0ac92d3dc1 100644 --- a/Solutions/Corvus.Json.CodeGenerator/Corvus.Json.CodeGenerator.csproj +++ b/Solutions/Corvus.Json.CodeGenerator/Corvus.Json.CodeGenerator.csproj @@ -9,101 +9,95 @@ true generatejsonschematypes ./nupkg - true - + true + - - Apache-2.0 - + + Apache-2.0 + - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + diff --git a/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs b/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs index 7b470b2f822..8da1f69a394 100644 --- a/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs +++ b/Solutions/Corvus.Json.CodeGenerator/GenerationDriver.cs @@ -34,6 +34,8 @@ internal static async Task GenerateTypes(GeneratorConfig generatorConfig) } documentResolver.AddDocument(JsonSchema.Draft4.MetaSchema.Instance); + documentResolver.AddDocument(JsonSchema.Draft6.MetaSchema.Instance); + documentResolver.AddDocument(JsonSchema.Draft7.MetaSchema.Instance); documentResolver.AddMetaschema(); await RegisterAdditionalFiles(generatorConfig, documentResolver); diff --git a/Solutions/Corvus.Json.CodeGenerator/Metaschema.cs b/Solutions/Corvus.Json.CodeGenerator/Metaschema.cs index 42d6693aa22..41804b38f2f 100644 --- a/Solutions/Corvus.Json.CodeGenerator/Metaschema.cs +++ b/Solutions/Corvus.Json.CodeGenerator/Metaschema.cs @@ -16,14 +16,6 @@ internal static IDocumentResolver AddMetaschema(this IDocumentResolver documentR { string assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? throw new InvalidOperationException("Cannot find the executing assembly path."); - documentResolver.AddDocument( - "http://json-schema.org/draft-06/schema", - JsonDocument.Parse(File.ReadAllText(Path.Combine(assemblyPath, "./metaschema/draft6/schema.json")))); - - documentResolver.AddDocument( - "http://json-schema.org/draft-07/schema", - JsonDocument.Parse(File.ReadAllText(Path.Combine(assemblyPath, "./metaschema/draft7/schema.json")))); - documentResolver.AddDocument( "https://json-schema.org/draft/2019-09/schema", JsonDocument.Parse(File.ReadAllText(Path.Combine(assemblyPath, "./metaschema/draft2019-09/schema.json")))); diff --git a/Solutions/Corvus.Json.CodeGenerator/metaschema/draft7/schema.json b/Solutions/Corvus.Json.CodeGenerator/metaschema/draft7/schema.json deleted file mode 100644 index fb92c7f756b..00000000000 --- a/Solutions/Corvus.Json.CodeGenerator/metaschema/draft7/schema.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "http://json-schema.org/draft-07/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "allOf": [ - { "$ref": "#/definitions/nonNegativeInteger" }, - { "default": 0 } - ] - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "uniqueItems": true, - "default": [] - } - }, - "type": ["object", "boolean"], - "properties": { - "$id": { - "type": "string", - "format": "uri-reference" - }, - "$schema": { - "type": "string", - "format": "uri" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "$comment": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": true, - "readOnly": { - "type": "boolean", - "default": false - }, - "writeOnly": { - "type": "boolean", - "default": false - }, - "examples": { - "type": "array", - "items": true - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { "$ref": "#/definitions/nonNegativeInteger" }, - "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { "$ref": "#" }, - "items": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/schemaArray" } - ], - "default": true - }, - "maxItems": { "$ref": "#/definitions/nonNegativeInteger" }, - "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { "$ref": "#" }, - "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" }, - "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { "$ref": "#" }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "propertyNames": { "format": "regex" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/stringArray" } - ] - } - }, - "propertyNames": { "$ref": "#" }, - "const": true, - "enum": { - "type": "array", - "items": true, - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "contentMediaType": { "type": "string" }, - "contentEncoding": { "type": "string" }, - "if": { "$ref": "#" }, - "then": { "$ref": "#" }, - "else": { "$ref": "#" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "default": true -} diff --git a/Solutions/Corvus.Json.JsonSchema.Draft4/Corvus.Json.JsonSchema.Draft4.csproj b/Solutions/Corvus.Json.JsonSchema.Draft4/Corvus.Json.JsonSchema.Draft4.csproj index f3f0f3cf55e..fa007873146 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft4/Corvus.Json.JsonSchema.Draft4.csproj +++ b/Solutions/Corvus.Json.JsonSchema.Draft4/Corvus.Json.JsonSchema.Draft4.csproj @@ -36,7 +36,6 @@ - diff --git a/Solutions/Corvus.Json.JsonSchema.Draft6/Corvus.Json.JsonSchema.Draft6.csproj b/Solutions/Corvus.Json.JsonSchema.Draft6/Corvus.Json.JsonSchema.Draft6.csproj index 85b6e4a3236..25ffff2c4e2 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft6/Corvus.Json.JsonSchema.Draft6.csproj +++ b/Solutions/Corvus.Json.JsonSchema.Draft6/Corvus.Json.JsonSchema.Draft6.csproj @@ -35,5 +35,8 @@ - + + + + diff --git a/Solutions/Corvus.Json.JsonSchema.Draft6/Draft6/MetaSchema.cs b/Solutions/Corvus.Json.JsonSchema.Draft6/Draft6/MetaSchema.cs new file mode 100644 index 00000000000..ddc9a16c56c --- /dev/null +++ b/Solutions/Corvus.Json.JsonSchema.Draft6/Draft6/MetaSchema.cs @@ -0,0 +1,33 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +using System.Diagnostics; +using System.Text.Json; + +namespace Corvus.Json.JsonSchema.Draft6; + +/// +/// MetaSchema for JsonSchema Draft 6. +/// +public sealed class MetaSchema : IMetaSchema +{ + /// + /// Gets the default instance of the Draft 6 . + /// + public static MetaSchema Instance { get; } = new(); + + /// + public string Uri => "https://json-schema.org/draft-06/schema"; + + /// + public JsonDocument Document => JsonDocument.Parse(ReadResource("./metaschema/draft6/schema.json")); + + private static string ReadResource(string name) + { + using Stream? resourceStream = typeof(MetaSchema).Assembly.GetManifestResourceStream(name); + Debug.Assert(resourceStream is not null, $"The manifest resource stream {name} does not exist."); + using var reader = new StreamReader(resourceStream); + return reader.ReadToEnd(); + } +} \ No newline at end of file diff --git a/Solutions/Corvus.Json.SourceGeneratorTools/metaschema/draft6/schema.json b/Solutions/Corvus.Json.JsonSchema.Draft6/metaschema/draft6/schema.json similarity index 100% rename from Solutions/Corvus.Json.SourceGeneratorTools/metaschema/draft6/schema.json rename to Solutions/Corvus.Json.JsonSchema.Draft6/metaschema/draft6/schema.json diff --git a/Solutions/Corvus.Json.JsonSchema.Draft7/Corvus.Json.JsonSchema.Draft7.csproj b/Solutions/Corvus.Json.JsonSchema.Draft7/Corvus.Json.JsonSchema.Draft7.csproj index 843c2dd3480..65972b668ce 100644 --- a/Solutions/Corvus.Json.JsonSchema.Draft7/Corvus.Json.JsonSchema.Draft7.csproj +++ b/Solutions/Corvus.Json.JsonSchema.Draft7/Corvus.Json.JsonSchema.Draft7.csproj @@ -35,5 +35,8 @@ - + + + + diff --git a/Solutions/Corvus.Json.JsonSchema.Draft7/Draft7/MetaSchema.cs b/Solutions/Corvus.Json.JsonSchema.Draft7/Draft7/MetaSchema.cs new file mode 100644 index 00000000000..6c1d3682026 --- /dev/null +++ b/Solutions/Corvus.Json.JsonSchema.Draft7/Draft7/MetaSchema.cs @@ -0,0 +1,33 @@ +// +// Copyright (c) Endjin Limited. All rights reserved. +// + +using System.Diagnostics; +using System.Text.Json; + +namespace Corvus.Json.JsonSchema.Draft7; + +/// +/// MetaSchema for JsonSchema Draft 7. +/// +public sealed class MetaSchema : IMetaSchema +{ + /// + /// Gets the default instance of the Draft 7 . + /// + public static MetaSchema Instance { get; } = new(); + + /// + public string Uri => "https://json-schema.org/draft-07/schema"; + + /// + public JsonDocument Document => JsonDocument.Parse(ReadResource("./metaschema/draft7/schema.json")); + + private static string ReadResource(string name) + { + using Stream? resourceStream = typeof(MetaSchema).Assembly.GetManifestResourceStream(name); + Debug.Assert(resourceStream is not null, $"The manifest resource stream {name} does not exist."); + using var reader = new StreamReader(resourceStream); + return reader.ReadToEnd(); + } +} \ No newline at end of file diff --git a/Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/metaschema/draft7/schema.json b/Solutions/Corvus.Json.JsonSchema.Draft7/metaschema/draft7/schema.json similarity index 100% rename from Solutions/Corvus.Json.CodeGeneration.CSharp.QuickStart/metaschema/draft7/schema.json rename to Solutions/Corvus.Json.JsonSchema.Draft7/metaschema/draft7/schema.json diff --git a/Solutions/Corvus.Json.SourceGeneratorTools/Corvus.Json.SourceGeneratorTools.csproj b/Solutions/Corvus.Json.SourceGeneratorTools/Corvus.Json.SourceGeneratorTools.csproj index 94108ab0a64..4a6a4cae8d9 100644 --- a/Solutions/Corvus.Json.SourceGeneratorTools/Corvus.Json.SourceGeneratorTools.csproj +++ b/Solutions/Corvus.Json.SourceGeneratorTools/Corvus.Json.SourceGeneratorTools.csproj @@ -122,6 +122,7 @@ + diff --git a/Solutions/Corvus.Json.SourceGeneratorTools/IndexRange/Index.cs b/Solutions/Corvus.Json.SourceGeneratorTools/IndexRange/Index.cs deleted file mode 100644 index 27660bd61ca..00000000000 --- a/Solutions/Corvus.Json.SourceGeneratorTools/IndexRange/Index.cs +++ /dev/null @@ -1,157 +0,0 @@ -// -// Copyright (c) Endjin Limited. All rights reserved. -// - -#pragma warning disable - -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#if NETSTANDARD2_1 -[assembly: TypeForwardedTo(typeof(System.Index))] -#else -using System.Runtime.CompilerServices; - -namespace System; - -/// Represent a type can be used to index a collection either from the start or the end. -/// -/// Index is used by the C# compiler to support the new index syntax -/// -/// int[] someArray = new int[5] { 1, 2, 3, 4, 5 } ; -/// int lastElement = someArray[^1]; // lastElement = 5 -/// -/// -public readonly struct Index : IEquatable -{ - private readonly int _value; - - /// Construct an Index using a value and indicating if the index is from the start or from the end. - /// The index value. it has to be zero or positive number. - /// Indicating if the index is from the start or from the end. - /// - /// If the Index constructed from the end, index value 1 means pointing at the last element and index value 0 means pointing at beyond last element. - /// -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - public Index(int value, bool fromEnd = false) - { - if (value < 0) - { - throw new ArgumentOutOfRangeException(nameof(value), "value must be non-negative"); - } - - if (fromEnd) - _value = ~value; - else - _value = value; - } - - // The following private constructors mainly created for perf reason to avoid the checks - private Index(int value) - { - _value = value; - } - - /// Create an Index pointing at first element. - public static Index Start => new Index(0); - - /// Create an Index pointing at beyond last element. - public static Index End => new Index(~0); - - /// Create an Index from the start at the position indicated by the value. - /// The index value from the start. -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - public static Index FromStart(int value) - { - if (value < 0) - { - throw new ArgumentOutOfRangeException(nameof(value), "value must be non-negative"); - } - - return new Index(value); - } - - /// Create an Index from the end at the position indicated by the value. - /// The index value from the end. -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - public static Index FromEnd(int value) - { - if (value < 0) - { - throw new ArgumentOutOfRangeException(nameof(value), "value must be non-negative"); - } - - return new Index(~value); - } - - /// Returns the index value. - public int Value - { - get - { - if (_value < 0) - return ~_value; - else - return _value; - } - } - - /// Indicates whether the index is from the start or the end. - public bool IsFromEnd => _value < 0; - - /// Calculate the offset from the start using the giving collection length. - /// The length of the collection that the Index will be used with. length has to be a positive value - /// - /// For performance reason, we don't validate the input length parameter and the returned offset value against negative values. - /// we don't validate either the returned offset is greater than the input length. - /// It is expected Index will be used with collections which always have non negative length/count. If the returned offset is negative and - /// then used to index a collection will get out of range exception which will be same affect as the validation. - /// -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - public int GetOffset(int length) - { - int offset = _value; - if (IsFromEnd) - { - // offset = length - (~value) - // offset = length + (~(~value) + 1) - // offset = length + value + 1 - - offset += length + 1; - } - return offset; - } - - /// Indicates whether the current Index object is equal to another object of the same type. - /// An object to compare with this object - public override bool Equals(object? value) => value is Index && _value == ((Index)value)._value; - - /// Indicates whether the current Index object is equal to another Index object. - /// An object to compare with this object - public bool Equals(Index other) => _value == other._value; - - /// Returns the hash code for this instance. - public override int GetHashCode() => _value; - - /// Converts integer number to an Index. - public static implicit operator Index(int value) => FromStart(value); - - /// Converts the value of the current Index object to its equivalent string representation. - public override string ToString() - { - if (IsFromEnd) - return "^" + ((uint)Value).ToString(); - - return ((uint)Value).ToString(); - } -} -#endif \ No newline at end of file diff --git a/Solutions/Corvus.Json.SourceGeneratorTools/IndexRange/Range.cs b/Solutions/Corvus.Json.SourceGeneratorTools/IndexRange/Range.cs deleted file mode 100644 index 3f9638ea21b..00000000000 --- a/Solutions/Corvus.Json.SourceGeneratorTools/IndexRange/Range.cs +++ /dev/null @@ -1,100 +0,0 @@ -// -// Copyright (c) Endjin Limited. All rights reserved. -// - -#pragma warning disable - -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -#if NETSTANDARD2_1 -[assembly: TypeForwardedTo(typeof(System.Range))] -#else -using System.Runtime.CompilerServices; - -namespace System; - -/// Represent a range has start and end indexes. -/// -/// Range is used by the C# compiler to support the range syntax. -/// -/// int[] someArray = new int[5] { 1, 2, 3, 4, 5 }; -/// int[] subArray1 = someArray[0..2]; // { 1, 2 } -/// int[] subArray2 = someArray[1..^0]; // { 2, 3, 4, 5 } -/// -/// -public readonly struct Range : IEquatable -{ - /// Represent the inclusive start index of the Range. - public Index Start { get; } - - /// Represent the exclusive end index of the Range. - public Index End { get; } - - /// Construct a Range object using the start and end indexes. - /// Represent the inclusive start index of the range. - /// Represent the exclusive end index of the range. - public Range(Index start, Index end) - { - Start = start; - End = end; - } - - /// Indicates whether the current Range object is equal to another object of the same type. - /// An object to compare with this object - public override bool Equals(object? value) => - value is Range r && - r.Start.Equals(Start) && - r.End.Equals(End); - - /// Indicates whether the current Range object is equal to another Range object. - /// An object to compare with this object - public bool Equals(Range other) => other.Start.Equals(Start) && other.End.Equals(End); - - /// Returns the hash code for this instance. - public override int GetHashCode() - { - return Start.GetHashCode() * 31 + End.GetHashCode(); - } - - /// Converts the value of the current Range object to its equivalent string representation. - public override string ToString() - { - return Start + ".." + End; - } - - /// Create a Range object starting from start index to the end of the collection. - public static Range StartAt(Index start) => new Range(start, Index.End); - - /// Create a Range object starting from first element in the collection to the end Index. - public static Range EndAt(Index end) => new Range(Index.Start, end); - - /// Create a Range object starting from first element to the end. - public static Range All => new Range(Index.Start, Index.End); - - /// Calculate the start offset and length of range object using a collection length. - /// The length of the collection that the range will be used with. length has to be a positive value. - /// - /// For performance reason, we don't validate the input length parameter against negative values. - /// It is expected Range will be used with collections which always have non negative length/count. - /// We validate the range is inside the length scope though. - /// -#if !NET35 - [MethodImpl(MethodImplOptions.AggressiveInlining)] -#endif - [CLSCompliant(false)] - public (int Offset, int Length) GetOffsetAndLength(int length) - { - int start = Start.GetOffset(length); - int end = End.GetOffset(length); - - if ((uint)end > (uint)length || (uint)start > (uint)end) - { - throw new ArgumentOutOfRangeException(nameof(length)); - } - - return (start, end - start); - } -} -#endif \ No newline at end of file diff --git a/Solutions/Corvus.Json.Validator/Corvus.Json.Validator.csproj b/Solutions/Corvus.Json.Validator/Corvus.Json.Validator.csproj index e3cffce8dbc..3d5aa6842ec 100644 --- a/Solutions/Corvus.Json.Validator/Corvus.Json.Validator.csproj +++ b/Solutions/Corvus.Json.Validator/Corvus.Json.Validator.csproj @@ -80,8 +80,6 @@ - - diff --git a/Solutions/Corvus.Json.Validator/JsonSchema.cs b/Solutions/Corvus.Json.Validator/JsonSchema.cs index d20f7f44eb5..cd4db20439f 100644 --- a/Solutions/Corvus.Json.Validator/JsonSchema.cs +++ b/Solutions/Corvus.Json.Validator/JsonSchema.cs @@ -213,6 +213,8 @@ private static PrepopulatedDocumentResolver CreateMetaschemaDocumentResolver() { var result = new PrepopulatedDocumentResolver(); result.AddDocument(Corvus.Json.JsonSchema.Draft4.MetaSchema.Instance); + result.AddDocument(Corvus.Json.JsonSchema.Draft6.MetaSchema.Instance); + result.AddDocument(Corvus.Json.JsonSchema.Draft7.MetaSchema.Instance); result.AddMetaschema(); return result; } diff --git a/Solutions/Corvus.Json.Validator/Metaschema.cs b/Solutions/Corvus.Json.Validator/Metaschema.cs index 70e8ac6b4ad..95a9ad1b346 100644 --- a/Solutions/Corvus.Json.Validator/Metaschema.cs +++ b/Solutions/Corvus.Json.Validator/Metaschema.cs @@ -24,14 +24,6 @@ internal static IDocumentResolver AddMetaschema(this IDocumentResolver documentR Debug.Assert(assembly is not null, "The assembly containing this type must exist"); - documentResolver.AddDocument( - "http://json-schema.org/draft-06/schema", - JsonDocument.Parse(ReadResource(assembly, "metaschema.draft6.schema.json"))); - - documentResolver.AddDocument( - "http://json-schema.org/draft-07/schema", - JsonDocument.Parse(ReadResource(assembly, "metaschema.draft7.schema.json"))); - documentResolver.AddDocument( "https://json-schema.org/draft/2019-09/schema", JsonDocument.Parse(ReadResource(assembly, "metaschema.draft2019_09.schema.json"))); diff --git a/Solutions/Corvus.Json.Validator/metaschema/draft6/schema.json b/Solutions/Corvus.Json.Validator/metaschema/draft6/schema.json deleted file mode 100644 index bd3e763bc2c..00000000000 --- a/Solutions/Corvus.Json.Validator/metaschema/draft6/schema.json +++ /dev/null @@ -1,155 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-06/schema#", - "$id": "http://json-schema.org/draft-06/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "allOf": [ - { "$ref": "#/definitions/nonNegativeInteger" }, - { "default": 0 } - ] - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "uniqueItems": true, - "default": [] - } - }, - "type": ["object", "boolean"], - "properties": { - "$id": { - "type": "string", - "format": "uri-reference" - }, - "$schema": { - "type": "string", - "format": "uri" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": {}, - "examples": { - "type": "array", - "items": {} - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { "$ref": "#/definitions/nonNegativeInteger" }, - "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { "$ref": "#" }, - "items": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/schemaArray" } - ], - "default": {} - }, - "maxItems": { "$ref": "#/definitions/nonNegativeInteger" }, - "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { "$ref": "#" }, - "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" }, - "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { "$ref": "#" }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "propertyNames": { "format": "regex" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/stringArray" } - ] - } - }, - "propertyNames": { "$ref": "#" }, - "const": {}, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "default": {} -} diff --git a/Solutions/Corvus.Json.Validator/metaschema/draft7/schema.json b/Solutions/Corvus.Json.Validator/metaschema/draft7/schema.json deleted file mode 100644 index fb92c7f756b..00000000000 --- a/Solutions/Corvus.Json.Validator/metaschema/draft7/schema.json +++ /dev/null @@ -1,172 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "http://json-schema.org/draft-07/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "allOf": [ - { "$ref": "#/definitions/nonNegativeInteger" }, - { "default": 0 } - ] - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "uniqueItems": true, - "default": [] - } - }, - "type": ["object", "boolean"], - "properties": { - "$id": { - "type": "string", - "format": "uri-reference" - }, - "$schema": { - "type": "string", - "format": "uri" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "$comment": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": true, - "readOnly": { - "type": "boolean", - "default": false - }, - "writeOnly": { - "type": "boolean", - "default": false - }, - "examples": { - "type": "array", - "items": true - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { "$ref": "#/definitions/nonNegativeInteger" }, - "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { "$ref": "#" }, - "items": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/schemaArray" } - ], - "default": true - }, - "maxItems": { "$ref": "#/definitions/nonNegativeInteger" }, - "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { "$ref": "#" }, - "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" }, - "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { "$ref": "#" }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "propertyNames": { "format": "regex" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/stringArray" } - ] - } - }, - "propertyNames": { "$ref": "#" }, - "const": true, - "enum": { - "type": "array", - "items": true, - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "contentMediaType": { "type": "string" }, - "contentEncoding": { "type": "string" }, - "if": { "$ref": "#" }, - "then": { "$ref": "#" }, - "else": { "$ref": "#" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "default": true -} From 503ff0f12b21407ca1bfdca9fbb9332cac69ef0d Mon Sep 17 00:00:00 2001 From: Matthew Adams Date: Fri, 11 Jul 2025 07:37:52 +0100 Subject: [PATCH 19/20] Example code change to remove double ;; --- ...odeGeneratorExtensions.StringFormatMethods.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Solutions/Corvus.Json.CodeGeneration.CSharp/Corvus.Json.CodeGeneration/CSharp/CodeGeneratorExtensions.StringFormatMethods.cs b/Solutions/Corvus.Json.CodeGeneration.CSharp/Corvus.Json.CodeGeneration/CSharp/CodeGeneratorExtensions.StringFormatMethods.cs index ff8f990f4a2..5af30e54eff 100644 --- a/Solutions/Corvus.Json.CodeGeneration.CSharp/Corvus.Json.CodeGeneration/CSharp/CodeGeneratorExtensions.StringFormatMethods.cs +++ b/Solutions/Corvus.Json.CodeGeneration.CSharp/Corvus.Json.CodeGeneration/CSharp/CodeGeneratorExtensions.StringFormatMethods.cs @@ -684,7 +684,7 @@ public static bool AppendUriFormatConversionOperators(this CodeGenerator generat } generator - .AppendImplicitConversionToType(typeDeclaration, "Uri", "value.GetUri();") + .AppendImplicitConversionToType(typeDeclaration, "Uri", "value.GetUri()") .AppendImplicitConversionFromTypeUsingConstructor(typeDeclaration, "Uri", useInForSourceType: true); return true; @@ -739,7 +739,7 @@ public static bool AppendUriReferenceFormatConversionOperators(this CodeGenerato } generator - .AppendImplicitConversionToType(typeDeclaration, "Uri", "value.GetUri();") + .AppendImplicitConversionToType(typeDeclaration, "Uri", "value.GetUri()") .AppendImplicitConversionFromTypeUsingConstructor(typeDeclaration, "Uri", useInForSourceType: true); return true; @@ -794,7 +794,7 @@ public static bool AppendIriFormatConversionOperators(this CodeGenerator generat } generator - .AppendImplicitConversionToType(typeDeclaration, "Uri", "value.GetUri();") + .AppendImplicitConversionToType(typeDeclaration, "Uri", "value.GetUri()") .AppendImplicitConversionFromTypeUsingConstructor(typeDeclaration, "Uri", useInForSourceType: true); return true; @@ -849,7 +849,7 @@ public static bool AppendIriReferenceFormatConversionOperators(this CodeGenerato } generator - .AppendImplicitConversionToType(typeDeclaration, "Uri", "value.GetUri();") + .AppendImplicitConversionToType(typeDeclaration, "Uri", "value.GetUri()") .AppendImplicitConversionFromTypeUsingConstructor(typeDeclaration, "Uri", useInForSourceType: true); return true; @@ -904,7 +904,7 @@ public static bool AppendUuidFormatConversionOperators(this CodeGenerator genera } generator - .AppendImplicitConversionToType(typeDeclaration, "Guid", "value.GetGuid();") + .AppendImplicitConversionToType(typeDeclaration, "Guid", "value.GetGuid()") .AppendImplicitConversionFromTypeUsingConstructor(typeDeclaration, "Guid", useInForSourceType: true); return true; @@ -1060,7 +1060,7 @@ public static bool AppendIpV6FormatConversionOperators(this CodeGenerator genera } generator - .AppendImplicitConversionToType(typeDeclaration, "System.Net.IPAddress", "value.GetIPAddress();") + .AppendImplicitConversionToType(typeDeclaration, "System.Net.IPAddress", "value.GetIPAddress()") .AppendImplicitConversionFromTypeUsingConstructor(typeDeclaration, "System.Net.IPAddress", useInForSourceType: true); return true; @@ -1176,7 +1176,7 @@ public static bool AppendRegexFormatConversionOperators(this CodeGenerator gener } generator - .AppendImplicitConversionToType(typeDeclaration, "System.Text.RegularExpressions.Regex", "value.GetRegex();") + .AppendImplicitConversionToType(typeDeclaration, "System.Text.RegularExpressions.Regex", "value.GetRegex()") .AppendImplicitConversionFromTypeUsingConstructor(typeDeclaration, "System.Text.RegularExpressions.Regex"); return true; @@ -1282,7 +1282,7 @@ public static bool AppendIpV4FormatConversionOperators(this CodeGenerator genera } generator - .AppendImplicitConversionToType(typeDeclaration, "System.Net.IPAddress", "value.GetIPAddress();") + .AppendImplicitConversionToType(typeDeclaration, "System.Net.IPAddress", "value.GetIPAddress()") .AppendImplicitConversionFromTypeUsingConstructor(typeDeclaration, "System.Net.IPAddress", useInForSourceType: true); return true; From 38ed36e846c4cb4df2f31650618c15d8aa3e720d Mon Sep 17 00:00:00 2001 From: StephenHodgson Date: Fri, 25 Jul 2025 21:17:21 -0400 Subject: [PATCH 20/20] package locks --- .../packages.lock.json | 152 +- .../packages.lock.json | 28 +- .../Corvus.Json.Specs/packages.lock.json | 2487 +++++++++++++---- .../packages.lock.json | 206 +- 4 files changed, 2355 insertions(+), 518 deletions(-) diff --git a/Solutions/Corvus.Json.Benchmarking/packages.lock.json b/Solutions/Corvus.Json.Benchmarking/packages.lock.json index 595a65ec395..0d4914bc07a 100644 --- a/Solutions/Corvus.Json.Benchmarking/packages.lock.json +++ b/Solutions/Corvus.Json.Benchmarking/packages.lock.json @@ -65,7 +65,9 @@ "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", "dependencies": { "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]" + "Microsoft.CodeAnalysis.Common": "[4.11.0]", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Extensions.Configuration.Json": { @@ -145,7 +147,11 @@ "Corvus.HighPerformance": { "type": "Transitive", "resolved": "1.0.2", - "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==" + "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5" + } }, "Corvus.UriTemplates": { "type": "Transitive", @@ -154,7 +160,9 @@ "dependencies": { "CommunityToolkit.HighPerformance": "8.3.0", "Corvus.HighPerformance": "1.0.0", - "Microsoft.Extensions.ObjectPool": "8.0.8" + "Microsoft.Extensions.ObjectPool": "8.0.8", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0" } }, "Endjin.RecommendedPractices": { @@ -214,7 +222,9 @@ "resolved": "4.11.0", "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4" + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Diagnostics.NETCore.Client": { @@ -231,13 +241,19 @@ "resolved": "2.2.332302", "contentHash": "Hp84ivxSKIMTBzYSATxmUsm3YSXHWivcwiRRbsydGmqujMUK8BAueLN0ssAVEOkOBmh0vjUBhrq7YcroT7VCug==", "dependencies": { - "Microsoft.Diagnostics.NETCore.Client": "0.2.251802" + "Microsoft.Diagnostics.NETCore.Client": "0.2.251802", + "System.Collections.Immutable": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" } }, "Microsoft.Diagnostics.Tracing.TraceEvent": { "type": "Transitive", "resolved": "3.1.8", - "contentHash": "kl3UMrZKSeSEYZ8rt/GjLUQToREjgQABqfg6PzQBmSlYHTZOKE9ePEOS2xptROQ9SVvngg3QGX51TIT11iZ0wA==" + "contentHash": "kl3UMrZKSeSEYZ8rt/GjLUQToREjgQABqfg6PzQBmSlYHTZOKE9ePEOS2xptROQ9SVvngg3QGX51TIT11iZ0wA==", + "dependencies": { + "Microsoft.Win32.Registry": "4.4.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" + } }, "Microsoft.DotNet.PlatformAbstractions": { "type": "Transitive", @@ -428,6 +444,15 @@ "Microsoft.SourceLink.Common": "1.1.1" } }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==", + "dependencies": { + "System.Security.AccessControl": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, "NodaTime": { "type": "Transitive", "resolved": "3.2.1", @@ -443,6 +468,11 @@ "resolved": "1.2.0.556", "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, "System.CodeDom": { "type": "Transitive", "resolved": "5.0.0", @@ -464,9 +494,34 @@ "contentHash": "MF1CHaRcC+MLFdnDthv4/bKWBZnlnSpkGqa87pKukQefgEdwtb9zFW6zs0GjPp73qtpYYg4q6PEKbzJbxCpKfw==", "dependencies": { "Microsoft.NETCore.Platforms": "5.0.0", + "Microsoft.Win32.Registry": "5.0.0", "System.CodeDom": "5.0.0" } }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + }, "System.Text.Encodings.Web": { "type": "Transitive", "resolved": "9.0.0", @@ -713,7 +768,9 @@ "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", "dependencies": { "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]" + "Microsoft.CodeAnalysis.Common": "[4.11.0]", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Extensions.Configuration.Json": { @@ -785,7 +842,11 @@ "Corvus.HighPerformance": { "type": "Transitive", "resolved": "1.0.2", - "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==" + "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5" + } }, "Corvus.UriTemplates": { "type": "Transitive", @@ -794,7 +855,9 @@ "dependencies": { "CommunityToolkit.HighPerformance": "8.3.0", "Corvus.HighPerformance": "1.0.0", - "Microsoft.Extensions.ObjectPool": "8.0.8" + "Microsoft.Extensions.ObjectPool": "8.0.8", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0" } }, "Endjin.RecommendedPractices": { @@ -854,7 +917,9 @@ "resolved": "4.11.0", "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4" + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Diagnostics.NETCore.Client": { @@ -871,13 +936,19 @@ "resolved": "2.2.332302", "contentHash": "Hp84ivxSKIMTBzYSATxmUsm3YSXHWivcwiRRbsydGmqujMUK8BAueLN0ssAVEOkOBmh0vjUBhrq7YcroT7VCug==", "dependencies": { - "Microsoft.Diagnostics.NETCore.Client": "0.2.251802" + "Microsoft.Diagnostics.NETCore.Client": "0.2.251802", + "System.Collections.Immutable": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" } }, "Microsoft.Diagnostics.Tracing.TraceEvent": { "type": "Transitive", "resolved": "3.1.8", - "contentHash": "kl3UMrZKSeSEYZ8rt/GjLUQToREjgQABqfg6PzQBmSlYHTZOKE9ePEOS2xptROQ9SVvngg3QGX51TIT11iZ0wA==" + "contentHash": "kl3UMrZKSeSEYZ8rt/GjLUQToREjgQABqfg6PzQBmSlYHTZOKE9ePEOS2xptROQ9SVvngg3QGX51TIT11iZ0wA==", + "dependencies": { + "Microsoft.Win32.Registry": "4.4.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" + } }, "Microsoft.DotNet.PlatformAbstractions": { "type": "Transitive", @@ -1062,6 +1133,15 @@ "Microsoft.SourceLink.Common": "1.1.1" } }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==", + "dependencies": { + "System.Security.AccessControl": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, "NodaTime": { "type": "Transitive", "resolved": "3.2.1", @@ -1077,6 +1157,11 @@ "resolved": "1.2.0.556", "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, "System.CodeDom": { "type": "Transitive", "resolved": "5.0.0", @@ -1088,9 +1173,34 @@ "contentHash": "MF1CHaRcC+MLFdnDthv4/bKWBZnlnSpkGqa87pKukQefgEdwtb9zFW6zs0GjPp73qtpYYg4q6PEKbzJbxCpKfw==", "dependencies": { "Microsoft.NETCore.Platforms": "5.0.0", + "Microsoft.Win32.Registry": "5.0.0", "System.CodeDom": "5.0.0" } }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + }, "corvus.json.codegeneration": { "type": "Project", "dependencies": { @@ -1149,14 +1259,16 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Microsoft.CodeAnalysis.CSharp": "[4.11.0, )" + "Microsoft.CodeAnalysis.CSharp": "[4.11.0, )", + "System.Reflection.Metadata": "[9.0.0, )" } }, "corvus.json.codegeneration.httpclientdocumentresolver": { "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Microsoft.Extensions.Http": "[9.0.0, )" + "Microsoft.Extensions.Http": "[9.0.0, )", + "System.Collections.Immutable": "[9.0.0, )" } }, "corvus.json.codegeneration.openapi30": { @@ -1172,13 +1284,16 @@ "dependencies": { "Corvus.Json.JsonReference": "[1.0.0, )", "Corvus.UriTemplates": "[2.3.2, )", - "NodaTime": "[3.2.1, )" + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )", + "System.Text.Json": "[9.0.0, )" } }, "corvus.json.jsonreference": { "type": "Project", "dependencies": { - "Corvus.HighPerformance": "[1.0.2, )" + "Corvus.HighPerformance": "[1.0.2, )", + "System.Text.Json": "[9.0.0, )" } }, "corvus.json.jsonschema.draft201909": { @@ -1256,7 +1371,10 @@ "Corvus.Json.CodeGeneration.OpenApi30": "[1.0.0, )", "Corvus.Json.ExtendedTypes": "[1.0.0, )", "Microsoft.CodeAnalysis.CSharp": "[4.11.0, )", - "Microsoft.Extensions.DependencyModel": "[9.0.0, )" + "Microsoft.Extensions.DependencyModel": "[9.0.0, )", + "System.Collections.Immutable": "[9.0.0, )", + "System.Reflection.Metadata": "[9.0.0, )", + "System.Text.Json": "[9.0.0, )" } } } diff --git a/Solutions/Corvus.Json.Patch.SpecGenerator/packages.lock.json b/Solutions/Corvus.Json.Patch.SpecGenerator/packages.lock.json index 3a19b8967cb..5e4685e8ecb 100644 --- a/Solutions/Corvus.Json.Patch.SpecGenerator/packages.lock.json +++ b/Solutions/Corvus.Json.Patch.SpecGenerator/packages.lock.json @@ -19,7 +19,9 @@ "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", "dependencies": { "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]" + "Microsoft.CodeAnalysis.Common": "[4.11.0]", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Mono.TextTemplating": { @@ -69,7 +71,11 @@ "Corvus.HighPerformance": { "type": "Transitive", "resolved": "1.0.2", - "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==" + "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5" + } }, "Corvus.UriTemplates": { "type": "Transitive", @@ -78,7 +84,9 @@ "dependencies": { "CommunityToolkit.HighPerformance": "8.3.0", "Corvus.HighPerformance": "1.0.0", - "Microsoft.Extensions.ObjectPool": "8.0.8" + "Microsoft.Extensions.ObjectPool": "8.0.8", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0" } }, "Endjin.RecommendedPractices": { @@ -104,7 +112,9 @@ "resolved": "4.11.0", "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4" + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Extensions.Configuration": { @@ -252,6 +262,11 @@ "resolved": "1.2.0.556", "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, "System.CodeDom": { "type": "Transitive", "resolved": "6.0.0", @@ -267,6 +282,11 @@ "resolved": "9.0.0", "contentHash": "eA3cinogwaNB4jdjQHOP3Z3EuyiDII7MT35jgtnsA4vkn0LUrrSHsU0nzHTzFzmaFYeKV7MYyMxOocFzsBHpTw==" }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==" + }, "System.Text.Encodings.Web": { "type": "Transitive", "resolved": "9.0.0", diff --git a/Solutions/Corvus.Json.Specs/packages.lock.json b/Solutions/Corvus.Json.Specs/packages.lock.json index f66eab10c13..ee0a76e43a3 100644 --- a/Solutions/Corvus.Json.Specs/packages.lock.json +++ b/Solutions/Corvus.Json.Specs/packages.lock.json @@ -79,6 +79,15 @@ "Microsoft.CodeCoverage": "17.11.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net481": "1.0.3" + } + }, "NUnit": { "type": "Direct", "requested": "[3.14.0, )", @@ -430,6 +439,11 @@ "System.Runtime.CompilerServices.Unsafe": "6.0.0" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net481": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "Vv/20vgHS7VglVOVh8J3Iz/MA+VYKVRp9f7r2qiKBMuzviTOmocG70yq0Q8T5OTmCONkEAIJwETD1zhEfLkAXQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "1.1.1", @@ -713,7 +727,7 @@ "type": "Project", "dependencies": { "Corvus.Json.ExtendedTypes": "[1.0.0, )", - "IndexRange": "[1.0.3, )", + "IndexRange": "[1.1.0, )", "Microsoft.Extensions.Http": "[9.0.0, )", "Microsoft.Extensions.ObjectPool": "[9.0.0, )", "NodaTime": "[3.2.1, )", @@ -812,7 +826,9 @@ "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", "dependencies": { "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]" + "Microsoft.CodeAnalysis.Common": "[4.11.0]", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Extensions.Configuration.Json": { @@ -918,7 +934,10 @@ "type": "Direct", "requested": "[4.3.1, )", "resolved": "4.3.1", - "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==" + "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==", + "dependencies": { + "System.Runtime": "4.3.1" + } }, "BoDi": { "type": "Transitive", @@ -933,7 +952,11 @@ "Corvus.HighPerformance": { "type": "Transitive", "resolved": "1.0.2", - "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==" + "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5" + } }, "Corvus.Testing.SpecFlow": { "type": "Transitive", @@ -955,7 +978,9 @@ "dependencies": { "CommunityToolkit.HighPerformance": "8.3.0", "Corvus.HighPerformance": "1.0.0", - "Microsoft.Extensions.ObjectPool": "8.0.8" + "Microsoft.Extensions.ObjectPool": "8.0.8", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0" } }, "coverlet.msbuild": { @@ -991,7 +1016,9 @@ "resolved": "4.11.0", "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4" + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.CodeCoverage": { @@ -1002,7 +1029,17 @@ "Microsoft.DotNet.PlatformAbstractions": { "type": "Transitive", "resolved": "1.0.3", - "contentHash": "rF92Gp5L2asYrFNf0cKNBxzzGLh1krHuj6TRDk9wdjN2qdvJLaNYOn1s9oYkMlptYX436KiEFqxhLB+I5veXvQ==" + "contentHash": "rF92Gp5L2asYrFNf0cKNBxzzGLh1krHuj6TRDk9wdjN2qdvJLaNYOn1s9oYkMlptYX436KiEFqxhLB+I5veXvQ==", + "dependencies": { + "System.AppContext": "4.1.0", + "System.Collections": "4.0.11", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" + } }, "Microsoft.Extensions.Configuration": { "type": "Transitive", @@ -1060,7 +1097,10 @@ "contentHash": "Z3o19EnheuegmvgpCzwoSlnCWxYA6qIUhvKJ7ifKHHvU7U+oYR/gliLiL3LVYOOeGMEEzkpJ5W67sOcXizGtlw==", "dependencies": { "Microsoft.DotNet.PlatformAbstractions": "1.0.3", - "Newtonsoft.Json": "9.0.1" + "Newtonsoft.Json": "9.0.1", + "System.Diagnostics.Debug": "4.0.11", + "System.Dynamic.Runtime": "4.0.11", + "System.Linq": "4.1.0" } }, "Microsoft.Extensions.Diagnostics": { @@ -1174,6 +1214,11 @@ "resolved": "3.1.0", "contentHash": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==" }, + "Microsoft.NETCore.Targets": { + "type": "Transitive", + "resolved": "1.1.3", + "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "1.1.1", @@ -1191,7 +1236,10 @@ "Microsoft.TestPlatform.ObjectModel": { "type": "Transitive", "resolved": "17.11.1", - "contentHash": "E2jZqAU6JeWEVsyOEOrSW1o1bpHLgb25ypvKNB/moBXPVsFYBPd/Jwi7OrYahG50J83LfHzezYI+GaEkpAotiA==" + "contentHash": "E2jZqAU6JeWEVsyOEOrSW1o1bpHLgb25ypvKNB/moBXPVsFYBPd/Jwi7OrYahG50J83LfHzezYI+GaEkpAotiA==", + "dependencies": { + "System.Reflection.Metadata": "1.6.0" + } }, "Microsoft.TestPlatform.TestHost": { "type": "Transitive", @@ -1202,6 +1250,15 @@ "Newtonsoft.Json": "13.0.1" } }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", + "dependencies": { + "System.Security.AccessControl": "4.7.0", + "System.Security.Principal.Windows": "4.7.0" + } + }, "NETStandard.Library": { "type": "Transitive", "resolved": "2.0.0", @@ -1263,6 +1320,104 @@ "resolved": "3.8.0", "contentHash": "CIScV9a7+wUu6Ylb+WO0q/WGWQVoB05TUj3XZHa1CO+2BInDdfIVkqtlrSguhy6D/AGIMaLVrCZpQkQ2m0bbzQ==" }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==" + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==" + }, + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==" + }, + "runtime.native.System": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.Net.Http": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" + } + }, + "runtime.native.System.Security.Cryptography.Apple": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", + "dependencies": { + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" + } + }, + "runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==", + "dependencies": { + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" + } + }, + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==" + }, + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==" + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==" + }, + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==" + }, + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==" + }, + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==" + }, + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==" + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" + }, "Semver": { "type": "Transitive", "resolved": "2.0.6", @@ -1280,7 +1435,9 @@ "Gherkin": "19.0.3", "Microsoft.Extensions.DependencyModel": "1.0.3", "SpecFlow.Internal.Json": "1.0.8", - "System.Configuration.ConfigurationManager": "4.5.0" + "System.Configuration.ConfigurationManager": "4.5.0", + "System.Net.Http": "4.3.4", + "System.Runtime.Loader": "4.3.0" } }, "SpecFlow.Internal.Json": { @@ -1311,11 +1468,51 @@ "resolved": "1.2.0.556", "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" }, + "System.AppContext": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", + "dependencies": { + "System.Runtime": "4.1.0" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, "System.CodeDom": { "type": "Transitive", "resolved": "4.7.0", "contentHash": "Hs9pw/kmvH3lXaZ1LFKj3pLQsiGfj2xo3sxSzwiLlRL6UcMZUTeCfoJ9Udalvn3yq5dLlPEZzYegrTQ1/LhPOQ==" }, + "System.Collections": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Collections.Concurrent": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, "System.Configuration.ConfigurationManager": { "type": "Transitive", "resolved": "4.5.0", @@ -1325,160 +1522,684 @@ "System.Security.Permissions": "4.5.0" } }, + "System.Diagnostics.Debug": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, "System.Diagnostics.DiagnosticSource": { "type": "Transitive", "resolved": "9.0.0", "contentHash": "ddppcFpnbohLWdYKr/ZeLZHmmI+DXFgZ3Snq+/E7SwcdW4UnvxmaugkwGywvGVWkHPGCSZjCP+MLzu23AL5SDw==" }, - "System.IO.Pipelines": { + "System.Diagnostics.Tracing": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "eA3cinogwaNB4jdjQHOP3Z3EuyiDII7MT35jgtnsA4vkn0LUrrSHsU0nzHTzFzmaFYeKV7MYyMxOocFzsBHpTw==" + "resolved": "4.3.0", + "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } }, - "System.Management": { + "System.Dynamic.Runtime": { "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "IY+uuGhgzWiCg21i8IvQeY/Z7m1tX8VuPF+ludfn7iTCaccTtJo5HkjZbBEL8kbBubKhAKKtNXr7uMtmAc28Pw==", + "resolved": "4.0.11", + "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "System.CodeDom": "4.7.0" + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" } }, - "System.Security.Cryptography.ProtectedData": { + "System.Globalization": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" + "resolved": "4.3.0", + "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } }, - "System.Security.Permissions": { + "System.Globalization.Calendars": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==" + "resolved": "4.3.0", + "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Runtime": "4.3.0" + } }, - "System.Text.Encodings.Web": { + "System.Globalization.Extensions": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "e2hMgAErLbKyUUwt18qSBf9T5Y+SFAL3ZedM8fLupkVj8Rj2PZ9oxQ37XX2LF8fTO1wNIxvKpihD7Of7D/NxZw==" - }, - "corvus.json.codegeneration": { - "type": "Project", + "resolved": "4.3.0", + "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", "dependencies": { - "Corvus.Json.JsonReference": "[1.0.0, )" + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0" } }, - "corvus.json.codegeneration.201909": { - "type": "Project", + "System.IO": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", "dependencies": { - "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Corvus.Json.JsonSchema.Draft201909": "[1.0.0, )", - "System.Collections.Immutable": "[9.0.0, )" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" } }, - "corvus.json.codegeneration.202012": { - "type": "Project", + "System.IO.FileSystem": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", "dependencies": { - "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Corvus.Json.JsonSchema.Draft202012": "[1.0.0, )", - "System.Collections.Immutable": "[9.0.0, )" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" } }, - "corvus.json.codegeneration.4": { - "type": "Project", + "System.IO.FileSystem.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", "dependencies": { - "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Corvus.Json.JsonSchema.Draft4": "[1.0.0, )", - "System.Collections.Immutable": "[9.0.0, )" + "System.Runtime": "4.3.0" } }, - "corvus.json.codegeneration.6": { - "type": "Project", + "System.IO.Pipelines": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "eA3cinogwaNB4jdjQHOP3Z3EuyiDII7MT35jgtnsA4vkn0LUrrSHsU0nzHTzFzmaFYeKV7MYyMxOocFzsBHpTw==" + }, + "System.Linq": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", "dependencies": { - "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Corvus.Json.JsonSchema.Draft6": "[1.0.0, )", - "System.Collections.Immutable": "[9.0.0, )" + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" } }, - "corvus.json.codegeneration.7": { - "type": "Project", + "System.Linq.Expressions": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", "dependencies": { - "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Corvus.Json.JsonSchema.Draft7": "[1.0.0, )", - "System.Collections.Immutable": "[9.0.0, )" + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Linq": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Emit.Lightweight": "4.0.1", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" } }, - "corvus.json.codegeneration.csharp": { - "type": "Project", + "System.Management": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "IY+uuGhgzWiCg21i8IvQeY/Z7m1tX8VuPF+ludfn7iTCaccTtJo5HkjZbBEL8kbBubKhAKKtNXr7uMtmAc28Pw==", "dependencies": { - "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Microsoft.CodeAnalysis.CSharp": "[4.11.0, )", - "System.Reflection.Metadata": "[9.0.0, )" + "Microsoft.NETCore.Platforms": "3.1.0", + "Microsoft.Win32.Registry": "4.7.0", + "System.CodeDom": "4.7.0" } }, - "corvus.json.codegeneration.openapi30": { - "type": "Project", + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==" + }, + "System.Net.Http": { + "type": "Transitive", + "resolved": "4.3.4", + "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==", "dependencies": { - "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Corvus.Json.JsonSchema.OpenApi30": "[1.0.0, )", - "System.Collections.Immutable": "[9.0.0, )" + "Microsoft.NETCore.Platforms": "1.1.1", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.DiagnosticSource": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" } }, - "corvus.json.extendedtypes": { - "type": "Project", + "System.Net.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", "dependencies": { - "Corvus.Json.JsonReference": "[1.0.0, )", - "Corvus.UriTemplates": "[2.3.2, )", - "NodaTime": "[3.2.1, )", - "System.Collections.Immutable": "[9.0.0, )", - "System.Text.Json": "[9.0.0, )" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" } }, - "corvus.json.jsonreference": { - "type": "Project", + "System.ObjectModel": { + "type": "Transitive", + "resolved": "4.0.12", + "contentHash": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", "dependencies": { - "Corvus.HighPerformance": "[1.0.2, )", - "System.Text.Json": "[9.0.0, )" + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" } }, - "corvus.json.jsonschema.draft201909": { - "type": "Project", + "System.Reflection": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", "dependencies": { - "Corvus.Json.ExtendedTypes": "[1.0.0, )", - "Microsoft.Extensions.Http": "[9.0.0, )", - "Microsoft.Extensions.ObjectPool": "[9.0.0, )", - "NodaTime": "[3.2.1, )", - "System.Collections.Immutable": "[9.0.0, )" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" } }, - "corvus.json.jsonschema.draft202012": { - "type": "Project", + "System.Reflection.Emit": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", "dependencies": { - "Corvus.Json.ExtendedTypes": "[1.0.0, )", - "Microsoft.Extensions.Http": "[9.0.0, )", - "Microsoft.Extensions.ObjectPool": "[9.0.0, )", - "NodaTime": "[3.2.1, )" + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" } }, - "corvus.json.jsonschema.draft4": { - "type": "Project", + "System.Reflection.Emit.ILGeneration": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", "dependencies": { - "Corvus.Json.ExtendedTypes": "[1.0.0, )", - "Microsoft.Extensions.Http": "[9.0.0, )", - "Microsoft.Extensions.ObjectPool": "[9.0.0, )", - "NodaTime": "[3.2.1, )", - "System.Collections.Immutable": "[9.0.0, )" + "System.Reflection": "4.1.0", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" } }, - "corvus.json.jsonschema.draft6": { - "type": "Project", + "System.Reflection.Emit.Lightweight": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", "dependencies": { - "Corvus.Json.ExtendedTypes": "[1.0.0, )", - "Microsoft.Extensions.Http": "[9.0.0, )", - "Microsoft.Extensions.ObjectPool": "[9.0.0, )", - "NodaTime": "[3.2.1, )", - "System.Collections.Immutable": "[9.0.0, )" + "System.Reflection": "4.1.0", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" } }, - "corvus.json.jsonschema.draft7": { - "type": "Project", + "System.Reflection.Extensions": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + } + }, + "System.Reflection.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Reflection.TypeExtensions": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", + "dependencies": { + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + } + }, + "System.Resources.ResourceManager": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime": { + "type": "Transitive", + "resolved": "4.3.1", + "contentHash": "abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.1", + "Microsoft.NETCore.Targets": "1.1.3" + } + }, + "System.Runtime.Extensions": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.Handles": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.InteropServices": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + } + }, + "System.Runtime.InteropServices.RuntimeInformation": { + "type": "Transitive", + "resolved": "4.0.0", + "contentHash": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11", + "runtime.native.System": "4.0.0" + } + }, + "System.Runtime.Loader": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "DHMaRn8D8YCK2GG2pw+UzNxn/OHVfaWx7OTLBD/hPegHZZgcZh3H6seWegrC4BYwsfuGrywIuT+MQs+rPqRLTQ==", + "dependencies": { + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" + } + }, + "System.Runtime.Numerics": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", + "dependencies": { + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + } + }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "3.1.0", + "System.Security.Principal.Windows": "4.7.0" + } + }, + "System.Security.Cryptography.Algorithms": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.Apple": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Cryptography.Cng": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0" + } + }, + "System.Security.Cryptography.Csp": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0" + } + }, + "System.Security.Cryptography.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", + "dependencies": { + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Cryptography.Primitives": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", + "dependencies": { + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Security.Cryptography.ProtectedData": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" + }, + "System.Security.Cryptography.X509Certificates": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Cng": "4.3.0", + "System.Security.Cryptography.Csp": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } + }, + "System.Security.Permissions": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", + "dependencies": { + "System.Security.AccessControl": "4.5.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==" + }, + "System.Text.Encoding": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "e2hMgAErLbKyUUwt18qSBf9T5Y+SFAL3ZedM8fLupkVj8Rj2PZ9oxQ37XX2LF8fTO1wNIxvKpihD7Of7D/NxZw==" + }, + "System.Threading": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", + "dependencies": { + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } + }, + "System.Threading.Tasks": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } + }, + "corvus.json.codegeneration": { + "type": "Project", + "dependencies": { + "Corvus.Json.JsonReference": "[1.0.0, )" + } + }, + "corvus.json.codegeneration.201909": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft201909": "[1.0.0, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.codegeneration.202012": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft202012": "[1.0.0, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.codegeneration.4": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft4": "[1.0.0, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.codegeneration.6": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft6": "[1.0.0, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.codegeneration.7": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.Draft7": "[1.0.0, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.codegeneration.csharp": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Microsoft.CodeAnalysis.CSharp": "[4.11.0, )", + "System.Reflection.Metadata": "[9.0.0, )" + } + }, + "corvus.json.codegeneration.openapi30": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration": "[1.0.0, )", + "Corvus.Json.JsonSchema.OpenApi30": "[1.0.0, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.extendedtypes": { + "type": "Project", + "dependencies": { + "Corvus.Json.JsonReference": "[1.0.0, )", + "Corvus.UriTemplates": "[2.3.2, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )", + "System.Text.Json": "[9.0.0, )" + } + }, + "corvus.json.jsonreference": { + "type": "Project", + "dependencies": { + "Corvus.HighPerformance": "[1.0.2, )", + "System.Text.Json": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft201909": { + "type": "Project", "dependencies": { "Corvus.Json.ExtendedTypes": "[1.0.0, )", "Microsoft.Extensions.Http": "[9.0.0, )", @@ -1487,588 +2208,1385 @@ "System.Collections.Immutable": "[9.0.0, )" } }, - "corvus.json.jsonschema.openapi30": { - "type": "Project", + "corvus.json.jsonschema.draft202012": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )" + } + }, + "corvus.json.jsonschema.draft4": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft6": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.draft7": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.jsonschema.openapi30": { + "type": "Project", + "dependencies": { + "Corvus.Json.CodeGeneration.4": "[1.0.0, )", + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + }, + "corvus.json.patch": { + "type": "Project", + "dependencies": { + "Corvus.Json.ExtendedTypes": "[1.0.0, )", + "Microsoft.Extensions.Http": "[9.0.0, )", + "Microsoft.Extensions.ObjectPool": "[9.0.0, )", + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" + } + } + }, + "net9.0": { + "AzurePipelines.TestLogger": { + "type": "Direct", + "requested": "[1.2.3, )", + "resolved": "1.2.3", + "contentHash": "RUJDacs9+6+VzvjX/MXeVldyfgTuA48NQcO3MfsRAJlHDAaUGG7fplUew5czc8ZmfIRd60PAXV91Nz3A43/A3Q==", + "dependencies": { + "Semver": "2.0.6" + } + }, + "Corvus.Testing.SpecFlow.NUnit": { + "type": "Direct", + "requested": "[3.1.1, )", + "resolved": "3.1.1", + "contentHash": "pFMAnu08S1x/QOqH/DIsnNWDus2o6KxGCfsv9Rp7JicnOL3up3fshZSmMlcH//rVbT9qUEdWufavrvgSzhUfQg==", + "dependencies": { + "Corvus.Testing.SpecFlow": "3.1.1", + "Microsoft.NET.Test.Sdk": "17.8.0", + "SpecFlow.NUnit.Runners": "3.9.74", + "coverlet.msbuild": "6.0.0" + } + }, + "Endjin.RecommendedPractices.GitHub": { + "type": "Direct", + "requested": "[2.1.18, )", + "resolved": "2.1.18", + "contentHash": "5zdIpj3qn+hQKvpkJO77wW74S4w8UKE0l8oDIm6jq70X7O0iNfgD+0FzEKXIYM17JtqnVSVaBd4ZyuDxHqVnLg==", + "dependencies": { + "Endjin.RecommendedPractices": "2.1.18", + "Microsoft.SourceLink.GitHub": "1.1.1" + } + }, + "Microsoft.CodeAnalysis.CSharp": { + "type": "Direct", + "requested": "[4.11.0, )", + "resolved": "4.11.0", + "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "Microsoft.CodeAnalysis.Common": "[4.11.0]", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + } + }, + "Microsoft.Extensions.Configuration.Json": { + "type": "Direct", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "WiTK0LrnsqmedrbzwL7f4ZUo+/wByqy2eKab39I380i2rd8ImfCRMrtkqJVGDmfqlkP/YzhckVOwPc5MPrSNpg==", + "dependencies": { + "Microsoft.Extensions.Configuration": "9.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "9.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0" + } + }, + "Microsoft.NET.Test.Sdk": { + "type": "Direct", + "requested": "[17.11.1, )", + "resolved": "17.11.1", + "contentHash": "U3Ty4BaGoEu+T2bwSko9tWqWUOU16WzSFkq6U8zve75oRBMSLTBdMAZrVNNz1Tq12aCdDom9fcOcM9QZaFHqFg==", + "dependencies": { + "Microsoft.CodeCoverage": "17.11.1", + "Microsoft.TestPlatform.TestHost": "17.11.1" + } + }, + "NUnit": { + "type": "Direct", + "requested": "[3.14.0, )", + "resolved": "3.14.0", + "contentHash": "R7iPwD7kbOaP3o2zldWJbWeMQAvDKD0uld27QvA3PAALl1unl7x0v2J7eGiJOYjimV/BuGT4VJmr45RjS7z4LA==", + "dependencies": { + "NETStandard.Library": "2.0.0" + } + }, + "NUnit3TestAdapter": { + "type": "Direct", + "requested": "[4.6.0, )", + "resolved": "4.6.0", + "contentHash": "R7e1+a4vuV/YS+ItfL7f//rG+JBvVeVLX4mHzFEZo4W1qEKl8Zz27AqvQSAqo+BtIzUCo4aAJMYa56VXS4hudw==" + }, + "Roslynator.Analyzers": { + "type": "Direct", + "requested": "[4.13.1, )", + "resolved": "4.13.1", + "contentHash": "KZpLy6ZlCebMk+d/3I5KU2R7AOb4LNJ6tPJqPtvFXmO8bEBHQvCIAvJOnY2tu4C9/aVOROTDYUFADxFqw1gh/g==" + }, + "SolidToken.SpecFlow.DependencyInjection": { + "type": "Direct", + "requested": "[3.9.3, )", + "resolved": "3.9.3", + "contentHash": "ZbG8tm6KSgFx+/Gj/oA/uIb/6wCn1EJdHuDawUf+N0TkQnK0ImamB6/m5OqhNIFIgKJlscKrG4saCzwoKz0NYw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "SpecFlow": "3.9.8" + } + }, + "SpecFlow.NUnit": { + "type": "Direct", + "requested": "[3.9.74, )", + "resolved": "3.9.74", + "contentHash": "nMPLztTT5IZDMnvNCUxklqaM+agn4kjuNy/qAcYQQOxau2G1MF73UxhL9OXjJQaEuPuyT8gJvXudOYCFZWztxA==", + "dependencies": { + "NUnit": "3.13.1", + "SpecFlow": "[3.9.74]", + "SpecFlow.Tools.MsBuild.Generation": "[3.9.74]" + } + }, + "StyleCop.Analyzers": { + "type": "Direct", + "requested": "[1.2.0-beta.556, )", + "resolved": "1.2.0-beta.556", + "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "dependencies": { + "StyleCop.Analyzers.Unstable": "1.2.0.556" + } + }, + "System.Collections.Immutable": { + "type": "Direct", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "QhkXUl2gNrQtvPmtBTQHb0YsUrDiDQ2QS09YbtTTiSjGcf7NBqtYbrG/BE06zcBPCKEwQGzIv13IVdXNOSub2w==" + }, + "System.Reflection.Metadata": { + "type": "Direct", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "ANiqLu3DxW9kol/hMmTWbt3414t9ftdIuiIU7j80okq2YzAueo120M442xk1kDJWtmZTqWQn7wHDvMRipVOEOQ==" + }, + "System.Text.Json": { + "type": "Direct", + "requested": "[9.0.0, )", + "resolved": "9.0.0", + "contentHash": "js7+qAu/9mQvnhA4EfGMZNEzXtJCDxgkgj8ohuxq/Qxv+R56G+ljefhiJHOxTNiw54q8vmABCWUwkMulNdlZ4A==" + }, + "System.Text.RegularExpressions": { + "type": "Direct", + "requested": "[4.3.1, )", + "resolved": "4.3.1", + "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==", + "dependencies": { + "System.Runtime": "4.3.1" + } + }, + "BoDi": { + "type": "Transitive", + "resolved": "1.5.0", + "contentHash": "CzIPzdIAFSd2zuLxI+0K9s48Qv3HQDbWiApn9h96j284rHs2bSPrn/PMca3mi4q3xLSEqOp+GUJ6+mXDD9prKg==" + }, + "CommunityToolkit.HighPerformance": { + "type": "Transitive", + "resolved": "8.3.0", + "contentHash": "2zc0Wfr9OtEbLqm6J1Jycim/nKmYv+v12CytJ3tZGNzw7n3yjh1vNCMX0kIBaFBk3sw8g0pMR86QJGXGlArC+A==" + }, + "Corvus.HighPerformance": { + "type": "Transitive", + "resolved": "1.0.2", + "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5" + } + }, + "Corvus.Testing.SpecFlow": { + "type": "Transitive", + "resolved": "3.1.1", + "contentHash": "V8T7jpAWWfGhokD8M7fMV+JttD9JHGD859W23v6pzIQEx/RwWP60zNABc+uPOZ2K5HBjs3pZzMnSdG6/jP27oA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", + "Microsoft.Extensions.DependencyInjection": "6.0.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", + "NUnit": "3.14.0", + "SpecFlow": "3.9.74", + "System.Management": "4.7.0" + } + }, + "Corvus.UriTemplates": { + "type": "Transitive", + "resolved": "2.3.2", + "contentHash": "XAhHr0F6IOhunpIHFzG0HQSj+/X8L1lSJAExYQl9OEIZGAUZ81pbqWtxuIHL080y1u2dEmw796D7XmM44Je2gw==", + "dependencies": { + "CommunityToolkit.HighPerformance": "8.3.0", + "Corvus.HighPerformance": "1.0.0", + "Microsoft.Extensions.ObjectPool": "8.0.8", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0" + } + }, + "coverlet.msbuild": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "cUKI50VSVBqDQDFIdBnjN0Jk5JYhjtD0geP2BZZv71/ZrKORJXcLRswFsojI+cHdV+rFUL2XDJEpuhK3x1YqLA==" + }, + "Endjin.RecommendedPractices": { + "type": "Transitive", + "resolved": "2.1.18", + "contentHash": "AAD5aVVKTdFYsMpdHft4Q4rPdLaBt/IG4K2ozmB0qkotXpIWBhNUDtguBZCkYvTt0o2UXS5fQDP3os86F03lpw==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "1.1.1" + } + }, + "Gherkin": { + "type": "Transitive", + "resolved": "19.0.3", + "contentHash": "kq9feqMojMj9aABrHb/ABEPaH2Y4dSclseSahAru6qxCeqVQNLLTgw/6vZMauzI1yBUL2fz03ub5yEd5btLfvg==" + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" + }, + "Microsoft.CodeAnalysis.Analyzers": { + "type": "Transitive", + "resolved": "3.3.4", + "contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==" + }, + "Microsoft.CodeAnalysis.Common": { + "type": "Transitive", + "resolved": "4.11.0", + "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" + } + }, + "Microsoft.CodeCoverage": { + "type": "Transitive", + "resolved": "17.11.1", + "contentHash": "nPJqrcA5iX+Y0kqoT3a+pD/8lrW/V7ayqnEJQsTonSoPz59J8bmoQhcSN4G8+UJ64Hkuf0zuxnfuj2lkHOq4cA==" + }, + "Microsoft.DotNet.PlatformAbstractions": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "rF92Gp5L2asYrFNf0cKNBxzzGLh1krHuj6TRDk9wdjN2qdvJLaNYOn1s9oYkMlptYX436KiEFqxhLB+I5veXvQ==", + "dependencies": { + "System.AppContext": "4.1.0", + "System.Collections": "4.0.11", + "System.IO": "4.1.0", + "System.IO.FileSystem": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Runtime.InteropServices.RuntimeInformation": "4.0.0" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "YIMO9T3JL8MeEXgVozKt2v79hquo/EFtnY0vgxmLnUvk1Rei/halI7kOWZL2RBeV9FMGzgM9LZA8CVaNwFMaNA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", + "Microsoft.Extensions.Primitives": "9.0.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "lqvd7W3FGKUO1+ZoUEMaZ5XDJeWvjpy2/M/ptCGz3tXLD4HWVaSzjufsAsjemasBEg+2SxXVtYVvGt5r2nKDlg==", + "dependencies": { + "Microsoft.Extensions.Primitives": "9.0.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "RiScL99DcyngY9zJA2ROrri7Br8tn5N4hP4YNvGdTN/bvg1A3dwvDOxHnNZ3Im7x2SJ5i4LkX1uPiR/MfSFBLQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "9.0.0" + } + }, + "Microsoft.Extensions.Configuration.FileExtensions": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "4EK93Jcd2lQG4GY6PAw8jGss0ZzFP0vPc1J85mES5fKNuDTqgFXHba9onBw2s18fs3I4vdo2AWyfD1mPAxWSQQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "9.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0", + "Microsoft.Extensions.FileProviders.Physical": "9.0.0", + "Microsoft.Extensions.Primitives": "9.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "MCPrg7v3QgNMr0vX4vzRXvkNGgLg8vKWX0nKCWUxu2uPyMsaRgiRc1tHBnbTcfJMhMKj2slE/j2M9oGkd25DNw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "+6f2qv2a3dLwd5w6JanPIPs47CxRbnk+ZocMJUhv9NxP88VlOcJYZs9jY+MYSjxvady08bUZn6qgiNh7DadGgg==" + }, + "Microsoft.Extensions.DependencyModel": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "Z3o19EnheuegmvgpCzwoSlnCWxYA6qIUhvKJ7ifKHHvU7U+oYR/gliLiL3LVYOOeGMEEzkpJ5W67sOcXizGtlw==", + "dependencies": { + "Microsoft.DotNet.PlatformAbstractions": "1.0.3", + "Newtonsoft.Json": "9.0.1", + "System.Diagnostics.Debug": "4.0.11", + "System.Dynamic.Runtime": "4.0.11", + "System.Linq": "4.1.0" + } + }, + "Microsoft.Extensions.Diagnostics": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "0CF9ZrNw5RAlRfbZuVIvzzhP8QeWqHiUmMBU/2H7Nmit8/vwP3/SbHeEctth7D4Gz2fBnEbokPc1NU8/j/1ZLw==", "dependencies": { - "Corvus.Json.CodeGeneration.4": "[1.0.0, )", - "Corvus.Json.ExtendedTypes": "[1.0.0, )", - "Microsoft.Extensions.Http": "[9.0.0, )", - "Microsoft.Extensions.ObjectPool": "[9.0.0, )", - "NodaTime": "[3.2.1, )", - "System.Collections.Immutable": "[9.0.0, )" + "Microsoft.Extensions.Configuration": "9.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.0" } }, - "corvus.json.patch": { - "type": "Project", + "Microsoft.Extensions.Diagnostics.Abstractions": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "1K8P7XzuzX8W8pmXcZjcrqS6x5eSSdvhQohmcpgiQNY/HlDAlnrhR9dvlURfFz428A+RTCJpUyB+aKTA6AgVcQ==", "dependencies": { - "Corvus.Json.ExtendedTypes": "[1.0.0, )", - "Microsoft.Extensions.Http": "[9.0.0, )", - "Microsoft.Extensions.ObjectPool": "[9.0.0, )", - "NodaTime": "[3.2.1, )", - "System.Collections.Immutable": "[9.0.0, )" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", + "Microsoft.Extensions.Options": "9.0.0" } - } - }, - "net9.0": { - "AzurePipelines.TestLogger": { - "type": "Direct", - "requested": "[1.2.3, )", - "resolved": "1.2.3", - "contentHash": "RUJDacs9+6+VzvjX/MXeVldyfgTuA48NQcO3MfsRAJlHDAaUGG7fplUew5czc8ZmfIRd60PAXV91Nz3A43/A3Q==", + }, + "Microsoft.Extensions.FileProviders.Abstractions": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "uK439QzYR0q2emLVtYzwyK3x+T5bTY4yWsd/k/ZUS9LR6Sflp8MIdhGXW8kQCd86dQD4tLqvcbLkku8qHY263Q==", "dependencies": { - "Semver": "2.0.6" + "Microsoft.Extensions.Primitives": "9.0.0" } }, - "Corvus.Testing.SpecFlow.NUnit": { - "type": "Direct", - "requested": "[3.1.1, )", - "resolved": "3.1.1", - "contentHash": "pFMAnu08S1x/QOqH/DIsnNWDus2o6KxGCfsv9Rp7JicnOL3up3fshZSmMlcH//rVbT9qUEdWufavrvgSzhUfQg==", + "Microsoft.Extensions.FileProviders.Physical": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "3+ZUSpOSmie+o8NnLIRqCxSh65XL/ExU7JYnFOg58awDRlY3lVpZ9A369jkoZL1rpsq7LDhEfkn2ghhGaY1y5Q==", "dependencies": { - "Corvus.Testing.SpecFlow": "3.1.1", - "Microsoft.NET.Test.Sdk": "17.8.0", - "SpecFlow.NUnit.Runners": "3.9.74", - "coverlet.msbuild": "6.0.0" + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "9.0.0", + "Microsoft.Extensions.Primitives": "9.0.0" } }, - "Endjin.RecommendedPractices.GitHub": { - "type": "Direct", - "requested": "[2.1.18, )", - "resolved": "2.1.18", - "contentHash": "5zdIpj3qn+hQKvpkJO77wW74S4w8UKE0l8oDIm6jq70X7O0iNfgD+0FzEKXIYM17JtqnVSVaBd4ZyuDxHqVnLg==", + "Microsoft.Extensions.FileSystemGlobbing": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "jGFKZiXs2HNseK3NK/rfwHNNovER71jSj4BD1a/649ml9+h6oEtYd0GSALZDNW8jZ2Rh+oAeadOa6sagYW1F2A==" + }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "DqI4q54U4hH7bIAq9M5a/hl5Odr/KBAoaZ0dcT4OgutD8dook34CbkvAfAIzkMVjYXiL+E5ul9etwwqiX4PHGw==", "dependencies": { - "Endjin.RecommendedPractices": "2.1.18", - "Microsoft.SourceLink.GitHub": "1.1.1" + "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", + "Microsoft.Extensions.Diagnostics": "9.0.0", + "Microsoft.Extensions.Logging": "9.0.0", + "Microsoft.Extensions.Logging.Abstractions": "9.0.0", + "Microsoft.Extensions.Options": "9.0.0" } }, - "Microsoft.CodeAnalysis.CSharp": { - "type": "Direct", - "requested": "[4.11.0, )", - "resolved": "4.11.0", - "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", + "Microsoft.Extensions.Logging": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "crjWyORoug0kK7RSNJBTeSE6VX8IQgLf3nUpTB9m62bPXp/tzbnOsnbe8TXEG0AASNaKZddnpHKw7fET8E++Pg==", "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]" + "Microsoft.Extensions.DependencyInjection": "9.0.0", + "Microsoft.Extensions.Logging.Abstractions": "9.0.0", + "Microsoft.Extensions.Options": "9.0.0" } }, - "Microsoft.Extensions.Configuration.Json": { - "type": "Direct", - "requested": "[9.0.0, )", + "Microsoft.Extensions.Logging.Abstractions": { + "type": "Transitive", "resolved": "9.0.0", - "contentHash": "WiTK0LrnsqmedrbzwL7f4ZUo+/wByqy2eKab39I380i2rd8ImfCRMrtkqJVGDmfqlkP/YzhckVOwPc5MPrSNpg==", + "contentHash": "g0UfujELzlLbHoVG8kPKVBaW470Ewi+jnptGS9KUi6jcb+k2StujtK3m26DFSGGwQ/+bVgZfsWqNzlP6YOejvw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0" + } + }, + "Microsoft.Extensions.ObjectPool": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "UbsU/gYe4nv1DeqMXIVzDfNNek7Sk2kKuAOXL/Y+sLcAR0HwFUqzg1EPiU88jeHNe0g81aPvvHbvHarQr3r9IA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "y2146b3jrPI3Q0lokKXdKLpmXqakYbDIPDV6r3M8SqvSf45WwOTzkyfDpxnZXJsJQEpAsAqjUq5Pu8RCJMjubg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", + "Microsoft.Extensions.Primitives": "9.0.0" + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "Ob3FXsXkcSMQmGZi7qP07EQ39kZpSBlTcAZLbJLdI4FIf0Jug8biv2HTavWmnTirchctPlq9bl/26CXtQRguzA==", "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.0", "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", - "Microsoft.Extensions.Configuration.FileExtensions": "9.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0" + "Microsoft.Extensions.Configuration.Binder": "9.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", + "Microsoft.Extensions.Options": "9.0.0", + "Microsoft.Extensions.Primitives": "9.0.0" } }, - "Microsoft.NET.Test.Sdk": { - "type": "Direct", - "requested": "[17.11.1, )", + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "9.0.0", + "contentHash": "N3qEBzmLMYiASUlKxxFIISP4AiwuPTHF5uCh+2CWSwwzAJiIYx0kBJsS30cp1nvhSySFAVi30jecD307jV+8Kg==" + }, + "Microsoft.NETCore.Platforms": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==" + }, + "Microsoft.NETCore.Targets": { + "type": "Transitive", + "resolved": "1.1.3", + "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" + }, + "Microsoft.SourceLink.GitHub": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "1.1.1", + "Microsoft.SourceLink.Common": "1.1.1" + } + }, + "Microsoft.TestPlatform.ObjectModel": { + "type": "Transitive", "resolved": "17.11.1", - "contentHash": "U3Ty4BaGoEu+T2bwSko9tWqWUOU16WzSFkq6U8zve75oRBMSLTBdMAZrVNNz1Tq12aCdDom9fcOcM9QZaFHqFg==", + "contentHash": "E2jZqAU6JeWEVsyOEOrSW1o1bpHLgb25ypvKNB/moBXPVsFYBPd/Jwi7OrYahG50J83LfHzezYI+GaEkpAotiA==", "dependencies": { - "Microsoft.CodeCoverage": "17.11.1", - "Microsoft.TestPlatform.TestHost": "17.11.1" + "System.Reflection.Metadata": "1.6.0" } }, - "NUnit": { - "type": "Direct", - "requested": "[3.14.0, )", - "resolved": "3.14.0", - "contentHash": "R7iPwD7kbOaP3o2zldWJbWeMQAvDKD0uld27QvA3PAALl1unl7x0v2J7eGiJOYjimV/BuGT4VJmr45RjS7z4LA==", + "Microsoft.TestPlatform.TestHost": { + "type": "Transitive", + "resolved": "17.11.1", + "contentHash": "DnG+GOqJXO/CkoqlJWeDFTgPhqD/V6VqUIL3vINizCWZ3X+HshCtbbyDdSHQQEjrc2Sl/K3yaxX6s+5LFEdYuw==", "dependencies": { - "NETStandard.Library": "2.0.0" + "Microsoft.TestPlatform.ObjectModel": "17.11.1", + "Newtonsoft.Json": "13.0.1" } }, - "NUnit3TestAdapter": { - "type": "Direct", - "requested": "[4.6.0, )", - "resolved": "4.6.0", - "contentHash": "R7e1+a4vuV/YS+ItfL7f//rG+JBvVeVLX4mHzFEZo4W1qEKl8Zz27AqvQSAqo+BtIzUCo4aAJMYa56VXS4hudw==" + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", + "dependencies": { + "System.Security.AccessControl": "4.7.0", + "System.Security.Principal.Windows": "4.7.0" + } }, - "Roslynator.Analyzers": { - "type": "Direct", - "requested": "[4.13.1, )", - "resolved": "4.13.1", - "contentHash": "KZpLy6ZlCebMk+d/3I5KU2R7AOb4LNJ6tPJqPtvFXmO8bEBHQvCIAvJOnY2tu4C9/aVOROTDYUFADxFqw1gh/g==" + "NETStandard.Library": { + "type": "Transitive", + "resolved": "2.0.0", + "contentHash": "7jnbRU+L08FXKMxqUflxEXtVymWvNOrS8yHgu9s6EM8Anr6T/wIX4nZ08j/u3Asz+tCufp3YVwFSEvFTPYmBPA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + }, + "Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.1", + "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" + }, + "NodaTime": { + "type": "Transitive", + "resolved": "3.2.1", + "contentHash": "D1aHhUfPQUxU2nfDCVuSLahpp0xCYZTmj/KNH3mSK/tStJYcx9HO9aJ0qbOP3hzjGPV/DXOqY2AHe27Nt4xs4g==" + }, + "NUnit.Console": { + "type": "Transitive", + "resolved": "3.12.0", + "contentHash": "9KXFnViEIKQjz4vqiYFpLV9sntfHxixQomLCJzDMXC6WDo9DP2GhDQiBND6we6MRStMSNzoAWgourbLKwo7utQ==", + "dependencies": { + "NUnit.ConsoleRunner": "3.12.0", + "NUnit.Extension.NUnitProjectLoader": "3.6.0", + "NUnit.Extension.NUnitV2Driver": "3.8.0", + "NUnit.Extension.NUnitV2ResultWriter": "3.6.0", + "NUnit.Extension.TeamCityEventListener": "1.0.7", + "NUnit.Extension.VSProjectLoader": "3.8.0" + } + }, + "NUnit.ConsoleRunner": { + "type": "Transitive", + "resolved": "3.12.0", + "contentHash": "ZUtI8leU9ozCjLy4ZZ2X6ClU0hxfQtb95VOdmMA4SxIUvf62rIPxoHXS+jghvo5QxgRihGGcEp8xT3vCfgDdsA==" + }, + "NUnit.Extension.NUnitProjectLoader": { + "type": "Transitive", + "resolved": "3.6.0", + "contentHash": "ev2+dCJShMNIATkYNm/vHEuieBfbismr9DcUfBvafJZf5vNyugXPuMXO/MaOFcJaoW9j6/zjMmXKG7R5umWzXA==" + }, + "NUnit.Extension.NUnitV2Driver": { + "type": "Transitive", + "resolved": "3.8.0", + "contentHash": "l6MgFJPTnrlDaMXWfbUZ82h1uvtj0C1ExPpqm6HrYOBa5Z4MBwmFLqj85rnv9JMhu/Ju7jQB/FIaMbfoXInI2A==" + }, + "NUnit.Extension.NUnitV2ResultWriter": { + "type": "Transitive", + "resolved": "3.6.0", + "contentHash": "P/Nc+wgFRe3dT59/VjhiIT0SWfLMbb/Vc9AtBU3L71VOCs8zQnuNjCOEFLQL/Mq6XSaZeB2Sug9tUgTfCnQk9w==" + }, + "NUnit.Extension.TeamCityEventListener": { + "type": "Transitive", + "resolved": "1.0.7", + "contentHash": "bw+ZwHsUmxqb9leo91qLEF7ggtdpawY2V6wNqHI6+ATa2SHxHxoxiV5UV07ZWDRpf/qlQJELNlZu7wIB3+w2qQ==" + }, + "NUnit.Extension.VSProjectLoader": { + "type": "Transitive", + "resolved": "3.8.0", + "contentHash": "CIScV9a7+wUu6Ylb+WO0q/WGWQVoB05TUj3XZHa1CO+2BInDdfIVkqtlrSguhy6D/AGIMaLVrCZpQkQ2m0bbzQ==" + }, + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "7VSGO0URRKoMEAq0Sc9cRz8mb6zbyx/BZDEWhgPdzzpmFhkam3fJ1DAGWFXBI4nGlma+uPKpfuMQP5LXRnOH5g==" + }, + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "0oAaTAm6e2oVH+/Zttt0cuhGaePQYKII1dY8iaqP7CvOpVKgLybKRFvQjXR2LtxXOXTVPNv14j0ot8uV+HrUmw==" }, - "SolidToken.SpecFlow.DependencyInjection": { - "type": "Direct", - "requested": "[3.9.3, )", - "resolved": "3.9.3", - "contentHash": "ZbG8tm6KSgFx+/Gj/oA/uIb/6wCn1EJdHuDawUf+N0TkQnK0ImamB6/m5OqhNIFIgKJlscKrG4saCzwoKz0NYw==", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "G24ibsCNi5Kbz0oXWynBoRgtGvsw5ZSVEWjv13/KiCAM8C6wz9zzcCniMeQFIkJ2tasjo2kXlvlBZhplL51kGg==" + }, + "runtime.native.System": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", "dependencies": { - "Microsoft.Extensions.DependencyInjection": "3.1.0", - "SpecFlow": "3.9.8" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" } }, - "SpecFlow.NUnit": { - "type": "Direct", - "requested": "[3.9.74, )", - "resolved": "3.9.74", - "contentHash": "nMPLztTT5IZDMnvNCUxklqaM+agn4kjuNy/qAcYQQOxau2G1MF73UxhL9OXjJQaEuPuyT8gJvXudOYCFZWztxA==", + "runtime.native.System.Net.Http": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", "dependencies": { - "NUnit": "3.13.1", - "SpecFlow": "[3.9.74]", - "SpecFlow.Tools.MsBuild.Generation": "[3.9.74]" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0" } }, - "StyleCop.Analyzers": { - "type": "Direct", - "requested": "[1.2.0-beta.556, )", - "resolved": "1.2.0-beta.556", - "contentHash": "llRPgmA1fhC0I0QyFLEcjvtM2239QzKr/tcnbsjArLMJxJlu0AA5G7Fft0OI30pHF3MW63Gf4aSSsjc5m82J1Q==", + "runtime.native.System.Security.Cryptography.Apple": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", "dependencies": { - "StyleCop.Analyzers.Unstable": "1.2.0.556" + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" } }, - "System.Collections.Immutable": { - "type": "Direct", - "requested": "[9.0.0, )", - "resolved": "9.0.0", - "contentHash": "QhkXUl2gNrQtvPmtBTQHb0YsUrDiDQ2QS09YbtTTiSjGcf7NBqtYbrG/BE06zcBPCKEwQGzIv13IVdXNOSub2w==" + "runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "QR1OwtwehHxSeQvZKXe+iSd+d3XZNkEcuWMFYa2i0aG1l+lR739HPicKMlTbJst3spmeekDVBUS7SeS26s4U/g==", + "dependencies": { + "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2", + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" + } }, - "System.Reflection.Metadata": { - "type": "Direct", - "requested": "[9.0.0, )", - "resolved": "9.0.0", - "contentHash": "ANiqLu3DxW9kol/hMmTWbt3414t9ftdIuiIU7j80okq2YzAueo120M442xk1kDJWtmZTqWQn7wHDvMRipVOEOQ==" + "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "I+GNKGg2xCHueRd1m9PzeEW7WLbNNLznmTuEi8/vZX71HudUbx1UTwlGkiwMri7JLl8hGaIAWnA/GONhu+LOyQ==" }, - "System.Text.Json": { - "type": "Direct", - "requested": "[9.0.0, )", - "resolved": "9.0.0", - "contentHash": "js7+qAu/9mQvnhA4EfGMZNEzXtJCDxgkgj8ohuxq/Qxv+R56G+ljefhiJHOxTNiw54q8vmABCWUwkMulNdlZ4A==" + "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "1Z3TAq1ytS1IBRtPXJvEUZdVsfWfeNEhBkbiOCGEl9wwAfsjP2lz3ZFDx5tq8p60/EqbS0HItG5piHuB71RjoA==" }, - "System.Text.RegularExpressions": { - "type": "Direct", - "requested": "[4.3.1, )", - "resolved": "4.3.1", - "contentHash": "N0kNRrWe4+nXOWlpLT4LAY5brb8caNFlUuIRpraCVMDLYutKkol1aV079rQjLuSxKMJT2SpBQsYX9xbcTMmzwg==" + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==" }, - "BoDi": { + "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "1.5.0", - "contentHash": "CzIPzdIAFSd2zuLxI+0K9s48Qv3HQDbWiApn9h96j284rHs2bSPrn/PMca3mi4q3xLSEqOp+GUJ6+mXDD9prKg==" + "resolved": "4.3.2", + "contentHash": "6mU/cVmmHtQiDXhnzUImxIcDL48GbTk+TsptXyJA+MIOG9LRjPoAQC/qBFB7X+UNyK86bmvGwC8t+M66wsYC8w==" }, - "CommunityToolkit.HighPerformance": { + "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "8.3.0", - "contentHash": "2zc0Wfr9OtEbLqm6J1Jycim/nKmYv+v12CytJ3tZGNzw7n3yjh1vNCMX0kIBaFBk3sw8g0pMR86QJGXGlArC+A==" + "resolved": "4.3.2", + "contentHash": "vjwG0GGcTW/PPg6KVud8F9GLWYuAV1rrw1BKAqY0oh4jcUqg15oYF1+qkGR2x2ZHM4DQnWKQ7cJgYbfncz/lYg==" }, - "Corvus.HighPerformance": { + "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "1.0.2", - "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==" + "resolved": "4.3.2", + "contentHash": "7KMFpTkHC/zoExs+PwP8jDCWcrK9H6L7soowT80CUx3e+nxP/AFnq0AQAW5W76z2WYbLAYCRyPfwYFG6zkvQRw==" }, - "Corvus.Testing.SpecFlow": { + "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "3.1.1", - "contentHash": "V8T7jpAWWfGhokD8M7fMV+JttD9JHGD859W23v6pzIQEx/RwWP60zNABc+uPOZ2K5HBjs3pZzMnSdG6/jP27oA==", + "resolved": "4.3.2", + "contentHash": "xrlmRCnKZJLHxyyLIqkZjNXqgxnKdZxfItrPkjI+6pkRo5lHX8YvSZlWrSI5AVwLMi4HbNWP7064hcAWeZKp5w==" + }, + "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": { + "type": "Transitive", + "resolved": "4.3.2", + "contentHash": "leXiwfiIkW7Gmn7cgnNcdtNAU70SjmKW3jxGj1iKHOvdn0zRWsgv/l2OJUO5zdGdiv2VRFnAsxxhDgMzofPdWg==" + }, + "Semver": { + "type": "Transitive", + "resolved": "2.0.6", + "contentHash": "6OD3Gn+ElluZ9xNa0SspcANjvLt0KdSLiR1wl7ls6ykZxdfDBUruY5LMpMk2q8+EAT3DsvX4SjCDi7EVqdA/fA==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "6.0.0", - "Microsoft.Extensions.DependencyInjection": "6.0.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0", - "NUnit": "3.14.0", - "SpecFlow": "3.9.74", - "System.Management": "4.7.0" + "NETStandard.Library": "1.6.1" } }, - "Corvus.UriTemplates": { + "SpecFlow": { "type": "Transitive", - "resolved": "2.3.2", - "contentHash": "XAhHr0F6IOhunpIHFzG0HQSj+/X8L1lSJAExYQl9OEIZGAUZ81pbqWtxuIHL080y1u2dEmw796D7XmM44Je2gw==", + "resolved": "3.9.74", + "contentHash": "n6kcg9ZeQWxqJFoT23SsFT89U1QQNwvcN9pAX5alB6ZPr6K0p5D5nGIJ1PZsSaFaRFutiwQ+DicmxBCPAZVYIA==", "dependencies": { - "CommunityToolkit.HighPerformance": "8.3.0", - "Corvus.HighPerformance": "1.0.0", - "Microsoft.Extensions.ObjectPool": "8.0.8" + "BoDi": "1.5.0", + "Gherkin": "19.0.3", + "Microsoft.Extensions.DependencyModel": "1.0.3", + "SpecFlow.Internal.Json": "1.0.8", + "System.Configuration.ConfigurationManager": "4.5.0", + "System.Net.Http": "4.3.4", + "System.Runtime.Loader": "4.3.0" } }, - "coverlet.msbuild": { + "SpecFlow.Internal.Json": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "cUKI50VSVBqDQDFIdBnjN0Jk5JYhjtD0geP2BZZv71/ZrKORJXcLRswFsojI+cHdV+rFUL2XDJEpuhK3x1YqLA==" + "resolved": "1.0.8", + "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" }, - "Endjin.RecommendedPractices": { + "SpecFlow.NUnit.Runners": { "type": "Transitive", - "resolved": "2.1.18", - "contentHash": "AAD5aVVKTdFYsMpdHft4Q4rPdLaBt/IG4K2ozmB0qkotXpIWBhNUDtguBZCkYvTt0o2UXS5fQDP3os86F03lpw==", + "resolved": "3.9.74", + "contentHash": "m595x3GM7CYco+KsXo96irQ2jcjC6+1+41bKdmnTdl3RAvnC4jUZ9f5B5FhGuaVK4+j4GwWi8MZtGMrT//zHLA==", "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1" + "NUnit.Console": "3.12.0", + "NUnit3TestAdapter": "3.17.0", + "SpecFlow.NUnit": "[3.9.74]" } }, - "Gherkin": { + "SpecFlow.Tools.MsBuild.Generation": { "type": "Transitive", - "resolved": "19.0.3", - "contentHash": "kq9feqMojMj9aABrHb/ABEPaH2Y4dSclseSahAru6qxCeqVQNLLTgw/6vZMauzI1yBUL2fz03ub5yEd5btLfvg==" + "resolved": "3.9.74", + "contentHash": "I/9OvmKOohJqIUNJ0xGYJCWfL6WKDaes8OoOAD/2yhGX+tzC5ofs9yqkP9Cu/xfnIx+11IR3pZs7YhBhGAcgWQ==", + "dependencies": { + "SpecFlow": "[3.9.74]" + } }, - "Microsoft.Build.Tasks.Git": { + "StyleCop.Analyzers.Unstable": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "AT3HlgTjsqHnWpBHSNeR0KxbLZD7bztlZVj7I8vgeYG9SYqbeFGh0TM/KVtC6fg53nrWHl3VfZFvb5BiQFcY6Q==" + "resolved": "1.2.0.556", + "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" }, - "Microsoft.CodeAnalysis.Analyzers": { + "System.AppContext": { "type": "Transitive", - "resolved": "3.3.4", - "contentHash": "AxkxcPR+rheX0SmvpLVIGLhOUXAKG56a64kV9VQZ4y9gR9ZmPXnqZvHJnmwLSwzrEP6junUF11vuc+aqo5r68g==" + "resolved": "4.1.0", + "contentHash": "3QjO4jNV7PdKkmQAVp9atA+usVnKRwI3Kx1nMwJ93T0LcQfx7pKAYk0nKz5wn1oP5iqlhZuy6RXOFdhr7rDwow==", + "dependencies": { + "System.Runtime": "4.1.0" + } }, - "Microsoft.CodeAnalysis.Common": { + "System.Buffers": { "type": "Transitive", - "resolved": "4.11.0", - "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.CodeDom": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "Hs9pw/kmvH3lXaZ1LFKj3pLQsiGfj2xo3sxSzwiLlRL6UcMZUTeCfoJ9Udalvn3yq5dLlPEZzYegrTQ1/LhPOQ==" + }, + "System.Collections": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" } }, - "Microsoft.CodeCoverage": { + "System.Collections.Concurrent": { "type": "Transitive", - "resolved": "17.11.1", - "contentHash": "nPJqrcA5iX+Y0kqoT3a+pD/8lrW/V7ayqnEJQsTonSoPz59J8bmoQhcSN4G8+UJ64Hkuf0zuxnfuj2lkHOq4cA==" + "resolved": "4.3.0", + "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" + } }, - "Microsoft.DotNet.PlatformAbstractions": { + "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "rF92Gp5L2asYrFNf0cKNBxzzGLh1krHuj6TRDk9wdjN2qdvJLaNYOn1s9oYkMlptYX436KiEFqxhLB+I5veXvQ==" + "resolved": "4.5.0", + "contentHash": "UIFvaFfuKhLr9u5tWMxmVoDPkFeD+Qv8gUuap4aZgVGYSYMdERck4OhLN/2gulAc0nYTEigWXSJNNWshrmxnng==", + "dependencies": { + "System.Security.Cryptography.ProtectedData": "4.5.0", + "System.Security.Permissions": "4.5.0" + } }, - "Microsoft.Extensions.Configuration": { + "System.Diagnostics.Debug": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "YIMO9T3JL8MeEXgVozKt2v79hquo/EFtnY0vgxmLnUvk1Rei/halI7kOWZL2RBeV9FMGzgM9LZA8CVaNwFMaNA==", + "resolved": "4.3.0", + "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", - "Microsoft.Extensions.Primitives": "9.0.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" } }, - "Microsoft.Extensions.Configuration.Abstractions": { + "System.Diagnostics.DiagnosticSource": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "lqvd7W3FGKUO1+ZoUEMaZ5XDJeWvjpy2/M/ptCGz3tXLD4HWVaSzjufsAsjemasBEg+2SxXVtYVvGt5r2nKDlg==", + "resolved": "4.3.0", + "contentHash": "tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==", "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.0" + "System.Collections": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0" } }, - "Microsoft.Extensions.Configuration.Binder": { + "System.Diagnostics.Tracing": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "RiScL99DcyngY9zJA2ROrri7Br8tn5N4hP4YNvGdTN/bvg1A3dwvDOxHnNZ3Im7x2SJ5i4LkX1uPiR/MfSFBLQ==", + "resolved": "4.3.0", + "contentHash": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" } }, - "Microsoft.Extensions.Configuration.FileExtensions": { + "System.Dynamic.Runtime": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "4EK93Jcd2lQG4GY6PAw8jGss0ZzFP0vPc1J85mES5fKNuDTqgFXHba9onBw2s18fs3I4vdo2AWyfD1mPAxWSQQ==", + "resolved": "4.0.11", + "contentHash": "db34f6LHYM0U0JpE+sOmjar27BnqTVkbLJhgfwMpTdgTigG/Hna3m2MYVwnFzGGKnEJk2UXFuoVTr8WUbU91/A==", "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.0", - "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", - "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0", - "Microsoft.Extensions.FileProviders.Physical": "9.0.0", - "Microsoft.Extensions.Primitives": "9.0.0" + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" } }, - "Microsoft.Extensions.DependencyInjection": { + "System.Globalization": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "MCPrg7v3QgNMr0vX4vzRXvkNGgLg8vKWX0nKCWUxu2uPyMsaRgiRc1tHBnbTcfJMhMKj2slE/j2M9oGkd25DNw==", + "resolved": "4.3.0", + "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" } }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { + "System.Globalization.Calendars": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "+6f2qv2a3dLwd5w6JanPIPs47CxRbnk+ZocMJUhv9NxP88VlOcJYZs9jY+MYSjxvady08bUZn6qgiNh7DadGgg==" + "resolved": "4.3.0", + "contentHash": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Runtime": "4.3.0" + } }, - "Microsoft.Extensions.DependencyModel": { + "System.Globalization.Extensions": { "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "Z3o19EnheuegmvgpCzwoSlnCWxYA6qIUhvKJ7ifKHHvU7U+oYR/gliLiL3LVYOOeGMEEzkpJ5W67sOcXizGtlw==", + "resolved": "4.3.0", + "contentHash": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", "dependencies": { - "Microsoft.DotNet.PlatformAbstractions": "1.0.3", - "Newtonsoft.Json": "9.0.1" + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.InteropServices": "4.3.0" } }, - "Microsoft.Extensions.Diagnostics": { + "System.IO": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "0CF9ZrNw5RAlRfbZuVIvzzhP8QeWqHiUmMBU/2H7Nmit8/vwP3/SbHeEctth7D4Gz2fBnEbokPc1NU8/j/1ZLw==", + "resolved": "4.3.0", + "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==", "dependencies": { - "Microsoft.Extensions.Configuration": "9.0.0", - "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" } }, - "Microsoft.Extensions.Diagnostics.Abstractions": { + "System.IO.FileSystem": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "1K8P7XzuzX8W8pmXcZjcrqS6x5eSSdvhQohmcpgiQNY/HlDAlnrhR9dvlURfFz428A+RTCJpUyB+aKTA6AgVcQ==", + "resolved": "4.3.0", + "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", - "Microsoft.Extensions.Options": "9.0.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading.Tasks": "4.3.0" } }, - "Microsoft.Extensions.FileProviders.Abstractions": { + "System.IO.FileSystem.Primitives": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "uK439QzYR0q2emLVtYzwyK3x+T5bTY4yWsd/k/ZUS9LR6Sflp8MIdhGXW8kQCd86dQD4tLqvcbLkku8qHY263Q==", + "resolved": "4.3.0", + "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==", "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.0" + "System.Runtime": "4.3.0" + } + }, + "System.Linq": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==", + "dependencies": { + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + } + }, + "System.Linq.Expressions": { + "type": "Transitive", + "resolved": "4.1.0", + "contentHash": "I+y02iqkgmCAyfbqOmSDOgqdZQ5tTj80Akm5BPSS8EeB0VGWdy6X1KCoYe8Pk6pwDoAKZUOdLVxnTJcExiv5zw==", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Globalization": "4.0.11", + "System.IO": "4.1.0", + "System.Linq": "4.1.0", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Emit": "4.0.1", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Emit.Lightweight": "4.0.1", + "System.Reflection.Extensions": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Reflection.TypeExtensions": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + } + }, + "System.Management": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "IY+uuGhgzWiCg21i8IvQeY/Z7m1tX8VuPF+ludfn7iTCaccTtJo5HkjZbBEL8kbBubKhAKKtNXr7uMtmAc28Pw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "3.1.0", + "Microsoft.Win32.Registry": "4.7.0", + "System.CodeDom": "4.7.0" + } + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==" + }, + "System.Net.Http": { + "type": "Transitive", + "resolved": "4.3.4", + "contentHash": "aOa2d51SEbmM+H+Csw7yJOuNZoHkrP2XnAurye5HWYgGVVU54YZDvsLUYRv6h18X3sPnjNCANmN7ZhIPiqMcjA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.1", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Diagnostics.DiagnosticSource": "4.3.0", + "System.Diagnostics.Tracing": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Extensions": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.Net.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Security.Cryptography.X509Certificates": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.2" } }, - "Microsoft.Extensions.FileProviders.Physical": { + "System.Net.Primitives": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "3+ZUSpOSmie+o8NnLIRqCxSh65XL/ExU7JYnFOg58awDRlY3lVpZ9A369jkoZL1rpsq7LDhEfkn2ghhGaY1y5Q==", + "resolved": "4.3.0", + "contentHash": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0", - "Microsoft.Extensions.FileSystemGlobbing": "9.0.0", - "Microsoft.Extensions.Primitives": "9.0.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" } }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "jGFKZiXs2HNseK3NK/rfwHNNovER71jSj4BD1a/649ml9+h6oEtYd0GSALZDNW8jZ2Rh+oAeadOa6sagYW1F2A==" - }, - "Microsoft.Extensions.Http": { + "System.ObjectModel": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "DqI4q54U4hH7bIAq9M5a/hl5Odr/KBAoaZ0dcT4OgutD8dook34CbkvAfAIzkMVjYXiL+E5ul9etwwqiX4PHGw==", + "resolved": "4.0.12", + "contentHash": "tAgJM1xt3ytyMoW4qn4wIqgJYm7L7TShRZG4+Q4Qsi2PCcj96pXN7nRywS9KkB3p/xDUjc2HSwP9SROyPYDYKQ==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", - "Microsoft.Extensions.Diagnostics": "9.0.0", - "Microsoft.Extensions.Logging": "9.0.0", - "Microsoft.Extensions.Logging.Abstractions": "9.0.0", - "Microsoft.Extensions.Options": "9.0.0" + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Threading": "4.0.11" } }, - "Microsoft.Extensions.Logging": { + "System.Reflection": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "crjWyORoug0kK7RSNJBTeSE6VX8IQgLf3nUpTB9m62bPXp/tzbnOsnbe8TXEG0AASNaKZddnpHKw7fET8E++Pg==", + "resolved": "4.3.0", + "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", "dependencies": { - "Microsoft.Extensions.DependencyInjection": "9.0.0", - "Microsoft.Extensions.Logging.Abstractions": "9.0.0", - "Microsoft.Extensions.Options": "9.0.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0" } }, - "Microsoft.Extensions.Logging.Abstractions": { + "System.Reflection.Emit": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "g0UfujELzlLbHoVG8kPKVBaW470Ewi+jnptGS9KUi6jcb+k2StujtK3m26DFSGGwQ/+bVgZfsWqNzlP6YOejvw==", + "resolved": "4.0.1", + "contentHash": "P2wqAj72fFjpP6wb9nSfDqNBMab+2ovzSDzUZK7MVIm54tBJEPr9jWfSjjoTpPwj1LeKcmX3vr0ttyjSSFM47g==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0" + "System.IO": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" } }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "UbsU/gYe4nv1DeqMXIVzDfNNek7Sk2kKuAOXL/Y+sLcAR0HwFUqzg1EPiU88jeHNe0g81aPvvHbvHarQr3r9IA==" - }, - "Microsoft.Extensions.Options": { + "System.Reflection.Emit.ILGeneration": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "y2146b3jrPI3Q0lokKXdKLpmXqakYbDIPDV6r3M8SqvSf45WwOTzkyfDpxnZXJsJQEpAsAqjUq5Pu8RCJMjubg==", + "resolved": "4.0.1", + "contentHash": "Ov6dU8Bu15Bc7zuqttgHF12J5lwSWyTf1S+FJouUXVMSqImLZzYaQ+vRr1rQ0OZ0HqsrwWl4dsKHELckQkVpgA==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", - "Microsoft.Extensions.Primitives": "9.0.0" + "System.Reflection": "4.1.0", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" } }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { + "System.Reflection.Emit.Lightweight": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "Ob3FXsXkcSMQmGZi7qP07EQ39kZpSBlTcAZLbJLdI4FIf0Jug8biv2HTavWmnTirchctPlq9bl/26CXtQRguzA==", + "resolved": "4.0.1", + "contentHash": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "9.0.0", - "Microsoft.Extensions.Configuration.Binder": "9.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.0", - "Microsoft.Extensions.Options": "9.0.0", - "Microsoft.Extensions.Primitives": "9.0.0" + "System.Reflection": "4.1.0", + "System.Reflection.Emit.ILGeneration": "4.0.1", + "System.Reflection.Primitives": "4.0.1", + "System.Runtime": "4.1.0" } }, - "Microsoft.Extensions.Primitives": { + "System.Reflection.Extensions": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "N3qEBzmLMYiASUlKxxFIISP4AiwuPTHF5uCh+2CWSwwzAJiIYx0kBJsS30cp1nvhSySFAVi30jecD307jV+8Kg==" + "resolved": "4.0.1", + "contentHash": "GYrtRsZcMuHF3sbmRHfMYpvxZoIN2bQGrYGerUiWLEkqdEUQZhH3TRSaC/oI4wO0II1RKBPlpIa1TOMxIcOOzQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "Microsoft.NETCore.Targets": "1.0.1", + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + } }, - "Microsoft.NETCore.Platforms": { + "System.Reflection.Primitives": { "type": "Transitive", - "resolved": "3.1.0", - "contentHash": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==" + "resolved": "4.3.0", + "contentHash": "5RXItQz5As4xN2/YUDxdpsEkMhvw3e6aNveFXUn4Hl/udNTCNhnKp8lT9fnc3MhvGKh1baak5CovpuQUXHAlIA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } }, - "Microsoft.SourceLink.Common": { + "System.Reflection.TypeExtensions": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "WMcGpWKrmJmzrNeuaEb23bEMnbtR/vLmvZtkAP5qWu7vQsY59GqfRJd65sFpBszbd2k/bQ8cs8eWawQKAabkVg==" + "resolved": "4.1.0", + "contentHash": "tsQ/ptQ3H5FYfON8lL4MxRk/8kFyE0A+tGPXmVP967cT/gzLHYxIejIYSxp4JmIeFHVP78g/F2FE1mUUTbDtrg==", + "dependencies": { + "System.Reflection": "4.1.0", + "System.Runtime": "4.1.0" + } }, - "Microsoft.SourceLink.GitHub": { + "System.Resources.ResourceManager": { "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "IaJGnOv/M7UQjRJks7B6p7pbPnOwisYGOIzqCz5ilGFTApZ3ktOR+6zJ12ZRPInulBmdAf1SrGdDG2MU8g6XTw==", + "resolved": "4.3.0", + "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==", "dependencies": { - "Microsoft.Build.Tasks.Git": "1.1.1", - "Microsoft.SourceLink.Common": "1.1.1" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Globalization": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" } }, - "Microsoft.TestPlatform.ObjectModel": { + "System.Runtime": { "type": "Transitive", - "resolved": "17.11.1", - "contentHash": "E2jZqAU6JeWEVsyOEOrSW1o1bpHLgb25ypvKNB/moBXPVsFYBPd/Jwi7OrYahG50J83LfHzezYI+GaEkpAotiA==" + "resolved": "4.3.1", + "contentHash": "abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.1", + "Microsoft.NETCore.Targets": "1.1.3" + } }, - "Microsoft.TestPlatform.TestHost": { + "System.Runtime.Extensions": { "type": "Transitive", - "resolved": "17.11.1", - "contentHash": "DnG+GOqJXO/CkoqlJWeDFTgPhqD/V6VqUIL3vINizCWZ3X+HshCtbbyDdSHQQEjrc2Sl/K3yaxX6s+5LFEdYuw==", + "resolved": "4.3.0", + "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "17.11.1", - "Newtonsoft.Json": "13.0.1" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" } }, - "NETStandard.Library": { + "System.Runtime.Handles": { "type": "Transitive", - "resolved": "2.0.0", - "contentHash": "7jnbRU+L08FXKMxqUflxEXtVymWvNOrS8yHgu9s6EM8Anr6T/wIX4nZ08j/u3Asz+tCufp3YVwFSEvFTPYmBPA==", + "resolved": "4.3.0", + "contentHash": "OKiSUN7DmTWeYb3l51A7EYaeNMnvxwE249YtZz7yooT4gOZhmTjIn48KgSsw2k2lYdLgTKNJw/ZIfSElwDRVgg==", "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" } }, - "Newtonsoft.Json": { + "System.Runtime.InteropServices": { "type": "Transitive", - "resolved": "13.0.1", - "contentHash": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==" + "resolved": "4.3.0", + "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Reflection": "4.3.0", + "System.Reflection.Primitives": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Handles": "4.3.0" + } }, - "NodaTime": { + "System.Runtime.InteropServices.RuntimeInformation": { "type": "Transitive", - "resolved": "3.2.1", - "contentHash": "D1aHhUfPQUxU2nfDCVuSLahpp0xCYZTmj/KNH3mSK/tStJYcx9HO9aJ0qbOP3hzjGPV/DXOqY2AHe27Nt4xs4g==" + "resolved": "4.0.0", + "contentHash": "hWPhJxc453RCa8Z29O91EmfGeZIHX1ZH2A8L6lYQVSaKzku2DfArSfMEb1/MYYzPQRJZeu0c9dmYeJKxW5Fgng==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.0.1", + "System.Reflection": "4.1.0", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.InteropServices": "4.1.0", + "System.Threading": "4.0.11", + "runtime.native.System": "4.0.0" + } }, - "NUnit.Console": { + "System.Runtime.Loader": { "type": "Transitive", - "resolved": "3.12.0", - "contentHash": "9KXFnViEIKQjz4vqiYFpLV9sntfHxixQomLCJzDMXC6WDo9DP2GhDQiBND6we6MRStMSNzoAWgourbLKwo7utQ==", + "resolved": "4.3.0", + "contentHash": "DHMaRn8D8YCK2GG2pw+UzNxn/OHVfaWx7OTLBD/hPegHZZgcZh3H6seWegrC4BYwsfuGrywIuT+MQs+rPqRLTQ==", "dependencies": { - "NUnit.ConsoleRunner": "3.12.0", - "NUnit.Extension.NUnitProjectLoader": "3.6.0", - "NUnit.Extension.NUnitV2Driver": "3.8.0", - "NUnit.Extension.NUnitV2ResultWriter": "3.6.0", - "NUnit.Extension.TeamCityEventListener": "1.0.7", - "NUnit.Extension.VSProjectLoader": "3.8.0" + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Runtime": "4.3.0" } }, - "NUnit.ConsoleRunner": { + "System.Runtime.Numerics": { "type": "Transitive", - "resolved": "3.12.0", - "contentHash": "ZUtI8leU9ozCjLy4ZZ2X6ClU0hxfQtb95VOdmMA4SxIUvf62rIPxoHXS+jghvo5QxgRihGGcEp8xT3vCfgDdsA==" + "resolved": "4.3.0", + "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", + "dependencies": { + "System.Globalization": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0" + } }, - "NUnit.Extension.NUnitProjectLoader": { + "System.Security.AccessControl": { "type": "Transitive", - "resolved": "3.6.0", - "contentHash": "ev2+dCJShMNIATkYNm/vHEuieBfbismr9DcUfBvafJZf5vNyugXPuMXO/MaOFcJaoW9j6/zjMmXKG7R5umWzXA==" + "resolved": "4.7.0", + "contentHash": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "3.1.0", + "System.Security.Principal.Windows": "4.7.0" + } }, - "NUnit.Extension.NUnitV2Driver": { + "System.Security.Cryptography.Algorithms": { "type": "Transitive", - "resolved": "3.8.0", - "contentHash": "l6MgFJPTnrlDaMXWfbUZ82h1uvtj0C1ExPpqm6HrYOBa5Z4MBwmFLqj85rnv9JMhu/Ju7jQB/FIaMbfoXInI2A==" + "resolved": "4.3.0", + "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.Apple": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } }, - "NUnit.Extension.NUnitV2ResultWriter": { + "System.Security.Cryptography.Cng": { "type": "Transitive", - "resolved": "3.6.0", - "contentHash": "P/Nc+wgFRe3dT59/VjhiIT0SWfLMbb/Vc9AtBU3L71VOCs8zQnuNjCOEFLQL/Mq6XSaZeB2Sug9tUgTfCnQk9w==" + "resolved": "4.3.0", + "contentHash": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0" + } }, - "NUnit.Extension.TeamCityEventListener": { + "System.Security.Cryptography.Csp": { "type": "Transitive", - "resolved": "1.0.7", - "contentHash": "bw+ZwHsUmxqb9leo91qLEF7ggtdpawY2V6wNqHI6+ATa2SHxHxoxiV5UV07ZWDRpf/qlQJELNlZu7wIB3+w2qQ==" + "resolved": "4.3.0", + "contentHash": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.IO": "4.3.0", + "System.Reflection": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0" + } }, - "NUnit.Extension.VSProjectLoader": { + "System.Security.Cryptography.Encoding": { "type": "Transitive", - "resolved": "3.8.0", - "contentHash": "CIScV9a7+wUu6Ylb+WO0q/WGWQVoB05TUj3XZHa1CO+2BInDdfIVkqtlrSguhy6D/AGIMaLVrCZpQkQ2m0bbzQ==" + "resolved": "4.3.0", + "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Collections.Concurrent": "4.3.0", + "System.Linq": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" + } }, - "Semver": { + "System.Security.Cryptography.OpenSsl": { "type": "Transitive", - "resolved": "2.0.6", - "contentHash": "6OD3Gn+ElluZ9xNa0SspcANjvLt0KdSLiR1wl7ls6ykZxdfDBUruY5LMpMk2q8+EAT3DsvX4SjCDi7EVqdA/fA==", + "resolved": "4.3.0", + "contentHash": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", "dependencies": { - "NETStandard.Library": "1.6.1" + "System.Collections": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" } }, - "SpecFlow": { + "System.Security.Cryptography.Primitives": { "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "n6kcg9ZeQWxqJFoT23SsFT89U1QQNwvcN9pAX5alB6ZPr6K0p5D5nGIJ1PZsSaFaRFutiwQ+DicmxBCPAZVYIA==", + "resolved": "4.3.0", + "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", "dependencies": { - "BoDi": "1.5.0", - "Gherkin": "19.0.3", - "Microsoft.Extensions.DependencyModel": "1.0.3", - "SpecFlow.Internal.Json": "1.0.8", - "System.Configuration.ConfigurationManager": "4.5.0" + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.IO": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Threading": "4.3.0", + "System.Threading.Tasks": "4.3.0" } }, - "SpecFlow.Internal.Json": { + "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "1.0.8", - "contentHash": "lVCC/Rie7N5rFoc7YxPS0nneLfsWSTIMMlkndwxhaD8MxBp3Bsv1HeiVjVwXCjWaQeoqZcvIy52fF5Xit00ZLw==" + "resolved": "4.5.0", + "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" }, - "SpecFlow.NUnit.Runners": { + "System.Security.Cryptography.X509Certificates": { "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "m595x3GM7CYco+KsXo96irQ2jcjC6+1+41bKdmnTdl3RAvnC4jUZ9f5B5FhGuaVK4+j4GwWi8MZtGMrT//zHLA==", + "resolved": "4.3.0", + "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", "dependencies": { - "NUnit.Console": "3.12.0", - "NUnit3TestAdapter": "3.17.0", - "SpecFlow.NUnit": "[3.9.74]" + "Microsoft.NETCore.Platforms": "1.1.0", + "System.Collections": "4.3.0", + "System.Diagnostics.Debug": "4.3.0", + "System.Globalization": "4.3.0", + "System.Globalization.Calendars": "4.3.0", + "System.IO": "4.3.0", + "System.IO.FileSystem": "4.3.0", + "System.IO.FileSystem.Primitives": "4.3.0", + "System.Resources.ResourceManager": "4.3.0", + "System.Runtime": "4.3.0", + "System.Runtime.Extensions": "4.3.0", + "System.Runtime.Handles": "4.3.0", + "System.Runtime.InteropServices": "4.3.0", + "System.Runtime.Numerics": "4.3.0", + "System.Security.Cryptography.Algorithms": "4.3.0", + "System.Security.Cryptography.Cng": "4.3.0", + "System.Security.Cryptography.Csp": "4.3.0", + "System.Security.Cryptography.Encoding": "4.3.0", + "System.Security.Cryptography.OpenSsl": "4.3.0", + "System.Security.Cryptography.Primitives": "4.3.0", + "System.Text.Encoding": "4.3.0", + "System.Threading": "4.3.0", + "runtime.native.System": "4.3.0", + "runtime.native.System.Net.Http": "4.3.0", + "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" } }, - "SpecFlow.Tools.MsBuild.Generation": { + "System.Security.Permissions": { "type": "Transitive", - "resolved": "3.9.74", - "contentHash": "I/9OvmKOohJqIUNJ0xGYJCWfL6WKDaes8OoOAD/2yhGX+tzC5ofs9yqkP9Cu/xfnIx+11IR3pZs7YhBhGAcgWQ==", + "resolved": "4.5.0", + "contentHash": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==", "dependencies": { - "SpecFlow": "[3.9.74]" + "System.Security.AccessControl": "4.5.0" } }, - "StyleCop.Analyzers.Unstable": { - "type": "Transitive", - "resolved": "1.2.0.556", - "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" - }, - "System.CodeDom": { + "System.Security.Principal.Windows": { "type": "Transitive", "resolved": "4.7.0", - "contentHash": "Hs9pw/kmvH3lXaZ1LFKj3pLQsiGfj2xo3sxSzwiLlRL6UcMZUTeCfoJ9Udalvn3yq5dLlPEZzYegrTQ1/LhPOQ==" + "contentHash": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==" }, - "System.Configuration.ConfigurationManager": { + "System.Text.Encoding": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "UIFvaFfuKhLr9u5tWMxmVoDPkFeD+Qv8gUuap4aZgVGYSYMdERck4OhLN/2gulAc0nYTEigWXSJNNWshrmxnng==", + "resolved": "4.3.0", + "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", "dependencies": { - "System.Security.Cryptography.ProtectedData": "4.5.0", - "System.Security.Permissions": "4.5.0" + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" } }, - "System.Management": { + "System.Threading": { "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "IY+uuGhgzWiCg21i8IvQeY/Z7m1tX8VuPF+ludfn7iTCaccTtJo5HkjZbBEL8kbBubKhAKKtNXr7uMtmAc28Pw==", + "resolved": "4.3.0", + "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==", "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "System.CodeDom": "4.7.0" + "System.Runtime": "4.3.0", + "System.Threading.Tasks": "4.3.0" } }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "wLBKzFnDCxP12VL9ANydSYhk59fC4cvOr9ypYQLPnAj48NQIhqnjdD2yhP8yEKyBJEjERWS9DisKL7rX5eU25Q==" - }, - "System.Security.Permissions": { + "System.Threading.Tasks": { "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "9gdyuARhUR7H+p5CjyUB/zPk7/Xut3wUSP8NJQB6iZr8L3XUXTMdoLeVAg9N4rqF8oIpE7MpdqHdDHQ7XgJe0g==" + "resolved": "4.3.0", + "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==", + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0", + "Microsoft.NETCore.Targets": "1.1.0", + "System.Runtime": "4.3.0" + } }, "corvus.json.codegeneration": { "type": "Project", @@ -2120,7 +3638,8 @@ "type": "Project", "dependencies": { "Corvus.Json.CodeGeneration": "[1.0.0, )", - "Microsoft.CodeAnalysis.CSharp": "[4.11.0, )" + "Microsoft.CodeAnalysis.CSharp": "[4.11.0, )", + "System.Reflection.Metadata": "[9.0.0, )" } }, "corvus.json.codegeneration.openapi30": { @@ -2136,13 +3655,16 @@ "dependencies": { "Corvus.Json.JsonReference": "[1.0.0, )", "Corvus.UriTemplates": "[2.3.2, )", - "NodaTime": "[3.2.1, )" + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )", + "System.Text.Json": "[9.0.0, )" } }, "corvus.json.jsonreference": { "type": "Project", "dependencies": { - "Corvus.HighPerformance": "[1.0.2, )" + "Corvus.HighPerformance": "[1.0.2, )", + "System.Text.Json": "[9.0.0, )" } }, "corvus.json.jsonschema.draft201909": { @@ -2211,7 +3733,8 @@ "Corvus.Json.ExtendedTypes": "[1.0.0, )", "Microsoft.Extensions.Http": "[9.0.0, )", "Microsoft.Extensions.ObjectPool": "[9.0.0, )", - "NodaTime": "[3.2.1, )" + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" } } } diff --git a/Solutions/Corvus.JsonPatch.Benchmarking/packages.lock.json b/Solutions/Corvus.JsonPatch.Benchmarking/packages.lock.json index 4f640f23e5c..7efe0fa27c2 100644 --- a/Solutions/Corvus.JsonPatch.Benchmarking/packages.lock.json +++ b/Solutions/Corvus.JsonPatch.Benchmarking/packages.lock.json @@ -85,6 +85,15 @@ "System.Text.Json": "9.0.0" } }, + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net481": "1.0.3" + } + }, "Roslynator.Analyzers": { "type": "Direct", "requested": "[4.13.1, )", @@ -445,6 +454,11 @@ "System.Runtime.CompilerServices.Unsafe": "6.0.0" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net481": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "Vv/20vgHS7VglVOVh8J3Iz/MA+VYKVRp9f7r2qiKBMuzviTOmocG70yq0Q8T5OTmCONkEAIJwETD1zhEfLkAXQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "1.1.1", @@ -722,7 +736,9 @@ "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", "dependencies": { "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]" + "Microsoft.CodeAnalysis.Common": "[4.11.0]", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Extensions.Configuration.Json": { @@ -796,7 +812,11 @@ "Corvus.HighPerformance": { "type": "Transitive", "resolved": "1.0.2", - "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==" + "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5" + } }, "Corvus.UriTemplates": { "type": "Transitive", @@ -805,7 +825,9 @@ "dependencies": { "CommunityToolkit.HighPerformance": "8.3.0", "Corvus.HighPerformance": "1.0.0", - "Microsoft.Extensions.ObjectPool": "8.0.8" + "Microsoft.Extensions.ObjectPool": "8.0.8", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0" } }, "Endjin.RecommendedPractices": { @@ -865,7 +887,9 @@ "resolved": "4.11.0", "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4" + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Diagnostics.NETCore.Client": { @@ -882,13 +906,19 @@ "resolved": "2.2.332302", "contentHash": "Hp84ivxSKIMTBzYSATxmUsm3YSXHWivcwiRRbsydGmqujMUK8BAueLN0ssAVEOkOBmh0vjUBhrq7YcroT7VCug==", "dependencies": { - "Microsoft.Diagnostics.NETCore.Client": "0.2.251802" + "Microsoft.Diagnostics.NETCore.Client": "0.2.251802", + "System.Collections.Immutable": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" } }, "Microsoft.Diagnostics.Tracing.TraceEvent": { "type": "Transitive", "resolved": "3.1.8", - "contentHash": "kl3UMrZKSeSEYZ8rt/GjLUQToREjgQABqfg6PzQBmSlYHTZOKE9ePEOS2xptROQ9SVvngg3QGX51TIT11iZ0wA==" + "contentHash": "kl3UMrZKSeSEYZ8rt/GjLUQToREjgQABqfg6PzQBmSlYHTZOKE9ePEOS2xptROQ9SVvngg3QGX51TIT11iZ0wA==", + "dependencies": { + "Microsoft.Win32.Registry": "4.4.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" + } }, "Microsoft.DotNet.PlatformAbstractions": { "type": "Transitive", @@ -1070,6 +1100,15 @@ "Microsoft.SourceLink.Common": "1.1.1" } }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==", + "dependencies": { + "System.Security.AccessControl": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, "NodaTime": { "type": "Transitive", "resolved": "3.2.1", @@ -1085,6 +1124,11 @@ "resolved": "1.2.0.556", "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, "System.CodeDom": { "type": "Transitive", "resolved": "5.0.0", @@ -1106,9 +1150,34 @@ "contentHash": "MF1CHaRcC+MLFdnDthv4/bKWBZnlnSpkGqa87pKukQefgEdwtb9zFW6zs0GjPp73qtpYYg4q6PEKbzJbxCpKfw==", "dependencies": { "Microsoft.NETCore.Platforms": "5.0.0", + "Microsoft.Win32.Registry": "5.0.0", "System.CodeDom": "5.0.0" } }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + }, "System.Text.Encodings.Web": { "type": "Transitive", "resolved": "9.0.0", @@ -1148,15 +1217,39 @@ "resolved": "2.3.0", "contentHash": "2ap/rYmjtzCOT8hxrnEW/QeiOt+paD8iRrIcdKX0cxVwWLFa1e+JDBNeECakmccXrSFeBQuu5AV8SNkipFMMMw==" }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==", + "dependencies": { + "System.Security.AccessControl": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, "System.Management": { "type": "Transitive", "resolved": "5.0.0", "contentHash": "MF1CHaRcC+MLFdnDthv4/bKWBZnlnSpkGqa87pKukQefgEdwtb9zFW6zs0GjPp73qtpYYg4q6PEKbzJbxCpKfw==", "dependencies": { "Microsoft.NETCore.Platforms": "5.0.0", + "Microsoft.Win32.Registry": "5.0.0", "System.CodeDom": "5.0.0" } }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + }, "System.Text.Encodings.Web": { "type": "Transitive", "resolved": "9.0.0", @@ -1218,7 +1311,9 @@ "contentHash": "6XYi2EusI8JT4y2l/F3VVVS+ISoIX9nqHsZRaG6W5aFeJ5BEuBosHfT/ABb73FN0RZ1Z3cj2j7cL28SToJPXOw==", "dependencies": { "Microsoft.CodeAnalysis.Analyzers": "3.3.4", - "Microsoft.CodeAnalysis.Common": "[4.11.0]" + "Microsoft.CodeAnalysis.Common": "[4.11.0]", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Extensions.Configuration.Json": { @@ -1284,7 +1379,11 @@ "Corvus.HighPerformance": { "type": "Transitive", "resolved": "1.0.2", - "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==" + "contentHash": "af2GSUUXftfyYSB2goYDFTxoemmp9KUo9aKuO8Efvragy8fs2HHwuUcEEQpM6ygtZI5pOQFVNe6V4+4JsxRVEw==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.5" + } }, "Corvus.UriTemplates": { "type": "Transitive", @@ -1293,7 +1392,9 @@ "dependencies": { "CommunityToolkit.HighPerformance": "8.3.0", "Corvus.HighPerformance": "1.0.0", - "Microsoft.Extensions.ObjectPool": "8.0.8" + "Microsoft.Extensions.ObjectPool": "8.0.8", + "System.Buffers": "4.5.1", + "System.Collections.Immutable": "8.0.0" } }, "Endjin.RecommendedPractices": { @@ -1353,7 +1454,9 @@ "resolved": "4.11.0", "contentHash": "djf8ujmqYImFgB04UGtcsEhHrzVqzHowS+EEl/Yunc5LdrYrZhGBWUTXoCF0NzYXJxtfuD+UVQarWpvrNc94Qg==", "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.4" + "Microsoft.CodeAnalysis.Analyzers": "3.3.4", + "System.Collections.Immutable": "8.0.0", + "System.Reflection.Metadata": "8.0.0" } }, "Microsoft.Diagnostics.NETCore.Client": { @@ -1370,13 +1473,19 @@ "resolved": "2.2.332302", "contentHash": "Hp84ivxSKIMTBzYSATxmUsm3YSXHWivcwiRRbsydGmqujMUK8BAueLN0ssAVEOkOBmh0vjUBhrq7YcroT7VCug==", "dependencies": { - "Microsoft.Diagnostics.NETCore.Client": "0.2.251802" + "Microsoft.Diagnostics.NETCore.Client": "0.2.251802", + "System.Collections.Immutable": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" } }, "Microsoft.Diagnostics.Tracing.TraceEvent": { "type": "Transitive", "resolved": "3.1.8", - "contentHash": "kl3UMrZKSeSEYZ8rt/GjLUQToREjgQABqfg6PzQBmSlYHTZOKE9ePEOS2xptROQ9SVvngg3QGX51TIT11iZ0wA==" + "contentHash": "kl3UMrZKSeSEYZ8rt/GjLUQToREjgQABqfg6PzQBmSlYHTZOKE9ePEOS2xptROQ9SVvngg3QGX51TIT11iZ0wA==", + "dependencies": { + "Microsoft.Win32.Registry": "4.4.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0" + } }, "Microsoft.DotNet.PlatformAbstractions": { "type": "Transitive", @@ -1556,6 +1665,15 @@ "Microsoft.SourceLink.Common": "1.1.1" } }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==", + "dependencies": { + "System.Security.AccessControl": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, "NodaTime": { "type": "Transitive", "resolved": "3.2.1", @@ -1571,6 +1689,11 @@ "resolved": "1.2.0.556", "contentHash": "zvn9Mqs/ox/83cpYPignI8hJEM2A93s2HkHs8HYMOAQW0PkampyoErAiIyKxgTLqbbad29HX/shv/6LGSjPJNQ==" }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, "System.CodeDom": { "type": "Transitive", "resolved": "5.0.0", @@ -1582,21 +1705,49 @@ "contentHash": "MF1CHaRcC+MLFdnDthv4/bKWBZnlnSpkGqa87pKukQefgEdwtb9zFW6zs0GjPp73qtpYYg4q6PEKbzJbxCpKfw==", "dependencies": { "Microsoft.NETCore.Platforms": "5.0.0", + "Microsoft.Win32.Registry": "5.0.0", "System.CodeDom": "5.0.0" } }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.5", + "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" + }, "corvus.json.extendedtypes": { "type": "Project", "dependencies": { "Corvus.Json.JsonReference": "[1.0.0, )", "Corvus.UriTemplates": "[2.3.2, )", - "NodaTime": "[3.2.1, )" + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )", + "System.Text.Json": "[9.0.0, )" } }, "corvus.json.jsonreference": { "type": "Project", "dependencies": { - "Corvus.HighPerformance": "[1.0.2, )" + "Corvus.HighPerformance": "[1.0.2, )", + "System.Text.Json": "[9.0.0, )" } }, "corvus.json.patch": { @@ -1605,7 +1756,8 @@ "Corvus.Json.ExtendedTypes": "[1.0.0, )", "Microsoft.Extensions.Http": "[9.0.0, )", "Microsoft.Extensions.ObjectPool": "[9.0.0, )", - "NodaTime": "[3.2.1, )" + "NodaTime": "[3.2.1, )", + "System.Collections.Immutable": "[9.0.0, )" } } }, @@ -1615,14 +1767,38 @@ "resolved": "2.3.0", "contentHash": "2ap/rYmjtzCOT8hxrnEW/QeiOt+paD8iRrIcdKX0cxVwWLFa1e+JDBNeECakmccXrSFeBQuu5AV8SNkipFMMMw==" }, + "Microsoft.Win32.Registry": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==", + "dependencies": { + "System.Security.AccessControl": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, "System.Management": { "type": "Transitive", "resolved": "5.0.0", "contentHash": "MF1CHaRcC+MLFdnDthv4/bKWBZnlnSpkGqa87pKukQefgEdwtb9zFW6zs0GjPp73qtpYYg4q6PEKbzJbxCpKfw==", "dependencies": { "Microsoft.NETCore.Platforms": "5.0.0", + "Microsoft.Win32.Registry": "5.0.0", "System.CodeDom": "5.0.0" } + }, + "System.Security.AccessControl": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "dagJ1mHZO3Ani8GH0PHpPEe/oYO+rVdbQjvjJkBRNQkX4t0r1iaeGn8+/ybkSLEan3/slM0t59SVdHzuHf2jmw==", + "dependencies": { + "Microsoft.NETCore.Platforms": "5.0.0", + "System.Security.Principal.Windows": "5.0.0" + } + }, + "System.Security.Principal.Windows": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "t0MGLukB5WAVU9bO3MGzvlGnyJPgUlcwerXn1kzBRjwLKixT96XV0Uza41W49gVd8zEMFu9vQEFlv0IOrytICA==" } } }